当前位置:AIGC资讯 > AIGC > 正文

Stable Diffusion AMD加速方法-ZLUDA重出江湖

       目前几大开源的Stable Diffusion平台,更新速度都慢了,一个是没有太多新技术出现,新出的基础模型也都不完整开源了(API调用),能整的功能,也都整得差不多了。然后一群AMD死忠还在等着有一个能有一天小三上位;毕竟现在还被CUDA压得妥妥的。

       目前在AMD在Stable Diffusion加速方法主要有四种:

       a. 最常用的DirectML, 比较经典的方法,是Microsoft的DirectX 12的库之一,与Microsoft的DirectX架构概念一至,就是在驱动与应用层间加一层,用来避免不同硬件与应用之间的兼容性。实际性能跑下来,在directML方法下,只能发挥AMD显卡的1/3性能。

       b. ONNX Runtime, ONNX的方法是,先用AMD架构优势,去算出一个AMD显卡的特有模型,然后对基进行标准封装,使用其它支持ONNX的平台也能用这个模型进行推理。速度是快的,但模型需要在当前的显卡上进行预生成,而且在使用上有很多限制,不如通用的基础模型方便。

       c. ONNX Olive, 这是Microsoft也发现了DirectML的天生架构不能满足AMD在AI应用后,为AMD专门推出了基于ONNX的AMD优化版本。速度也是快的,缺点与ONNX Runtime一样。

       d. 三个月前ZLUDA重出江湖。ZLUDA的作者,最初是与Intel合作的,在Intel显卡上做了一个接口,可以直接让Nvidia的CUDA应用调用Intel显卡资源,实际性况是效果不错,但Intel这么牛X的企业,怎么可能寄人篱下,本着做大做强的原则,Intel做了OpenVINO, 而且做得很好,与CUDA能打一打的样子,ZLUDA作者就失业了。同时,AMD也看好AI市场,高调地做了ROCm, 想着与CUDA打一打的,但做了很多年很多年,一直问题不断,ZLUDA项目让AMD看到了一个短期的机会,就与ZLUDA合作一下,起嘛能多卖点显卡嘛。然后Nvdia更决定,直接说了,如果其它硬件上用CUDA,我就要走法律程序。于是ZLUDA彻底成为一个开源项目。

      ZLUDA宣称可以在CUDA应用上,可实现完整的AMD显卡原生性能,这点我是相信的。但AMD显卡硬件架构本身,与Nvidia还是有很大区别的,所以在CUDA这种量身定制的应用上,即使AMD能跑满性能,还是与Nvidia有差距。

     目前stable diffusion的几个主流开源平台,都已经支援ZLUDA,ZLUDA作者也表示,目前处于alpha阶段,也就是说有很多bug,也有很多提高空间,但确实能用。

     顺便说一句,很多同学关心的Windows+ROCm+Stable diffusion的进展,pytorch 2.3 已经推出,依然是不支持windows下的ROCm, 所以还是没戏。不管从ZLUDA还是pytorch的反馈来看,他们都指出ROCm for windows 本身还有很多问题。这锅又丢回了AMD。

     最后,我自己还有块RX5700xt显卡,希望ROCm能在它有生之年,发挥余热。

更新时间 2024-06-17