全面碾壓AdamW!谷歌新出優(yōu)化器內存小、效率高,網友:訓練GPT 2果然快
谷歌的 Lion 優(yōu)化器將成為訓練大模型或大批量的「福音」。
優(yōu)化器即優(yōu)化算法,在神經網絡訓練中起著關鍵作用。近年來,研究者引入了大量的手工優(yōu)化器,其中大部分是自適應優(yōu)化器。Adam 以及 A****ctor 優(yōu)化器仍然占據訓練神經網絡的主流,尤其在語言、視覺和多模態(tài)領域更是如此。
除了人工引入優(yōu)化器外,還有一個方向是程序自動發(fā)現優(yōu)化算法。此前有人提出過 L2O(learning to optimize),該方法通過訓練神經網絡來發(fā)現優(yōu)化器。然而,這些黑盒優(yōu)化器通常是在有限數量的小任務上訓練而成,很難泛化到大模型。
還有人嘗試了其他方法,他們應用強化學習或蒙特卡羅采樣來發(fā)現新的優(yōu)化器。然而,為了簡化搜索,這些方法通常會限制搜索空間,從而限制發(fā)現其他優(yōu)化器的可能性。因此,目前方法尚未達到 SOTA 水平。
最近幾年,值得一提的是 AutoML-Zero,它試圖在評估任務時搜索機器學習 pipeline 的每個組件,對優(yōu)化器的發(fā)現很有借鑒意義。
在本文中,來自谷歌、 UCLA 的研究者提出了一種通過程序搜索發(fā)現深度神經網絡訓練的優(yōu)化算法的方法,進而發(fā)現 Lion(EvoLved Sign Momentum)優(yōu)化器。實現這一目標面臨兩個挑戰(zhàn):首先是在無限稀疏的程序空間中尋找高質量的算法,其次是選擇可以從小型任務泛化到更大、SOTA 任務的算法。為了應對這些挑戰(zhàn),該研究采用了一系列技術,包括具有熱啟動和重啟的進化搜索、抽象執(zhí)行、funnel 選擇和程序簡化。
- 論文地址:https://arxiv.org/pdf/2302.06675.pdf
- 項目地址:https://github.com/google/automl/tree/master/lion
與 AdamW 和各種自適應優(yōu)化器(這些優(yōu)化器需要同時保存一階和二階矩)相比,Lion 只需要動量并利用符號操作來計算更新,并且將額外的內存占用減半。這在訓練大模型或大批量時很有用。例如,AdamW 需要至少 16 個 TPU V4 來訓練圖像大小為 224、批大小為 4096 的 ViT-B/16,而 Lion 只需要 8 個。另一個實際好處是,由于 Lion 的簡單性,Lion 在實驗中具有更快的運行時間(steps /sec),通常比 AdamW 和 A****ctor 提速 2-15%,具體取決于任務、代碼庫和硬件。
論文一作 Xiangning Chen 表示:我們的符號程序搜索發(fā)現了一個只跟蹤動量的有效優(yōu)化器 ——Lion。與 Adam 相比,它獲得了 88.3% 的零樣本和 91.1% 的微調 ImageNet 準確率,以及高達 5 倍(與 ViT 相比)、2.3 倍(與擴散模型相比)和 2 倍(與 LM 想比)訓練效率。
Lion 在一系列模型(Transformer、MLP、ResNet、U-Net 和 Hybrid)和任務(圖像分類、視覺 - 語言對比學習、擴散、語言建模和微調)中展示了出色的性能。值得注意的是,通過在 BASIC 中用 Lion 替換 A****ctor,該研究在 ImageNet 上實現了 88.3% 的零樣本和 91.1% 的微調精度(Pham 等人,2021),分別超過之前的 SOTA 結果 2% 和 0.1%。
此外,Lion 將 JFT 上的預訓練計算量減少了多達 5 倍,將擴散模型的訓練效率提高了 2.3 倍,并獲得了更好的 FID 分數,并在語言建模方面提供了類似或更好的性能,節(jié)省了多達 2 倍的計算量。
推特用戶 crumb 表示:自己使用谷歌的 Lion 優(yōu)化器訓練了一個 124M 參數 GPT2 模型,發(fā)現達到與 Adam 相同的損失所需的 step 數減少了 37.5%。圖源:https://twitter.com/aicrumb/status/1626053855329898496
算法的符號發(fā)現
本文使用程序形式的符號表示具有以下優(yōu)點:(1)它符合算法必須作為程序來執(zhí)行的事實;(2) 與神經網絡等參數化模型相比,程序等符號表示更易于分析、理解和遷移到新任務;(3) 程序長度可用于估計不同程序的復雜性,從而更容易選擇更簡單、通常更具通用性的程序。這項工作側重于深度神經網絡訓練的優(yōu)化器,但該方法通常適用于其他任務。
下圖中,程序 2 這個簡化代碼片段使用與 AdamW 相同的 signature ,以確保發(fā)現的算法具有更小或相等的內存占用空間;程序 3 中給出了 AdamW 的示例表示。
該研究采用以下技術來解決無限和稀疏搜索空間帶來的挑戰(zhàn)。首先應用正則化,因為它簡單,可擴展,并在許多 AutoML 搜索任務中很成功;其次是簡化程序空間中的冗余;最后,為了降低搜索成本,該研究通過減少模型大小、訓練示例的數量和距離目標任務的 step 使成本降低。左:顯示了五次進化搜索實驗的均值和標準誤差。右:隨著搜索的進行,冗余語句的百分比和緩存命中率都在增加。
Lion 的推導與分析
研究者表示,優(yōu)化器 Lion 具有簡潔性、高內存效率以及在搜索和元驗證方面的強大性能。
推導
搜索和 funnel 選擇過程促成了程序 4,它通過從原始程序 8(附錄)自動刪除冗余語句獲得。研究者進一步簡化并得到程序 1 中的最終算法(Lion)。在簡化過程中從程序 4 中刪除了幾個不必要的元素。其中 cosh 函數被刪除,因為 m 將在下一次迭代中重新分配(第 3 行)。使用 arcsin 和 clip 的語句也被刪除,因為研究者觀察到沒有它們質量不會下降。三個紅色語句轉換為一個符號函數。
盡管程序 4 中同時使用了 m 和 v,但 v 僅改變了動量的更新方式(兩個具有常數~0.9 和 ~1.1 的插值函數等同于一個具有 ~0.99 的函數)并且不需要單獨跟蹤。注意不再需要偏差校正,因為它不會改變方向。 如下算法 2 顯示了偽代碼。
分析
符號更新和正則化。Lion 算法通過符號操作在所有維度上產生了具有統一幅度的更新,這在原理上不同于各種自適應優(yōu)化器。直觀來看,符號操作為更新添加了噪聲,作為了一種正則化形式并有助于泛化。下圖 11(右)展示了一個證據。
動量跟蹤。與 AdamW 和動量 SGD 中常用的 0.9 相比,Lion 中用于跟蹤動量的默認 EMA 因子為 0.99 (β_2)。EMA 因子和插值的這種選擇,使得 Lion 在記住動量梯度的 10 倍 history 和在更新中對當前梯度施加更多權重之間取得平衡。
超參數和批大小選擇。與 AdamW 和 A****ctor 相比,Lion 更簡單并且超參數更少,因為它不需要 ? 和因式分解相關的參數。Lion 需要更小的學習率,進而需要更大的解耦權重衰減才能達到類似的有效權重衰減強度 (lr * λ)。
內存和運行時優(yōu)勢。Lion 只保存動量,比 AdamW 等流行的自適應優(yōu)化器占用的內存更小,這在訓練大模型和 / 或使用大批量時非常有用。例如,AdamW 需要至少 16 個 TPU V4 芯片來訓練圖像分辨率為 224 且批大小為 4,096 的 ViT-B/16,而 Lion 只需要 8 個(均具有 bfloat16 動量)。
Lion 評估結果
在實驗部分,研究者在各種基準上對 Lion 進行了評估,主要將它與流行的 AdamW(或者當內存成為瓶頸時的 A****ctor)進行比較。
圖像分類
研究者在圖像分類任務上執(zhí)行涵蓋各種數據集和架構的實驗。除了在 ImageNet 上從頭開始訓練之外,他們還在兩個更大的成熟數據集 ImageNet-21K 和 JFT 上進行預訓練。圖片大小默認為 224。
首先在 ImageNet 上從頭開始訓練。研究者訓練 ResNet-50 達到 90 個 epoch,批大小為 1,024,其他模型訓練 300 個 epoch,批大小為 4,096。如下表 2 所示,Lion 在各種架構上顯著優(yōu)于 AdamW。
其次在 ImageNet-21K 上進行預訓練。研究者在 ImageNet-21K 上對 ViT-B/16 和 ViT-L/16 進行了 90 個 epoch 的預訓練,批大小為 4,096。下表 2 顯示,即使訓練集擴大 10 倍,Lion 仍然優(yōu)于 AdamW。
最后在 JFT 上進行預訓練。為了突破極限,研究者在 JFT 上進行大量實驗。下圖 4 顯示了 JFT-300M 上不同預訓練預算下三種 ViT 模型(ViT-B/16、ViT-L/16 和 ViT-H/14)的準確率。Lion 使 ViT-L/16 能夠與 AdamW 在 ImageNet 和 ImageNet V2 上訓練的 ViT-H/14 性能相匹配,但預訓練成本降低了 3 倍。
下表 3 顯示了微調結果,具有更高的分辨率和 Polyak 平均。研究者使用的 ViT-L/16 與之前由 AdamW 訓練的 ViT-H/14 結果相匹配,同時參數減少了 2 倍。在將預訓練數據集擴展到 JFT-3B 后,Lion 訓練的 ViT-g/14 優(yōu)于之前的 ViT-G/14 結果,參數減少了 1.8 倍。
視覺語言對比學習
本節(jié)重點介紹 CLIP 風格的視覺語言對比訓練。研究者沒有從頭開始學習所有參數,而是使用強大的預訓練模型初始化圖像編碼器。
對于鎖定圖像文本調整 (LiT) ,研究者通過使用相同的 frozen 預訓練 ViT 以對比方式訓練文本編碼器,進而在 LiT 上對 Lion 和 AdamW 進行比較。下表 4 顯示了 3 種模型尺度上的零樣本圖像分類結果,Lion 展示出了對 AdamW 的持續(xù)改進。
下圖 5(左)展示了 LiT-B/16-B 的示例零樣本學習曲線,并在其他兩個數據集上得到了類似的結果。
擴散模型
最近,擴散模型在圖像生成方面取得了巨大的成功。鑒于其巨大的潛力,研究者測試了 Lion 在無條件圖像合成和多模式文本到圖像生成方面的表現。
對于 ImageNet 上的圖像合成,研究者利用 2021 年論文《 Diffusion models beat gans on image synthesis 》中引入的改進 U-Net 架構,在 ImageNet 上執(zhí)行 64×64、128×128 和 256×256 圖像生成。如上圖 5(中和右)所示,Lion 可以在 FID 分數上實現更好的質量和更快的收斂速度。
對于文本到圖像的生成,下圖 6 展示了學習曲線。雖然 64 × 64 base 模型沒有明顯改進,但 Lion 在文本條件超分辨率模型上優(yōu)于 AdamW。與 AdamW 相比,Lion 獲得了更高的 CLIP 分數并且具有更小的噪聲 FID 指標。
語言建模和微調
本節(jié)重點介紹語言建模和微調。在純語言任務上,研究者發(fā)現調整 β_1 和 β_2 可以提高 AdamW 和 Lion 的質量。
對于自回歸語言建模,下圖 7 展示了 Wiki-40B 的 token 級困惑度和 PG-19 的 word 級困惑度。Lion 始終實現比 AdamW 更低的驗證困惑度。在 Wiki-40B 和 PG-19 上訓練中型模型時,它分別實現了 1.6 倍和 1.5 倍的加速。當模型增加到大尺寸時,PG-19 進一步實現了 2 倍加速。
對于掩蔽語言建模,研究者還在 C4 數據集上執(zhí)行 BERT 訓練,其中 Lion 在驗證困惑度方面的表現略好于 AdamW。相關學習曲線如下圖 11(左)所示。
對于微調,研究者在 GLUE 基準上微調 Base(220M)、Large(770M)和最大的 11B T5 模型。下表 6 顯示了 GLUE 開發(fā)集上的結果,平均而言,Lion 在所有 3 個模型規(guī)模上都擊敗了 AdamW。
與其他流行優(yōu)化器的比較
該研究還使用四種流行的優(yōu)化器 RAdam、NAdam、AdaBelief 和 AMSGrad 在 ImageNet 上訓練 ViT-S/16 和 ViT-B/16(使用 RandAug 和 Mixup)。如下表 7 所示,Lion 仍然是表現最好的。
更多技術細節(jié)請參閱原論文。
*博客內容為網友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。