実際のニューラル ネットワーク YaLM 100B。

Программирование

6月末、Yandex
はYaLM 100Bと呼ばれる1000億個のパラメータを持つニューラルネットワークを公開しましたこれは、パブリック ドメインで最大の GPT に似たニューラル ネットワークです。彼らがどのように教え、最良の例を示し、ニューロンが何ができるかについて語っています。しかし、それは実際にうまく機能し、自宅で適用できますか? この記事ではこれについて言及していません。さらに、約 200 Gb の GPU RAM が必要なため、実行して確認するのはそれほど簡単ではありません。Habré に関する
このコメントは、状況を最も正確に示してい
ます。

伝えられるところによると、Yandex では、すべてそのような賢い人々がいて、通常のハウツーを投稿することすらありませんでした。大規模なモデル用の API はありません。一般の人々向けの既製の簡素化された中規模または小規模のモデルはありません (Google Colab 内)。モデルの設定方法、テキストの生成方法の例はありません。記事がオタク向けのいくつかのニュアンスを示しているだけで、それだけです。銀行が文字「C」でどのようにそれを行ったかを詳しく見て、同じことを行うだけで十分です。このモデルは失敗した実験の 1 つにすぎず、ゴミ箱に捨てるのは残念だという印象を受けました。そのため、Yandex が作成する優れたモデルを示すためにオープン ソースに投稿され、さらにオープン ソースです!

yalm を実行する方法やオンラインで試す方法について、インターネット上で多くの質問がありますが、これに対する答えはありません。私はこれらの質問をしたユーザーの中にいました。そして、それを理解することに着手します。金融ロボット用のテキストを生成する方法が本当に必要だったからです。値を予測するだけでなく、財務報告に基づいてテキストでコメントすることもできます。本質的には、人工知能を使用するだけで、金融アナリストが行うことと同じになります。yalm を実行するには 2 つの方法があります。
クラウドでサーバーを借りる200 Gb 以上の GPU RAM を使用するか、コードをファイナライズしてディープスピード ゼロ オフロードを使用して実行します (GPU がニューラル ネットワークの一部を順次処理し、残りが CPU RAM または NVMe に保存される場合)。最初のものは非常に高価で、1 時間あたり約 2500 ルーブル、または 1 か月あたり約 170 万です。2番目は不明です。リポジトリ内のコードは提供されず
、リポジトリの問題に関するヒントのみが提供されます。これは難しくありません。簡単に始めましょう。

YaLM 100B の起動手順

1. 200 GB GPU RAM をレンタルします。たとえば、こちら.

実際のニューラル ネットワーク YaLM 100B。

少なくとも 200 GB の総ビデオ メモリが必要です。8×40 = 320 GB。合うのはこれだけ。200未満は無理、それ以上は可能。矢印は CPU RAM を示していますが、ここでは見ていません。彼女は誰にでもなれる。

約 300 GB のディスクを示しているので、予備の、できれば高速なディスクが必要です。数十ギガバイトのデータが転送されます。

実際のニューラル ネットワーク YaLM 100B。 ソースで作成する場合は、Ubuntu ML (機械学習) を選択します。これは、ビデオ カードが構成され、追加で何もインストールする必要がないために必須です。

サーバーがアクティブ化されたら (5 ~ 10 分かかる場合があります)、ssh 経由でサーバーに接続するか、サーバー ページの Web コンソールで直接接続し、コマンドを実行します。

nvidia-smi

結果は、ビデオ カード、ドライバーのバージョン、および cuda を含む表になります。おおよそこんな感じ。
実際のニューラル ネットワーク YaLM 100B。 ドライバーのバージョン ヘッダーとその場所。左側はデバイス番号、中央はデバイスメモリのサイズです。この情報がない場合は、間違ったソースからサーバーを収集しています。上記のように、Ubuntu ML (Machine Learnong) が必要です。

2. YaLM でリポジトリのクローンを作成します

sudo git clone https://github.com/yandex/YaLM-100B/ yalm
cd yalm

ホーム フォルダーにクローンを作成して、後で docker 構成を編集する必要がないようにします。別の場所に複製された場合は、
ここに移動して、複製された場所へのパスを追加します。

3. チェックポイントのダウンロード(基本モデルトレーニング情報)

sudo chmod +x ./download/download.sh
sudo bash ./download/download.sh

これには約1時間かかります。時間を無駄にしないために、新しい ssh 接続を作成し、並行して Docker コンテナーの構築を開始します。

4. nvidiaのインストール- docker 2

通常の docker は適していません
。nvidia-docker2が必要です。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

5. YaLM のコンテナを構築する

