如何在Azure Machine Learning上运行EAST及自定义PyTorch代码?
问题解答
1. 无需Jupyter Notebook,直接通过Azure SDK操作云端数据集并保存模型作业输出
完全可以脱离Jupyter Notebook,直接使用Azure Machine Learning Python SDK在本地终端或云端计算实例的命令行环境中完成操作,核心步骤如下:
- 安装Azure ML SDK:
pip install azure-ai-ml - 连接Azure ML工作区:
先从Azure ML Studio工作区页面下载config.json文件,然后在代码中初始化连接:from azure.ai.ml import MLClient from azure.identity import DefaultAzureCredential # 方式一:通过config.json初始化 ml_client = MLClient.from_config(DefaultAzureCredential()) # 方式二:手动指定参数 # ml_client = MLClient( # DefaultAzureCredential(), # subscription_id="你的订阅ID", # resource_group_name="你的资源组名", # workspace_name="你的工作区名" # ) - 访问云端数据集:
若数据集已在工作区注册,可直接获取并下载到本地计算环境:# 获取已注册的数据集 dataset = ml_client.data.get(name="你的数据集名称", version="版本号") # 下载到本地指定路径 dataset.download(target_path="./local_data_dir", overwrite=True) - 提交训练作业并保存模型输出:
定义训练作业时,指定模型保存路径为./outputs(Azure ML会自动将该目录下的所有文件作为作业输出上传至工作区),示例代码:
训练脚本中只需将模型文件写入from azure.ai.ml import command from azure.ai.ml.entities import Environment, Data # 绑定云端数据集作为作业输入 input_data = Data(path=dataset.path, type="uri_folder") # 指定PyTorch运行环境 env = Environment( image="mcr.microsoft.com/azureml/openmpi4.1.0-pytorch1.9.0-cuda11.1-cudnn8-ubuntu20.04", name="pytorch-training-env" ) # 定义训练作业 job = command( code="./east-local-code", # 本地EAST项目代码目录 command="python train.py --data_dir ${{inputs.data}}", inputs={"data": input_data}, environment=env, compute="你的计算集群名称", # 比如预先创建的GPU集群 outputs={"trained_model": "./outputs/"} ) # 提交作业并实时查看日志 returned_job = ml_client.jobs.create_or_update(job) ml_client.jobs.stream(returned_job.name)./outputs目录,作业完成后即可在Azure ML Studio的作业详情页查看并下载模型输出。
2. 在Azure Machine Learning上运行PyTorch的方法
Azure ML原生支持PyTorch训练,主要通过以下两种环境配置方式实现:
方式一:使用预构建的PyTorch环境
Azure ML提供了官方维护的PyTorch环境,可直接在作业中引用,无需手动配置依赖:
from azure.ai.ml.entities import Environment # 引用预注册的PyTorch环境(版本可根据需求调整) env = Environment.get(ml_client, name="AzureML-pytorch-1.13-ubuntu20.04-py38-cuda11.6")
方式二:自定义PyTorch环境
如果需要特定版本的PyTorch或额外依赖,可编写conda.yml文件:
name: custom-pytorch-env channels: - pytorch - conda-forge dependencies: - python=3.8 - pytorch=1.12.1 - torchvision=0.13.1 - cudatoolkit=11.3 - pip: - opencv-python - tqdm
然后创建并注册自定义环境到工作区:
env = Environment( conda_file="./conda.yml", image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04", name="east-pytorch-env" ) ml_client.environments.create_or_update(env)
提交PyTorch训练作业
不管使用预构建还是自定义环境,都可以通过CommandJob提交训练作业,核心逻辑和第一部分的作业提交一致:
- 训练脚本中通过命令行参数读取输入数据集路径
- 将训练好的模型写入
./outputs目录,Azure ML会自动同步该目录到工作区的输出资产中
内容的提问来源于stack exchange,提问作者Ericson Willians
相关产品推荐
相关产品推荐

