首頁 科技週邊 人工智慧 把Stable Diffusion模型塞進iPhone裡,做成APP一分鐘出圖

把Stable Diffusion模型塞進iPhone裡,做成APP一分鐘出圖

Apr 13, 2023 pm 05:07 PM
app 模型

在 iPhone 上運行 Stable Diffusion 到底難不難?今天我們要介紹的這篇文章,作者給了答案:不難,而且 iPhone 還剩餘 50% 的效能。

眾所周知,每年蘋果都會推出一款聲稱在各方面都更快、更好的新 iPhone,這主要得益於新的視覺模型和影像感測器的快速發展。就拿拍照來說,如果回到 10 年前,你能用 iPhone 拍出高品質的圖片嗎,答案是不能,因為技術的發展是漸進式的,10 年時間,足夠提高手機拍照技術。

由於技術的這種發展模式(漸進式),在一段時間裡有些程式即使運行在最好的計算設備上,也幾乎無法使用。但是這些帶有新啟用場景的新程式吸引了一些用戶的注意力,人們願意研究它。

本文的作者就是被吸引的其中之一,在過去3 周里,作者開發了一個應用程序,可以透過Stable Diffusion 來產生(summon)圖像,然後按你喜歡的方式編輯它。該應用程式在最新的 iPhone 14 Pro 上產生圖片僅需一分鐘,使用大約 2GiB 的應用程式內存,另外還需要下載大約 2GiB 的初始資料才能開始使用。

應用程式商店連結:https://apps.apple.com/us/app/draw-things-ai-generation/id6444050820

#這一結果引來眾多網友討論,有人開始擔心手機耗電問題,並開玩笑的說:這很酷,不過這看起來是一個消耗手機電池的好方法。

把Stable Diffusion模型塞進iPhone裡,做成APP一分鐘出圖

「我從來沒有像現在這樣開心地感受iPhone 的熱度。」

##「這個寒冬,可以把手機當暖手器用了。」

不過在大家調侃手機發熱問題的同時,他們也給與這項工作極高的評價。

「這簡直不可思議。在我的iPhone SE3 上產生一張完整的圖片大約需要45 秒——這幾乎和我的M1 Pro macbook 用原始版本生成的速度一樣快!」

把Stable Diffusion模型塞進iPhone裡,做成APP一分鐘出圖

記憶體、硬體同時最佳化

這是如何做到的呢?接下來我們來看看作者的實作過程:

想要完成在iPhone 上運行Stable Diffusion,還能結餘50% 的效能,面臨的一大挑戰是需要在6GiB RAM的iPhone 設備上將程式運行起來。 6GiB 聽起來很多,但如果你在 6GiB 裝置上使用超過 2.8GiB,或在 4GiB 裝置上使用超過 2GiB,iOS 就會殺死你的應用程式。

那麼 Stable Diffusion 模型究竟需要多少記憶體來進行推理?

這還要從模型的結構說起。通常Stable Diffusion 模型包含4 個部分:1. 文字編碼器,它生成文字特徵向量以指導圖像生成;2. 可選的圖像編碼器,將圖像編碼到潛在空間(用於圖像到圖像生成);3 . 降噪器模型,它從雜訊中緩慢地去噪影像的潛在表示;4. 影像解碼器,從潛在表示中解碼影像。

第 1、第 2 和第 4 個模組在推理過程中運行一次,最大需要約 1GiB。而降噪器模型佔用了大約 3.2GiB(全浮點數),而且還需要執行多次,因此作者想讓模組在 RAM 中保存得更久。

最初的 Stable Diffusion 模型需要接近 10GiB 才能執行單一影像推理。在單一輸入(2x4x64x64)與輸出(2x4x64x64)之間,其中夾雜著許多輸出層。並不是所有層的輸出都可以立即重複使用,它們中一部分必須保留一些參數以供後續使用(殘差網路)。

一段時間以來,研究者圍繞PyTorch Stable Diffusion 進行了一番優化,對PyTorch 用到的NVIDIA CUDNN 和CUBLAS 庫,他們保留了暫存空間,這些優化都是為了降低內存使用量,因此Stable Diffusion 模型可以用低至4GiB 的卡片運行。

但這仍然超出了作者的預期。因此作者開始專注於蘋果硬及優化。

起初作者考慮的是3.2GiB 或1.6GiB 半浮點數,如果不想觸發蘋果的OOM(Out of Memory,指的是App 佔用的記憶體達到了iOS 系統對單個App 佔用記憶體上限後,而被系統強殺掉的現象),作者大約有500MiB 的空間可以使用。

第一個問題,每個中間輸出的大小到底是多少?

事實證明,它們中的大多數都相對較小,每個都低於 6MiB (2x320x64x64)。作者使用的框架 (s4nnc) 可以合理地將它們打包到小於 50MiB,以備復用。

