如何在Azure ML环境构建后、训练脚本运行前安装本地Python包?
在Azure ML中运行训练脚本前安装本地包的解决方案
你需要在Azure ML环境完成conda依赖安装后、执行训练脚本前,安装位于实验目录下的本地包(通过pip install -e .),可以用以下几种方法实现:
方法1:在Environment中添加可编辑安装依赖
直接将本地包的可编辑安装加入环境的pip依赖列表,Azure ML会在初始化conda环境后自动执行这个安装步骤:
from azureml.core import Environment from azureml.core.runconfig import DockerConfiguration, ScriptRunConfig # 从conda配置文件创建环境 env = Environment.from_conda_specification("experiment_env", "my_environment.yml") # 将本地包的可编辑安装添加到pip依赖 env.python.conda_dependencies.add_pip_requirement("-e .") # 构建ScriptRunConfig script_config = ScriptRunConfig(source_directory=experiment_folder, script='path_to_file/classifier_train.py', arguments=arguments, environment=env, docker_runtime_config=DockerConfiguration(use_docker=True))
方法2:使用启动脚本封装执行流程
编写一个启动脚本,先执行本地包安装,再调用训练脚本,确保执行顺序:
- 在实验目录(
experiment_folder)下创建start_train.py:
import subprocess import sys # 安装本地包 subprocess.run([sys.executable, "-m", "pip", "install", "-e", "."], check=True) # 传递参数并启动训练脚本 subprocess.run([sys.executable, "path_to_file/classifier_train.py"] + sys.argv[1:], check=True)
- 修改ScriptRunConfig指向启动脚本:
script_config = ScriptRunConfig(source_directory=experiment_folder, script='start_train.py', arguments=arguments, environment=env, docker_runtime_config=DockerConfiguration(use_docker=True))
方法3:自定义ScriptRunConfig的command命令
直接构造完整的执行命令,用&&保证安装完成后再运行训练脚本:
script_config = ScriptRunConfig(source_directory=experiment_folder, command=[ "pip", "install", "-e", ".", "&&", "python", "path_to_file/classifier_train.py" ] + arguments, environment=env, docker_runtime_config=DockerConfiguration(use_docker=True))
内容的提问来源于stack exchange,提问作者mayool
相关产品推荐
相关产品推荐

