論文閱讀-高效構建檢查點

論文標題:On Efficient Constructions of Checkpoints

摘要

高效構建檢查點/快照是訓練和診斷深度學習模型的關鍵工具。在本文中,我們提出了一種適用于檢查點構建的有損壓縮方案(稱為LC-Checkpoint)。LC-Checkpoint同時最大化了壓縮率并優化了恢復速度,假設使用SGD來訓練模型。LC-Checkpoint使用量化和優先級提升來存儲SGD恢復所需的最關鍵信息,然后使用霍夫曼編碼來利用梯度尺度的非均勻分布。我們廣泛的實驗證明,LC-Checkpoint相對于最先進的算法(SCAR),實現了高達28倍的壓縮率和高達5.77倍的恢復加速。

1.引言

高效構建檢查點(快照)對于深度學習研究變得越來越重要。在開發更準確的模型的競爭中,研究人員利用更重的計算基礎設施并開發更深層次、更大型的模型。沒有適當的基礎設施支持,研究過程不可避免地變得脆弱。例如,分布式計算不時失敗,導致過多需要重新訓練模型(Qiao等,2018b)。診斷深度學習模型也逐漸演變成一個復雜的過程,部分原因是社區對深度學習模型有了更好的理解,并為“調試”它們制定了更多規則。一些常見的錯誤包括梯度爆炸(Goodfellow等,2016)、“除以零”(Ioffe&Szegedy,2015)和死激活。這就需要構建“斷點”,類似于調試計算機程序中使用的那些,以便研究人員可以方便地跳轉到模型“崩潰”之前的狀態。

頻繁產生檢查點使訓練過程失敗時能夠在最小的時間浪費下重新啟動,并作為調試模型的斷點。到目前為止,構建檢查點的標準做法還比較原始。最常見的做法是直接保存模型狀態,依賴于后端系統足夠健壯,以便這個操作不成為瓶頸(Baylor等,2017)。也有嘗試部分存儲模型狀態的作品(Qiao等,2018b),但這些作品通常側重于恢復速度,而不是直接解決系統問題。這里最突出的技術挑戰是深度模型通常很大,因此頻繁生成檢查點會給I/O和存儲帶來難以管理的負擔,即使在現代分布式平臺下(Abadi等,2016;Li等,2014;Low等,2012)。因此,這引出了我們的問題:

研究問題:我們如何壓縮模型檢查點?

我們特別旨在設計一種有損壓縮方案,同時滿足兩個標準。首先,像標準壓縮問題一樣,我們需要最大化壓縮率。其次,該方案需要針對訓練的下游應用進行優化。當一個模型從我們的有損檢查點重新啟動時,它需要有效地恢復到最近的狀態(例如,從失敗的過程重新啟動或到達崩潰之前的狀態)。

模型狀態的壓縮是一個新的技術問題,需要解決信息論、學習算法和系統設計中的交叉約束。我們需要利用模型狀態中編碼的統計模式,并考慮模型狀態與學習算法的交互方式(更具體地說,在深度學習設置中的隨機梯度類型算法)。這意味著標準有損壓縮算法和最近開發的模型壓縮算法(Han等,2015a;Courbariaux等,2015;Hong等,2016;Leng等,2018;Lin等,2016)都不適用于我們的設置。標準有損壓縮算法旨在最小化重建誤差,但我們的最終目標是使學習算法能夠“快速恢復”。模型壓縮技術旨在將(靜態)模型轉換為一個更簡單的模型,同時確保預測不受太大影響,而在我們的設置中,我們需要一種可靠的編碼方案,它在整個學習動態過程中都能很好地運行,這是一個相互獨立且可能更具挑戰性的目標。此外,我們的算法必須高效且可擴展,以便可以頻繁執行。

我們的解決方案。為了實現我們的目標,我們專注于一種增量編碼方案(Mogul等,1997),僅跟蹤兩個檢查點之間的差異信息。在這種方案下,我們要考慮是否可以從模型狀態中剔除對訓練最無用的信息,并確保剩余信息適合壓縮。這里可能令人驚訝的信息是,“delta”的L2-范數重建誤差似乎是減少恢復時間的無效度量。相反,我們的算法首先刪除所有具有微不足道更新的參數,然后對剩余信息進行量化。這些策略類似于分布式訓練中旨在最小化通信成本的策略(Alistarh等,2017)。在我們獲得部分參數更新的最重要信息之后,我們將它們以適當的格式表示并應用霍夫曼編碼進一步壓縮這些位,從而使壓縮率能達到信息論限制。這個策略類似于最近的模型壓縮技術(Han等,2015a;Wu等,2016;Park等,2017;Zhou等,2017;Rastegari等,2016)。

