PyTorch 安装与运行维护科普 · Dylan AI Agent Nexus
PyTorch · Training/Inference · Versioning · Ops
什么是 PyTorch
PyTorch 是主流深度学习框架之一,提供张量计算、自动求导、分布式训练与丰富生态(TorchVision/TorchAudio 等)。在 AI 主机环境中,它承担“训练/微调/推理”的核心职责。
版本与构建(与 GPU 栈的关系)
- 版本矩阵:PyTorch 与 驱动/CUDA/cuDNN/TensorRT 存在兼容关系;优先采用官方页面提供的 pip/conda 指令生成的匹配组合。
- GPU/CPU 构建:无 GPU 环境可使用 CPU 版;GPU 版需选择对应 CUDA 构建(如 cu121)。
- 容器优先:在生产环境推荐使用官方/社区稳定容器,减少环境差异。
本页不提供安装步骤;请根据官方指令选择与您 CUDA/驱动相匹配的二进制包。
训练与微调(关键要点)
- 数据管道:使用
Dataset/DataLoader
,开启num_workers
与预取;确保随机打乱。 - 混合精度:
torch.cuda.amp
可显著降低显存并加速训练;关注梯度缩放。 - 分布式训练:
torch.distributed
/DDP;设置合适的后端(NCCL/Gloo),注意梯度同步与通信带宽。 - 可复现性:固定随机种子,控制
cudnn.deterministic
与benchmark
,锁定依赖。
推理与部署(正确性优先,再追求极致)
- 脚本化与编译:在 2.x 版本中尝试
torch.compile
,对部分网络可获得可观提速。 - 导出 ONNX:对时延敏感的服务可导出 ONNX 并使用 TensorRT 构建引擎。
- 批处理与并发:设置合适的 batch 与请求并发;多进程/多实例隔离 GPU 上下文。
性能与稳定(实践建议)
- 显存管理:监控峰值显存、释放缓存(
torch.cuda.empty_cache()
),减少碎片。 - NCCL/通信:多卡/多机训练关注 NCCL 环境与拓扑;避免 PCIe 过载与 NUMA 跨节点。
- 算子落地:优先使用官方算子与常见数据布局(NCHW/NDHWC),获得更好内核支持。
常见问题与排错
- 导入失败/找不到 CUDA:核对 PyTorch 构建与 CUDA 版本;通过
torch.version.cuda
与torch.cuda.is_available()
快速自检。 - 性能抖动:检查温度降频、
cudnn.benchmark
、数据加载瓶颈;使用 profiler 定位热点。 - 分布式挂起:确认 NCCL 端口、防火墙、主从地址与超时配置;避免 rank 配置错误。
排错顺序:先环境(驱动/CUDA/版本)、再框架(导入/自检)、再模型(数据/算子/形状),逐层定位。
维护与合规
- 版本留痕:记录训练/推理所用 PyTorch/CUDA/cuDNN/驱动版本与关键参数,便于复现。
- 最小权限:限制生产环境的环境/依赖变更;灰度验证、回滚预案必不可少。
- 备份与镜像:对关键环境与模型/权重/依赖做镜像与校验,确保快速恢复。