刷新AI作圖速度,最快的開源Stable Diffusion出爐
發(fā)布日期:2023/1/6 14:52:54 瀏覽量:
版權(quán)聲明:本文為CSDN博主「OneFlow深度學(xué)習(xí)框架」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/OneFlow_Official/article/details/128156919
如有侵權(quán)請聯(lián)系我們立即刪除!
第一輛汽車誕生之初,時速只有 16 公里,甚至不如馬車跑得快,很長一段時間,汽車尷尬地像一種“很酷的玩具”。人工智能作圖的出現(xiàn)也是如此。
AI 作圖一開始的 “風(fēng)格化” 本身就為 “玩” 而生,大家普遍興致勃勃地嘗試頭像生成、磨皮,但很快就失去興趣。直到擴(kuò)散模型的降臨,才給 AI 作圖帶來質(zhì)變,讓人們看到了 “AI 轉(zhuǎn)成生產(chǎn)力” 的曙光:畫家、設(shè)計師不用絞盡腦汁思考色彩、構(gòu)圖,只要告訴 Diffusion 模型想要什么,就能言出法隨般地生成高質(zhì)量圖片。
然而,與汽車一樣,如果擴(kuò)散模型生成圖片時“馬力不足”,那就沒法擺脫玩具的標(biāo)簽,成為人類手中真正的生產(chǎn)工具。
起初,AI 作圖需要幾天,再縮減到幾十分鐘,再到幾分鐘,出圖時間在不斷加速,問題是,究竟快到什么程度,才會在專業(yè)的美術(shù)從業(yè)者甚至普通大眾之間普及開來?
顯然,現(xiàn)在還無法給出具體答案。即便如此,可以確定的是 AI 作圖在技術(shù)和速度上的突破,很可能已經(jīng)接近甚至超過閾值。
其中一大標(biāo)志性事件是,近期 OneFlow 首度將 Stable Diffusion 模型加速至“一秒出圖”時代,隨后AI社區(qū)開啟一場AI作圖的競速“內(nèi)卷”。剛剛,OneFlow又刷新了SOTA記錄。
OneFlow Stable Diffusion 使用地址:
https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion
OneFlow 地址:https://github.com/Oneflow-Inc/oneflow/
1
比快更快,OneFlow 一馬當(dāng)先
11月7日,OneFlow 宣布將 Stable Diffusion 模型作圖速度實(shí)現(xiàn)了字面意義上的“一秒出圖”,在各種硬件以及更多框架的對比中,OneFlow 都將 Stable Diffusion 的推理性能推向了一個全新的 SOTA。
下面的圖表分別展示了此前在 A100(PCIe 40GB / SXM 80GB)硬件上,分別使用 PyTorch, TensorRT, AITemplate 和 OneFlow 四種深度學(xué)習(xí)框架或編譯器,對 Stable Diffusion 進(jìn)行推理時的性能表現(xiàn)。


在 A100 顯卡上,無論是 PCIe 40GB 的配置還是 SXM 80GB 的配置,OneFlow 的性能可以在當(dāng)時的最優(yōu)性能之上繼續(xù)提升 15% 以上。
特別是在 SXM 80GB A100 上,OneFlow 首次讓 Stable Diffusion 的推理速度達(dá)到了 50it/s 以上,首次把生成一張圖片需要采樣 50 輪的時間降到 1 秒以內(nèi)。
一周之后,Meta AITemplate 對 Stable Diffusion 做了一次性能升級,結(jié)果反超了 OneFlow,PyTorch 創(chuàng)始人 Soumith Chintala 為此打 call。

性能優(yōu)化無止境,OneFlow 也在不斷迭代。兩周之后,OneFlow 對Stable Diffusion 也做了進(jìn)一步性能升級,并再度反超了 AITemplate 的結(jié)果 ,現(xiàn)在速度最快的還是 OneFlow。


