Colossal-AIはHugging Faceコミュニティをシームレスにサポートし、低コストで大規模モデルを簡単に加速します。

Colossal-AIはHugging Faceコミュニティをシームレスにサポートし、低コストで大規模モデルを簡単に加速します。

大規模モデルは AI コミュニティのトレンドとなり、主要なパフォーマンス チャートを席巻するだけでなく、多くの興味深いアプリケーションも生み出しています。たとえば、Microsoft と OpenAI が開発した自動コード提案および補完ツールである Copilot は、プログラマーにとって最高のアシスタントとなり、作業効率を向上させました。

OpenAI は、リアルなテキストから画像を生成できるモデルである DALL-E 2 をリリースしたばかりです。Google も Imagen でこれに続きました。大規模なモデルに関しては、大企業もかなり競争力があり、CV ランキングに劣りません。

テキストから画像への生成例「猫につまずくギリシャ人の像」(左2列がImagen、右2列がDALL·E 2) 拡大モデルがもたらす驚異的なパフォーマンスにより、近年、事前学習済みモデルの規模が爆発的に増加しています。ただし、大規模なモデルのトレーニングや微調整には、数十または数百の GPU など、非常に高いハードウェア コストが必要になります。さらに、PyTorch や TensorFlow などの既存のディープラーニング フレームワークでも、非常に大規模なモデルを効果的に処理することが難しく、通常は専門の AI システム エンジニアが特定のモデルを適応および最適化する必要があります。さらに重要なのは、大規模な GPU クラスターを呼び出していつでも大規模なモデルを使用するための資金がすべての研究室や研究開発チームにあるわけではないことです。ましてや、グラフィック カードを 1 枚しか持っていない個々の開発者にとってはなおさらです。そのため、大型モデルは注目を集めているものの、参入障壁が高く、一般の人には「手の届かない」ものとなっています。

大規模モデルの使用コストが増加する主な理由は、ビデオ メモリの制限です。 GPU コンピューティングは高速ですが、ビデオ メモリの容量が限られているため、大規模なモデルに対応できません。この問題点を解決するために、Colossal-AI は異種メモリシステムを使用して、GPU ビデオメモリと安価な CPU メモリを同時に効率的に使用します。1 つの GPU のみを搭載した個人用 PC で最大 180 億のパラメータ GPT をトレーニングできるため、モデル容量を 10 倍以上に増やすことができ、大規模 AI モデルの微調整や推論などの下流タスクやアプリケーション展開の敷居が大幅に下がり、大規模な配布にも簡単に拡張できます。 Hugging Face は、GPT や OPT などの大規模モデルを含む 50,000 以上の AI モデル実装をディープラーニング コミュニティに提供しており、現在では最も人気のある AI ライブラリの 1 つとなっています。

Colossal-AI は Hugging Face コミュニティ モデルをシームレスにサポートし、すべての開発者が大規模なモデルにアクセスできるようにします。次に、Meta がリリースした大規模モデル OPT を例に、Colossal-AI を使用して、数行のコードを追加するだけで大​​規模モデルの低コストのトレーニングと微調整を実現する方法を説明します。

オープンソースアドレス: https://github.com/hpcaitech/ColossalAI 低コストで高速化された大規模モデル OPTOPT モデルの正式名称は Open Pretrained Transformer で、Meta (Facebook) AI Laboratory がリリースした GPT-3 に匹敵する大規模 Transformer モデルです。 OpenAI によってモデルの重みがまだ公開されていない GPT-3 と比較して、Meta AI はすべてのコードとモデルの重みを惜しみなくオープンソース化し、大規模 AI モデルの民主化を大幅に促進しました。すべての開発者は、それらを基盤として使用して、パーソナライズされた下流タスクを開発できます。次に、Hugging Face が提供する OPT モデルの事前トレーニング済みの重みを使用して、カジュアル言語モデリングを微調整します。構成ファイルを追加する Colossal-AI の強力な機能を使用するために、ユーザーはコード トレーニング ロジックを変更する必要はありません。混合精度、勾配累積、多次元並列トレーニング、冗長メモリ最適化などの必要な機能をモデルに付与するには、シンプルな構成ファイルを追加するだけです。 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"、
オプティマイザー構成 = dict(gpu_margin_mem_ratio=0.8)

