【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.  

  3. 從內建模組工具箱 (module toolbox) ”R Language Modules”,拖移 “Execute R Script” 此模組。
  4. 1
     

  5. “Execute R Script” 這個模組有三個輸入,兩個輸出接口 (我們依序幫他編號),第一以及第二接口是拿來串接兩個資料流作為輸入,第三個接口為串接 compressed script bundle 為輸入,此 Script Bundle 可以為資料流或是第三方的 R Libs 。第四個接口為一般的資料輸出接口,最後一個接口則為R裝置地輸出接口,可以讓你輸出 R plots 之類的結果。
  6. 2
     

  7. ” Execute R Script “點擊並且切換至 “properties” 視窗。在此你會看見 “R Script” 的輸入視窗有著示範如何存取五個接口的程式碼。
  8. 3
     

  9. 在這個段落中我們不會給任何的輸入數值,只會使用輸出功能,因此請清除原本所有的範例程式碼。
  10.  

  11. 並且在 “R Script” 輸入視窗輸入以下如同之前我們在本機執行的範例。
  12.  
    # 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”);
     

  13. 點選”Run”來執行這個實驗環境的R語言執行模組。
  14.  

  15. 當程式成功地被執行後點擊第一個輸出的接口,並且在目錄中選擇 “visualize” , 你會看到類似於之前範例中輸出的資料集。
  16. 4
     

  17. 然後我們可以選擇第二個輸出的接口,並且一樣的視覺化他.你會看見所有 R 裝置的輸出在此頁面中。
  18. 5

 

2.2 Execute Python Script 模組

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

  1. 我們首先一樣先新建一個空的 AML 實驗環境。
  2. 從內建模組工具箱 (module toolbox) “Python Language Modules”,拖移 “Execute Python Script” 此模組。

    6
     

  3. 就像 R 語言模組一樣有著三個輸入兩個輸出,在此便不再多加敘述。
  4.  

  5. properties 視窗中可以看見如同剛剛我們新建 R 語言執行模組一樣有著教學如何存取五個接口的程式碼。
  6. 7
     

  7. 老樣子我們一樣刪除範例程式碼,並且將我們的程式碼輸入至輸入區。
  8.  
    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
     

  9. 然後我們就可以執行此 Python 執行模組,並且等執行成功後一樣可以在第二個輸出接口可視化輸出結果。
  10. 8

 

2.3  Azure ML R & Python 的相容性

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

  1. 我們先在本機打開 R Studio 程式,而在範例一我們提到過關於這個程式如何安裝。
  2.  

  3. 在終端機視窗中我們輸入 “version” 指令並且按下 Enter 按鈕。
  4. 9
     

  5. 你會看到以清單呈現的 R 語言環境資訊,在上面的截圖你可以看到 R 語言的版本是 3.3.1
  6.  

  7. 然後我們可以回到 AML 環境,創建一個新的實驗環境,並且拖動一個 R 語言執行的模組。
  8.  

  9. 並且在 R 語言執行模組的編輯器輸入下列語法。
  10.  
    v <- version

    property <- as.character(names(v))

    value <- as.character(v)

    data.set <- as.data.frame(cbind(property, value))

    maml.mapOutputPort(“data.set”);
     

  11. 老樣子我們點擊 “Run” 並且在第一個輸出接口點擊視覺化。
  12. 10

    我們可以發現輸出的版號結果有可能不類似於本機結果,這代表在 AML 環境上的 R 語言環境中有可能會無法完全的執行你能在本機執行的語法,當然因為安全性的原則 AML 會有一些限制。
     

  13. 當然除了版本資訊我們也可以列出所安裝的 R 語言套件包在 AML 上,一樣的我們如同上面一樣新建一個新的實驗環境,並且拖移 R 語言執行模組,並且在執行模組的指令視窗貼入下面的程式語法。
  14.  
    data.set <- data.frame(installed.packages())

    maml.mapOutputPort(“data.set”)
     

  15. 一樣點擊執行並且觀看第一個接口的視覺化數據。
  16. 11

    當然我們也可以把資料轉換成 CSV , 我們可以利用 “Convert to CSV” 模組達成。
     

  17. 我們先從 “Data Format Conversions” 中拖移 “Convert to CSV” 模組。並且把模組的輸入接入 R 語言執行模組的第一個輸出接口。
  18. 12
     

  19. 然後我們在點擊執行,然後我們可以點擊 “Convert to CSV 的輸出接口並在跳出的目錄中下載 CSV 檔案,我們就可以利用類似 Excel 等等的試算表軟體來檢核資料。
  20. 13
     

  21. 類似於 R 語言我們可以,一樣的看見 Python 的相關版本資訊,我們先創立一個新的實驗環境並且一樣的拖移執行 Python 語法的模組,並把執行 Python 模組的執行語法改成下面的語法。
  22.  

    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,
     

  23. 並且點擊執行,然後就可以在第一輸出接口中點擊視覺化我們就可以看到 AML 環境中的 Python 版本號。
  24. 14

 
 
原文:005-lab-custom-script-r-python
 
 
 
翻譯:
0mu-xu

Comments (0)

Skip to main content