截至2023年4月,用AMD显卡做机器学习怎么样?

您所在的位置:网站首页 做设计用amd 截至2023年4月,用AMD显卡做机器学习怎么样?

截至2023年4月,用AMD显卡做机器学习怎么样?

2023-04-04 11:29| 来源: 网络整理| 查看: 265

关于AMD GPU计算加速的开发掣肘:

使用AMD显卡做机器学习的局限:工具链匮乏、库资源匮乏、开发和迭代兼容性的代价较大。

GPU加速计算方面,Nvidia是先发优势;AMD起步较晚,另一方面是前些年AMD CPU板块险些被INTC斩落,没有精力和研发计划去开辟GPU板块,近几年虽然苏氏CPU流派已经翻身,但回过头来看Nvidia CUDA早已成为事实工业标准,这中间至少10年的差距,AMD再造一套标准和生态已然不切实际。如今我们讨论AMD显卡,更多是讨论图形处理部分,极少讨论计算加速,但倘若你准备购买MI250计算卡,务要三思。

因此,AMD在机器学习方面的权宜策略就是兼容并抄袭CUDA,管理学上叫作引进-消化-再创新。AMD GPU软件栈首先要做的就是实现API兼容,通过这种方式将诸如Tensorflow/Pytorch等等已经针对CUDA API/libs/tools/drivers做过适配调优的DL Framework整体兼容到自家GPU卡,并兼顾对齐了CUDA生态资源(为此需要针对CUDA提供极便利且持续的开发者友好性)。

那么如何实现这种兼容呢?这个项目叫作“ROCm - Radeon Open Compute Platform”(Radeon锐龙就是AMD显卡品牌),是通过二进制翻译/进程虚拟机技术去解析和转换CUDA PTX通用指令到Radeon指令--这里注意PTX并非真实的NV GPU硬件ISA,而是向上封装的伪代码层(Virtual Archiecture)。梳理一下通常的GPU代码编译、BT翻译和运行过程(ROCm到NVCC):

NVCC通常流程,需要先经过一层通用的PTX架构生成第一阶段的代码,即原始代码首先被翻译成由PTX ISA编写的程序,在生成PTX文件后,NVCC编译器会将PTX传入PTXAS(驱动工具链)进一步编译,并依据具体架构作进一步优化,生成对应具体GPU型号的.cubin(.cubin文件是CUDA程序对应的二进制代码,可以对标到C++中的obj文件);这期间根据开发者所选择Virtual Archiecture,NVCC可能会生成多份不同架构的.cubin,一般选择的架构越低,它所能兼容的范围就越大;逐层向下编译的过程中,最终会调取CUDA闭源的硬件接口和ISA指令;倘若调用的是AMD Radeon硬件驱动和ISA指令,则ROCm参与并在编译流程中需要追加一步Binary Transaction动作(静态或动态),针对程序-指令、寄存器、I/O、中断信号、TLB内存地址、用户态/核心态…等等环节进行转换,将原本CUDA编译过程中需要生成的Nvidia GPU指令转换为Radeon指令;注意这个阶段是很繁重的编译流程,因为CUDA程序首先需要经由ROCm引擎转译成OpenCL代码,后者再次编译才能调用AMD硬件;由于存在一层将CUDA代码转译为CL代码进而做第二次编译才能调用驱动程序和指令的繁琐过程,因此编译效率低且难以优化提升;在运行阶段,逻辑上依然是ROCm到NVCC;用户端普通的host code正常执行,当执行到device code的时候,host code调用ROCe,调用CUDA runtime API(libcuda.so),BT翻译参与,后者再调用驱动程序(driver API libcudart.so或是AMD drivers);P.S:至于CUDA runtime API的内部执行过程,以及上层调用的CUDA libs资源,这些都是无法解释的,因为CUDA是闭源的。

由此可见,基于ROCm翻译实现“CUDA兼容的AMD GPU”所面临的掣肘是显而易见的:工具链匮乏、库资源匮乏、开发和迭代兼容性的代价较大,以及难以发展自有生态。在机器学习场景中,就如流行的Pytorch框架也难以更好的支持A卡加速,因此并非AMD GPU不能加速机器学习任务,而是开发工作十分勉强且在迭代和生态延展性方面不可取。另外,ROCm当前支持的GPU显卡型号仍然有限,感谢知友指正,截至2021年ROCm 4.3官方支持GFX1030(RX6800、6800XT、6900XT)等型号显卡。ROCm版本更新的细节可参考这篇回答

可以参考ROCm Github项目主页:

