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

ブログ    

推薦する

鉄道欠陥検出における機械学習の実用化

【51CTO.com クイック翻訳】はじめに列車が走行しているとき、線路には大きな圧力がかかることが...

AIは人間の感情を理解できるのか?

温かく思いやりのある、一緒にいてくれる「ダバイ」が欲しいと願う人は多いだろうが、ダバイのように人間の...

...

ロボット市場は飛躍の準備ができており、人間と機械の統合が主流のトレンドとなっている

最近、2021年世界ロボット大会が北京で盛大に開幕しました。ロボット分野の最先端技術と最新の成果が展...

...

...

回答者の約40%が顔認識技術の悪用は改善されたと考えている

データ画像。画像/アンスプラッシュ近年、個人情報保護法などの法律や規制の導入・施行により、我が国はデ...

次世代スマートビルディング:データ駆動型施設はより安価で環境に優しいものになる

今日のスマート ビルは、各部屋や各階で何が起こっているかを把握し、エネルギー使用を最適化して持続可能...

...

会話型AIチャットボットの成功を測定する方法

[[385791]] 【51CTO.com クイック翻訳】組織は、特にヘルスケア分野において、データ...

ヘルスケアにおける人工知能の新たなフロンティア

[[262099]]医療機関が AI の導入を競う中、プロセス中心のアプローチを AI 戦略に組み込...

エージェントは人間のように協力し、「グループチャット」を通じて情報を交換することができます。

インテリジェントエージェントにも「標準マニュアル」が必要です。 MetaGPTと呼ばれる研究では、イ...

見逃せない 7 つのディープ ニューラル ネットワーク可視化ツール

TensorBoard: TensorFlow 統合可視化ツールGitHub 公式プロジェクト: h...

AI倫理の夜明け

平等な代表から AI 法制へ AI の倫理基準を改善するには、テクノロジーにおける平等な代表と、EU...

将来、人工知能は冷酷な大量虐殺者になるのでしょうか?

人類の将来に対する最も永続的な恐怖の一つは、人工知能が人間の制御を逃れ、人類を絶滅させる可能性がある...