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か月かかりました。ネットユーザー必読の論文です

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

ブログ    
ブログ    
ブログ    

推薦する

人工知能 (AI) は、研究室から実際のアプリケーションまでどのように異なるのでしょうか?

人工知能が実際の応用に入ると、遭遇する問題のほとんどは複雑になります。 しかし、現段階では、人工知能...

...

ジェネレーティブAIがインテリジェントオートメーションを推進する方法

1997 年、世界は現チェスチャンピオンのガルリ・カスパロフと IBM の Deep Blue AI...

顔認識技術の現状と今後の開発動向

顔認識は、一般的に肖像認識または顔認識とも呼ばれ、顔の特徴に基づいて人物を識別する生体認証技術です。...

複数の都市が共同で人工知能コンピューティングネットワークを点灯し、人工知能産業の発展を促進する

Huawei Connect 2021では、中国科学技術情報研究所(CITI)、AITISA(新世代...

AI 導入の謎を解明: クラウドとエッジ

現在、ディープラーニング テクノロジーを展開できる方法としては、デバイス上への直接展開、クラウド内へ...

AIと機械理解の限界を押し広げ、オックスフォード大学の博士論文は3Dオブジェクトの再構築とセグメント化を学ぶ

機械が人間のように 3D の物体や環境を認識できるようにすることは、人工知能の分野における重要なトピ...

深層畳み込みネットワークに基づく自動運転のためのマルチモーダル軌道予測の簡単な分析

道路上で安全かつ効率的に運行するためには、自動運転車は人間の運転手と同じように周囲の交通参加者の行動...

...

人工知能は、大規模なビデオ操作における CDN ハードディスクの障害をどのように予測するのでしょうか?

現在の大規模なビデオ運用および保守プロセスでは、CDN の故障したハード ドライブの交換が大きな問題...

掃除機はいくらかかりますか?掃除ロボットの原理とハードウェア構成の詳細な説明

時代の発展とともに、掃除ロボットは多くの家庭にとって必需品となりました。掃除ロボットは、ベッドの下を...

人工知能の代表的な応用分野トップ10の一覧と技術原理の図解

[[329146]]この記事では、「アルゴリズム」という単語を非常に簡略化して使用し、単一のアルゴリ...

顔認識アプリケーションの境界はどこにあるのでしょうか?

日常生活における新しい技術の普及により、個人情報の漏洩に対する国民の懸念が生じている。顔認識アプリケ...

...