GPT-4の90%の性能を謳う「Vicuna」をローカルCPUで動かしてみた

この記事の内容

  • オープンソースの大規模言語モデル「Vicuna」はGPT-4比92%の性能を謳うローカル動作モデルです
  • WSL2上にセットアップし、CPUオンリー環境での動作を検証しました
  • 動作には60GB以上のメモリが必要で、モデルのロードに約4分かかります
  • 日本語での会話は一部成功しましたが、事実確認系の質問では誤った回答が返ってきました
  • CPUのみの環境では実用的な速度での利用は難しく、GPU環境が推奨されます

Vicunaとは

Vicunaは、ローカル環境で動作するオープンソースのチャットボットです。GPT-4やGoogle Bardといった商用モデルと比較したベンチマークでも約92%のスコアを達成すると報告されており、ローカルで動くモデルとしては非常に高い性能を誇ります。


動作環境の要件

Vicunaのモデルサイズにはいくつかバリエーションがあります。

モデル必要メモリ(CPU)必要VRAMの目安(GPU)
13B約60GB約28GB
7B約30GB-

今回の検証ではWSL2を使用し、CPUオンリーで動作させます。まずWSLに十分なメモリを割り当てる設定が必要です。


WSL2のメモリ割り当て設定

Windowsのユーザープロファイルディレクトリに .wslconfig ファイルを作成し、以下の内容を記述します。

[wsl2]
memory=100GB
swap=20GB

メモリの割り当てを増やしておかないと、Stable Diffusionなど大きなモデルを動かす際にWSLが落ちてしまうことがあります。今回は安全を見て100GBに設定しました。


WSLのインストール

WSLがまだインストールされていない場合は以下のコマンドでインストールします。

wsl --install

インストール後はユーザー名とパスワードを設定してください。


依存パッケージのインストール

WSL(Ubuntu)を起動し、まずパッケージを更新します。

sudo apt update && sudo apt upgrade -y

次にPythonとpipをインストールします。

sudo apt install python3-pip -y

続いて、HuggingFaceの transformers ライブラリの最新版(メインブランチ)をインストールします。

pip install git+https://github.com/huggingface/transformers.git

モデルの入手

Vicunaのウェイト(モデルファイル)は、MetaのオリジナルLLaMAウェイトとの差分として提供されています。そのため、まずオリジナルのLLaMAウェイトを入手する必要があります。

LLaMAのウェイトはMetaの申請フォームから取得します。フォームには以下の情報を記入します。

  • メールアドレス
  • 氏名
  • 所属組織(任意)
  • 利用目的

ライセンス条項に同意してフォームを送信し、審査を通過するとダウンロードリンクが発行されます。個人利用の場合はやや手間がかかりますが、正規の手順です。

オリジナルウェイトを入手した後、Vicunaのリポジトリに記載されている手順に従ってウェイトを変換・適用します。


Vicunaの起動(CPUモード)

モデルの準備が整ったら、以下のコマンドで起動します。CPUのみで動作させる場合は --device cpu オプションを指定します。

python3 -m fastchat.serve.cli \
  --model-name /path/to/your/model \
  --device cpu

/path/to/your/model の部分は実際のモデルが配置されているディレクトリのパスに置き換えてください。


動作検証の結果

起動時間とメモリ消費

今回の検証環境(Lenovo SE350、CPU搭載・GPU非搭載、実効メモリ192GB)では、モデルのロードに約4分かかりました。起動後のメモリ使用量は約56〜60GBに達しました。

英語での応答

英語で “What can you do?” と質問したところ、以下のような返答が返ってきました。

I don’t have physical abilities or actions… but I can provide information, answer questions, and handle various tasks.

物理的なことはできないが、情報提供や質問への回答は可能と答えており、基本的な応答能力は確認できました。

日本語での応答

“Do you speak Japanese?” と質問すると、以下のように返答しました。

Yes, I can speak Japanese. How can I help you?

日本語対応は可能と回答したため、実際に日本語で会話を試みました。「こんにちは」と入力すると「こんにちは。何かお手伝いできることがありますか?」と正しく日本語で返答しました。

事実確認の精度

「日本で一番高い山は何という山でしょうか?」と質問したところ、「富士山」ではなく、実在しない山名が返ってきました。いわゆる「ハルシネーション(事実捏造)」が発生しており、事実に関する正確な回答は期待できないことがわかりました。

応答速度

日本語での質問に回答が返ってくるまで5分以上かかることもあり、実用的な速度とは言えませんでした。CPUのコア使用率は全コアの約半分程度で、さらに使用率を上げられる可能性はありますが、設定の最適化は課題として残ります。


まとめ

Vicunaは「GPT-4比92%の性能」を謳うローカル動作の大規模言語モデルであり、日本語での基本的な会話は可能です。しかし今回の検証から、以下の点が明らかになりました。

  • メモリ要件が高い:60GB以上のメモリが必要で、一般的な環境では動作しません
  • CPU環境では遅すぎる:1つの応答に数分かかるため実用性は低いです
  • 日本語は部分的に対応:挨拶や簡単な会話は日本語で返答できますが、事実確認では誤った情報が返ることがあります
  • GPU環境が推奨:十分なVRAMを搭載した高性能GPUを使えば快適に動作すると考えられます

ローカルでこれほど大規模なモデルが動くこと自体は非常に興味深い技術的進歩です。GPU環境が整っている場合は、ぜひ試してみる価値があるでしょう。