在深度学习模型训练领域,硬件选择直接影响着训练效率和成本。作为一名长期从事计算机视觉研发的工程师,我最近对Intel Habana Gaudi HPU和NVIDIA A100 GPU进行了详细的对比测试。本文将分享我们在YOLOv5模型训练中的实测数据、配置细节和优化经验,帮助开发者根据自身需求选择最适合的硬件方案。
我们选择了当前云端最主流的两种配置进行对比:
从纸面参数来看,A100采用NVIDIA Ampere架构,具有6912个CUDA核心和40GB HBM2显存;而Gaudi1专为AI训练优化,集成了矩阵乘法加速器和专用张量处理核心。但实际性能如何,还需要通过真实训练任务来验证。
我们选择YOLOv5s模型在COCO数据集上进行测试,原因有三:
提示:在对比测试中,建议选择社区广泛使用的模型和数据集,这样结果更具参考价值。我们也尝试过其他模型,但YOLOv5的PyTorch实现对两种硬件都支持良好。
启动AWS p4d.24xlarge实例后,需要执行以下准备工作:
bash复制# 连接到实例
ssh -i ~/.ssh/sshkey IP_ADDRESS
# 安装依赖
conda create -n yolov5 python=3.8
conda activate yolov5
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
YOLOv5原生支持PyTorch的分布式训练,我们使用以下命令启动8卡训练:
bash复制python -m torch.distributed.run --nproc_per_node 8 train.py \
--batch 128 \
--data coco.yaml \
--weights yolov5s.pt \
--device 0,1,2,3,4,5,6,7
关键参数说明:
--nproc_per_node 8:使用全部8张GPU--batch 128:总批次大小,会自动分配到各卡--device:显式指定使用的GPU编号在稳定训练阶段,我们观察到:
成本计算公式:
code复制(108秒/epoch) × (32.77美元/小时 ÷ 3600秒) = 0.98美元/epoch
注意事项:A100的实际利用率未达100%,主要是因为数据加载和预处理成为了瓶颈。使用更快的存储(如NVMe SSD)或启用DALI加速可能进一步提升性能。
Gaudi需要特定的软件栈支持,我们从Habana Deep Learning Base AMI启动实例后,还需执行:
bash复制# 安装Habana PyTorch支持
pip3 install habana_frameworks
export PYTHON=/usr/bin/python3.8
wget -nv https://vault.habana.ai/artifactory/gaudi-installer/latest/habanalabs-installer.sh
chmod +x habanalabs-installer.sh
./habanalabs-installer.sh install --type pytorch
为使YOLOv5能在HPU上运行,需要添加Habana特定的优化:
python复制import habana_frameworks.torch.core as htcore
from habana_frameworks.torch.hpex import hmp
from habana_frameworks.torch.hpex.optimizers import FusedSGD
from habana_frameworks.torch.hpex.movingavrg import FusedEMA
# 在训练循环中添加同步点
htcore.mark_step()
主要修改包括:
完整的训练启动命令如下:
bash复制python3 -m torch.distributed.launch --nproc_per_node 8 train.py \
--noval \
--data ./data/coco.yaml \
--weights '' \
--cfg yolov5s.yaml \
--project runs/train1 \
--epochs 300 \
--exist-ok \
--batch-size 128 \
--device hpu \
--run-build-targets-cpu 1 \
--run_lazy_mode \
--hmp \
--hmp-opt-level O1
实测数据表明:
虽然单epoch时间比A100长,但由于实例价格更低,总体成本反而有优势。
| 指标 | 8×A100 | 8×Gaudi1 |
|---|---|---|
| 每epoch时间 | 108s | 201s |
| 实例每小时成本 | $32.77 | $13.11 |
| 每epoch成本 | $0.98 | $0.73 |
| 成本效率比 | 1.0x | 1.34x |
根据我们的测试经验:
选择A100的情况:
选择Gaudi1的情况:
HPU训练卡死
GPU利用率低
在Gaudi上,混合精度配置对性能影响很大。我们推荐:
bash复制--hmp --hmp-opt-level O1 --hmp-bf16 ./ops_bf16.txt --hmp-fp32 ./ops_fp32.txt
其中ops文件定义了各操作的数据类型,需要根据模型特点微调。
虽然测试中使用batch=128,但我们发现:
两种硬件都受限于数据加载速度,我们采用的优化包括:
在Gaudi上,额外需要注意:
python复制# 禁用不必要的数据校验
torch.hpu.enable_unsafe_memory_mode()
虽然本次测试使用的是Gaudi1,但Intel已经发布了Gaudi2,其特点包括:
根据官方数据,Gaudi2在BERT训练上的性价比已达A100的2-3倍。我们计划在获得实际访问权限后,第一时间进行计算机视觉任务的测试。
从工程实践角度看,AI硬件领域正在形成多元竞争格局。虽然NVIDIA的CUDA生态仍然占据主导地位,但Habana等专用加速器的出现,为追求性价比的用户提供了新的选择。在实际项目中,建议根据团队的技术储备、项目预算和时间要求进行综合考量。