You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AzureML同一GPU/节点提交多个训练运行以节省成本

解决方案

1. 调整计算集群的每节点最大运行数

你遇到的MPI报错核心原因是AzureML计算集群默认配置了每个节点仅允许运行1个任务,对应参数max_runs_per_node默认为1,和你设置的slots参数冲突。
你可以通过两种方式修改该配置:

  • 代码创建集群时指定参数:
from azureml.core.compute import ComputeTarget, AmlCompute

compute_config = AmlCompute.provisioning_configuration(
    vm_size="你当前使用的GPU实例规格",
    min_nodes=0,
    max_nodes=你需要的最大节点数,
    max_runs_per_node=4 # 可根据GPU显存和单模型占用调整,比如16G显存+1G模型可设为6~8
)
gpu_cluster = ComputeTarget.create(workspace, "gpu_cluster", compute_config)
gpu_cluster.wait_for_completion(show_output=True)
  • 网页端修改已有集群:进入AzureML工作室的「计算」-「计算集群」页面,找到对应集群点击编辑,直接修改「每个节点的最大运行数」参数即可,无需重建集群。

2. 正常提交超参数搜索任务

调整集群配置后,不需要再给ScriptRunConfig传入distributed_job_config参数,也不需要修改你的训练脚本:

  • 单任务提交:用你原有方式提交ScriptRunConfig即可,多个任务会被自动调度到同一个节点共享GPU资源。
  • 超参数搜索:正常配置HyperDriveConfig即可,HyperDrive会自动将多个超参数子Run调度到同一节点,每个子Run的日志、检查点完全独立存储,不会出现混乱,也不需要重构现有训练Pipeline。

可选:显存占用控制

如果担心多个任务同时运行出现显存溢出,可以在训练脚本开头加入框架级别的显存限制,单卡单进程仅需增加1~2行代码即可:

  • PyTorch 示例:
import torch
# 限制单进程最多使用20%显存,对应max_runs_per_node=4的场景
torch.cuda.set_per_process_memory_fraction(0.2, device=0)
  • TensorFlow 示例:
import tensorflow as tf
gpus = tf.config.list_physical_devices('GPU')
if gpus:
    tf.config.set_logical_device_configuration(
        gpus[0],
        [tf.config.LogicalDeviceConfiguration(memory_limit=3072)] # 限制单进程最多用3G显存
    )

内容的提问来源于stack exchange,提问作者Prook

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:24:00