值得一提的是,降噪器有一個自註意機制,它以自己的影像潛在表示作為輸入。在自註意力計算期間,有一個大小為16x4096x4096 的批次矩陣,對該矩陣應用softmax 後,大約是FP16 中的500MiB,並且可以“inplace”完成,這意味著它可以安全地重寫其輸入而不會損壞。幸運的是,Apple 和 NVIDIA 低階函式庫都提供了 inplace softmax 實現,然而 PyTorch 等更高階的函式庫中沒有。

那麼是否真的使用 550MiB 1.6GiB 左右的記憶體就能完成?

在 Apple 硬體上,實作神經網路後端的常用選擇是使用 MPSGraph 框架。於是作者首先嘗試使用 MPSGraph 實現了所有的神經網路操作。在 FP16 精度下峰值記憶體使用量大約是 6GiB,顯然比預期的記憶體使用量多太多,這是怎麼回事?

作者詳細分析了原因,首先他沒有按照常見的 TensorFlow 方式使用 MPSGraph。 MPSGraph 需要對整個計算圖進行編碼,然後使用輸入 / 輸出張量,進而處理內部分配,並讓使用者提交整個圖以供執行。

而作者使用 MPSGraph 的方式很像 PyTorch 的做法──當作一個操作執行引擎。為了執行推理任務,許多已編譯的 MPSGraphExecutable 在 Metal 命令佇列上執行,它們中的每一個都可能持有一些中間分配記憶體。如果一次性提交,那麼所有這些命令都持有分配內存,直到完成執行。

解決這個問題的簡單方法是調整提交速度,沒有必要一次提交所有命令。實際上,Metal 的每個隊列有 64 個並發提交的限制。作者嘗試改成一次提交 8 個操作,峰值記憶體就降低到了 4GiB。

然而,這仍然比 iPhone 能承受的多 2 GiB。

為了使用 CUDA 計算自註意力,原始 Stable Diffusion 程式碼實作中有一個常見技巧:使用置換而不是轉置。這個技巧很有效,因為 CUBLAS 可以直接處理置換的跨步(strided)張量,避免使用專用記憶體來轉置張量。

但是 MPSGraph 沒有跨步張量支持,一個置換的張量無論如何都會在內部被轉置,這需要中間分配記憶體。透過明確轉置,分配將由更高層級的層處理,避免了 MPSGraph 內部效率低下。利用這個技巧,記憶體使用量將接近 3GiB。

事實證明,從 iOS 16.0 開始,MPSGraph 就不能再為 softmax 做出最佳分配決策。即使輸入和輸出張量都指向相同的數據,MPSGraph 也會分配一個額外的輸出張量,然後將結果複製到指向的位置。

作者發現使用 Metal Performance Shaders 替代方案完全符合要求,並將記憶體使用量降至 2.5GiB,而不會出現任何效能下降。

另一方面,MPSGraph 的 GEMM 核心需要內部轉置。明確轉置在此也無濟於事,因為這些轉置不是更高層級層的「inplace」操作,對於特定的 500MiB 大小的張量,這種額外的分配是不可避免的。透過切換到 Metal Performance Shaders,專案作者又回收了 500MiB,效能損失約 1%,最終將記憶體使用量減到了理想的 2GiB。

以上是把Stable Diffusion模型塞進iPhone裡,做成APP一分鐘出圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

全球最強開源 MoE 模型來了,中文能力比肩 GPT-4,價格僅 GPT-4-Turbo 的近百分之一 全球最強開源 MoE 模型來了,中文能力比肩 GPT-4,價格僅 GPT-4-Turbo 的近百分之一 May 07, 2024 pm 04:13 PM

想像一下,一個人工智慧模型,不僅擁有超越傳統運算的能力,還能以更低的成本實現更有效率的效能。這不是科幻,DeepSeek-V2[1],全球最強開源MoE模型來了。 DeepSeek-V2是一個強大的專家混合(MoE)語言模型,具有訓練經濟、推理高效的特點。它由236B個參數組成,其中21B個參數用於啟動每個標記。與DeepSeek67B相比,DeepSeek-V2效能更強,同時節省了42.5%的訓練成本,減少了93.3%的KV緩存,最大生成吞吐量提高到5.76倍。 DeepSeek是一家探索通用人工智

AI顛覆數學研究!菲爾茲獎得主、華裔數學家領銜11篇頂刊論文|陶哲軒轉贊 AI顛覆數學研究!菲爾茲獎得主、華裔數學家領銜11篇頂刊論文|陶哲軒轉贊 Apr 09, 2024 am 11:52 AM

AI,的確正在改變數學。最近,一直十分關注這個議題的陶哲軒,轉發了最近一期的《美國數學學會通報》(BulletinoftheAmericanMathematicalSociety)。圍繞著「機器會改變數學嗎?」這個話題,許多數學家發表了自己的觀點,全程火花四射,內容硬核,精彩紛呈。作者陣容強大,包括菲爾茲獎得主AkshayVenkatesh、華裔數學家鄭樂雋、紐大電腦科學家ErnestDavis等多位業界知名學者。 AI的世界已經發生了天翻地覆的變化,要知道,其中許多文章是在一年前提交的,而在這一

Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Google狂喜:JAX性能超越Pytorch、TensorFlow!或成GPU推理訓練最快選擇 Apr 01, 2024 pm 07:46 PM

