1 つの GPU + 数行のコードで、大規模モデルのトレーニング速度が 40% 向上します。 HuggingFaceのシームレスなサポート

1 つの GPU + 数行のコードで、大規模モデルのトレーニング速度が 40% 向上します。 HuggingFaceのシームレスなサポート

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

大型モデルをより多くの人に使ってもらうために、技術サークルではさまざまなユニークなアイデアを考案してきたと言わざるを得ません。

モデルが十分に開いていませんか?無料のオープンソースバージョンを独自に開発した人もいます。

例えば、最近ネット上で話題になっているDALL・E Miniや、Metaが公開したOPT-175B (Open Pretrained Transformer)などです。

レプリケーションという方法により、これまで十分に公開されていなかった大規模なモデルを誰でも利用できるようになります

一方、モデルが大きすぎるため、個々のプレーヤーが莫大なコストを負担するのは困難だと考える人もいます。

そのため、大規模モデルのトレーニングを高速化し、コストを削減するために、異種メモリや並列コンピューティングなどの方法が提案されています。

たとえば、オープンソース プロジェクトColossal-AI は最近、Nvidia 3090 が 180 億のパラメータを持つ大規模モデルに単独で挑戦できるようにするという目標を達成しました。

そして、過去 2 日間で、同社は新たな一連の新製品を発売しました。

Hugging Face コミュニティ モデルをシームレスにサポートし、わずか数行のコードを追加するだけで、低コストで大規模なモデルのトレーニングと微調整が可能になります。

Hugging Face は現在最も人気のある AI ライブラリの 1 つであり、 50,000 を超えるAI モデルの実装を提供し、多くの AI プレーヤーが大規模なモデルをトレーニングするための第一の選択肢となっていることを知っておく必要があります。

Colossal-AI のこの動きにより、公開モデルのトレーニングと微調整がより実現可能になります。

トレーニング効果も向上します。

単一の GPUでは、Microsoft の DeepSpeed と比較して、Colossal-AI の自動最適化戦略を使用することで、最大40%の高速化を実現できます。

しかし、PyTorch などの従来のディープラーニング フレームワークでは、このような大規模なモデルを単一の GPU で実行できなくなりました

8 つの GPU を使用して並列トレーニングを行う場合は、起動コマンドに-nprocs 8 を追加するだけです。

この進歩の波は、個々の AI プレーヤーが考慮する必要があるコスト、効率、および実用的な問題を把握したと言えます。

コードロジックを変更する必要はありません

何もせずに話すのは、ただの空論に過ぎません。

OPT を例に、Colossal-AI の新機能の使い方を詳しく見てみましょう。

OPT の正式名称は Open Pretrained Transformer です。

これは Meta AI によってリリースされたもので、最大パラメータサイズが 1750 億でGPT-3 に匹敵します

最大の特徴は、GPT-3 はモデルの重みを公開しないのに対し、OPT はすべてのコードと重みをオープンソース化していることです。

したがって、すべての開発者はこれに基づいてパーソナライズされたダウンストリームタスクを開発できます。

次の例では、OPT によって提供される事前トレーニング済みの重みに基づいて因果言語モデルを微調整します。

主な手順は 2 つあります。

  • プロフィールを追加する
  • 実行開始

最初のステップは、実行するタスクに応じて構成ファイルを追加することです。

たとえば、GPU で異種トレーニングを例にとると、構成ファイルに関連する構成項目を追加するだけでよく、コードのトレーニング ロジックを変更する必要はありません。

たとえば、 tensor_placement_policy は異種トレーニングの戦略を決定し、そのパラメータは CUDA、CPU、および auto になります。

それぞれの戦略には異なる利点があり、さまざまな状況に適しています。

CUDA : すべてのモデル パラメータを GPU に配置します。これは、オフロードせずにトレーニングを実行できる従来のシナリオに適しています。

CPU : すべてのモデルパラメータはCPUメモリに配置され、現在計算に関係する重みのみがGPUメモリに保持されます。これは、非常に大規模なモデルのトレーニングに適しています。

auto : リアルタイムのメモリ情報に基づいて GPU メモリに保持するパラメータの量を自動的に決定し、CPU と GPU 間のデータ転送を削減しながら GPU メモリの使用を最大化します。

一般ユーザーにとっては、自動戦略を使用するのが最も便利です。