- GitHub - RadeonOpenCompute/ROCm: ROCm - Open Source Platform for HPC and Ultrascale GPU Computing- Welcome to AMD ROCm™ Platform- New AMD ROCm™ Information Portal - ROCm v4.5 and Above版本方面:ROCm官方路线图是两个月一版本迭代;for Pytorch/Tensorflow大概3个月一版本,for Ubuntu是半年一版本,Ubuntu还有lts计划,两年一个lts版本。可参考这篇回答ROCm 4.0已完成的针对ML/HPC场景的兼容性列表,可以看到当时没有Pytorch/Tensorflow的支持

那么在Non Nvidia CUDA的阵营里,还有哪些方案可以用于AI加速:

OpenCL:当年由AMD/Apple等厂商共同发起的工业标准,历史悠久,道阻且长;虽然生态弱于CUDA,但至少可运行一些ML加速的代码,掣肘之一仍是无法支持Tensorflow/Pytorch等流行框架,以及开发难度高,环境不友好;MSFT的某项目,号称支持A卡加速: GitHub - microsoft/antares: Antares: an automatic engine for multi-platform kernel generation and optimization. Supporting CPU, CUDA, ROCm, DirectX12, GraphCore, SYCL for CPU/GPU, OpenCL for AMD/NVIDIA, Android CPU/GPU backends. P.S:ROCm甚至于2021年提交了部分Windows平台相关的代码,后续进度保持关注。关于AMD GPU硬件和ROCm生态及客群:

这是一个很牵强的题目,首先想到的是国内“海光信息的DCU产品”;

DCU指的是深度计算处理器(Deep-learning Computing Unit),是海光信息称之为GPGPU架构的适用于计算密集型任务加速的协处理器产品。这个DCU产品的有趣在于,它全面兼容ROCm GPU计算生态,由此对齐CUDA生态、工具链和开发者环境等,使得海光DCU成为快速上市的通用加速器产品。

海光DCU的设计流派源于AMD,确切讲是一颗标准的美国芯,就是AMD RX4000系列 -- 当年,AMD 3亿美金出售Zen,2亿美金出售GPU IP给海光,质优价廉(当时接单的唐志敏老师是一位很靠谱的同志,据传已经被斗争走了);海光是基于该IP做的redesign,之后演化为这颗DCU协处理器,因此对于CUDA兼容性的翻译依旧是通过ROCm完成,即ROCm到NVCC。

当年,AMD的IP License仅包含RTL+驱动的交付,不包含电路和制造工艺,看似这一点对于硬件复刻和重新设计都是不小的难度,尤其在AMD原始设计里面还有一些是与GF的物理工艺绑定;曾经在物理设计方面还是可以获得AMD的NRE指导以及投片到GF,但在美国实体名单事件之后,海光依然可以选择悄然转去Samsung生产,因为GF 14nm制程与Samung 14nm制程是相同源头。

综上,这是海光信息DCU加速器的情况,它源于AMD且同时基于ROCm去兼容CUDA。当然海光信息的产品很少面向大宗IDC市场,很多时候它的商业模式就是前端曙光获得订单,后端海光供应芯片/板级方案(CPU+DCU打包),主打信创IDC。

海光DCU/深算一号加速器与NV和AMD GPU产品的比较BTW:同时想到另一个参考例子,国内GPU初创公司沐曦,就是专注在研发全兼容CUDA及ROCm生态的国产GPU计算卡(面向AIDC和HPC的计算需求),创始团队也是AMD背景。最后谈谈CUDA兼容的难点:

众所周知CUDA生态的护城河已经很难逾越,不仅是软件栈的优势,还包括NV每年每代硬件产品发布时伴随更新的指令、算子和加速库/数学库,于是CUDA版本更新便会加入这些特性以及加入针对新硬件特点的支持;这种闭源更新的模式对于“那些硬件独立发展但软件栈生态保持追随CUDA的厂商”而言是极为捶胸顿足的。

2023年3月的Nvidia GTC发布会再次刷新了100个算子;做CUDA兼容,最担忧的是NV每年刷一遍算子和新指令,尤其这代算子很多都是针对Hopper硬件新架构的特性而设计,模仿不来。想想AMD MI250计算卡的销量惨淡,其中一个原因就是算子不兼容,其ROCm虚拟机道路走得极累,且并未100%实现。INTC同样是选择虚拟机/BT翻译的路线,还包括针对ARM+Android指令集的跨生态兼容,直到最终IBT/Houdini部门都被裁撤了。

BTW:曾经一位INTC出身的老兄弟成功使用C++手搓了等效函数,虽然性能相比CUDA算子慢几个数量级;但这需要将NV GPU流水线摸索的极为透彻才可能写出新版CUDA的等效函数,从他的INTC经验来看这也是完全不同解构的工作,一个是时间序列,一个是高并行...。另关于BT二进制翻译技术的杂谈,可以参考我的专栏文章:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3