ChatGLM-6Bを最適化するにはどうすればいいですか?たった 1 行のコード | 最も「流行」のモデル

ChatGLM-6Bを最適化するにはどうすればいいですか?たった 1 行のコード | 最も「流行」のモデル

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載しています。転載の際は出典元にご連絡ください。

大規模言語モデルの応用と微調整と最適化の必要性

ChatGPT の登場により、大規模言語モデル (LLM) の普及元年が始まりました。BERT、GPT-4、ChatGLM などのモデルの並外れた機能は、汎用人工知能 (AI) と同様の大きな可能性を示しており、複数の業界や分野から広く注目を集めています。

これらの大規模モデルを特定の分野に深く統合し、特定のタスクに適切に適応させるには、タスクの特性に基づいてこれらのモデルをカスタマイズし、微調整することが重要です。

しかし、パラメータの数が膨大であるため、従来の方法で大規模なモデルを調整するのは困難であり、関係者が微調整技術を習得する必要があるだけでなく、莫大なトレーニングコストもかかります。

近年、パラメータ効率の良い微調整 (PEFT) とプロンプトチューニングの手法が登場しました。これらのテクノロジーは、コストが低く、アプリケーションがシンプルで便利であるため、大規模モデルの従来のチューニング方法に徐々に取って代わりつつあります。

この記事では、現在中国語のアプリケーションシナリオで優れたパフォーマンスを発揮するオープンソースの事前トレーニング済み大規模モデルであるChatGLM-6Bを使用して、オープンソースのプロンプトチューニングコードに最小限変更を加え、第4世代インテル® Xeon®スケーラブル・プロセッサー[1] -インテル®アドバンスト・マトリックス・エクステンション (インテル® AMX) の新しい組み込みAIアクセラレーションエンジンとサポートソフトウェアツールを組み合わせることで、効率的で低コストの大規模モデルの微調整を実現する方法を紹介します。

Intel®アーキテクチャ ハードウェアに基づく微調整および最適化ソリューション

この論文では、次の 3 つの側面を通じて、第 4 世代Intel® Xeon®スケーラブル プロセッサーに基づく ChatGLM の効率的な微調整と最適化を実現します。

1. Intel® AMXにより、モデルの微調整計算速度が大幅に向上

AMX は、第 4 世代Intel® Xeon®スケーラブル プロセッサーに組み込まれた行列乗算アクセラレーターであり、BFloat16 (BF16) または INT8 データ型の行列乗算および加算演算をより高速に処理し、モデルのトレーニングと推論のパフォーマンスを大幅に向上させることができます。

△ 図1.インテル® AMXテクノロジーアーキテクチャー

現在、現在の PyTorch フレームワークは、BF16 自動混合精度関数を通じて AMX アクセラレータを自動的に利用できます。

ChatGLM-6B に関しては、オープンソースの微調整コードの autocast_smart_context_manager() 関数も CPU 自動混合精度をサポートしています。

したがって、微調整を開始するときに CPU の自動混合精度を有効にするだけで、 Intel® AMX を直接活用できます。

△ CPUとGPUの自動混合精度サポートは、chatGLM-6Bオープンソースのprompt-tuningディレクトリのtrainer.pyのautocast_smart_context_manager()関数を通じて実装されています。

具体的な方法は、微調整用の train.sh スクリプトを起動するときに、次の変更を加えることです。

2. Intel® MPIライブラリと組み合わせることで、プロセッサアーキテクチャの特性とマルチコア構成を最大限に活用し、CPUの全体的な効率を最大化します。

第 4 世代Intel® Xeon®スケーラブル プロセッサーには最大 60 個のコアを搭載できます。これらのコアは内部的に 4 つのクラスターに編成されています。

理論的には、複数のプロセッサ コアがコンピューティング タスクを並列に処理し、データを共有または交換する必要がある場合、同じクラスター内のコア間の通信遅延は低くなります。

したがって、PyTorch フレームワークを使用してモデルを微調整する場合、同じクラスター上のコア リソースを同じ PyTorch インスタンスに割り当てることができ、単一のインスタンスに対してより理想的なコンピューティング効率を実現できます。

さらに、PyTorch の分散データ並列 (DDP) 機能を活用することで、2 つの CPU 上の 8 つのクラスターのコア リソースをプールして、全体的な効率を最大化できます。

図3. 第4世代インテル® Xeon®スケーラブル・プロセッサーの内部クラスター・アーキテクチャ

アプリケーション コードからデータ通信までの全体的な簡素化を実現するために、PyTorch フレームワークはさまざまな分散データ並列バックエンドをサポートしています。その中でも、MPI バックエンド メソッドは最適化のニーズを十分に満たすことができます。

△ 図4. PyTorchがサポートする複数の分散データ並列バックエンド(出典:PyTorch [2]公式サイト)

ただし、pip または conda 経由でインストールされた事前コンパイル済みの PyTorch バイナリには、MPI バックエンドがデフォルトの機能としてコンパイルされていません。したがって、MPI プロトコル ツール ライブラリをインストールし、手動でコンパイルして MPI バックエンドのサポートを取得する必要があります。

Intel® MPIライブラリ[3]は、MPICH仕様を実装したマルチ構造メッセージパッシングライブラリであり、 Intel®プロセッサ上で最適なパフォーマンスを実現する高度で複雑なアプリケーションの作成、保守、テストに使用されます。 OFI を使用してすべての通信を処理することで、スループットの向上、レイテンシの低減、プログラミングの簡素化を実現します。

Intel® MPI ライブラリに基づいて PyTorch をコンパイルする手順は次のとおりです。

