全部產品
Search
文件中心

Platform For AI:建立實驗

更新時間:Jul 13, 2024

AutoML是PAI提供的機器學習增強型服務,整合了多種演算法和分散式運算資源,無需編寫代碼,通過建立實驗即可實現模型超參數調優,提高機器學習效率和效能。本文為您介紹如何建立實驗。

背景資訊

AutoML的工作機制:

實驗會根據演算法配置自動產生超參數組合。針對每組超參數組合,該實驗會建立一個Trial。同時,每個Trial可能會對應一個DLC任務,也可能對應1個或多個MaxCompute任務。任務的類型取決於實驗的執行配置。後續將通過配置的任務來執行Trial。實驗通過調度運行多個Trial,並比較這些Trial的結果,以找到較優的超參數組合。更詳細的原理介紹,請參見AutoML工作原理

前提條件

操作步驟

  1. 進入自動機器學習(AutoML)頁面。

    1. 登入PAI控制台

    2. 在左側導覽列單擊工作空間列表,在工作空間列表頁面中單擊待操作的工作空間名稱,進入對應工作空間內。

    3. 在左側導覽列,選擇模型開發與訓練 > 自動機器學習(AutoML)

  2. 在實驗列表頁面,單擊建立實驗

  3. 建立實驗頁面,配置如下參數。

    • 基本資料配置。

      參數

      描述

      名稱

      參考介面提示資訊配置實驗名稱。

      描述

      對建立的實驗進行簡單描述,以區分不同的實驗。

      可見範圍

      實驗的可見度,支援以下取值:

      • 僅自己可見:在工作空間中,僅對您和管理員可見。

      • 工作空間內公開可見:在工作空間中,對所有人可見。

    • 執行配置。image.png

      任務類型:是Trial的執行環境,支援選擇DLCMaxCompute

      • DLC:表示通過運行分布式訓練(DLC)任務,進行超參數調優。更多關於DLC任務的介紹,請參見建立訓練任務

      • MaxCompute:表示在MaxCompute計算資源上,運行SQL命令或Designer演算法組件的PAI命令,進行超參數調優。更多關於Designer演算法組件以及每個組件支援的PAI命令的詳細資料,請參見組件參考:所有組件匯總

      DLC

      任務類型選擇DLC時,參數配置如下表所示:

      參數

      描述

      架構

      支援選擇以下兩種架構類型:

      • Tensorflow

      • PyTorch

      資料集

      此處需配置為已準備好的資料集,資料集配置方式請參見建立及管理資料集

      代碼源

      指定任務代碼檔案的儲存位置(代碼倉庫資訊)。此處需配置為已準備好的代碼配置,配置方式請參見代碼配置

      說明

      由於DLC會將代碼下載至指定工作路徑,所以您需要有代碼倉庫的存取權限。

      資源群組

      選擇公用資源群組或已購買的專有資源群組。如何準備資源群組,請參見建立資源群組併購買通用計算資源靈駿智算資源配額

      機器規格

      選擇任務運行所需的執行個體規格。不同規格的執行個體價格有所不同,關於各個規格的計費詳情,請參見分布式訓練(DLC)計費說明

      節點鏡像

      工作節點的鏡像。當前支援選擇使用不同類型的鏡像:

      • 社區鏡像:由社區提供的標準鏡像,不同的鏡像的詳情請參見社區鏡像版本詳情

      • PAI平台鏡像:由阿里雲PAI產品提供的多種官方鏡像,支援不同的資源類型、Python版本及深度學習架構TensorFlow和PyTorch,鏡像列表請參見(可選)準備鏡像

      • 使用者自訂鏡像:可選擇使用您添加到PAI的自訂的鏡像,選擇前,您需要先將自訂鏡像添加到PAI中,操作詳情請參見自訂鏡像

      • 鏡像地址:支援配置您的自訂鏡像、社區鏡像及PAI平台鏡像地址。您需要在配置框中配置公網環境下可訪問的Docker Registry Image URL。

      節點數量

      在DLC任務中所使用的計算節點的數量。

      重要

      如果選擇配置多個節點,則每個節點都會獨立收取費用,而不是共用同一個機器規格。因此,在節點選擇過程中,您需要明確每個節點的費用,並綜合考慮成本和效能之間的平衡。

      CPU(核心數)

      資源群組選擇已購買的專有資源群組時,您可以根據購買的資源規格來配置這些參數。

      記憶體(GB)

      共用記憶體(GB)

      GPU(卡數)

      進階配置

      支援通過進階配置提高訓練靈活性,或滿足一些特定的訓練情境。當架構選擇Pytorch時,您可以配置進階參數。支援的進階參數列表及取值說明,請參見附錄1:進階參數列表

      節點啟動命令

      各個節點的啟動命令。您需要在命令中配置超參數變數${自訂超參數變數},例如:

      python /mnt/data/examples/search/dlc_mnist/mnist.py --data_dir=/mnt/data/examples/search/data --save_model=/mnt/data/exmaples/search/model/model_${exp_id}_${trial_id} --batch_size=${batch_size} --lr=${lr} --metric_filepath=/mnt/data/examples/search/metric/metric_${exp_id}_${trial_id}

      其中:${batch_size}${lr}為定義的超參數變數。

      超參數

      根據啟動命令中配置的超參數變數,自動載入超參數列表。您需要為每個超參數配置約束類型和搜尋空間:

      • 約束類型:為超參數添加的限制條件。您可以將滑鼠移至上方在約束類型後的image.png表徵圖上,以查看支援選擇的約束類型及相關說明。

      • 搜尋空間:用於指定超參數的取值範圍。每種約束類型對應的搜尋空間的配置方式不同,您可以單擊image.png表徵圖並根據介面提示進行添加。

      MaxCompute

      任務類型選擇MaxCompute時,參數配置如下表所示:

      參數

      描述

      命令

      配置為SQL命令或運行Designer演算法組件的PAI命令。您需要在命令中配置超參數變數${自訂超參數變數},例如:

      pai -name kmeans
          -project algo_public
          -DinputTableName=pai_kmeans_test_input
          -DselectedColNames=f0,f1
          -DappendColNames=f0,f1
          -DcenterCount=${centerCount}
          -Dloop=10
          -Daccuracy=0.01
          -DdistanceType=${distanceType}
          -DinitCenterMethod=random
          -Dseed=1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id}
          -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id}
          -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};

      其中:${centerCount}${distanceType}為定義的超參數變數。

      更多配置樣本,請參見附錄:參考說明

      超參數

      根據命令中配置的超參數變數,自動載入超參數列表。您需要為每個超參數配置約束類型和搜尋空間:

      • 約束類型:為超參數添加的限制條件。您可以將滑鼠移至上方在約束類型後的image.png表徵圖上,以查看支援選擇的約束類型及相關說明。

      • 搜尋空間:用於指定超參數的取值範圍。每種約束類型對應的搜尋空間的配置方式不同,您可以單擊image.png表徵圖並根據介面提示進行添加。

    • Trial配置。

      使用某組超參來運行任務,參數配置如下:image.png

      參數

      描述

      指標類型

      用來評估Trial的指標類型,取值如下:

      • summary:最終指標需要從來自OSS的Tensorflow summary檔案中提取。

      • table:最終指標需要從MaxCompute表格中提取。

      • stdout:最終指標需要從運行過程中的stdout中提取。

      • json:最終指標以JSON格式的檔案儲存體在OSS中。

      計算方式

      在任務運行過程中,會逐步輸出多個中間指標,需要通過計算方式來確定最終指標。取值如下:

      • final:以最後一個指標作為整個Trial的最終指標。

      • best:以在任務運行過程中得到的最優指標作為整個Trial的最終指標。

      • avg:以在任務運行過程中得到的全部中間指標的均值作為Trial的最終指標。

      指標權重

      當需要同時考慮多個指標時,您可以通過配置指標名稱和對應權重的方式來實現,系統將使用加權求和值作為最終評估指標來比較優劣。

      • key:為指標名稱,支援Regex。

      • value:為對應的權重。

      說明

      權重可以為負值,且權重之和可以不為1,支援自訂。

      指標來源

      指標的來源:

      • 指標類型選擇summaryjson時,需要配置一個檔案路徑。例如oss://examplebucket/examples/search/pai/model/model_${exp_id}_${trial_id}

      • 指標類型選擇table時,需要配置一個能夠擷取具體結果的SQL語句。例如select GET_JSON_OBJECT(summary, '$.calinhara') as vrc from pai_ft_cluster_evaluation_out_${exp_id}_${trial_id}

      • 指標類型選擇stdout時,需要配置一個命令關鍵字。僅支援配置為cmdxcmdx;xxx,such as cmd1;worker

      最佳化方向

      用於評估Trial結果的最佳化方向,取值如下:

      • 越大越好

      • 越小越好

      模型儲存路徑

      儲存模型的路徑。該路徑必須包含${exp_id}_${trial_id},用來區分不同超參數組合下產生的模型。例如oss://examplebucket/examples/search/pai/model/model_${exp_id}_${trial_id}

    • 搜尋配置。image.png

      參數

      描述

      搜尋演算法

      是一種自動化機器學習演算法,它根據超參數搜尋空間以及先前Trial的結果和效能指標,尋找更優的超參數組合,以供下一個Trial運行使用。支援選擇的演算法類型如下:

      • TPE

      • Random

      • GridSearch

      • Evolution

      • GP

      • PBT

      演算法詳情說明,請參見支援的搜尋演算法

      最大搜尋次數

      該實驗允許啟動並執行最多Trial個數。

      最大並發量

      該實驗允許並行啟動並執行最多Trial個數。

  4. 單擊提交

    您可以在實驗列表中查看已建立的實驗。

