日本語LLMをGPU 4GBの貧弱PCでローカル動作させてみた(サイバーエージェント・rinna・RWKV・LLaMA2・Japanese StableLM Alpha)

この記事の内容

  • GPU メモリ 4GB(NVIDIA GeForce GTX 1650)という貧弱な環境で、日本語特化 LLM をローカル実行できるか検証しました
  • 唐揚げさん(闇のエンジニア)が公開している Docker ベースのリポジトリを活用して手軽に環境構築しています
  • 動作確認対象は CyberAgent LLM・rinna・RWKV・LLaMA2・Japanese StableLM Alpha の 5 種類です
  • Windows 環境(PowerShell)から Linux 向けコマンドを読み替えて実行する方法も紹介しています
  • 結果として大半のモデルは 4GB VRAM では動作せず、CyberAgent の 3B モデルと LLaMA2(CPU 動作)のみ確認できました

検証環境

今回の検証に使用した PC のスペックは以下のとおりです。

項目スペック
CPUIntel Core i5
メモリ16GB
GPUNVIDIA GeForce GTX 1650
GPU メモリ(VRAM)4GB
OSWindows

参考にした唐揚げさんの環境(メモリ 32GB、GPU RTX 3060 12GB)と比べると明らかに貧弱な構成です。それでもローカルで LLM を動かせるかを試しています。


環境構築:Docker を使ったセットアップ

リポジトリのクローン

唐揚げさんが公開している chat-llm リポジトリを利用します。まず任意のディレクトリへ移動し、git clone を実行します。

git clone <リポジトリURL>
cd chat-llm

Windows のコマンドプロンプトではなく PowerShell を使用してください。コマンドプロンプトでは一部コマンドが動作しないことがあります。

Docker イメージのビルド

docker build -t chat-llm .

初回ビルドは時間がかかります。Ubuntu イメージをベースに apt-get で最新化しつつ、Python・pip・必要なモジュール群をインストールする構成になっています。

コンテナの起動(Windows 向け対応)

元の起動コマンドは Linux 向けに $(pwd) でカレントディレクトリを取得する書き方になっています。Windows ではパスの書式が異なるため、PowerShell で文字列置換を行う必要があります。

$path = (pwd).Path -replace '\\', '/' -replace '^([A-Z]):', '/$1'
docker run --gpus all -v "${path}:/root" -it chat-llm

GPU を使わず CPU のみで動かす場合は --gpus all を省きます。

docker run -v "${path}:/root" -it chat-llm

コンテナ起動後はコンテナ内に移動します。

cd /root

各モデルの動作検証

CyberAgent LLM(3B モデル)

python3 chat_clmy.py

初回実行時はモデルのダウンロードが走ります。2 回目以降はキャッシュが利用されます。スクリプトの中身は while True でループしながらテキスト入力を受け取り、トークナイザーで変換して model.generate() で出力を生成するシンプルな構成です。

起動後、以下のような入力を与えてみました。

GPU メモリ使用量が 3.8GB 程度まで上昇しましたが、4GB VRAM でも動作を確認できました。出力は文章の「続き」を生成するタイプのモデルです。応答速度は遅めですが、文章として成立したテキストが生成されました。

結果:動作確認 ✅


rinna LLM

python3 chat_rinna.py

実行直後にプロセスがキルされ、動作しませんでした。CPU モードに切り替えて再度試みましたが、結果は同様です。

結果:動作せず ❌


RWKV

あらかじめモデルファイルをダウンロードしてスクリプト内のモデルパスを書き換える方式です。3B の小さいモデルを選択してダウンロードしました。

# モデルファイルをダウンロード後、/root に配置
# スクリプト内のモデルパスを書き換えてから実行
python3 chat_rwkv.py

ロード中にメモリ使用量が急増し、4GB VRAM では収まらずに動作停止しました。

結果:動作せず ❌


LLaMA2

モデルファイルを事前にダウンロードして配置します(約 7.16GB)。スクリプト側のモデルパスはデフォルト設定のままで対応できました。

python3 chat_llama2.py

GPU メモリは増加せず、CPU 使用率が 100% に張り付く動作となりました。これは llama.cpp ベースの実装であり、CPU で動作するタイプです。実際に質問を投げると回答は返ってきましたが、GPU は使っていない状態です。

「私は現在 GPU を使って動いています」とモデル自身は答えましたが、実態は CPU 動作です。

応答速度は遅いものの、一定の精度で日本語・英語ともに返答してくれました。

結果:CPU モードで動作確認 ✅(GPU は未使用)


Japanese StableLM Alpha

HuggingFace CLI 経由でモデルを取得する方式のため、事前に以下の手順が必要です。

  1. HuggingFace のアカウントでライセンスに同意する
  2. アクセストークンを取得する
  3. コンテナ内で huggingface-cli login を実行してトークンを入力する
huggingface-cli login
python3 chat_stablelm.py

ログイン自体は成功しましたが、スクリプト実行時にエラーが発生し動作しませんでした。元モデルが 7B パラメーター規模のため、4GB VRAM には収まらなかったと考えられます。

結果:動作せず ❌


動作結果まとめ

モデル動作結果備考
CyberAgent LLM(3B)✅ 動作GPU 使用、応答遅め
rinna LLM❌ 動作せずキルされる
RWKV(3B)❌ 動作せずVRAM 不足
LLaMA2✅ 動作(CPU)GPU は未使用、llama.cpp 経由
Japanese StableLM Alpha❌ 動作せずVRAM 不足

まとめ

GPU メモリ 4GB という環境では、日本語特化 LLM のほとんどが動作しませんでした。動作が確認できたのは CyberAgent の 3B モデル(GPU 動作)と LLaMA2(CPU 動作)の 2 つのみです。

一方で、GPU に余裕がある環境(RTX 3060 12GB など)であれば、今回紹介した Docker ベースのリポジトリを使うことで API 費用不要でローカル LLM を手軽に動かせます。電気代はかかりますが、日本語特化モデルを気軽に試す環境として非常に便利です。

今後はモデルの量子化や設定のチューニングにより、低スペック環境でも動作するケースが増えることが期待されます。4GB VRAM の環境であっても、継続的に試してみる価値はあるでしょう。