ニュース

究極の圧縮70倍!大きなモデルにチェックポイントがいくつあっても、心配する必要はありません。

2024-08-05

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

AIxivコラムは、マシンハートが学術的・技術的な内容を掲載するコラムです。過去数年間で、Heart of the Machine AIxiv コラムには 2,000 件を超えるレポートが寄せられ、世界中の主要な大学や企業のトップ研究室がカバーされ、学術交流と普及を効果的に促進しています。共有したい優れた作品がある場合は、お気軽に寄稿するか、報告のために当社までご連絡ください。送信メール: [email protected] [email protected]

この論文の著者は全員ファーウェイのノア研究所の出身で、筆頭著者はLi Wenshuo、責任著者はWang YunheとChen Xinghaoです。近年、関連チームはICML、CVPR、NeurIPS、ICCV、ECCVなどのトップカンファレンスで代表的な作品を多数発表し、効率的な大規模言語モデルやビジュアルモデルなどの分野で豊富な成果をあげており、連携も行っている。有名な大学や科学研究機関との協力が広範に行われています。

現在の AI 業界および学術界における当然の「トラフィックの王」として、大規模モデルは、研究とトレーニングにリソースを投資するために多くの学者や企業を魅了しています。規模が大きくなるにつれて、大規模モデルのトレーニングではシステムとエンジニアリングの問題が避けられない問題になります。たとえば、Llama3.1 の 54 日間のトレーニング中に、システムは 466 回クラッシュし、平均すると 2.78 時間に 1 回の割合でクラッシュしました。



その場合、ストレージのチェックポイントを頻繁に行う必要があります。しかし、チェックポイントを保存すること自体も大規模なプロジェクトです。



Meta は、頻繁なシステム障害に対処するために、ストレージのチェックポイント時間を短縮し、ストレージの頻度を増やすために多大な努力を払ってきました。ただし、ストレージを頻繁に使用すると、ストレージ リソースのオーバーヘッドが大きくなり、この課題に対応するためにトレーニング クラスターには 240 PB の SSD が搭載されています。そのコストはストレージだけで 1 億元です。

Huawei Noah の ExCP メソッドは、ストレージによって生じる膨大なオーバーヘッドに対処するために、モデルを 70 回ロスレスで圧縮できる極端な圧縮チェックポイント技術を提案し、トレーニング中のストレージ オーバーヘッドを大幅に削減しました。





このコードは現在オープンソースであり、Apache 2.0 フレームワークの下でリリースされており、この問題の一部のパートナーは結果を再現することに成功しています。



  • 記事アドレス:https://arxiv.org/abs/2406.11257
  • ウェアハウスのアドレス: https://github.com/Gaffey/ExCP

この方法は非常に革新的でもあり、2 つの重要な概念が言及されています。1 つはトレーニングでチェックポイントの残存情報を使用し、時系列の情報の疎性を通じてより高い枝刈り率を実現することです。と重みを組み合わせて圧縮することで、全体的に高い圧縮率を実現します。



具体的な方法

1. チェックポイント残差

トレーニング プロセス中、現在のパラメーターは、前のチェックポイントに保存された重みと、連続する反復での勾配更新の合計と見なすことができます。この部分は比較的希薄で、含まれる情報が少ないため、この残差は圧縮され、より適切に圧縮されます。比が得られます。逆に、オプティマイザに保存される運動量は、勾配の最初と 2 番目のモーメントのスライド平均であり、最初の瞬間のスライド平均のデフォルトのパラメーターは 0.9 であり、反復後の範囲は数百から数千です。最後のチェックポイントに格納されたコンテンツとの相関性はあまりないため、オプティマイザーは残差ではなく自身の値を直接圧縮します。圧縮される最終チェックポイントは次のように表されます。



2. ウェイト オプティマイザー モメンタム ジョイント コンプレッション

モデル圧縮に関連する既存の作業は、通常、モデルの推論パフォーマンス、またはモデルの最終ストレージ チェックポイントのサイズのみに焦点を当てており、トレーニング プロセス全体におけるモデルのストレージ領域のオーバーヘッドには注意を払っていません。したがって、既存の作業は重みを圧縮するだけであり、Adam などの一般的なオプティマイザーが実際に重みの数の 2 倍の運動量を保存することを無視しています。この作業では、2 つを一緒に圧縮して全体の圧縮率を大幅に向上させる一方で、重みとオプティマイザーの運動量の相関関係を利用して互いの圧縮率をさらに向上させます。

重み枝刈り: 枝刈りの重みは残差値であるため、オプティマイザの運動量の 2 次モーメントは、過去の期間における重みの残差値の変化振幅を大まかに表すことができるため、オプティマイザの運動量の 2 次モーメントはさまざまなレイヤーの枝刈り率を決定する指標として使用できます。枝刈り戦略は次の式で示されます。



式中、W と はそれぞれ重みと二次モーメントを表します。



オプティマイザのモメンタム プルーニング: モメンタム プルーニングの場合、一次モーメントを指標として使用してプルーニングを実行できます。論文には収束の簡単な証明があります。同時に、ポジションの重みが枝刈りされている場合、対応するポジションのオプティマイザのモメンタムも同時に処理する必要があるため、枝刈り戦略は次の式に示すとおりです。



式中、 は一次モーメントを表します。

3. 全体的な圧縮プロセス

全体的な圧縮プロセスをアルゴリズム 1 に示します。重み残差計算 / 結合圧縮 / 不均一量子化 / 符号化圧縮のステップが順番に実行され、最終的な圧縮結果が得られます。



完全なチェックポイント ファイルを復元するプロセスは、アルゴリズム 2 に示されているとおりです。解凍後、まず浮動小数点の結果がコードブックと不均一量子化後に保存された添え字から復元され、次にベースラインの重み (前のチェックの元の重み) と比較されます。ポイントの完全なファイルを取得するために、ポイントまたは復元された再構成重み) が合計されます。トレーニング プロセス全体でチェックポイント ファイルを復元するプロセスは、アルゴリズム 3 に示されているとおりです。トレーニングの完了後、初期化重みのランダム シードと各チェックポイントに保存された圧縮結果のみが保存され、チェックポイントが復元されます。トレーニング/テストなどを再開するために 1 つ以上のチェックポイントを選択できる、完全なチェックポイントのシーケンスを取得するためのシーケンス。

実験結果

この記事では大規模な言語モデルを評価するだけでなく、この方法は ViT-L32 などの大規模なビジュアル モデルでも良好な結果を達成できます。



アブレーション実験からも、残留枝刈り法の使用により枝刈りによる損失が大幅に低減されることがわかります。



この記事では、圧縮前後の大規模な言語モデルの質問と回答の例も示しています。圧縮自体がモデルの質問と回答の機能に損傷を与えないことがわかります。