产品概述
产品定价
客户价值
应用场景
变量名 | 变量描述 | 示例 |
NODE_LIST | 训练任务公共环境变量:任务节点的列表和节点的 GPU 卡数信息 | NODE_LIST=timaker-xxxyyy-launcher.training-job.svc.cluster.local:1,timaker-xxxyyy-worker-0.training-job.svc.cluster.local:1 |
INDEX | 训练任务公共环境变量:当前节点信息在 NODE_LIST 的索引,从0开始 | INDEX=1 |
MASTER_ADDR | DDP 训练任务的 master 节点IP | MASTER_ADDR=10.35.110.11 |
MASTER_PORT | DDP 训练任务的 master 节点端口 | MASTER_PORT=23456 |
WORLD_SIZE | DDP 训练任务的节点数 | WORLD_SIZE=2 |
RANK | DDP 训练任务的当前节点 | RANK=1 |
GPU_NUM | 任务包含的GPU卡总数 | GPU_NUM=2 |
GPU_NUM_PER_NODE | 单个节点的GPU卡数 | GPU_NUM_PER_NODE=1 |
python -m torch.distributed.launch --nproc_per_node $GPU_NUM_PER_NODE --nnodes $WORLD_SIZE --node_rank $RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT
变量名 | 变量描述 |
nproc_per_node | 单个实例(机器)上运行的进程数,使用 GPU 时通常为每台机器上的 GPU 数量。使用GPU训练时,使用对应环境变量 GPU_NUM_PER_NODE 的值。 |
nnodes | 对应环境变量 WORLD_SIZE 的值。 |
node_rank | 对应环境变量 RANK 的值。 |
master_addr | 对应环境变量 MASTER_ADDR 的值。 |
master_port | 对应环境变量 MASTER_PORT 的值。 |
MASTER_ADDR=${MASTER_ADDR:-localhost} MASTER_PORT=${MASTER_PORT:-23456} NNODES=${WORLD_SIZE:-1} NODE_RANK=${RANK:-0} GPU_PER_NODE=${GPU_NUM_PER_NODE:-$(nvidia-smi -L | wc -l)} python -m torch.distributed.launch --nproc_per_node $GPU_PER_NODE --nnodes $NNODES --node_rank $NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT
变量名 | 变量描述 | 示例 |
OMPI_MCA_orte_default_hostfile | MPI/Horovod 训练任务的节点信息文件 | OMPI_MCA_orte_default_hostfile=/etc/mpi/hostfile |
GPU_NUM | 任务包含的GPU卡总数 | GPU_NUM=2 |
GPU_NUM_PER_NODE | 单个节点的GPU卡数 | GPU_NUM_PER_NODE=1 |
NODE_IP_SLOT_LIST | 任务包含的节点IP和对应卡数信息(仅支持用于配置启动命令) | NODE_IP_SLOT_LIST=9.0.255.56:1,9.0.255.118:1 |
train-960258573108964736-7an39bddmfpc-launcher slots=1 train-960258573108964736-7an39bddmfpc-worker-0 slots=1
# MPI方式启动mpirun --allow-run-as-root -np $GPU_NUM -H $NODE_IP_SLOT_LIST python3 train.py --data-dir /opt/ml/input/data# horovod方式启动horovodrun -np $GPU_NUM -H $NODE_IP_SLOT_LIST --network-interface eth0 python3 train.py --data-dir /opt/ml/input/data
{ "cluster": { "ps": [ "train-960252492096760832-7an13ppfli80-ps-0.train-100031385875.svc:2222", "train-960252492096760832-7an13ppfli80-ps-1.train-100031385875.svc:2222" ], "worker": [ "train-960252492096760832-7an13ppfli80-worker-0.train-100031385875.svc:2222", "train-960252492096760832-7an13ppfli80-worker-1.train-100031385875.svc:2222" ] }, "task": { "type": "ps", "index": 0 }, "environment": "cloud" }
变量名 | 变量描述 | 示例 |
HEAD_ADDR | Ray 集群的 Head 节点地址 | HEAD_ADDR=train-1282671078021627392-9qu5j2n90b9c-head-0 |
HEAD_PORT | Ray 集群的 Head 节点端口 | HEAD_PORT=6379 |
RANK | 当前节点在集群中的序号,RANK0为HEAD节点 | RANK=0 |
job.py。import rayray.init()# 定义 Actor 类@ray.remoteclass Counter:def __init__(self):self.value = 0def increment(self):self.value += 1return self.value# 创建 Actor 实例counter = Counter.remote()# 并发调用 Actor 方法futures = [counter.increment.remote() for _ in range(10)]results = ray.get(futures) # [1, 2, 3, ..., 10]print("计数器结果:", results)
cd /opt/ml/code; python job.py
@ray.remote(resources={"Rank:1": 0.001})def f(a, b, c):return a + b + c
[0] NCCL INFO Channel 00/0 : 8[0] -> 0[0] [receive] via NET/IBext/0/GDRDMA
NCCL_IB_GID_INDEX=3NCCL_IB_SL=3NCCL_CHECK_DISABLE=1NCCL_P2P_DISABLE=0NCCL_IB_DISABLE=0NCCL_LL_THRESHOLD=16384NCCL_IB_CUDA_SUPPORT=1NCCL_IB_HCA=mlx5_bondNCCL_NET_GDR_LEVEL=2NCCL_IB_QPS_PER_CONNECTION=4NCCL_IB_TC=160NCCL_PXN_DISABLE=1NCCL_IB_TIMEOUT=24NCCL_DEBUG=INFONCCL_SOCKET_IFNAME=eth0GLOO_SOCKET_IFNAME=eth0TCCL_TOPO_AFFINITY=4
文档反馈