後續操作

  • 您可以隨時查看實驗詳情,以瞭解實驗的進度。通過查看每個Trial的執行結果,您可以擷取較優的超參數組合。具體操作,請參見查看實驗詳情

  • 您可以對實驗進行管理。具體操作,請參見管理實驗

附錄:參考說明

在使用MaxCompute類型的任務進行超參數調優時,提供了如下配置樣本供您參考:

  • 使用的Designer組件:K均值聚類聚類模型評估

  • 命令配置如下,其中cmd1和cmd2分別對應兩個組件的命令,按照順序依次排列。具體使用流程,請參見MaxCompute K均值聚類最佳實務

    • cmd1

      pai -name kmeans
          -project algo_public
          -DinputTableName=pai_kmeans_test_input
          -DselectedColNames=f0,f1
          -DappendColNames=f0,f1
          -DcenterCount=${centerCount}
          -Dloop=10
          -Daccuracy=0.01
          -DdistanceType=${distanceType}
          -DinitCenterMethod=random
          -Dseed=1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DidxTableName=pai_kmeans_test_output_idx_${exp_id}_${trial_id}
          -DclusterCountTableName=pai_kmeans_test_output_couter_${exp_id}_${trial_id}
          -DcenterTableName=pai_kmeans_test_output_center_${exp_id}_${trial_id};
    • cmd2

      PAI -name cluster_evaluation
          -project algo_public
          -DinputTableName=pai_cluster_evaluation_test_input
          -DselectedColNames=f0,f1
          -DmodelName=pai_kmeans_test_output_model_${exp_id}_${trial_id}
          -DoutputTableName=pai_ft_cluster_evaluation_out_${exp_id}_${trial_id};