將指令碼執行升級至 SDK v2

在 SDK v2 中,「實驗」和「執行」已合併成作業。

工作具有類型。 大部分的作業都是執行 command 的命令作業,例如 python main.py。 工作中執行的內容與任何程式設計語言無關,因此您可以執行 bash 指令碼、叫用 python 解譯器、執行一堆 curl 命令或任何其他項目。

若要升級,您將需要變更程式碼來將作業提交至 SDK v2。 您在作業 執行的內容不需要升級至 SDK v2。 不過,建議您從模型定型腳本中移除 Azure Machine Learning 特有的任何程式碼。 此區隔可讓您更輕鬆地在本機與雲端之間進行轉換,並且視為成熟 MLOps 的最佳做法。 實際上,這表示移除 azureml.* 程式碼。 模型記錄和追蹤程式碼應該取代為 MLflow。 如需詳細資料,請參閱如何在 v2 中使用 MLflow

此文章提供 SDK v1 和 SDK v2 案例的比較。

提交指令碼執行

  • SDK v1

    from azureml.core import Workspace, Experiment, Environment, ScriptRunConfig
    
    # connect to the workspace
    ws = Workspace.from_config()
    
    # define and configure the experiment
    experiment = Experiment(workspace=ws, name='day1-experiment-train')
    config = ScriptRunConfig(source_directory='./src',
                                script='train.py',
                                compute_target='cpu-cluster')
    
    # set up pytorch environment
    env = Environment.from_conda_specification(
        name='pytorch-env',
        file_path='pytorch-env.yml')
    config.run_config.environment = env
    
    run = experiment.submit(config)
    
    aml_url = run.get_portal_url()
    print(aml_url)
    
  • SDK v2

    #import required libraries
    from azure.ai.ml import MLClient, command
    from azure.ai.ml.entities import Environment
    from azure.identity import DefaultAzureCredential
    
    #connect to the workspace
    ml_client = MLClient.from_config(DefaultAzureCredential())
    
    # set up pytorch environment
    env = Environment(
        image="mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04",
        conda_file="pytorch-env.yml",
        name="pytorch-env"
    )
    
    # define the command
    command_job = command(
        code="./src",
        command="train.py",
        environment=env,
        compute="cpu-cluster",
    )
    
    returned_job = ml_client.jobs.create_or_update(command_job)
    returned_job
    

v1 和 v2 中主要功能的對應

SDK v1 中的功能 SDK v2 中的粗略對應
experiment.submit MLCLient.jobs.create_or_update
ScriptRunConfig() command()

後續步驟

如需詳細資訊,請參閱