Pytorc分布式训练

当模型训练过程显存占用较大无法在单个gpu上完成的时候,必须使用分布式训练(这个结论太武断,实际上还有一种思路,有兴趣的读者可以百度“BERT重计算”),将模型或者数据分配到不同的节点上,降低单个gpu的负荷。

这里重点介绍最简单的数据并行范式的分布式训练(DistributedDataParallel,ddp),基本思想就是将一个大的batch的训练数据的loss计算拆分成多个小的batch,分配到多个不同的gpu上分别计算loss,然后收集加总,再进行反向传播。

多机多卡数据并行训练

多机多卡数据并行训练最方便的实现是利用torch.nn.parallel.DistributedDataParallel和torch.distributed.launch脚本

修改自官方example的示例代码

pytorch-example-distributed

不使用torch.distributed.launch.py
# 单个节点
# 直接使用默认设置
python example.py

# 多个节点 按实际需求设置环境变量
#  第1个节点
# master节点IP
export MASTER_ADDR=192.168.0.40
# master节点端口
export MASTER_PORT=12669
# 当前节点编号
export RANK=0
# 总节点数量
export WORLD_SIZE=3
# 分布式训练开始运行
python example.py


#  第2个节点
# export MASTER_ADDR=192.168.0.40
# export MASTER_PORT=12669
# export RANK=1
# export WORLD_SIZE=2
# python example.py
使用torch.distributed.launch.py
# 使用torch.distributed.launch.py 详情请参考torch.distributed.launch.py的注释

#单个节点
python -m torch.distributed.launch --nnode=1 --node_rank=0 --nproc_per_node=1 simple_example.py --local_rank=0 --local_world_size=1

# 多个节点
# 按实际需求修改命令中的参数
#  nnode 为总节点数
#  node_rank 当前节点编号
#  nproc_per_node 每个节点进程数
#  master_addr 主节点IP
#  master_port 主节点端口

#  第1个节点
# python -m torch.distributed.launch --nnode=2 --node_rank=0 --nproc_per_node=1 --master_addr "192.168.0.1" --master_port 12669 example.py --local_rank=0 --local_world_size=1

#  第2个节点
# python -m torch.distributed.launch --nnode=2 --node_rank=1 --nproc_per_node=1 --master_addr "192.168.0.1" --master_port 12669 example.py --local_rank=0 --local_world_size=1
来自transformers的example

transformers分布式训练example

官方参考文档

个性化的需求可以参考pytorch官方文档:

<think>好的,用户问如何查看PyTorch版本。首先,我需要回忆之前对话的历史。之前用户询问了一个conda安装PyTorch的命令,里面提到了版本号的问题,当时指出用户指定的版本可能不存在,并建议了正确版本。现在用户可能已经安装了PyTorch,想确认安装的版本是否正确。 用户可能的需求是验证安装是否成功,或者检查当前环境中的PyTorch版本,以便确保与其他库的兼容性,或者在运行代码时避免版本不匹配的问题。用户可能是刚接触PyTorch的新手,不太熟悉如何通过命令行或代码查看版本。 我需要提供几种不同的方法,满足不同场景的需求。比如在Python环境中运行代码、使用pip或conda命令查看,还有Jupyter环境中的方法。同时,要指出需要注意的点,比如环境激活,避免权限问题等。 另外,用户可能对CUDA版本也感兴趣,所以应该包含如何检查CUDA是否可用。需要确保步骤简单明了,代码示例准确,避免用户操作时出错。还要提醒用户如果遇到问题,可能需要检查安装是否正确或者环境是否激活。 最后,应该用友好的语气结尾,邀请用户进一步提问,确保他们的问题完全解决。</think>以下是在不同环境中查看PyTorch版本的 **5种专业方法**,附带使用场景说明: --- ### 一、Python交互式验证(推荐) ```python import torch # 主版本号检测 print(f"PyTorch版本: {torch.__version__}") # 输出示例: 2.3.0 # CUDA兼容性检测 print(f"CUDA可用: {torch.cuda.is_available()}") # True表示GPU版可用 ``` --- ### 二、终端快速查询 ```bash python -c "import torch; print(torch.__version__)" ``` --- ### 三、包管理器检查 #### Conda环境(推荐) ```bash conda list | grep torch ``` 输出示例: ``` pytorch 2.3.0 py3.10_cpu_0 pytorch ``` #### Pip环境 ```bash pip show torch ``` --- ### 四、Jupyter Notebook验证 新建代码单元格执行: ```python import torch torch.__version__ ``` --- ### 五、系统级深度检测 ```python import torch print(torch.__config__.show()) # 显示完整编译配置 ``` --- ### 关键注意事项 1. **环境激活**:使用conda时需先激活目标环境 ```bash conda activate your_env_name ``` 2. **版本对应**:若显示`ModuleNotFoundError`,说明当前环境未安装PyTorch 3. **CUDA版本**:GPU版用户可额外执行 ```python print(torch.version.cuda) # 显示CUDA工具包版本 ``` > 建议通过方法一进行基础验证,需要诊断深度配置时使用方法五。遇到版本不符问题时,建议重建虚拟环境进行版本控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值