? ? ? ?目前幾大開源的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能在它有生之年,發揮余熱。