4060Laptop大戰(zhàn)A100?AI繪畫硬件性能分析

關(guān)于評論區(qū)里說的比較多的點,統(tǒng)一回答一下:
目錄:
1、xformers,paddle和pytorch
2、模型配置
3、systeminfo插件的benchmark
?
1、關(guān)于xformers,paddle和pytorch:
?
因為這次的A100和V100都是白嫖的BML Codelab的服務器,在BML Codelab上只能使用paddle框架,因此測試是用paddlenlp ppdiffusers寫的。
當然,利用paddle也是可以訓練pytorch模型的,修改保存參數(shù)部分的代碼即可,我這里有一個幫各位觀眾改好的LoRA訓練AI Studio項目,見:https://aistudio.baidu.com/aistudio/projectdetail/6129764?sUid=348157&shared=1&ts=1684341949005
?
ppdiffusers的文檔中,建議在顯存足夠時不打開xformers,使用xformers會降低顯存消耗的同時降低運行速度,為了保證全部任務都能最最快運行,這里所有的運行腳本都沒有打開xformers,可以參考右側(cè)這個鏈接中對enable_xformers_memory_efficient_attentio這個arg的解釋(https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers/examples/dreambooth)
?
但是在huggingface diffusers的官方文檔中,無論顯存狀態(tài)如何均建議開啟xformers,可以參考這個鏈接:https://huggingface.co/docs/diffusers/optimization/xformers。
?
個人懷疑造成這樣區(qū)別的原因是兩個框架對xformers的實現(xiàn)有區(qū)別??紤]到huggingface diffusers文檔中Memory Efficient Attention部分的示例特意手動調(diào)整型精度到fp16(參考:https://huggingface.co/docs/diffusers/optimization/fp16#memory-efficient-attention),個人懷疑huggingface的xformer實現(xiàn)是部分依賴fp16的精度的。
?
另一方面,閱讀xformers的論文(https://arxiv.org/pdf/2205.14135.pdf),查看附錄B1可以看到Memory-efficient forward pass的工作方式,分析式2和Recall中的Attention計算方式,不難發(fā)現(xiàn)xformers的加速前提是Q、K和V要足夠大,這樣才能把讀取整個Q、K、V需要的時間給節(jié)省出來。從這個角度來說,paddle文檔中說xformers會導致速度減緩,huggingface文檔中說xformers能提升速度,其實都是對的,還是要看具體的場景。
?
我這里重新進行了實驗,4060laptop在使用xformers之后,在fp16的任務中確實均有不同程度的速度下降,但下降幅度輕微,不到1秒,所以我難以判斷是否是誤差值,但足以說明4060laptop在本測試用到的任務當中使用xformers不會有多少加速,和許多觀眾朋友的體感不同更多的來源于模型的設置不同。
另一方面,使用torch+diffusers重新測試,和paddle+ppdiffusers的生成時間誤差在一秒之內(nèi),基本上也可以排除ppdiffusers在已有的fp16成績上是有負優(yōu)化的了。
?
2、關(guān)于模型設置:
?
模型使用的feature_extractor、scheduler、textecoder、tokenizer等等配置與huggingface上模型項目的默認設置相同,例如Anthing的具體配置在https://huggingface.co/admruul/anything-v3.0/blob/main/model_index.json可以看到。測試使用的模型都是diffusers格式的,所以和很多人常用的pt、safetensors格式是不一樣的。
?
推理時,全部使用ppdiffusers的默認設置,所以各任務的默認step數(shù)是不一樣的,更多的細節(jié)請查看視頻簡介的Benchmark腳本。
3、關(guān)于systeminfo插件的benchmark:
這個視頻的測試內(nèi)容沒辦法用systeminfo插件跑測試,主要是因為這次測試有 7 個項目,涵蓋了 6 種推理任務和 1 種訓練任務,而systeminfo的benchmark腳本只進行純文生圖任務,有關(guān)這一點請參考該插件的benchmark腳本代碼,里面還完整地寫了benchmark所使用的參數(shù)信息:https://github.com/vladmandic/sd-extension-system-info/blob/main/scripts/benchmark.py。