谷歌力推的JAX在最近的基準測試中表現已經超過Pytorch和TensorFlow,7項指標排名第一。而且測試並不是JAX性能表現最好的TPU上完成的。雖然現在在開發者中,Pytorch依然比Tensorflow更受歡迎。但未來,也許有更多的大型模型會基於JAX平台進行訓練和運行。模型最近,Keras團隊為三個後端(TensorFlow、JAX、PyTorch)與原生PyTorch實作以及搭配TensorFlow的Keras2進行了基準測試。首先,他們為生成式和非生成式人工智慧任務選擇了一組主流

你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 你好,電動Atlas!波士頓動力機器人復活,180度詭異動作嚇到馬斯克 Apr 18, 2024 pm 07:58 PM

波士頓動力Atlas,正式進入電動機器人時代!昨天,液壓Atlas剛「含淚」退出歷史舞台,今天波士頓動力就宣布:電動Atlas上崗。看來,在商用人形機器人領域,波士頓動力是下定決心要跟特斯拉硬剛一把了。新影片放出後,短短十幾小時內,就已經有一百多萬觀看。舊人離去,新角色登場,這是歷史的必然。毫無疑問,今年是人形機器人的爆發年。網友銳評:機器人的進步,讓今年看起來像人類的開幕式動作、自由度遠超人類,但這真不是恐怖片?影片一開始,Atlas平靜地躺在地上,看起來應該是仰面朝天。接下來,讓人驚掉下巴

替代MLP的KAN,被開源專案擴展到卷積了 替代MLP的KAN,被開源專案擴展到卷積了 Jun 01, 2024 pm 10:03 PM

本月初,來自MIT等機構的研究者提出了一種非常有潛力的MLP替代方法—KAN。 KAN在準確性和可解釋性方面表現優於MLP。而且它能以非常少的參數量勝過以更大參數量運行的MLP。例如,作者表示,他們用KAN以更小的網路和更高的自動化程度重現了DeepMind的結果。具體來說,DeepMind的MLP有大約300,000個參數,而KAN只有約200個參數。 KAN與MLP一樣具有強大的數學基礎,MLP基於通用逼近定理,而KAN基於Kolmogorov-Arnold表示定理。如下圖所示,KAN在邊上具

特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! 特斯拉機器人進廠打工,馬斯克:手的自由度今年將達到22個! May 06, 2024 pm 04:13 PM

特斯拉機器人Optimus最新影片出爐,已經可以在工廠裡打工了。正常速度下,它分揀電池(特斯拉的4680電池)是這樣的:官方還放出了20倍速下的樣子——在小小的「工位」上,揀啊揀啊揀:這次放出的影片亮點之一在於Optimus在廠子裡完成這項工作,是完全自主的,全程沒有人為的干預。而且在Optimus的視角之下,它還可以把放歪了的電池重新撿起來放置,主打一個自動糾錯:對於Optimus的手,英偉達科學家JimFan給出了高度的評價:Optimus的手是全球五指機器人裡最靈巧的之一。它的手不僅有觸覺

註冊香港AppleID的步驟及注意事項(享受香港AppleStore的獨特優勢) 註冊香港AppleID的步驟及注意事項(享受香港AppleStore的獨特優勢) Sep 02, 2024 pm 03:47 PM

在全球範圍內,Apple公司的產品和服務一直備受用戶喜愛。註冊一個香港AppleID將帶給用戶更多的便利和特權,讓我們一起來了解一下註冊香港AppleID的步驟以及需要注意的事項。如何註冊香港AppleID在使用蘋果設備時,許多應用程式和功能都需要使用AppleID進行登入。如果您想下載香港地區的應用程式或享受香港AppStore的優惠內容,那麼註冊一個香港AppleID就非常必要。本文將詳細介紹如何註冊香港AppleID的步驟以及需要注意的事項。步驟:選擇語言與地區:在蘋果設備上找到「設定」選項,進入

FisheyeDetNet:首個以魚眼相機為基礎的目標偵測演算法 FisheyeDetNet:首個以魚眼相機為基礎的目標偵測演算法 Apr 26, 2024 am 11:37 AM

目標偵測在自動駕駛系統當中是一個比較成熟的問題,其中行人偵測是最早得以部署演算法之一。在多數論文當中已經進行了非常全面的研究。然而,利用魚眼相機進行環視的距離感知相對來說研究較少。由於徑向畸變大,標準的邊界框表示在魚眼相機當中很難實施。為了緩解上述描述,我們探索了擴展邊界框、橢圓、通用多邊形設計為極座標/角度表示,並定義一個實例分割mIOU度量來分析這些表示。所提出的具有多邊形形狀的模型fisheyeDetNet優於其他模型,並同時在用於自動駕駛的Valeo魚眼相機資料集上實現了49.5%的mAP

See all articles