【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 語言環境。

  1. 首先先在 Azure ML 環境中新建一個空的實驗環境
  2. 從內建模組工具箱 (module toolbox) 的”R Language Modules”,拖移 “Execute R Script” 此模組。1
  3. “Execute R Script” 這個模組有三個輸入,兩個輸出接口 (我們依序幫他編號),第一以及第二接口是拿來串接兩個資料流作為輸入,第三個接口為串接 compressed script bundle 為輸入,此 Script Bundle 可以為資料流或是第三方的 R Libs 。第四個接口為一般的資料輸出接口,最後一個接口則為R裝置地輸出接口,可以讓你輸出 R plots 之類的結果。
    2
  4. 在” Execute R Script “點擊並且切換至 “properties” 視窗。在此你會看見 “R Script” 的輸入視窗有著示範如何存取五個接口的程式碼。
    3
  5. 在這個段落中我們不會給任何的輸入數值,只會使用輸出功能,因此請清除原本所有的範例程式碼。
  6. 並且在 “R Script” 輸入視窗輸入以下如同之前我們在本機執行的範例。
  7. # Generate synthetic data
  8. x <- seq(1, 30)
  9. y <- x
  10. noise <- runif(30, -1, 1)
  11. ywnoise <- y + noise * 2
  12. # plot point cloud on a chart
  13. plot(x, ywnoise, xlab = NA, ylab = NA)
  14. # combine two columns to create data grid
  15. linoise <- cbind(x, ywnoise)
  16. linoise <- as.data.frame(linoise)
  17. # Select data.frame to be sent to the output Dataset port
  18. maml.mapOutputPort(“linoise”);
  19. 點選”Run”來執行這個實驗環境的R語言執行模組。
  20. 當程式成功地被執行後點擊第一個輸出的接口,並且在目錄中選擇 “visualize” , 你會看到類似於之前範例中輸出的資料集。4
  21. 然後我們可以選擇第二個輸出的接口,並且一樣的視覺化他.你會看見所有 R 裝置的輸出在此頁面中。5

2.2 Execute Python Script 模組

相似於 R , Python 的模組也可以將你在本機運作的 Python 程式碼移植上 AML。

  1. 我們首先一樣先新建一個空的 AML 實驗環境。(module toolbox)“Python Language Modules”,“Execute Python Script”6
  2. 從內建模組工具箱
  3. 拖移
  4. 此模組。
  5. 就像 R 語言模組一樣有著三個輸入兩個輸出,在此便不再多加敘述。
  6. 在 properties 視窗中可以看見如同剛剛我們新建 R 語言執行模組一樣有著教學如何存取五個接口的程式碼。7
  7. 老樣子我們一樣刪除範例程式碼,並且將我們的程式碼輸入至輸入區。
  8. import matplotlib
  9. matplotlib.use('agg')
  10. import numpy as np
  11. import matplotlib.pyplot as plt
  12. import pandas as pd
  13. def azureml_main(dataframe1=None, dataframe2=None):
  14. x = range(1, 31)
  15. y = x
  16. noise = np.random.uniform(-1, 1, 30)
  17. ywnoise = y + noise * 2
  18. d = {'x' : np.asarray(x), 'ywnoise' : ywnoise}
  19. linoise = pd.DataFrame(d)
  20. fig = plt.figure()
  21. ax = fig.gca()
  22. linoise.plot(kind='line', ax=ax, x='x', y='ywnoise')
  23. fig.savefig('linoise.png')
  24. return linoise
  25. 然後我們就可以執行此 Python 執行模組,並且等執行成功後一樣可以在第二個輸出接口可視化輸出結果。8

2.3 在 Azure ML 上 R & Python 的相容性

在 R 以及 Python 的環境上我們常常會遇到一些第三方模組,需求於特定版本的 R 或是 Python ,此時我們就會需要知道 AML 以及本地環境的 R & Python 版本以檢核其相容性,本段落就是要探討如何知道平台的語言版本以及相關資料。

  1. 我們先在本機打開 R Studio 程式,而在範例一我們提到過關於這個程式如何安裝。
  2. 在終端機視窗中我們輸入 “version” 指令並且按下 Enter 按鈕。9
  3. 你會看到以清單呈現的 R 語言環境資訊,在上面的截圖你可以看到 R 語言的版本是 3.3.1
  4. 然後我們可以回到 AML 環境,創建一個新的實驗環境,並且拖動一個 R 語言執行的模組。
  5. 並且在 R 語言執行模組的編輯器輸入下列語法。
  6. v <- version
  7. property <- as.character(names(v))
  8. value <- as.character(v)
  9. data.set <- as.data.frame(cbind(property, value))
  10. maml.mapOutputPort(“data.set”);
  11. 老樣子我們點擊 “Run” 並且在第一個輸出接口點擊視覺化。10AMLRAML
  12. 我們可以發現輸出的版號結果有可能不類似於本機結果,這代表在
  13. 環境上的
  14. 語言環境中有可能會無法完全的執行你能在本機執行的語法,當然因為安全性的原則
  15. 會有一些限制。
  16. 當然除了版本資訊我們也可以列出所安裝的 R 語言套件包在 AML 上,一樣的我們如同上面一樣新建一個新的實驗環境,並且拖移 R 語言執行模組,並且在執行模組的指令視窗貼入下面的程式語法。
  17. data.set <- data.frame(installed.packages())
  18. maml.mapOutputPort(“data.set”)
  19. 一樣點擊執行並且觀看第一個接口的視覺化數據。11CSV ,“Convert to CSV”
  20. 當然我們也可以把資料轉換成
  21. 我們可以利用
  22. 模組達成。
  23. 我們先從 “Data Format Conversions” 中拖移 “Convert to CSV” 模組。並且把模組的輸入接入 R 語言執行模組的第一個輸出接口。12
  24. 然後我們在點擊執行,然後我們可以點擊 “Convert to CSV 的輸出接口並在跳出的目錄中下載 CSV 檔案,我們就可以利用類似 Excel 等等的試算表軟體來檢核資料。13
  25. 類似於 R 語言我們可以,一樣的看見 Python 的相關版本資訊,我們先創立一個新的實驗環境並且一樣的拖移執行 Python 語法的模組,並把執行 Python 模組的執行語法改成下面的語法。
  26. import pandas as pd
  27. import sys
  28. def azureml_main(dataframe1 = None, dataframe2 = None):
  29. prop = ['major', 'minor', 'micro', 'releaselevel', 'serial']
  30. val = sys.version_info[:]
  31. d = {“prop” : prop, “val” : [str(v) for v in val]}
  32. df = pd.DataFrame(d)
  33. return df,
  34. 並且點擊執行,然後就可以在第一輸出接口中點擊視覺化我們就可以看到 AML 環境中的 Python 版本號。14

原文:005-lab-custom-script-r-python

翻譯:
0mu-xu