創新突破!字節跳動首創無需數據,1.58位超低量化自監督生成
Midjourney、DALLE 3、SD3等模型的出現,使得文生圖像賽道實現了快速發展。但這些模型的參數非常大,在推理、生成的過程中占用了大量內存,極大限制了使用場景和設備。
為了解決這一難題,字節跳動的研究人員發布了創新的量化方法,不需要訪問任何實際的圖像數據,僅依賴模型自身的自監督信號即可。研究人員在著名開源文生圖像模型FLUX進行了實驗。結果顯示,成功將FLUX的模型量化到1.58位權重,僅用{-1, 0, +1}三種值就能表示而不是更高精度的浮點數。
盡管模型被量化到如此低的位數,但在生成 1024 x 1024 分辨率圖像時,性能仍與未量化的模型基本一致。為了支持1.58位的運算,還開發了一個專用的計算內核,存儲減少了 7.7 倍,推理內存減少了5.1倍,極大降低了對存儲、內存的需求。
先為大家簡單介紹一下什么是量化技術。量化是一種模型壓縮技術,主要通過減少模型權重的精度來降低模型的大小和計算需求。在傳統的深度學習模型中,權重通常以32 位浮點數存儲,這占用了大量的內存空間。
量化技術通過將這些權重映射到更少的位表示,比如8 位或更低,從而顯著減少了模型的存儲需求。量化還可以減少模型在推理時的計算量,因為整數運算比浮點運算更快、更高效。
在1.58-位FLUX的研究中,量化的應用達到了一個新的巔峰,研究人員沒使用常見的8 位或更低的精度,而是將FLUX模型中的權重量化到了1.58 位,僅用三個數值就能表示。雖然高性能量化方式極大地壓縮了模型的大小,但也有一個很大難題,如何在低精度下保持模型的性能。
為了實現這一目標,研究團隊采用了一種后訓練量化(PTQ)的方法。傳統的 QAT 方法通常需要在模型訓練過程中引入額外的量化操作,并對模型進行微調。這一過程往往涉及到復雜的訓練機制調整和大量額外的計算資源投入。模型需要在訓練過程中不斷適應量化帶來的精度損失,通過反向傳播等技術手段來調整模型參數,以盡量減少量化對模型性能的影響。
而PTQ無需在訓練過程中對模型進行繁瑣的微調操作,直接聚焦于預訓練好的模型進行量化處理,可以充分利用已經訓練完成的 FLUX.1 - dev 模型所包含的豐富訓練數據和強大能力,避免了重新訓練所帶來的巨大計算開銷和時間消耗。
為了進一步確保 1.58 位 FLUX模型在推理過程中的高效性,研究團隊在 PTQ 方法的基礎上,還開發了專門針對 1.58 位操作優化的自定義內核。這個內核在模型推理過程中發揮著至關重要的作用。通過優化數據的存儲結構和訪問模式,使得模型在運行時能夠以更低的內存占用實現高效計算。
在不同類型的 GPU 上進行測試時,1.58 位FLUX 借助該自定義內核實現了推理內存使用量的大幅減少,減少倍數超過 5.1 倍。在推理過程中,模型能夠更加有效地利用內存資源,降低了內存溢出的風險,提高了系統的整體穩定性和運行效率。
此外,自定義內核還通過優化計算流程,減少了不必要的計算步驟和數據傳輸,顯著提高了模型的推理速度,降低了推理延遲。例如,在處理復雜圖像生成任務時,1.58 位 FLUX 能夠更快地響應用戶請求,生成高質量的圖像結果提供更好的使用體驗。
在性能評估方面,研究人員在GenEval數據集和T2I CompBench驗證分割上評估了FLUX和1.58-位 FLUX。評估方法遵循官方的圖像生成流程,生成的圖像分辨率為1024×1024。結果顯示,1.58 位 FLUX在多個指標上與FLUX相當,這證明了量化后的模型在保持性能方面的優勢。
在效率方面,1.58-位 FLUX在模型存儲和推理內存方面都顯示出顯著的效率提升。例如,與FLUX相比,1.58-位 FLUX將檢查點存儲減少了7.7倍。這一成果是通過將1.58位權重存儲為2位有符號整數實現的,從而將它們從16位精度壓縮。
在推理延遲方面,1.58-位 FLUX在不同GPU上的表現也有所提升。尤其是在性能較低但適合部署的GPU上,例如,L20和A10,1.58-位 FLUX的推理延遲得到了顯著改善。
研究人員表示,這個量化方法很快就會開源,幫助更多受算力、內存限制的人員來實現更高效的模型推理。
即將開源:https://github.com/Chenglin-Yang/1.58bit.flux
本文轉自 AIGC開放社區 ,作者:AIGC開放社區