本文的貢獻包括:

  • 對于壓縮模型狀態以用于訓練恢復的基礎研究問題的提出。
  • 基于我們開發的一個風格化模型,表征一系列壓縮方案,可以有效跟蹤學習過程。
  • 設計一個具有高壓縮率的有損編碼方案,將傳統壓縮技術和最近為分布式學習和模型壓縮開發的技術結合起來。
  • 優化訓練系統,最小化即時生成檢查點的開銷。

我們廣泛的評估表明,通過同時利用分布式訓練和模型壓縮技術,我們的算法提供了一種解決方案(稱為LC-Checkpoint,LC代表有損壓縮),具有高達28倍的壓縮率和優越的恢復時間——相對于最先進的算法(SCAR),實現了高達5.77倍的恢復加速。

2.我們的方法

我們現在描述我們的壓縮框架。我們引入一個風格化模型來促進學習過程的分析,以便分析系統設計的權衡。然后我們解釋我們的設計原則,這些原則由風格化模型和我們廣泛的實驗確定。

我們的模型。一個“高維”向量表示模型狀態。一個迭代算法(例如,隨機梯度下降)被用來逐步將模型狀態向量移向局部最優點。設為第t輪的模型狀態。在我們的風格化模型中,我們假設執行一個(漂移的)隨機漫步,收斂到。具體地,我們使用以下過程來建模的軌跡。設

其中η和L共同建模算法的收斂速率,而是一個隨機噪聲項,反映了隨機梯度下降的隨機性質。當η設為一個小常數時,該模型描述了具有線性收斂速率的算法。當η = (1 - 1/L)時,該模型描述了那些收斂速率為1 - 1/t的算法(Boyd & Vandenberghe, 2004)。雖然我們的模型沒有捕捉到許多隨機梯度下降算法的細節,因為不同的隨機梯度下降算法具有不同的收斂速率,設計一個突出設計權衡的統一模型需要我們進行簡化假設。

我們的設計原則。接下來我們描述我們的設計原則。

P1. 最小化對隨機梯度下降的影響。

當我們設計有損壓縮方案時,不可避免地會丟失一部分信息,從而導致學習算法性能下降。我們發現,不能簡單地使用L2范數的重構誤差來衡量 SGD 的退化。這可以通過風格化模型最好地說明。為簡單起見,令 ,因此 。我們想要壓縮的增量項是 。當我們使用有損壓縮時,相當于添加一個關于 的附加噪聲項。因此,在壓縮方案下,新的學習過程變為 。觀察到只要,并且 所主導(小于),那么收斂質量將保持不變,這是根據隨機逼近的標準結果(Lai, 2009; Kushner & Yin, 2003)。

這里的IE表示求平均期望,|表示條件,Var表示求方差。

有許多構造滿足期望和方差約束條件。讓我們考慮一個例子,通過使用標準的隨機舍入(Alistarh et al., 2017)來保留 的最重要位。由于舍入算法的特性,期望值為 0。此外,由于保留了最重要位,舍入中的信息丟失不會大于 ,在一個溫和的假設下,即 的標準差隨時間按比例縮放到 。因此,這種舍入方案不會影響訓練算法的性能。一般來說,1 位編碼是量化的特殊情況。廣泛的量化方案將滿足期望和方差約束。我們的算法將探索這種權衡。

還需注意的是,當我們最小化 L2范數?重構誤差時,這相當于保留 中最大的 k 個條目。

P2. 最大化殘差信息中的冗余性。我們的壓縮方案還需要確保我們保留的信息具有大量的冗余性,即熵的度量。這將使我們能夠利用傳統編碼方案,如赫夫曼編碼,在信息論極限下壓縮數據。

P1和P2之間的相互作用突顯了我們壓縮問題的獨特結構。最好通過一個名為TOPN的壓縮方案來說明這一點。這種壓縮方案保留了中的最大元素。我們觀察到:(i)雖然這種方案最小化了L2范數的重構誤差,但恢復時間并不優越。許多其他具有上述特性的壓縮方案在恢復速度上同樣快,正如我們風格化模型所暗示的。(ii)對于TOPN方案來說,進行壓縮是困難的。TOPN方案通常需要跟蹤中所有條目的10%才能有效。跟蹤這些元素位置的開銷令人驚訝地高。部分原因在于向量不夠稀疏,因此稀疏矩陣表示并沒有幫助。

另一方面,我們的解決方案認真遵循P1,并避免了跟蹤我們保留條目的位置的需要,從而實現了更高的壓縮率。

P3. 不要使用隨機投影和/或草圖。值得注意的是,我們發現基于草圖的隨機投影技術(例如Woodruff等人(2014年))會損害壓縮效果。粗略地說,草圖通過將多個數字投影到一個單元格中來壓縮信息。雖然這可能加快查詢時間,但在我們的情境中,它只會干擾梯度下降算法。考慮一個簡單例子,其中,最佳點。假設是當前狀態,梯度沿著方向(-1, 1)。當我們應用草圖(比如CountMin草圖)時,它將方向(-1, 1)壓縮成一個點0。在進行查詢時,兩個坐標的梯度是不正確的。草圖在梯度向量中的條目是異質的,并且需要以“線速率”回答查詢時更有用(例如,不會減慢訓練,參見Ivkin等人(2019年))。在這里,當模型需要從檢查點中恢復時,時間并不那么緊迫。因此,即使我們面臨異質參數,更有效的方法是仔細區分關鍵信息和不重要信息,而不是使用任意的隨機投影。

3.LC-基于檢查點的隨機梯度下降算法

我們現在描述我們的解決方案 LC-Checkpoint(LC 指的是損失壓縮)。參見圖 1 中的一個工作示例和算法 1 中的工作流程。為簡單起見,我們假設我們的系統為每個迭代維護一個檢查點 。我們稍微濫用 來同時指代壓縮數據和它所代表的真實向量。我們可以簡單地對我們的操作進行降采樣,以便每隔 k 個迭代構建一個檢查點。我們的解決方案由兩個主要組成部分組成。

C1. 通過增量編碼進行近似跟蹤。在每一步中,我們的系統維護一個對于真實狀態的近似值 u?t。我們簡單地設置 ,其中 u0 是模型的初始狀態。我們的系統在后臺持續維護和更新 (算法 1 中的第 7 行)。我們的主要壓縮任務是正確地跟蹤近似狀態與真實狀態之間的“增量”。具體來說,第 t 次迭代的壓縮任務是 。請參見圖 1 中的 3。

C2. 量化和霍夫曼編碼。這個組件通過兩個步驟壓縮 δt,步驟 1. 兩階段量化。我們首先執行基于指數的量化,然后進行優先級提升操作。這個操作智能地丟棄兩個連續狀態之間的不重要信息。步驟 2. 通過霍夫曼進行無損壓縮。最后,量化的距離向量進一步使用霍夫曼編碼進行壓縮。

可以看出,要從檢查點重建第 t 次迭代的模型狀態,我們可以簡單地計算 ut = 。 接下來,3.1 節討論 C2,3.2 節討論額外的系統級優化。

3.1. 量化和霍夫曼編碼

3.1.1. 兩階段量化

LC-Checkpoint 使用一種新穎的兩階段流水線來量化 δt,包括兩個主要子步驟:基于指數的量化和優先級提升。

基于指數的量化。回想一下,一個浮點數 v 被表示為 ,其中 s 是符號,m 是尾數,e 是指數。回想一下, 是我們要編碼的高維向量。我們的基于指數的量化工作如下:首先,根據 e 和 s 將 δ 中的條目分成多個桶,即將具有相同指數和符號的元素分配到同一個桶中。我們從廣泛的實驗中關鍵觀察到,ut 中的條目通常朝著同一個方向漂移,因此 δt 通常具有相同的符號。接下來,我們的算法通過每個桶中最大值和最小值的平均值來表示每個桶。

圖 1 中顯示了一個示例,在該示例中,δt 被量化為五個桶(用五種不同的顏色標記)。每個桶中的所有條目都被一個唯一值表示。索引 k 個桶需要 log2 k 位。因為 δt 包含 n 個浮點數,每個浮點數使用 b(例如,b ∈ {32, 64})位,所以壓縮率為

例如,在圖 1 中,δ 有 10 個元素(即 n = 10),每個元素由一個單精度浮點數表示(即 b = 32)。因此,原始的 δ 共有 nb,即總共 320 位。基于指數的量化使用 5 個桶(即 k = 5)。因此,在量化之后,δ 共有(10×log 5+5×32 = 190)位。因此,壓縮率(r)為 1.68(即,320/190)。

控制桶的數量 k 以實現最佳壓縮比是至關重要的。幸運的是,基于指數的桶化可以控制單精度浮點數元素的 k ≤ 2^9,并控制雙精度浮點數元素的 k ≤ 2^12。我們的評估結果(第 4.3 節)證實通常 k < 2^5 就足夠了。圖 2(a) 繪制了 AlexNet 最后一個卷積層中所有元素指數部分的分布。

AlexNet 最后一個卷積層中所有元素的指數部分的分布。當指數部分等于 -127 時,元素值為 0。橫軸表示指數部分數值,縱軸表示具有該數值的元素計數。

優先級提升。我們通過限制桶的數量并采用優先級提升方法進一步提高壓縮比。我們的關鍵觀察是,當 與 0 非常接近時(即, 接近 ),批處理更新更加有效(即,不更新 δt 的第 i 個條目直到其變得顯著)。還要注意,這在概念上與最小化構造錯誤不同。最小化構造錯誤意味著準確跟蹤 δt 中最重要的條目,而我們既刪除過小的條目又量化大的條目(就像前一步驟中所做的)。具體來說,我們提出 x 位優先級提升。它僅保留具有較大 e 的 2^x ? 1 個桶,并將其余桶合并為一個,其唯一值為 0。換句話說,優先級提升將 更新為與 的距離更大的值,并賦予更高的優先級。它將桶的索引限制在 x 位內。

圖 1(優先級提升)使用 2 位優先級提升來控制桶的數量不超過 4。它將綠色和紫色桶合并為一個紅色桶,其表示值為 0。對這些桶的索引只需要 2 位。圖 2(b) 給出了 AlexNet 最后一個卷積層的 3 位優先級提升的一個實際示例。

3.1.2. 霍夫曼編碼

最后,觀察到大多數學習過程中每個桶中元素的數量高度不均勻,我們使用霍夫曼編碼(Van Leeuwen,1976)進一步壓縮這些桶。例如,圖 2(a) 繪制了 AlexNet 最后一個卷積層中所有元素指數部分的分布。該分布顯示出傾斜行為,因此更適合霍夫曼編碼。我們的關鍵觀察是,優先級提升進一步加劇了這種分布的不均勻性(圖 2(b)),因此將量化與霍夫曼編碼結合產生了“部分之和”以上的好處。我們后續的評估驗證了這一點(第 4.3 節)。

3.2. 系統優化

LC-Checkpoint 還包括幾項新穎的系統級優化,如下:

  • 異步執行:因為 LC-Checkpoint 的第一步僅依賴于模型狀態,其余步驟可以與 SGD 計算的下一次迭代同時運行。這種異步(非阻塞)執行顯著減少了檢查點開銷,并減輕了模型執行的阻塞。
  • 檢查點合并:為了進一步減少恢復時間,LC-Checkpoint 使用一個輔助過程定期將多個檢查點合并成超級步驟。在任何系統崩潰的情況下,LC-Checkpoint 使用這些超級步驟檢查點進行恢復。
  • 霍夫曼編碼表緩存:桶的數量可能在一個迭代到另一個迭代保持不變,特別是在優先級提升之后。因此,在不進行任何重建的情況下,可以在不同迭代之間重復使用霍夫曼編碼表(僅需根據每個桶中條目的數量進行簡單排序)。LC-Checkpoint 包括一個輕量級緩存,用于存儲每個桶計數的霍夫曼編碼表。

4.實驗

本節通過三個基準數據集對四個典型的機器學習應用進行了LC-Checkpoint的評估,并將其與之前的工作(SCAR Qiao等人(2018b)和第二節提到的TOPN機制)在恢復(返工)成本、壓縮比和執行開銷方面進行了比較,展示了LC-Checkpoint的優越性。

4.1 方法論

評估目標:此次評估有四個主要目標:(1)與以往工作相比,比較LC-Checkpoint的恢復(返工)成本;(2)評估不同方法帶來的壓縮效益;(3)具體驗證優先級提升的有效性;(4)通過實驗案例研究確認LC-Checkpoint引入的開銷較低。我們的工作主要與兩項最新的工作相比較:SCAR(Qiao等人,2018b)和一個TOPN機制。SCAR通過分區參數并在每次迭代中更新一個分區來減小檢查點大小。TOPN機制只更新與上一次迭代距離最大的前n個參數。TOPN檢查點以壓縮稀疏行(CSR)格式存儲。

機器學習應用和數據集:在四個典型的機器學習應用上評估LC-Checkpoint:多項式邏輯回歸(MLR)、LeNet-5(Lenet)(LeCun等人,1998)、AlexNet(Krizhevsky等人,2012)和矩陣分解(MF)。前三個應用訓練在MNIST(LeCun等人,1998)和FashionMNIST(Xiao等人,2017)數據集上。最后一個,MF訓練在Jester(Goldberg等人,2001)和MovieLens10M(Harper & Konstan,2015)上。

平臺和評估配置:我們的實驗在一臺多核服務器上進行,該服務器配備了Intel Xeon Gold 6138 Skylake CPU,擁有40個核心,每個核心運行頻率為2.0 GHz,以及192 GB DDR4內存。訓練在一臺配備16GB高帶寬內存(HBM)的Tesla P100 GPU上進行。

4.2 恢復/返工成本比較

本節評估LC-Checkpoint的恢復(或返工)成本,特別是將其與SCAR(Qiao等人,2018b)和一個TOPN機制進行比較。

為了公平地評估它們的返工成本,我們為所有三種方法使用相同的檢查點大小(更新大小)。測試了兩種檢查點大小:全檢查點大小的5%和10%。這些檢查點大小可以直接為SCAR和TOPN設置。然而,LC-Checkpoint的大小由數據分布決定,因此會動態變化。為了解決這個問題,LC-Checkpoint采用了2位和3位優先級提升來控制其檢查點大小分別為5%和10%。圖4報告了更多關于LC-Checkpoint的檢查點大小信息。

圖3比較了三種方法的返工成本,SCAR、TOPN和LC-Checkpoint,顯示LC-Checkpoint在所有機器學習應用和數據集中的返工成本都是最低的。對于5%檢查點測試案例,LC-Checkpoint的性能分別比SCAR高出2.88×-5.77×,比TOPN高出2.17×-4.06×。在10%檢查點大小下,LC-Checkpoint的性能分別比SCAR高出1.9×-4.82×,比TOPN高出1.52×-2.17×。

此外,比較兩種檢查點大小(5%對比10%),LC-Checkpoint在檢查點大小減小時結果更穩定。例如,將檢查點大小從10%減小到5%,LC-Checkpoint在LeNet與MNIST(圖3(b))和AlexNet(圖3(c), 3(g))上的返工成本增加可以忽略不計。其他案例沒有任何返工成本變化。相比之下,SCAR和TOPN在檢查點大小從10%變為5%時,返工成本平均增加了1.6×。

LC-Checkpoint、SCAR和TOPN之間的重做成本比較。橫軸表示壓縮檢查點大小與完整檢查點大小之間的比例。縱軸顯示重做迭代次數。誤差棒表示95%置信區間,通過50次重復試驗計算得出。

4.3 LC-Checkpoint壓縮效果分解

本節評估和分析之前提到的不同方法的壓縮效果,包括指數基量化(E)、優先級提升(P)和哈夫曼編碼(H)。圖4報告了采用2位和3位優先級提升的壓縮比。采用所有壓縮方法,最終檢查點大小(E+P+H)都低于未壓縮全檢查點的5%(使用2位)和10%(使用3位),即壓縮率分別高于20×和10×。

使用不同壓縮方法的壓縮比例。橫軸表示優先級提升中使用的比特計數,縱軸是壓縮后檢查點大小與壓縮前大小之間的比例。其中,E、P、H 分別表示“基于指數的量化”、“優先級提升”和“霍夫曼編碼”。

指數基量化平均產生85%的壓縮比。這證明了所有參數中δ的指數部分跨越了可以由單精度浮點數表示的所有值的一個小范圍。15%還表明桶號k<2^5,因為平均桶號可以估計為k=2(32×15%=4.8),其中32是單精度浮點數的寬度。優先級提升平均為2位帶來了9.26%的額外壓縮比,為3位帶來了6.23%。在大多數情況下,除了MF(圖4(d), 4(h))外,較小位數的優先級提升為哈夫曼編碼帶來了更多好處。這是因為MF的參數是稀疏的,因此哈夫曼編碼可以在沒有激進優先級提升的情況下達到足夠的壓縮比。在所有模型(和數據集)中,哈夫曼編碼平均帶來了2位優先級提升的2%額外壓縮比,和3位的1.6%。

4.4 優先級提升的有效性

本節進一步討論了優先級提升的有效性。其目的是證明優先級提升能夠保存大多數高優先級參數。我們通過顯示指數桶導致的模型狀態影響更大(即,當桶代表的唯一值離0更遠時,即e更大)來證明這一點。

假設δ是從一個狀態uθ到另一個狀態經過m次迭代計算得出的。然后,通過將第i個指數桶中的參數設置為0來創建δim。地面真相計算為,其中L(x)表示損失函數。然后計算相對誤差:

圖5報告了MLR與m=10n, n∈[1, 6]的結果。兩個數據集(MNIST和FashionMNIST)在不同的m上證明了具有最大距離的前n個桶中的元素對模型影響更大(當桶代表的值設置為0時,表示為更高的相對誤差)。此外,只需少量的索引位就可以保留所有重要的桶。例如,使用2位優先級提升(最后一個桶存儲0的4個桶)可以輕松保留最重要的桶,使用3位(8個桶)可以保留所有有效的桶。這個結果解釋了為什么優先級提升可以在幾乎不損失準確性的情況下壓縮檢查點。

對每個指數桶的優先級進行評估。 橫軸表示被刪除的指數桶的ID。 縱軸顯示相對誤差與基準值之間的關系。

4.5. LC-Checkpoint的開銷案例研究

本節通過一個案例研究,即在MovieLens25M(Harper & Konstan, 2015)數據集上訓練MF,評估了LC-Checkpoint的執行開銷和對模型執行的整體影響。每次迭代平均耗時91秒。LC-Checkpoint采用3位優先級提升,導致檢查點大小低于10%(未壓縮完整檢查點大小)。默認方法每10次迭代創建一個完整檢查點。在第7次迭代觸發故障。

圖6報告了結果。LC-Checkpoint與正常執行相比只多產生一次額外迭代,且與完整檢查點方法相比節省了6次迭代,即節省了546秒的執行時間。LC-Checkpoint每次迭代僅引入不到4秒(即約4%)的開銷,可以忽略不計。

在 MovieLens25M 數據集上的矩陣分解。橫軸表示迭代次數,縱軸是模型的 RMSE(均方根誤差)。

5.相關工作

容錯是機器學習系統的關鍵基礎支持。Li等人(Li et al., 2014)提出了一種用于恢復的運行時參數復制方法。Tensorflow(Abadi等人,2016)采用周期性檢查點保存模型狀態。類似的努力,如(Harlap等人,2017;Qiao等人,2018a),旨在支持強一致性語義。相反,我們的工作基于機器學習應用程序的自我校正行為,放寬了檢查點的一致性保證。通過一組有損壓縮機制,我們的工作可以承受高頻檢查點,從而降低重做成本并實現精細的模型狀態恢復。同樣,Qiao等人(Qiao等人,2018b)也提出了一種基于弱一致性的容錯解決方案(我們評估中的SCAR),通過部分更新參數來實現。根據我們的評估,SCAR有潛力在檢查點期間存儲冗余信息,我們的工作旨在通過選擇性地保存兩個狀態之間的距離來消除這種冗余。模型壓縮旨在減少模型存儲空間并加快模型執行時間。權重剪枝和權重量化是模型壓縮的兩個重要類別。

一些與我們的工作密切相關的流行權重剪枝技術總結如下。Guo等人(Guo等人,2016)提出了一種動態網絡手術方法,通過即時連接剪枝來降低網絡復雜性。Dai等人(Dai等人,2019)將生長和剪枝階段結合在訓練中,生成緊湊的DNN架構。Han等人(Han等人,2015b)設計了深度壓縮,一種通過剪枝、量化和霍夫曼編碼相結合的模型壓縮方法。Mao等人(Mao等人,2017)認真探討了不同剪枝粒度對模型準確性的影響,并提出了一種粗粒度權重剪枝方法。以上所有努力的目標都是在不損害準確性的情況下剪枝模型權重。與它們不同,我們的工作通過設計一種可靠的編碼方案,在整個學習過程中通過消除兩個檢查點之間的冗余并減少恢復過程中的重做成本。

權重量化也被廣泛用于模型壓縮。BinaryConnect(Courbariaux等人,2015)引入了二進制權重來替代乘法運算。二值化神經網絡(Courbariaux等人,2016)也使用二進制權重和激活來加速計算。Park等人(Park等人,2017)提出了一種基于加權熵的聚類方法用于權重量化。Leng等人(Leng等人,2018)將量化形式化為一個優化問題,并通過ADMM來解決。我們的方法也利用量化來減少參數比特數,設計了一種新穎的基于指數的量化技術。此外,我們的方法強調使用新的優先級提升方法過濾參數。

6.結論和未來工作

本文提出了LC-Checkpoint,這是基于有損壓縮的第一個檢查點方案,旨在實現最大壓縮率高效恢復。它采用了一種新穎的兩階段量化方法,包括基于指數的量化和優先級提升,以識別和存儲SGD恢復所需的最關鍵信息,并利用Huffman編碼進一步從梯度規模的非均勻分布中獲益。我們的評估表明,LC-Checkpoint實現了高達28倍的壓縮率和高達5.77倍的恢復加速,超過了最先進的算法(SCAR)。

未來,我們計劃通過放寬對SGD的假設并使其具備根據模型和數據變化動態選擇檢查點壓縮率的能力,推廣LC-Checkpoint。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718486.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718486.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718486.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MFC中CString的MakeUpper使用方法

在MFC中&#xff0c;CString類提供了MakeUpper函數來將字符串中的字符全部轉換為大寫。MakeUpper函數沒有參數&#xff0c;它會直接修改原始的CString對象。 下面是一些示例代碼&#xff0c;演示了如何使用MakeUpper函數&#xff1a; CString str "Hello, World!"…

uniapp開發android原生插件

一、下載原生開發SDK Android 離線SDK - 正式版 | uni小程序SDK (dcloud.net.cn)、 https://nativesupport.dcloud.net.cn/AppDocs/download/android.html 將開發uniappa原生android的插件解壓到ben本地目錄&#xff0c;目錄結構如下&#xff1a; 接下就可以使用 UniPlugin-Hel…

【本科組冠名獎】2023年第八屆數維杯數學建模挑戰賽獲獎感言

美國大學生數學建模競賽已結束過半&#xff0c;現在又迎來了2024年第九屆數維杯國賽&#xff0c;準備參加今年數維杯國賽的同學&#xff0c;今天我們一起看看去年優秀的選手都有什么獲獎感言吧~希望能幫到更多熱愛數學建模的同學。據說文末在看點贊的大佬都會直沖國獎呢&#x…

實用Pycharm插件

Pycharm的離線安裝&#xff1a;https://plugins.jetbrains.com/ 需要根據對應的Pycharm/Goland版本選取所需的 對于實用的插件如下&#xff1a; 實時查看每一行的git blame信息&#xff1a; Gittoolbox 轉換IDE的英文為中文&#xff1a;Chinese IDE側格式化json字符串&#…

UE5 C++ TPS開發 學習記錄(八

這一次到了p19 完善了UI和寫了創建房間 MultiPlayerSessionSubsystem.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSubsystem.h" #in…

python基礎-基本數據類型深入-2.2

目錄 集合 集合的定義 集合操作 集合的內建函數 集合與內置函數 集合練習-1 集合練習-2 集合練習-3 集合 集合的定義 學習關于 Python 集的所有內容&#xff1b;如何創建它們、添加或刪除其中的元素&#xff0c;以及在 Python 中對集合執行的所有操作。 Python 中的集…

掌握Go語言:探索Go語言中的變量,靈活性與可讀性的完美結合(4)

想要編寫簡潔高效的Go語言代碼嗎&#xff1f;掌握變量的使用是關鍵&#xff01;Go語言的變量聲明方式多樣&#xff0c;包括var關鍵字和短變量聲明&#xff0c;同時支持類型推斷&#xff0c;讓代碼更加清晰易讀。 變量聲明方式 在Go語言中&#xff0c;變量的聲明方式有兩種&am…

少兒編程 中國電子學會C++等級考試一級歷年真題答案解析【持續更新 已更新82題】

C 等級考試一級考綱說明 一、能力目標 通過本級考核的學生&#xff0c;能對 C 語言有基本的了解&#xff0c;會使用順序結構、選擇結構、循環結構編寫程序&#xff0c;具體用計算思維的方式解決簡單的問題。 二、考核目標 考核內容是根據軟件開發所需要的技能和知識&#x…

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid

Leetcode 3071. Minimum Operations to Write the Letter Y on a Grid 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3071. Minimum Operations to Write the Letter Y on a Grid 1. 解題思路 這一題思路上也是比較直接的&#xff0c;就是首先找到這個Y字符&#xff0c;然后…

單詞規律00

題目鏈接 單詞規律 題目描述 注意點 pattern只包含小寫英文字母s只包含小寫英文字母和 ’ ’s不包含任何前導或尾隨對空格s中每個單詞都被 單個空格 分隔 解答思路 本題與上一次同構字符串類似&#xff0c;思路可以參照同構字符串 代碼 class Solution {public boolean …

工作流/任務卸載相關開源論文分享

decima-sim 概述&#xff1a; 圖神經網絡強化學習處理多工作流 用的spark的仿真環境&#xff0c;mit的論文&#xff0c;價值很高&#xff0c;高被引&#xff1a;663倉庫地址&#xff1a;https://github.com/hongzimao/decima-sim論文&#xff1a;https://web.mit.edu/decima/co…

企業財務規劃的未來:自動化智能化如何推動全面預算管理

隨著自動化和智能化對企業的影響日益明顯&#xff0c;了解和接受那些有可能改變企業財務規劃的技術變得愈發重要。新興技術是推動企業增長和業務生產的中堅力量。作為企業財務專業人員&#xff0c;熟悉技術能夠幫助他們了解企業的未來價值&#xff0c;從而更好的領導團隊。數智…

springboot支持的常用日志框架介紹

日志系統是計算機系統中用于記錄和跟蹤事件、錯誤和信息的軟件組件。在軟件開發和維護過程中&#xff0c;日志系統起著至關重要的作用。它可以幫助開發人員了解軟件的運行情況&#xff0c;快速定位和解決問題。本文將從以下幾個方面介紹日志系統&#xff1a;日志系統概述、Spri…

Mybatis plus拓展功能-枚舉處理器

目錄 1 前言 2 使用方法 2.1 在application.yml中添加配置 2.2 定義枚舉類 2.3 在實體類和賦值時中使用 1 前言 在我們的開發過程中&#xff0c;常常需要用一些數字來表示狀態。比如說&#xff1a;1-正常&#xff0c;0-凍結。然而這樣并不能做到見名知意&#xff0c;特別是…

HTML最強入門學習筆記+GitHub小項目源碼

HTML學習筆記 GitHub項目鏈接: 點我跳轉GitHub 本博客采用markdown編寫&#xff0c;上面這個鏈接跳轉就是采用了html的<a></a>的代碼設計的跳轉提示~ 1.創建文件可以使用 ! 在VSCode中進行快速補全從而生成一整個HTML結構 HTML組成 <!DOCTYPE html><htm…

vscode——遠端配置及一些問題解決

vscode——遠端配置 安裝Remote -SSH插件配置config本地變化一些問題缺失核心關閉vscode自動更新 嘗試寫入管道不存在hostname -I 查出來的ip連不上 我們之前大概了解了vscode的本地設置&#xff0c;我們之前提過&#xff0c;vscode是一款編輯器&#xff0c;在文本編輯方面有著…

Windows安裝Neo4j數據庫教程(3.X版本)

安裝java的jdk&#xff08;jdk1.8僅支持Neo4j 3.X版本&#xff09;去 Index of /doc/neo4j/ 下載目標版本的Windows zip安裝包將安裝包解壓到任意目錄&#xff0c;并記住解壓后帶版本號的文件夾路徑添加系統環境變量&#xff0c;變量名&#xff1a;NEO4J_HOME&#xff0c;變量值…

程序員的金三銀四求職寶典:如何在關鍵時期脫穎而出?

個人主頁&#xff1a;17_Kevin-CSDN博客 隨著春天的腳步漸近&#xff0c;程序員們的求職熱潮也隨之而來。在這個被稱為“金三銀四”的招聘季&#xff0c;如何從眾多求職者中脫穎而出&#xff0c;成為了許多程序員關注的焦點。本文將為你提供一份全面的求職寶典&#xff0c;助你…

前端架構: 腳手架通用框架封裝之CommonJS和ESM混合開發兼容解決(教程五)

CommonJS 和 ESModule 混合開發 接上文&#xff0c;仍舊在 abc-cli 項目中參考&#xff1a;https://blog.csdn.net/Tyro_java/article/details/136433159現在要在腳手架項目中安裝 chalk 依賴&#xff0c;因為在 abc-cli 項目幾乎都是 CommonJS的實現而 chalk 這個依賴源碼是基…

徹底剖析激光-視覺-IMU-GPS融合SLAM算法:理論推導、代碼講解和實戰

自主導航是機器人與自動駕駛的核心功能&#xff0c;而SLAM技術是實現自主導航的前提與關鍵。現有的機器人與自動駕駛車輛往往會安裝激光雷達&#xff0c;相機&#xff0c;IMU&#xff0c;GPS等多種模態的傳感器&#xff0c;而且已有許多優秀的激光SLAM與視覺SLAM算法。但是每種…