在指令工作中使用參數

已完成

你可以透過參數來提升腳本的彈性。 想像你創造了一個程式碼腳本來訓練機器學習模型。 你可以用同一個腳本在不同資料集上訓練模型,或使用不同的超參數值。

處理腳本參數

要在腳本中使用參數,必須使用函式庫 argparse ,例如讀取傳遞給腳本的參數並將其指派給變數。

例如,以下腳本讀取一個名為 training_data參數的參數,指定訓練資料的路徑。

# import libraries
import argparse
import pandas as pd
from sklearn.linear_model import LogisticRegression

def main(args):
    # read data
    df = get_data(args.training_data)

# function that reads the data
def get_data(path):
    df = pd.read_csv(path)
    
    return df

def parse_args():
    # setup arg parser
    parser = argparse.ArgumentParser()

    # add arguments
    parser.add_argument("--training_data", dest='training_data',
                        type=str)

    # parse args
    args = parser.parse_args()

    # return args
    return args

# run script
if __name__ == "__main__":

    # parse args
    args = parse_args()

    # run main function
    main(args)

你預期的任何參數都應該在腳本中定義。 在腳本中,你可以指定每個參數期望的值類型,以及是否要設定預設值。

將參數傳遞給腳本

要將參數值傳給腳本,你需要在指令中提供參數值。

例如,如果您在終端機執行腳本時傳遞參數值,會使用以下指令:

python train.py --training_data diabetes.csv

在範例中, diabetes.csv 是一個本地檔案。 或者,你也可以指定在 Azure Machine Learning 工作空間中建立的資料資產的路徑。

同樣地,當你想將參數值傳給你想執行的指令工作腳本時,你在指令中指定以下值:

from azure.ai.ml import command

# configure job
job = command(
    code="./src",
    command="python train.py --training_data diabetes.csv",
    environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu@latest",
    compute="aml-cluster",
    display_name="train-model",
    experiment_name="train-classification-model"
    )

提交指令工作後,你可以檢視你指定的輸入和輸出參數。