1. 硬件基础优化
nvidia-smi验证驱动状态);从NVIDIA官网下载对应版本的CUDA Toolkit(如CUDA 11.7/11.8),使用rpm或yum安装并配置环境变量(PATH/LD_LIBRARY_PATH),确保PyTorch能识别GPU加速能力。cudnn.h复制到/usr/local/cuda/include,libcudnn*复制到/usr/local/cuda/lib64,并赋予可读权限,提升GPU计算效率。2. GPU加速配置
torch.cuda.amp.autocast()和torch.cuda.amp.GradScaler()组合,在保持模型精度的前提下,将计算从32位浮点(FP32)转为16位浮点(FP16),减少显存占用并加速计算(尤其适用于支持Tensor Core的GPU,如NVIDIA V100/A100)。torch.nn.parallel.DistributedDataParallel(DDP)而非DataParallel(DP),DDP通过多进程方式分配数据到各GPU,减少GPU间通信开销,提升多GPU利用率(需配合torch.distributed.init_process_group初始化进程组)。.to(device)将模型和数据移至GPU(device = torch.device("cuda" if torch.cuda.is_available() else "cpu")),避免先创建在CPU再转移的冗余操作;禁用验证/推理时的梯度计算(with torch.no_grad()),减少显存占用。3. 数据加载优化
torch.utils.data.DataLoader的num_workers参数(设置为CPU核心数的2-4倍)启用多进程异步加载,避免主线程等待数据;使用prefetch_factor参数(如prefetch_factor=2)提前加载下一批数据,减少数据加载延迟。DataLoader的pin_memory参数设为True,将数据从CPU的普通内存复制到固定内存(页锁定内存),加速数据从CPU到GPU的传输(仅适用于GPU训练)。4. 模型与代码优化
BatchNorm)加速模型收敛;对大规模模型(如BERT、GPT)采用模型并行(将模型拆分到多个GPU)或模型压缩(量化、剪枝),减少计算量。torch.quantization模块对模型进行8位或16位量化,减少模型大小和推理时间;使用torch.utils.checkpoint将模型分成若干段,仅保存中间激活值而非全部,降低显存占用(适用于显存不足的场景)。torch.profiler工具分析代码性能瓶颈(如卷积层、矩阵乘法),针对性优化;避免在训练循环中使用item()、cpu()、numpy()等CPU-GPU数据传输操作,减少性能损耗。5. 软件环境优化
conda install pytorch torchvision torchaudio cudatoolkit=xx.xx -c pytorch安装PyTorch,conda会自动处理与MKL(数学核心库)的链接,优化CPU计算性能。OMP_NUM_THREADS(如export OMP_NUM_THREADS=4)控制OpenMP线程数,避免多线程竞争;设置MKL_NUM_THREADS(如export MKL_NUM_THREADS=4)优化MKL库的多线程性能。