構成ファイルの準備ができたら、宣言された新しい機能を開始するために数行のコードを挿入するだけです。まず、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_dataloader、eval_dataloader、lr_scheduler = colossalai.initialize(model=model、
オプティマイザー=オプティマイザー、
基準=基準、
トレインデータローダー=トレインデータローダー、
test_dataloader=eval_dataloader、
lr_scheduler = lr_scheduler)

単一の GPU では利点は明らかです。Microsoft DeepSpeed と比較すると、Colossal-AI の自動戦略の使用は、さまざまなモデル スケールで DeepSpeed の ZeRO Offloading 戦略よりも大きな利点を示し、最大 40% の高速化を実現します。しかし、PyTorch などの従来のディープラーニング フレームワークでは、このような大規模なモデルを単一の GPU で実行できなくなりました。

8 つの GPU を使用した並列トレーニングの場合、Colossal-AI は起動コマンドに -nprocs 8 を追加するだけで済みます。このような大幅な改善の秘密は、Colossal-AI の効率的な異種メモリ管理サブシステム Gemini にあります。簡単に言うと、モデルをトレーニングする際、Gemini は最初の数ステップでウォームアップを実行し、PyTorch 動的計算グラフでメモリ消費情報を収集します。ウォームアップ後、演算子を計算する前に、Gemini は収集されたメモリ使用量記録を使用して、コンピューティング デバイス上で演算子に必要なピーク メモリを予約し、同時に一部のモデル テンソルを GPU ビデオ メモリから CPU メモリに移動します。

Gemini の組み込みメモリ マネージャーは、各テンソルに HOLD、COMPUTE、FREE などのステータス メッセージをマークします。次に、動的にクエリされたメモリ使用量に基づいて、テンソルの状態が継続的に変換され、テンソルの位置が調整されます。DeepSpeed の ZeRO Offload の静的パーティショニングと比較して、Colossal-AI Gemini は GPU ビデオメモリと CPU メモリをより効率的に利用し、モデル容量を最大化し、非常に制限されたハードウェア条件下でトレーニング速度のバランスをとることができます。

大規模モデルの代表であるGPTの場合、RTX 2060 6GBを搭載した一般的なゲーミングノートPCでColossal-AIを使用すると、最大15億のパラメータを持つモデルをトレーニングするのに十分です。RTX3090 24GBを搭載したパソコンでは、180億のパラメータを持つモデルを直接トレーニングできます。Tesla V100などのプロフェッショナルコンピューティングカードの場合、Colossal-AIは大幅な改善も示します。さらに一歩進んで:便利で効率的な並列拡張並列分散技術は、モデルのトレーニングをさらに加速するための重要な手段です。世界最大かつ最先端の AI モデルを最短時間でトレーニングしたい場合、効率的な分散並列拡張が依然として必要です。並列次元の制限、効率の低さ、汎用性の低さ、導入の難しさ、メンテナンスの欠如など、既存のソリューションの問題点に対処するために、Colossal-AI は効率的な多次元並列処理や異種並列処理などのテクノロジーを使用して、ユーザーが最小限の変更のみで大規模な AI モデル トレーニングを効率的かつ迅速に導入できるようにします。たとえば、データ並列処理、パイプライン並列処理、2.5 次元テンソル並列処理などの複雑な並列戦略の場合、それらを自動的に実装するには、単純な宣言だけが必要です。Colossal-AI は、他のシステムやフレームワークのようにコードに侵入して、複雑な基礎ロジックを手動で処理する必要はありません。

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