可以看到,在 A100 顯卡上,無論是 PCIe 40GB 的配置還是 SXM 80GB 的配置,OneFlow 基于此前性能結(jié)果繼續(xù)提升 10% 以上,并且依然是當(dāng)之無愧的性能之王。
而在 T4、RTX2080 上,相比于目前 SOTA 性能的 TensorRT、PyTorch,OneFlow 的推理性能也大幅領(lǐng)先。
2
生成圖片展示
利用 OneFlow 版的 Stable Diffusion,你可以把天馬行空的想法很快轉(zhuǎn)化成藝術(shù)圖片,譬如:
以假亂真的陽光、沙灘和椰樹:

倉鼠救火員、長兔耳朵的狗子:

在火星上吃火鍋:

未來異世界 AI:

集齊 OneFlow 七龍珠:

上述圖片均基于 OneFlow 版 Stable Diffusion 生成。如果你一時沒有好的 idea,可以在 lexica 上參考一下廣大網(wǎng)友的創(chuàng)意,不僅有生成圖片還提供了對應(yīng)的描述文字。

3
無縫兼容 PyTorch 生態(tài),實(shí)現(xiàn)一鍵模型遷移
想體驗 OneFlow Stable Diffusion?只需要修改三行代碼,你就可以將 HuggingFace 中的 PyTorch Stable Diffusion 模型改為 OneFlow 模型,分別是將 import torch 改為 import oneflow as torch 和將 StableDiffusionPipeline 改為 OneFlowStableDiffusionPipeline:

之所以能這么輕松遷移模型,是因為 OneFlow Stable Diffusion 有兩個出色的特性:
OneFlowStableDiffusionPipeline.from_pretrained 能夠直接使用 PyTorch 權(quán)重。
OneFlow 本身的 API 也是和 PyTorch 對齊的,因此 import oneflow as torch 之后,torch.autocast、torch.float16 等表達(dá)式完全不需要修改。
上述特性使得 OneFlow 兼容了 PyTorch 的生態(tài),這不僅在 OneFlow 對 Stable Diffusion 的遷移中發(fā)揮了作用,也大大加速了 OneFlow 用戶遷移其它許多模型,比如在和 torchvision 對標(biāo)的 flowvision 中,許多模型只需通過在 torchvision 模型文件中加入 import oneflow as torch 即可得到。
此外,OneFlow 還提供全局 “mock torch” 功能,在命令行運(yùn)行 eval $(oneflow-mock-torch) 就可以讓接下來運(yùn)行的所有 Python 腳本里的 import torch 都自動指向 oneflow。
4
使用 OneFlow 運(yùn)行 Stable Diffusion
在 docker 中使用 OneFlow 運(yùn)行 StableDiffusion 模型生成圖片:

更詳盡的使用方法請參考:
https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion
5
后續(xù)工作
后續(xù) OneFlow 團(tuán)隊將積極推動 OneFlow 的 diffusers(https://github.com/Oneflow-Inc/diffusers.git) 和 transformers(https://github.com/Oneflow-Inc/transformers.git) 的 fork 倉庫內(nèi)容合并到 huggingface 上游的的對應(yīng)倉庫,這也是 OneFlow 首次以 transformers/diffusers 的后端的形式開發(fā)模型。
值得一提的是,在優(yōu)化和加速 Stable Diffusion 模型的過程中使用了 OneFlow 自研編譯器,不僅讓 PyTorch 前端搭建的 Stable Diffusion 在 NVIDIA GPU 上跑得更快,而且也可以讓這樣的模型在國產(chǎn) AI 芯片和 GPU 上跑得更快,這些將在之后的文章中揭秘技術(shù)細(xì)節(jié)。
歡迎在GitHub上Star、試用:
OneFlow Stable Diffusion 地址:
https://github.com/Oneflow-Inc/diffusers/wiki/How-to-Run-OneFlow-Stable-Diffusion
OneFlow 地址:https://github.com/Oneflow-Inc/oneflow/
————————————————
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生