生成AIストリーム

Stability AI Japanが公開した30億パラメーターの日本語向けLLMを動かしてみた

Stability AI Japanが公開した30億パラメーターの日本語向けLLMを動かしてみた

 「Stable Diffusion」をオープンソース公開したStability AI社から最新の日本語向け大規模言語モデル(LLM)「Japanese Stable LM Gamma 7B」がリリースされました。

Stability AI Japan は日本語向け大規模言語モデル「Japanese Stable LM 3B-4E1T」及び「Japanese Stable LM Gamma 7B」を公開しました。前者は約30億パラメーター、後者は約70億パラメーターのモデルであり、日本語タスクを用いた性能評価において、同等サイズのモデルで最高水準の性能を発揮しています。モデルはすべて商用利用可能な Apache 2.0 ライセンスにて公開しています。

Stability AI Japanのブログより引用

 今回の生成AIストリームでは、これを「Google Colab」で動かしてみます。70億パラメーターの「Japanese Stable LM Gamma 7B」(以下「Gamma7B」)はちょっと難しそうですが、同時にリリースされた30億パラメーターの「Japanese Stable LM 3B-4E1T」(以下「3B-4E1T」)であれば比較的簡単に動きました。しかも、この「3B-4E1T」は日本語言語理解ベンチマーク(JGLUE)のタスク(文章分類、文ペア分類、質問応答、文章要約などの合計8タスク)で、過去に公開された「Japanese Stable LM Base Alpha 7B」を上回る性能があるそうです。

 こちらに「Google Colab」で「3B-4E1T」を実行できる日本語の解説付きノートブックを用意しておきました。

GenAI-Steam/StableLMJ20231026.ipynb at main · aicuai/GenAI-Steam

 このコードを「Google Colab」に張り付け、左上の[▶]ボタンを順に押してコードセルを実行していきます。

 その前にハードウェアアクセラレーターを「3B-4E1T」が実行できるように変更しておきましょう。ハードウェアアクセラレーターは右上の[▼]メニューから[ランタイムのタイプを変更]を選ぶことでGPUへ変更できます。

[▼]メニューの[ランタイムのタイプを変更]
[無料版では「TPU」と「T4 GPU」しか選択できない]

 とはいえ、無料版だと「CPU」以外は「TPU」(機械学習用プロセッサー)と「T4 GPU」しか選択できません。無料版「Google Colab」でも使えるGPU「T4」だと「3B-4E1T」でも無理があるようです。

「T4」では「3B-4E1T」でも無理がある

 有料版の「Google Colab Pro」ならプロ用GPU「A100」が選択でき、運がいいとグラフィックメモリ40GBのVRAMが選択できるようになります。

「Google Colab Pro」だとグラフィックメモリ40GBのプロ用GPU「A100」が選択可能

 ただし、選択できるだけで、実際にはV100が割り当てられることが多く、A100を引き当てるには時間帯の選択と運が必要ではあります。

Google ColabでGPUガチャ勝率を爆上げする

 こちらのコードでは引き当てたVRAMの容量によって再起動をかけるスクリプトを冒頭に追加しておきました。

引き当てたVRAMの容量によってリソースを削除して再起動を促すスクリプト

 気長にどうぞ、というところですが、よく当たる「V100」でもVRAMは16GBあるので、「3B-4E1T」なら動きます。まずは「V100」で「3B-4E1T」を試してみましょう。

 続いて「Hugging Face」のログインです。

 事前にこちらからアカウントを作っておいてください。

[トークンの入力画面]

 「Token:」というメッセージの右にボックスが表示されますので(見つからないときはクリックしてみてください)こちらのURL(「Hugging Face」のトークン)ページで発行したトークンをコピーして貼り付けます。

「Hugging Face」のトークン)ページでトークンをコピー

 「Add token as git credential? (Y/n)」は[Enter]キーで進めます。「Login Successful」と表示されたら次に進みます。

 [model_id]を選択します。ここではまず「3B-4E1T」で試してみましょう。

[model_id]を選択
[リソース]エリアでGPUが「0.0/16.0GB」になっていることを確認

 右側のタブで[リソース]をみて、GPUが「0.0/16.0GB」になっていることを確認します。ここがゼロでないということは、前回の実行結果などが残っている状態なので、再起動します。

 もし、A100がゲットできていれば、「Gamma7B」を試しましょう!

 「3B-4E1T」モデルのダウンロードと読み込みは1~2分ぐらいで終わります。Load Modelが終わった段階でGPUが6.4GB確保されていることがわかります。

「3B-4E1T」モデルのダウンロード
6.4GB確保されている

 ここまで問題がなく実行できた人は「実行しよう!」のコードセルを実行してください。

Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. To turn off, set debug=False in launch().
Running on public URL: https://(hogehoge).gradio.live

というメッセージが表示されたら、「Gradio.live」ドメインのURLをクリックして遊んでみましょう。

 テキスト入力欄に「朝起きたら何しますか?」と入れてみます。

「3B-4E1T」に「朝起きたら何しますか?」と聞いてみた

 [Configs]画面を開いて、[instruction]で指示を与えたり、[max_new_tokens]に1024といった大きな値を与えてみましょう。

[instruction]で回答の指示を与え、[max_new_tokens]に1024を入力して質問

 [top_p]の値を下げると、より正確な回答を返すようになります。逆に1.0に近い値を入れると、多様になります。

[top_p]の値を下げると正確な回答をするようになる

 [repetition_penalty]は同じ話の反復に対するペナルティで、この値を下げると同じ文章を繰り返すようになります。モデルの推奨値を守るべきもので、デフォルトは1.1になっていました。

 なお、このLLMは商用利用可能なライセンス「Apache2.0」になっています(すばらしい)。MicrosoftやOpenAIが倫理的に鍛え上げた「ChatGPT」シリーズと違って比較的ワイルドな語りにも耐えられるかもしれません。

 次回は、より大きな「Japanese Stable LM Gamma 7B」を「llama_cpp」を使ってよりメモリ環境が厳しい条件で、高速な応答を返す実験を解説してみます。

(実験中の著者のnote)