具体的には、GPT-3 などの超大規模 AI モデルの場合、Colossal-AI は NVIDIA のソリューションと比較して、トレーニングを開始するために必要なコンピューティング リソースが半分しかなく、同じコンピューティング リソースを使用した場合、速度が 11% 向上し、GPT-3 のトレーニング コストを 100 万ドル以上削減できます。 Colossal-AI関連のソリューションは、自動運転、クラウドコンピューティング、小売、医療、チップなどの業界の有名メーカーによって成功裏に適用され、広く賞賛されています。

例えば、タンパク質構造予測アプリケーション AlphaFold2 の場合、Colossal-AI の高速化ソリューションをベースとした FastFold は、Google やコロンビア大学のソリューションを上回ることに成功し、AlphaFold2 のトレーニング時間を 11 日から 67 時間に短縮して総コストを削減し、長い配列の推論では 9.3 ~ 11.6 倍の速度向上も達成しました。

Colossal-AI はオープンソース コミュニティの構築に注力しており、中国語のチュートリアルを提供し、ユーザー コミュニティとフォーラムを開設し、ユーザーからのフィードバックに基づいて効率的なコミュニケーションと反復的な更新を実施し、PaLM や AlphaFold などの最先端のアプリケーションを継続的に追加しています。 Colossal-AIはオープンソースリリース以来、GitHubやPapers With Codeのホットリストで何度も世界1位を獲得し、数万のスターを獲得した数多くのスターオープンソースプロジェクトとともに国内外で注目を集めています!

ポータルプロジェクトアドレス: https://github.com/hpcaitech/ColossalAI​

<<:  機械学習がデータセンター管理をどう変えるか

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

ブログ    

推薦する

AIが建物の快適性に革命を起こす

商業ビルでは、顧客と居住者の快適性がポジティブな体験を保証するために重要です。快適さの重要な要素は、...

機械学習におけるデータ不均衡の問題を解決する方法

[[186778]]近年、機械学習やデータマイニングは非常に人気があり、徐々に世界に実用的な価値をも...

茅面映画の李明輝氏:興行収入予測における機械学習の実用化

[51CTO.comより引用] 近年、わが国の興行収入市場は飛躍的に成長し、2011年には150億ド...

MITとIBMが共同で「コンピュータービジョンの黄金時代に備える」ための新しいデータセットを発表

人工知能の分野における画像分類問題に関して言えば、トレーニングとテストに最もよく使用されるデータセッ...

MITの科学者が数時間でロボットヒトデを作る新システムを設計

水中の海洋生物を研究する場合、動物たちにとって不自然に見えて怖がらせないような装置を使うと役に立つで...

金メダルレベルの数学スキル:DeepMindの幾何学的推論モデルがNatureに掲載され、コードはオープンソースで、フィールズ賞受賞者が賞賛

今回、人工知能アルゴリズムが国際数学オリンピック(IMO)で大きな進歩を遂げました。本日発行された国...

...

人工知能の仮想火災は死体の山を残した

ハリウッドのSF大作では、人工知能は常に、将来の人類の生存を脅かす自己認識機械として定義されています...

一貫性ハッシュアルゴリズムの図

[[380706]]この記事はWeChatパブリックアカウント「Full-Stack Cultiva...

.NET8 究極のパフォーマンス最適化 プリミティブ - DateTime

序文前回の記事では列挙型の最適化について説明しました。今回は時刻形式である DateTime の最適...

1 つの記事で RNN (リカレント ニューラル ネットワーク) の基礎を理解する

[[211628]] 1. ニューラルネットワークの基礎ニューラル ネットワークは、あらゆる関数に適...

sklearn 機械学習の使い方を 5 分で解説します (パート 1)

[[205998]]皆さんのお役に立てれば幸いですので、この投稿を書くのは大変でした。機械学習とデ...

Minecraft でニューラル ネットワークを構築し、操作プロセスを明確に表示する | オープン ソース

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

...

作業の重複をなくしましょう! 30分で独自のディープラーニングマシンを作成する方法を教えます

[[327809]]画像ソース: unsplash繰り返し作業はいつも面倒です。新しいプロジェクトを...