cd yalm
sudo chmod +x ./docker/*
sudo bash ./docker/build.sh

こちらも1時間ほど。

ライフハック。チェックポイントをダウンロードし、docker をインストールして、ビデオ カード 1 枚の安価なサーバーにコンテナーを構築できます。時間的には同じなので、少し節約できます。安価なサーバーで組み立てた後、それを削除し、安価なサーバーのディスクを使用して戦闘サーバーを作成します。そうすれば、組み立てを待ったり、チェックポイントを汲み出したりするのに時間を費やすことはありません。

6. コンテンツの準備

6.1 チェックポイント

チェックポイントのダウンロードが完了したら、それらを構成に組み込む必要があります。パラメータを修正するか、チェックポイントを転送するかの 2 つの方法があります。チェックポイントがそれぞれプロジェクトのメインディレクトリにあることが予想される場合はどこでも、ダウンロードされるものは上記のダウンロードフォルダーから転送する必要があります。yalm フォルダーにいることを実行します

mv ./download/yalm100b_checkpoint ./

または、サンプル ファイル内のファイルへのパスを変更します
https://github.com/yandex/YaLM-100B/blob/c91b7d7fe8dbf39c9e307d6d324446d0df136a23/examples/generate_interactive.sh#L8-L9

6.2 ビデオカード

ビデオ カードが正しく設定されていることを確認します。ビデオ カードが 8 枚ある場合は、何も変更する必要はありません。番号が異なる場合は、これらの行を変更
実際のニューラル ネットワーク YaLM 100B。 します。2 行目は、使用されているデバイスの番号です (既に起動した nvidia-smi で確認できます)。4番目に、それらの数。

7. Docker コンテナーを実行する

yalm フォルダーにいるので、コマンドを実行します。

sudo bash ./docker/run.sh

すべて問題なければ、ホーム ディレクトリの yalm フォルダーに移動する必要があるコンテナーが表示されます。

cd ~/yalm

8. YaLM 100B から例を実行します。

サンプルの 1 つを起動する準備が整いました。ここで説明
します。

chmod +x ./examples/generate_interactive.sh
./examples/generate_interactive.sh

GPT2 モデルが作成され、チェックポイントからの重みが読み込まれるまで、さらに 10 ~ 15 分待ちます。
実際のニューラル ネットワーク YaLM 100B。

ビルドが完了すると、MegatronML はコンテキストを入力してテキストを生成するように求めます。入力するときは注意してください。特定の状況下では、エラーが発生し、プログラムがクラッシュし、アセンブリを再度開始する必要があります。したがって、ファイルからテキストを取得する例を使用することをお勧めします。

9. 作業結果

実際のニューラル ネットワーク YaLM 100B。
実際のニューラル ネットワーク YaLM 100B。 面白そう。もちろん、これらは良い例にすぎません。さまざまなサンプルでテストを実行しました。予想通り、文脈が良ければ良いほど、より意味のあるテキストが生成されます。実験的な世代の完全なセットは、リンクで表示できます。

価格については、トレーニングから準備から生成まで、さまざまな容量のサーバーをレンタルするのに約9,000ルーブルかかりました。特にがっかりしたのは、すべてを即座に生成できないことです。開始までに非常に長い時間がかかり、1 時間あたりのサーバーのコストを考えると、テキストは思ったほど速く生成されません。
実際のニューラル ネットワーク YaLM 100B。  

200Gb GPU RAM なしで YaLM を実行するには?

構成に deepspeed zero offload を追加する必要があります。私たちが話していることを知っている人にとっては、それを行うのは非常に簡単です。他の人にとって、これは簡単な作業ではありません。オフロードは CPU RAM または NVMe のいずれかにある可能性があることを知っておくことが重要です。現時点では NVMe のことは忘れて構いません。非常に大量のデータが処理されており、ディスクが処理できません。ゼロ オフロード CPU はより現実的です。確かに、これには 200 Gb 以上の CPU RAM の在庫が必要ですが、これも安くはありません。2 つのビデオ カードで並列化することはまだできないため、1 つのテキストは約 20 ~ 40 分生成されます。下のスクリーンショットでわかるように、生成に関与したビデオ カードは 1 枚だけで、メモリの 4 分の 1 しか使用されていませんでした。24 GB がすべて使用されていない理由は不明ですが、
実際のニューラル ネットワーク YaLM 100B。 結論から言うと、RTX 3070 TI 1台でも動作可能です。しかし、これには特に意味はありません。NVMe では、スワップ内の 150 GB のデータをすばやく処理することはできません。これは、96 GB の RAM の付属物にあります。
実際のニューラル ネットワーク YaLM 100B。

まとめ

もちろん、最適な起動パスを見つけようとします。しかし、これまでのところ、YaLM 100b は私のタスクには高すぎる/遅すぎるという結論に達しました。同じお金で、人々はより多く、より良いものを書くでしょう。でもそれは一時的なものだと思います。yalm の起動、セットアップについてサポートが必要な場合、またはコンテキストの例で結果を確認したい場合は、メールまたは電報に書いてください。

pskucherov
Rate author

  1. Olha

    Статья на Мега актуальную тему! Спасибо.

    返信
  2. Данила

    Крутая статья! Спасибо автору!

    返信
  3. Дмитрий

    СПАСИБО !!!
    три дня эту информацию искал
    нет подобного о RuGPT3 и Порфириче?

    返信