Intel® MPI ライブラリをダウンロードしてインストールします。

PyTorch コンパイル依存パッケージをインストールします。

PyTorch ソースコードをダウンロードし、コンパイルとインストールを完了します。

MPI バックエンド サポート付きの PyTorch を入手したら、ChatGLM プロンプト調整ディレクトリの main.py のコードを 1 行変更するだけです。

dist.init_process_group (backend ='gloo', world_size=1, rank=0) を次のように変更します。

dist.init_process_group(バックエンド='mpi')

△ 図5. 修正前のmain.py

△ 図6. 変更されたmain.py

3. Xeon® CPU Maxシリーズに統合されたHBMを活用して、大規模モデルの微調整に必要な大きなメモリ帯域幅を満たす

大規模なTransformerベースのモデルは、パラメータ、トレーニングデータ、モデルサイズが非常に複雑であるため、通常、メモリ複雑度はO(n 2 )になります。

つまり、これらの大規模モデルでは、より優れた実行パフォーマンスを実現するために、十分に大きなメモリ帯域幅のサポートが必要になります。

64GBのHBM2e高帯域幅メモリを搭載したIntel® Xeon® CPU Maxシリーズ[4]は、CPU上で大規模モデルを効率的に実行するために最大約1TB/sのメモリ帯域幅サポートを提供します。

CPU には HBM が統合されており、3 つのモードで柔軟に構成できます。

  • HBM 専用モード - メモリ要件が 64 GB 以下のワークロードをサポートし、コアあたり 1 ~ 2 GB のメモリ拡張機能を備えているため、コードの変更や追加の DDR の購入なしでシステムを起動できます。
  • HBM フラット モード - 大容量のメモリを必要とするアプリケーションに柔軟性を提供し、HBM と DRAM を通じてフラットなメモリ領域を提供します。これは、コアあたり 2 GB を超えるメモリ要件を持つワークロードに適しています。コードの変更が必要になる場合があります。
  • HBM キャッシュ モード - メモリ容量が 64 GB を超える、またはメモリ要件がコアあたり 2 GB を超えるワークロードで、より優れたパフォーマンスを提供します。コードの変更は必要なく、HBM は DDR のキャッシュとして機能します。

ChatGLM-6B の微調整については、実験結果から、 HBM キャッシュ モードが他の 2 つのモードと比較してパフォーマンスと使いやすさの点で優れていることが示されました。

Intel® Xeon® CPU Max シリーズ製品では、前の 2 つの最適化と組み合わせて、次のコマンド ラインから ChatGLM-6B の微調整を開始できます。

△ 図 7. 32 個の物理コアを備えたデュアルコアIntel® Xeon® CPU Max 9462 サーバーでの微調整の開始

最適化結果

上記のシンプルなソフトウェアとハ​​ードウェアの包括的な最適化により、高価な GPU ハードウェアを使用せずに ChatGLM-6B モデルの高性能な微調整を実現できます。

注: 上記のコード変更には、Python ツールキット accelerate 0.18.0 と transformers 4.28.0 が必要です。

詳しくは記事末尾の[原文を読む]をクリックしてください。

著者について:
インテル(中国)有限公司の人工知能部門チーフエンジニアである夏磊氏は、人工知能分野で約20年の経験を持ち、ソフトウェアアルゴリズム、自動制御、エンジニアリング管理において豊富な経験を積んでいます。

<<: 

>>:  Nvidiaの生成AIスーパーチップGH200はH100の2倍の計算能力を持つ。黄仁訓:それは狂ったように推論できる

ブログ    
ブログ    

推薦する

AIが小売業の顧客体験に革命を起こす

人工知能はすでに多くの業界に大きな影響を与えています。調査会社IDCの調査によると、2019年の人工...

アリババクラウド南京雲奇カンファレンス:スマート製造モデルの共有と最先端技術の発表

[51CTO.comより引用] 本日、アリババクラウドカンファレンス南京サミットが正式に開催され、ま...

2日間で星の数が1,000を突破:OpenAIのWhisperの蒸留後、音声認識が数倍高速化

少し前に、「テイラー・スウィフトが中国語を披露」する動画がさまざまなソーシャルメディアプラットフォー...

AIは脳の信号をリアルタイムで解釈し、画像の主要な視覚的特徴を7倍の速度で復元するとルカン氏は述べた。

AIが脳の信号をリアルタイムで解釈できるようになりました!これはセンセーショナルなことではありませ...

AIアルゴリズムの包囲とフードデリバリー業者の「ブレイクアウト」

システムに閉じ込められた配達員たちは反撃している。最近、海外のテクノロジーメディアWiredは、プラ...

Pythonでゲームボーイエミュレーターを作成し、AIモデルをトレーニングする:デンマーク人の大学のプロジェクトが大ヒット

Atari ゲームを使って人工知能を研究するのは、ちょっと現実的ではないと感じますか?これでゲームボ...

...

李開復のLLaMAに基づく企業モデルだが、テンソル名が異なっており論争を巻き起こしたが、公式の回答が来た。

少し前に、オープンソースのビッグモデル分野に新しいモデル「易」が導入されました。このモデルはコンテキ...

...

...

人工知能がウェブホスティング業界に優位性をもたらす

近年、ウェブホスティング業界は劇的に変化しました。そして、業界を永遠に変える可能性のあるいくつかのト...

...

シリコンバレーの大手企業のAIスタートアップへの投資レイアウトを解明! Nvidiaが全力で取り組み、MicrosoftとOpenAIの関係が独占禁止法調査につながる

今年、新たな AI スタートアップ企業がシリコンバレーとビジネス界全体に衝撃を与えました。 Open...