コマンド ジョブでパラメーターを使用する

完了

パラメーターを使用すると、スクリプトの柔軟性を高めることができます。 機械学習モデルをトレーニングするスクリプトを作成したとします。 同じスクリプトを使用して、さまざまなデータセットでモデルをトレーニングしたり、さまざまなハイパーパラメーター値を使用したりできます。

スクリプト引数の操作

スクリプトでパラメーターを使用するには、 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"
    )

コマンド ジョブを送信したら、指定した入力パラメーターと出力パラメーターを確認できます。