【Azure】在 AML 上執行自定的 Scripts
在本篇文章中,會示範如何將 native R 以及 Python 的程式碼移植到 Azure Machine Learning 的實驗環境上執行。
如果還不熟悉 Azure Machine Learning Studio 可以瀏覽以下文章!
第一篇:【Azure】 使用 Azure Machine Learning Studio 體驗機器學習!
第二篇:【Azure】開發和使用 AzureML 模型
1. 概觀
在這個例子中我們將會利用於第一個例子(first lab session)中在本地機器中執行的 native R & Python 程式碼移植至 AML(Azure ML)的實驗環境上執行。我們將透過此次的例子探討 Azure ML 實驗環境的客製化功能,此項知識能夠幫助我們整合第三方或是自己撰寫的 R & Python Script 進入 AML 實驗環境中。
1.1 目標
此例子的目標為在 AML 的實驗環境上順利的執行 R & Python 的自定語法,並指出相關的重要事項以及可能需要注意相容性問題,以及如何在實驗環境中自定 R & Python 語法。
1.2 需求
基礎的 R 以及 Python 撰寫能力。
2. R & Python 語法模組
在過去的例子中我們利用本機的 Python 以及 R 語言將實驗環境的結果資料進行後處理,而在這個例子中我們將利用 AML 工作環境中的 R 以及 Python 語法模組讓 AML 自行處理他。
※後處理:將 Raw Data 利用程式進行處裡產生可視覺化的數據。
2.1 使用 Execute R Script 模組
AML 上的R 語言執行模組幾乎可以執行所有在本機端上能夠執行的 R 語言環境。
- 首先先在 Azure ML 環境中新建一個空的實驗環境
- 從內建模組工具箱 (module toolbox) 的”R Language Modules”,拖移 “Execute R Script” 此模組。
- “Execute R Script” 這個模組有三個輸入,兩個輸出接口 (我們依序幫他編號),第一以及第二接口是拿來串接兩個資料流作為輸入,第三個接口為串接 compressed script bundle 為輸入,此 Script Bundle 可以為資料流或是第三方的 R Libs 。第四個接口為一般的資料輸出接口,最後一個接口則為R裝置地輸出接口,可以讓你輸出 R plots 之類的結果。
- 在” Execute R Script “點擊並且切換至 “properties” 視窗。在此你會看見 “R Script” 的輸入視窗有著示範如何存取五個接口的程式碼。
- 在這個段落中我們不會給任何的輸入數值,只會使用輸出功能,因此請清除原本所有的範例程式碼。
- 並且在 “R Script” 輸入視窗輸入以下如同之前我們在本機執行的範例。
- # Generate synthetic data
- x <- seq(1, 30)
- y <- x
- noise <- runif(30, -1, 1)
- ywnoise <- y + noise * 2
- # plot point cloud on a chart
- plot(x, ywnoise, xlab = NA, ylab = NA)
- # combine two columns to create data grid
- linoise <- cbind(x, ywnoise)
- linoise <- as.data.frame(linoise)
- # Select data.frame to be sent to the output Dataset port
- maml.mapOutputPort(“linoise”);
- 點選”Run”來執行這個實驗環境的R語言執行模組。
- 當程式成功地被執行後點擊第一個輸出的接口,並且在目錄中選擇 “visualize” , 你會看到類似於之前範例中輸出的資料集。
- 然後我們可以選擇第二個輸出的接口,並且一樣的視覺化他.你會看見所有 R 裝置的輸出在此頁面中。
2.2 Execute Python Script 模組
相似於 R , Python 的模組也可以將你在本機運作的 Python 程式碼移植上 AML。
- 我們首先一樣先新建一個空的 AML 實驗環境。(module toolbox)“Python Language Modules”,“Execute Python Script”
- 從內建模組工具箱
- 的
- 拖移
- 此模組。
- 就像 R 語言模組一樣有著三個輸入兩個輸出,在此便不再多加敘述。
- 在 properties 視窗中可以看見如同剛剛我們新建 R 語言執行模組一樣有著教學如何存取五個接口的程式碼。
- 老樣子我們一樣刪除範例程式碼,並且將我們的程式碼輸入至輸入區。
- import matplotlib
- matplotlib.use('agg')
- import numpy as np
- import matplotlib.pyplot as plt
- import pandas as pd
- def azureml_main(dataframe1=None, dataframe2=None):
- x = range(1, 31)
- y = x
- noise = np.random.uniform(-1, 1, 30)
- ywnoise = y + noise * 2
- d = {'x' : np.asarray(x), 'ywnoise' : ywnoise}
- linoise = pd.DataFrame(d)
- fig = plt.figure()
- ax = fig.gca()
- linoise.plot(kind='line', ax=ax, x='x', y='ywnoise')
- fig.savefig('linoise.png')
- return linoise
- 然後我們就可以執行此 Python 執行模組,並且等執行成功後一樣可以在第二個輸出接口可視化輸出結果。
2.3 在 Azure ML 上 R & Python 的相容性
在 R 以及 Python 的環境上我們常常會遇到一些第三方模組,需求於特定版本的 R 或是 Python ,此時我們就會需要知道 AML 以及本地環境的 R & Python 版本以檢核其相容性,本段落就是要探討如何知道平台的語言版本以及相關資料。
- 我們先在本機打開 R Studio 程式,而在範例一我們提到過關於這個程式如何安裝。
- 在終端機視窗中我們輸入 “version” 指令並且按下 Enter 按鈕。
- 你會看到以清單呈現的 R 語言環境資訊,在上面的截圖你可以看到 R 語言的版本是 3.3.1
- 然後我們可以回到 AML 環境,創建一個新的實驗環境,並且拖動一個 R 語言執行的模組。
- 並且在 R 語言執行模組的編輯器輸入下列語法。
- v <- version
- property <- as.character(names(v))
- value <- as.character(v)
- data.set <- as.data.frame(cbind(property, value))
- maml.mapOutputPort(“data.set”);
- 老樣子我們點擊 “Run” 並且在第一個輸出接口點擊視覺化。AMLRAML
- 我們可以發現輸出的版號結果有可能不類似於本機結果,這代表在
- 環境上的
- 語言環境中有可能會無法完全的執行你能在本機執行的語法,當然因為安全性的原則
- 會有一些限制。
- 當然除了版本資訊我們也可以列出所安裝的 R 語言套件包在 AML 上,一樣的我們如同上面一樣新建一個新的實驗環境,並且拖移 R 語言執行模組,並且在執行模組的指令視窗貼入下面的程式語法。
- data.set <- data.frame(installed.packages())
- maml.mapOutputPort(“data.set”)
- 一樣點擊執行並且觀看第一個接口的視覺化數據。CSV ,“Convert to CSV”
- 當然我們也可以把資料轉換成
- 我們可以利用
- 模組達成。
- 我們先從 “Data Format Conversions” 中拖移 “Convert to CSV” 模組。並且把模組的輸入接入 R 語言執行模組的第一個輸出接口。
- 然後我們在點擊執行,然後我們可以點擊 “Convert to CSV 的輸出接口並在跳出的目錄中下載 CSV 檔案,我們就可以利用類似 Excel 等等的試算表軟體來檢核資料。
- 類似於 R 語言我們可以,一樣的看見 Python 的相關版本資訊,我們先創立一個新的實驗環境並且一樣的拖移執行 Python 語法的模組,並把執行 Python 模組的執行語法改成下面的語法。
- import pandas as pd
- import sys
- def azureml_main(dataframe1 = None, dataframe2 = None):
- prop = ['major', 'minor', 'micro', 'releaselevel', 'serial']
- val = sys.version_info[:]
- d = {“prop” : prop, “val” : [str(v) for v in val]}
- df = pd.DataFrame(d)
- return df,
- 並且點擊執行,然後就可以在第一輸出接口中點擊視覺化我們就可以看到 AML 環境中的 Python 版本號。
原文:005-lab-custom-script-r-python
翻譯: