深度學習領域已經取得了階段性重大進展,特別是在電腦視覺、自然語言處理和語音等方面,使用大數據訓練得到的大規模模型對於實際應用、提高工業生產力和促進社會發展具有巨大的前景。
不過大模型也需要大算力才能訓練,隨著人們對運算能力要求的不斷提高,儘管已有許多研究探索高效的訓練方法,但仍沒有對深度學習模型加速技術的全面綜述。
最近,來自雪梨大學、中國科學技術大學等機構的研究人員發布了一篇綜述,全面總結了大規模深度學習模型的高效訓練技術,展現了訓練過程中的各個元件內的通用機制。
論文連結:https://arxiv.org/pdf/2304.03589.pdf
#研究者考慮了最基本的權重更新公式,並將其基本組成部分劃分為五個主要面向:
1、以資料為中心(data-centric),包括資料集正規化、資料採樣和以資料為中心的課程學習技術,可以顯著降低資料樣本的運算複雜度;
2、以模型為中心(model-centric),包括基本模組的加速、壓縮訓練、模型初始化和以模型為中心的課程學習技術,著重於透過減少參數計算來加速訓練;
#3、以最佳化為中心(optimization-centric),包括學習率的選擇、使用大batch size、高效目標函數的設計、模型加權平均技術等;著重於訓練策略以提高大規模模型的通用性;
##4、預算訓練(budgeted training),包括一些在硬體受限的情況下使用的加速技術;
5、以系統為中心(system- centric),包括一些高效的分散式框架和開源程式庫,為加速演算法的實作提供足夠的硬體支援。
以資料為中心的高效訓練最近,大規模模型的進展大放異彩,而其對資料集的要求卻急劇增加。巨大的數據樣本被用來驅動訓練過程並取得出色的表現。因此,以數據為中心的研究對實際加速至關重要。
資料處理(data processing)的基本作用是在不額外增加標註成本的情況下,高效地增加資料樣本的多樣性;由於資料標註的成本往往過於昂貴,部分開發機構無法負擔,也凸顯了以資料為中心領域的研究的重要性;同時,資料處理也著重於提高資料樣本的平行載入效率。
研究人員將所有這些對資料的高效處理稱為「以資料為中心」(data-centric)的方法,可以顯著提高訓練大規模模型的效能。
文中從以下幾個面向回顧與研究技術:
#資料正規化Data Regularization
資料正規化是一種預處理技術,透過一系列的資料轉換來增強原始資料樣本的多樣性,可以提高訓練樣本在特徵空間中的等效表示,不需要額外的標籤資訊的要求。
高效的数据正则化方法在训练过程中被广泛使用,能够显著提高大规模模型的泛化性能。
数据采样 Data sampling
数据采样也是一种有效的方法,从大批量的样本中选择一个子集来对梯度进行更新,它的好处是以小批量的训练的方式,可以减少当前批次中那些不重要的或不好样本的影响。
通常情况下,采样出来的数据是更重要的,性能与使用全批次训练得到的模型相当;每次迭代的概率需要随着训练过程逐渐调整,以确保采样没有偏差。
以数据为中心的课程学习 Data-centric Curriculum Learning
课程学习在训练过程的不同阶段研究渐进的训练设置,以减少整体的计算成本。
在开始的时候,使用低质量的数据集训练足以学习低层次的特征;然后使用高质量的数据集(更多的增强和复杂的预处理方法)逐渐帮助学习复杂的特征,并达到与使用整个训练集相同的精度。
设计高效的模型架构始终是深度学习领域最重要的研究之一,一个优秀的模型应当是一个高效的特征提取器,可以投射到容易分离的高级特征中。
与其他特别关注高效、新颖的模型架构的工作不同,这篇论文在「以模型为中心」的研究中更加关注通用模块的等价替代方案,在具有可比性的情况下实现更高的训练效率。
几乎所有的大型模型都是由小模块或层组成的,所以对模型的调研可以为高效训练大规模模型提供指导作用,研究人员主要从以下几个方面研究:
架构效率 Architecture Efficiency
随着深度模型中参数量的急剧增加,也带来了巨大的计算消耗,所以需要实现一个高效的替代方案来近似原始版本的模型架构的性能,这个方向也逐渐受到学术界的重视;这种替换不仅仅是数值计算的近似,还包括深度模型中的结构简化和融合。
研究人员根据不同的架构来区分现有的加速技术,并展示了一些观察和结论。
压缩训练效率 Compression Training Efficiency
压缩一直是计算加速的研究方向之一,在数字信号处理(多媒体计算/图像处理)中起着关键作用。
传统的压缩包括两个主要分支:量化和稀疏,文中详细说明了二者现有的成就和对深度训练的贡献。
初始化效率 Initialization Efficiency
模型参数的初始化在现有的理论分析和实际场景中都是一个非常重要的因素。
一个不好的初始化状态甚至会导致整个训练在早期的训练阶段崩溃和停滞,而一个好的初始化状态则有助于在一个平滑的损失范围内加快整个收敛的速度,文中主要从模型初始化的角度研究评估和算法设计。
以模型为中心的课程学习 Model-centric Curriculum Learning
從以模型為中心的角度來看,課程學習通常從大規模模型中的一個小模型或部分參數開始訓練,然後逐漸恢復到整個架構;在加速訓練過程中顯示了較大優勢,並且沒有明顯的負面效應,文中回顧了該方法在訓練過程中的實現和效率。
最佳化方法的加速方案一直是機器學習領域的一個重要研究方向,在實現最優條件的同時降低複雜性一直是學術界追求的目標。
近年來,高效、強大的優化方法在訓練深度神經網路方面取得了重要突破,作為機器學習中廣泛使用的基本優化器,SGD類別的優化器成功地幫助深度模型實現各種實際應用,不過隨著問題的日益複雜,SGD更容易陷入局部最小值,無法穩定地泛化。
為了解決這些困難,Adam及其變種被提出來,在更新上引入自適應性,這種做法在大規模的網路訓練中取得了良好的效果,例如在BERT、Transformer和ViT模型中都有應用。
除了所設計的最佳化器的自身效能外,對加速訓練技術的組合也很重要。
研究者基於最佳化的角度,將目前對加速訓練的思考總結為以下幾個面向:
學習率 Learning rate
學習率是非凸優化的一個重要的超參數,在目前的深度網路訓練中也是至關重要的,像Adam及其變種這樣的自適應方法,已經成功地在深度模型上取得了卓越的進展。
一些基於高階梯度的調整學習率的策略也有效地實現了加速訓練,學習率衰減的實現也會影響到訓練過程中的性能。
大批尺寸Large batchsize
#採用更大的批次量將有效地提高訓練效率,能夠直接減少完成一個epoch訓練所需的迭代次數;在樣本總量固定的情況下,處理一個更大的批尺寸比處理多個小批尺寸的樣本來說消耗更低,因為可以提高記憶體利用率和降低通訊瓶頸。
高效率的目標Efficient objective
最基礎的ERM在最小化問題上起到關鍵作用,使得許多任務得以實際運用。
隨著對大型網路研究的深入,一些作品更加關注優化和泛化之間的差距,並提出有效的目標以減少測試誤差;從不同的角度解釋泛化的重要性,並在訓練中進行聯合優化,可以大大加快測試的準確性。
加權平均 Averaged weights
##加權平均是一種實用的技術,可以增強模型的通用性,因為考慮的是歷史狀態的加權平均,有一組凍結的或可學習的係數,可以大大加快訓練進程。
預算化高效訓練最近有幾項工作專注於用較少的資源訓練深度學習模型,並且盡可能地實現更高的精度。
這類問題被定義為預算訓練(budgeted training),即在給定的預算(對可測量成本的限制)下進行訓練,以實現最高的模型性能。
為了系統地考慮硬體支援以接近真實情況,研究人員將預算訓練定義為在給定的設備和有限的時間內進行訓練,例如,在單一低端深度學習伺服器上訓練一天,以獲得具有最佳性能的模型。
對預算內訓練的研究可以闡明如何製作預算內訓練的訓練配方,包括決定模型大小、模型結構、學習率安排和其他幾個影響性能的可調整因素的配置,以及結合適合可用預算的高效訓練技術,文中主要回顧了預算訓練的幾項先進技術。
以系統為中心的研究就是為所設計的演算法提供具體的實現方法,研究的是能夠真正實現高效訓練的硬體的有效和實際執行。
研究人員專注於通用運算設備的實現,例如多節點叢集中的CPU和GPU設備,從硬體的角度解決設計演算法中的潛在衝突是關注的核心。
文中主要回顧了現有框架和第三方函式庫中的硬體實作技術,這些技術有效地支援了資料、模型和最佳化的處理,並介紹一些現有的開源平台,為模型的建立、有效利用資料進行訓練、混合精度訓練和分散式訓練提供了堅實的框架。
以系統為中心的資料效率System-centric Data Efficiency
高效率的資料處理和資料並行是系統實作中的兩個重要關注點。
隨著資料量的快速增加,低效的資料處理逐漸成為訓練效率的瓶頸,尤其是在多節點上的大規模訓練,設計更多對硬體友善的計算方法和平行化可以有效避免訓練中的時間浪費。
以系統為中心的模型效率System-centric Model Efficiency
隨著模型參數數量的急劇擴大,從模型角度來看,系統效率已經成為重要的瓶頸之一,大規模模型的儲存和運算效率為硬體實現帶來巨大挑戰。
文中主要回顧如何實現部署的高效I/O和模型並行的精簡實現,以加快實際訓練的速度。
以系統為中心的最佳化效率System-centric Optimization Efficiency
優化過程代表了每個迭代中的反向傳播和更新,也是訓練中最耗時的計算,因此以系統為中心的最佳化的實現直接決定了訓練的效率。
為了清楚解讀系統最佳化的特點,文中聚焦在不同計算階段的效率,並回顧每個過程的改進。
開源框架Open Source Frameworks
#高效的開源框架可以促進訓練,作為嫁接(grafting)演算法設計和硬體支援的橋樑,研究人員調查了一系列開源框架,並分析了每個設計的優點和缺點。
#研究人員回顧了有效訓練大規模深度學習模型的通用訓練加速技術,考慮了梯度更新公式中的所有組件,涵蓋了深度學習領域的整個訓練過程。
文中也提出了一個新穎的分類法,將這些技術總結歸類為五個主要方向:以資料為中心、以模型為中心、以最佳化為中心、預算訓練和以系統為中心。
前四部分主要從演算法設計和方法論的角度進行綜合研究,而在「以系統為中心的高效訓練」部分,從範式創新和硬體支援的角度總結了實際實現情況。
文中回顧並總結了與每個部分相對應的常用或最新開發的技術,每項技術的優勢和權衡,並討論局限性和有前景的未來研究方向;在提供全面的技術回顧和指導的同時,這篇綜述也提出了當前高效訓練的突破口和瓶頸。
研究人員希望能幫助研究人員有效率地實現通用的訓練加速,並為高效訓練的未來發展提供一些有意義和有前景的影響;除了在每一節末尾提到的一些潛在的進展之外,更廣泛的、有前景的觀點如下:
1、 高效的Profile搜尋
#高效訓練可以從資料增強組合、模型結構、優化器設計等角度出發,為模型設計預先建立的和可自訂的profile搜尋策略,相關研究已經取得了一些進展。
新的模型架構和壓縮模式、新的預訓練任務、對「模型邊緣」(model-edge)知識的利用同樣值得探索。
2、自適應調度器Adaptive Scheduler
使用一個面向最佳化的調度器,如課程學習、學習速率和批次大小以及模型的複雜性,有可能實現更好的性能;Budget-aware調度器可以動態適應剩餘預算,降低人工設計的成本;自適應調度器可以用來探索並行性和通訊方法,同時考慮到更通用且實際的情況,例如在跨越多地區和資料中心的異質網路中進行大規模去中心化訓練。
以上是訓大模型講究「化勁」!陶大程帶:一文打盡「高效訓練」方案,別再說硬體是唯一瓶頸的詳細內容。更多資訊請關注PHP中文網其他相關文章!