总结
个人认为Nvidia显卡目前依然是比较好的方案,使用AMD显卡需要针对性的看具体用途并做测试,原因如下:
1 CUDA具备先发优势,开源生态成熟,可能在很长一段时间内都是主流,其他的追随者虽然提供类似的加速计算工具,很难得到广泛的开源生态支持。
2 其他平台的底层API,很难做到和CUDA接口完全一致,目前ROCm模仿的是英伟达9和10系列的显卡的计算接口,可能还需要一些时间积累。
3 其他平台的稳定性也有所不足(可能导致人工开发维护成本增加),CUDA经过很多年的积累,很多开源社区的使用也让其发现和修复了很多bug,不只是计算平台本身,可能还涉及系统、硬件等多方面,在没有足够的开源生态去帮助调试发现bug的时候,计算平台厂商的工作量是非常大的。
4 成本优势相比维护成本微弱,虚拟币挖矿的大潮过去后,显卡价格落差在缩小,游戏性能相近的RTX 4080和RX7900XT,售价分别是8000和6000左右,并且价格方面可以通过二手显卡、低配显卡方面妥协,并且A卡很可能速度上也有牺牲,游戏性能相当的卡可能跑AI就会有一定的差距)
5 除了软件生态不足,A卡连自家的显卡目前支持度还非常有限,消费级显卡只有两款支持,目前最新的显卡RX7900XT都不支持自己的计算平台ROCm
名词解释
ROCm:AMD发布的GPU加速计算库,只支持AMD显卡,支持linux,据说windows也开始支持
DirectML:微软发布GPU加速计算库,据说支持AMD、NVIDIA等显卡,只支持windows
CUDA:英伟达发布的GPU加速计算库,只支持NVIDIA显卡,支持windows和linux,下游软件生态最成熟稳定
三者横向对比参考资料:
有人使用过Tensorflow-DirectML嘛,性能和cuda或者rocm相比如何?
方案介绍
方案一Linux+ROCm
优点:
1性价比略高
2 Pytorch2.0兼容
缺点:
1软件生态不成熟,AMD早在2016年4月就发布了ROCm平台,迄今已经整整7年,但因为起步太晚,而且官方支持力度有限,尽管开源,却一直没能发展开来。
2部分底层接口尚未实现,还不能完全替代Linux+CUDA方案。
3目前支持的硬件非常有限,目前消费级显卡仅仅支持老款的RX6900XT、RX6600、VII
方案二Windows+ROCm
参考链接:
7年了!AMD CUDA杀手ROCm终于登陆Windows、支持游戏显卡
优点:
暂无
缺点:
1下游软件生态不成熟,目前所有基于pytorch的模型(如chatGLM)都无法用这种方式运行。虽然在今年4月14日,AMD宣布ROCm宣布支持windows,但是截止到6月25日,pytorch官方网站显示windows系统下pytorch还不支持ROCm,需要持续关注
2支持的显卡非常有限,目前windows下只支持Radeon Pro W6800、RX 6900 XT、RX 6600
方案三Windows+DirectML
参考链接
AMD GPU,PyTorch,Windows和DirectML
Enable PyTorch with DirectML on Windows
优点:
1支持多种GPU
缺点:
1软件支持十分匮乏,目前pytorch已经更新到2.0,目前官方文档描述DirectML只支持pytorch1.13,仅仅就chatGLM来说,官方文档中要求pytorch版本大于1.10,如果只是运行chatGLM的推理,可能够用(具体稳定性如何,是否支持还需要进一步真机测试),只是可能未来程序升级可能会比较受限,比如用其他的更新的模型,对版本要求可能会更高。
方案四Windows+CPU
优点:
1不借助显卡加速,只用CPU计算,部分模型在CPU和GPU做推理速度差别不明显,多数模型速度虽有明显差异,但也能将就使用。
2硬件成本更低,必要的情况下可升级显卡加快速度。
3软件支持兼容性好,几乎所有模型都支持CPU推理。
缺点:
1可以做推理,但是不适合做模型训练。
方案五Windows+CUDA
优点:
1基本上绝大多数的Nvidia显卡都支持
2追求性价比可以考虑二手显卡、低配显卡
缺点:
1相比linux+CUDA,开源生态略显不足,程序稳定性略低
方案六Linux+CUDA
优点:
1软件生态完善,最活跃,目前流行的多卡并行计算的开源框架多数都是基于该方案
2基本上绝大多数的Nvidia显卡都支持
3追求性价比可以考虑二手显卡、低配显卡
4稳定性最高,减少后期维护成本
缺点:
暂无