このようにして、Colossal-AI は、コンピューティング効率を最大化するために、リアルタイムで最適な異種戦略を自動的かつ動的に選択できます。

 colossalai.zero.shard_utils からTensorShardStrategy インポートします


ゼロ= dict ( model_config = dict ( shard_strategy = TensorShardStrategy ()、
tensor_placement_policy = "auto" )、
optimizer_config = dict ( gpu_margin_mem_ratio = 0.8 )

2 番目の手順は、構成ファイルの準備ができたら、新しい機能を有効にするために数行のコードを挿入することです。

まず、1 行のコードを使用して構成ファイルで Colossal-AI を起動します。

Colossal-AI は、分散環境を自動的に初期化し、関連する構成を読み取り、構成内の関数をモデルやオプティマイザーなどのコンポーネントに自動的に挿入します。

 colossalai . launch_from_torch ( config = './configs/colossalai_zero.py' )

次に、データセット、モデル、オプティマイザー、損失関数などを通常どおり定義します。

たとえば、ネイティブ PyTorch コードを直接使用する場合、モデルを定義するときにZeroInitContextでモデルを初期化するだけで済みます。

ここでは、Hugging Face が提供する OPTForCausalLM モデルと事前トレーニング済みの重みが使用され、Wikitext データセットで微調整されています。

 ZeroInitContext ( target_device = torch.cuda.current_device () 場合
シャード戦略= シャード戦略
shard_param = True ):
モデル= OPTForCausalLM . from_pretrained (
'facebook/opt-1.3b'
設定= 設定

次に、 colossalai.initializeを呼び出して、構成ファイルで定義された異種メモリ関数をトレーニング エンジンに挿入し、対応する関数を開始するだけです。

 エンジンtrain_dataloadereval_dataloaderlr_scheduler = colossalai.initialize ( モデル= model 
オプティマイザー= オプティマイザー
基準= 基準
トレインデータローダー= トレインデータローダー
test_dataloader = eval_dataloader
lr_scheduler = lr_scheduler )

依然としてGPU + CPUの異種性に頼る必要がある

ユーザーが上記の「絶対確実な」操作を実行できるようにするための鍵は、AI システム自体が十分にスマートである必要があるということです。

中核的な役割を担うのは、Colossal-AI システムの効率的な異種メモリ管理サブシステムであるGeminiです。

システム内の総支配人のような存在で、計算に必要な情報を収集した上で、CPUやGPUのメモリ使用量を動的に割り当てます。

具体的な動作原理は、最初の数ステップで予熱し、PyTorch の動的計算グラフでメモリ消費情報を収集することです。

ウォームアップが終了し、演算子を計算する前に、Gemini は収集されたメモリ使用量記録を使用して、コンピューティング デバイス上で演算子に必要なピーク メモリを予約し、同時に一部のモデル テンソルを GPU ビデオ メモリから CPU メモリに移動します。

Gemini の組み込みメモリ マネージャーは、各テンソルに HOLD、COMPUTE、FREE などのステータス メッセージをマークします。

そして、動的に照会されたメモリ使用量に応じて、テンソルの状態が継続的かつ動的に変換され、テンソルの位置が調整されます。

直接的な利点は、ハードウェアが非常に限られている場合に、モデル容量を最大化し、トレーニング速度のバランスをとることができることです。

業界で主流の方式である ZeRO (Zero Reduency Optimizer) も CPU + GPU 異種メモリ方式を使用していますが、静的パーティショニングであるため、システム クラッシュ、不要な通信などの問題が発生する可能性があることに注意してください。

さらに、ダイナミックヘテロジニアスCPU+GPUメモリ方式を採用し、メモリスティックを追加することでメモリを拡張することもできます。

ハイエンドのグラフィック カードを購入するよりもはるかに安価です。

現在、Colossal-AI メソッドを使用すると、RTX 2060 6GB の一般的なゲーム マシンは15 億のパラメータ モデルをトレーニングできます。RTX 3090 24GB ホストは180 億のパラメータの大規模モデルに直接挑戦できます。Tesla V100 32GB は240 億のパラメータを処理することもできます。

Colossal-AI は、メモリの使用を最大化するだけでなく、分散並列方式を使用してトレーニング速度を継続的に向上させます。

データ並列処理、パイプライン並列処理、2.5 次元テンソル並列処理などの複雑な並列戦略を同時に使用することを提案します。

この方法は複雑ですが、使い方は非常に簡単です。簡単なステートメントだけで自動的に実装できます。

他のシステムやフレームワークのようにコードに介入して、複雑な基礎ロジックを手動で処理する必要はありません。

 並列= 辞書(
パイプライン= 2
テンソル= dict ( モード= '2.5d'深さ= 1サイズ= 4 )

Colossal-AI は他に何ができるのでしょうか?

実際、Colossal-AI はオープンソースとしてリリースされて以来、GitHub や Papers With Code のホットリストで何度も世界第 1 位にランクされており、テクノロジー界ではよく知られる存在となっています。

前述のように単一の GPU で大規模なモデルをトレーニングすることに加えて、Colossal-AI を数十または数百の GPU を使用した大規模な並列シナリオに拡張すると、パフォーマンスが 2 倍になり、リソース使用量が NVIDIA Megatron-LM などの既存のシステムの 10 分の 1 未満に削減されます。

つまり、GPT-3 などの大規模な AI モデルの事前トレーニングにかかる​​コスト削減は数百万元に達する可能性があります。

Colossal-AI関連のソリューションは、自動運転、クラウドコンピューティング、小売、医療、チップなどの業界の有名メーカーによって使用されていることが明らかになっています。

同時に、オープンソース コミュニティの構築にも大きな注意を払い、中国語のチュートリアルを提供し、ユーザー コミュニティ フォーラムをオープンし、全員のニーズとフィードバックに基づいて継続的に更新と反復を行っています。

たとえば、Colossal-AI が Hugging Face にいくつかのモデルを直接ロードできるかどうかを尋ねるメッセージを残しているファンがいることがわかりました。

さて、アップデートが来ました。

では、大規模モデルのトレーニングでは、現在どのような困難を解決する必要があると思いますか?

コメント欄にメッセージを残して議論しましょう〜

ポータル

プロジェクトアドレス: https://github.com/hpcaitech/ColossalAI

<<:  馬懿、沈向陽、曹英の最新AIレビューが人気に!作成に3か月かかりました。ネットユーザー必読の論文です

>>:  農業における人工知能の応用

ブログ    
ブログ    
ブログ    

推薦する

ML 向け勾配降下法アルゴリズム 機械学習初心者向け勾配降下法アルゴリズム

[[197951]]基本概念このセクションでは、勾配降下法をより一般化するために、機械学習アルゴリズ...

マーケターがAIと機械学習を活用して顧客にリーチする方法

数十年前、技術者が初めて人工知能の概念を生み出したとき、彼らは人間の知能を模倣できる技術を生み出そう...

...

2020 年に AI、分析、データ ガバナンスに影響を与える 5 つのトレンド

企業レベルの人工知能は、まさに臨界質量に達しました。 AI があらゆるビジネスの主要な構成要素となる...

マイクロソフトリサーチアジア、ウェイ・フル氏:人工知能における基礎イノベーションの第2次成長曲線

人工知能の発展の観点から見ると、GPT シリーズのモデル (ChatGPT や GPT-4 など) ...

中国の研究チームが86%の精度を誇るAI「皮肉」検出モデルを発表

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

上級アーキテクトが初めて秘密を明かす:Toutiao の推奨アルゴリズムの原理を 3 分で学ぶ

[[217643]]現在、アルゴリズムの配布は、情報プラットフォーム、検索エンジン、ブラウザ、ソーシ...

機械学習における再現率、精度、正確さの指標は何ですか?

以前の記事では、Naive Bayes、KNN、KMeans、EM、線形回帰、ロジスティック回帰など...

...

国連チーフAIアドバイザーとの独占インタビュー:AIは完璧だと期待しているが、決して完璧ではない

[[384962]]ビッグデータダイジェスト制作出典: informationweek編纂者:張大毓...

...

...

機械学習が自動的にモデル化を手助けしてくれる、これら4つのPythonライブラリがあなたの目を開かせてくれる

自動機械学習 (AutoML と略されることが多い) は、機械学習モデルを構築してデータをモデリング...

人力資源社会保障省:人工知能人材の不足は500万人を超える

最近、人力資源・社会保障省は、新しい職業である人工知能工学・技術人材の現在の雇用状況に関する分析レポ...

人工知能対神: インダストリー4.0におけるグローバル社会の微妙なつながり

[[423479]]はい、タイトルの読み方は正しいです。特にインダストリー 4.0 では、AI と神...