在 Azure Maschine Learning Studio Notebooks 中运行多行 py 文件

问题描述 投票:0回答:1

我想知道在机器学习笔记本中运行多行 shell 命令的最佳实践

这是一些伪代码以及我如何在笔记本单元中运行它。

%%bash 
conda activate myenv &&

torchrun
    --standalone
    --nnodes=1
    --nproc-per-node=$NUM_TRAINERS
    YOUR_TRAINING_SCRIPT.py (--arg1 ... train script args...

我正在激活 conda env,因为我注意到 magic bash 函数单独没有使用正确的环境。

使用azure.ai.ml中的命令功能会更好吗?

我发现这种方式在某种程度上容易出错,即使激活 conda 并使用 magic 函数也是如此。

有更好的选择吗?

python azure-machine-learning-service
1个回答
0
投票

来自

command
azure.ai.ml
作业是更好的选择,您可以在其中向计算集群提供要运行的所有详细信息。

无论您在笔记本单元中运行什么,它都会在计算实例中执行,而计算实例不适合此类工作负载。

计算实例只有一个节点,而计算集群可以有更多节点。计算集群可以为计算任务提供更多的内存和并行性。

因此,您需要通过提交

command
作业来在计算集群中运行作业。

当涉及到您的环境时,您不需要像在 bash 命令中那样更改它。您所要做的就是将

environment
对象传递给
command
作业类,其中包含您想要的环境的详细信息。

以下是示例。

custom_job_env = Environment(
    name=custom_env_name,
    description="Custom environment for Credit Card Defaults job",
    tags={"scikit-learn": "1.0.2"},
    conda_file=os.path.join(dependencies_dir, "conda.yaml"),
    image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest",
)

接下来,将其传递给命令类。

job = command(
    ....
    command="python main.py --data ${{inputs.data}} --test_train_ratio ${{inputs.test_train_ratio}} --learning_rate ${{inputs.learning_rate}} --registered_model_name ${{inputs.registered_model_name}}",
    environment=custom_job_env,
    display_name="credit_default_prediction",
)

参考这个 Pytorch分布式训练示例代码。

此外,请参阅可以为

command
类配置的更多参数此处

© www.soinside.com 2019 - 2024. All rights reserved.