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倍の計算能力を持つ。黄仁訓:それは狂ったように推論できる

ブログ    
ブログ    
ブログ    

推薦する

OpenAI がハッカーのグループチャットに潜入!盗まれたChatGPTは「Meow Meow GPT」に置き換えられました、ネットユーザー:まさに伝説的

ChatGPT がハッカーによって「ハッキング」された場合、OpenAI はどのように対応するのでし...

...

NVIDIA が Canvas を発表: AI を活用してシンプルな筆遣いをフォトリアリスティックな風景画に変換

[[407129]] 2年前、NVIDIAは、大雑把な落書きをリアルタイムでフォトリアリスティックな...

Microsoft が 8 つの Nvidia H100 GPU を搭載した Azure ND H100 v5 仮想マシンをリリース

IT Homeは11月21日、Microsoft Azure AIインフラストラクチャがアップグレー...

...

マスク氏の元従業員が「宇宙工場」を建設し、スペースXのロケットで打ち上げられた新型コロナウイルス治療薬パクスロビドの製造を開始した。

人類が宇宙に建設した最初の工場がここにあります。しかも無人工場です!先週、この衛星はマスク氏のスペー...

放射線科医は再び危機に陥っている!海外の主要5機関が共同で最新の「胸部X線」ベンチマークを発表

胸部X線(CXR)検査は、さまざまな病気のスクリーニングや診断に広く使用されている臨床画像診断法です...

AI人材獲得をめぐる世界的な戦いにおいて、子どものプログラミングはどれほどの影響力を持つことができるのでしょうか?

[[226531]]人工知能の発展において、人材の確保は間違いなく重要な鍵となります。人工知能は、...

機械学習で知っておくべき3つの特徴選択方法!

ディープラーニングの活発な発展に伴い、業務シナリオで使用するためのディープ ニューラル ネットワーク...

...

人工知能のボトルネックを解決し、フードデリバリー業界の発展を促進

近年、消費者向けインターネットが深化し、産業向けインターネットが徐々に向上するにつれて、さまざまな業...

人工知能は教育に大きな変化をもたらすだろう

[[203607]]教育革命が静かに起こっています。この革命はトップダウンの制度改革ではなく、ボトム...

サーバーが過負荷状態です! GANで生成された肖像油絵は人気があり、一瞬でルネッサンス時代に戻ることができます

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

2017 年グローバル人工知能人材ホワイトペーパー: 世界トップクラスの AI 人材の秘密を解明!

人工知能における競争は優秀な人材に基づいて行われます。国の将来の発展方向として、AI技術は経済発展、...