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

ブログ    
ブログ    
ブログ    

推薦する

インテリジェントプラットフォームを活用してビデオ監視データの津波に対処する方法

システム設計者は、高度なセンサー技術の急激な拡大と、それを安全または生命/安全の環境にどのように適用...

パフォーマンスを犠牲にすることなく、メモリ使用量を90%削減。FacebookがQuant-Noiseモデル圧縮方式を提案

数百メガバイトのサイズのニューラル ネットワークの場合、モデル圧縮によりメモリ使用量、通信帯域幅、計...

マイクロソフト、Windows 11、Bing、Edge などで統合された Copilot AI アシスタントをリリース

Microsoft は、生成型人工知能ベースのデジタル アシスタント Copilot をより多くのソ...

AIの受賞作品の著作権申請が却下されました!著者は624のヒントを与えている

初めて受賞した AI 絵画「スペースオペラ」を覚えていますか?最近また注目を浴びているのが――著者の...

第1回世界情報会議は6月29日〜30日に天津で開催される。

【51CTO北京ニュース】2017年6月6日、北京で第1回世界インテリジェンス大会の記者会見が開催...

自然言語処理がデータ分析の世界をどう変えるか

【51CTO.com クイック翻訳】自然言語処理 (NLP) は、コンピューターが人間の自然な言語を...

AI、エッジコンピューティング、IoT、クラウドコンピューティングが車両管理をどのように変えるのか

毎日生成されるデータの量は増加し続けています。その結果、これらの企業はこれまで以上に多くのデータを保...

Mac専用の大型モデルフレームワークが登場! 2行のコードでデプロイでき、ローカルデータとチャットでき、中国語もサポートしています

Mac ユーザーは、ついに、RTX を使用した独自の大型モデル チャットを持つ N カード プレーヤ...

わずか数行のコードで最初のウェブアプリを作成

データ サイエンス プロジェクトの展開は、データ サイエンティストと機械学習エンジニアの両方に必要な...

PaddlePaddleのクリック率に基づくディープラーニング手法の試み

序文チーム内でクリック率に関する記事をいくつか共有した際に、広告のクリック率の推定値を計算する一般的...

指先で操作できる人工知能(基礎編)

人工知能の概念知能は知識と知性の総和です。知識はすべての知的行動の基礎であり、知能は知識を獲得し、そ...

2歳、1年半の教育経験:赤ちゃんAIトレーナーがサイエンスに登場

チューリング賞受賞者のヤン・ルカン氏は、公開インタビューで、現在のAIモデルの学習効率は人間の赤ちゃ...

賈陽青の新たな起業:AIGCプロンプトツールのリリース、SDXLを詳細にプレイするのに役立ついくつかの言葉

プロンプトの単語の書き方がわからなくても問題ありません。AIがお手伝いします。 PromptLLM ...

Uni-TTS音声合成モデルのアップグレード:1つの音声、複数の言語、高忠実度、高効率

最近、マイクロソフトは最新の Azure ニューラル ネットワーク音声合成技術 Uni-TTSv3 ...

アヴネットの鍾喬海氏:人工知能はモノのインターネットの実装を加速させる

【51CTO.comオリジナル記事】 今日では、AI や IoT テクノロジーに投資する企業がますま...