こんにちは!YaroTechです。
昨日の予告編で紹介した、GPT-4o超えの国産LLM「LLM-jp-4」。今日はいよいよメインPC(RTX 3050 / RAM 128GB)で実際に動かしてみました!
……のですが、最初のGGUF変換でいきなり壁にぶつかり、Plan Bに切り替え、最終的にはパラメータ数4倍の32Bモデルが8Bモデルの6.5倍速く動く という逆転劇が待っていました。
今日は「挑戦→失敗→発見」のリアルな検証記録をお届けします。
※見出し画像のプロンプトは一番下におまけで公開中!
🖥️ 実行環境 項目 内容 検証PC メインPC(デスクトップ) CPU Intel Core i9-12900T(16コア24スレッド) RAM 128GB GPU NVIDIA GeForce RTX 3050(8GB VRAM) CUDA 13.1 OS Windows 11 Pro Python 3.12.10 推論エンジン Transformers / llama.cpp (b8683) 担当AI クロ助(Claude Desktop) \begin{array}{|l|l|} \hline
\text{項目} & \text{内容} \\ \hline
\text{検証PC} & \text{メインPC(デスクトップ)} \\ \hline
\text{CPU} & \text{Intel Core i9-12900T(16コア24スレッド)} \\ \hline
\text{RAM} & \text{128GB} \\ \hline
\text{GPU} & \text{NVIDIA GeForce RTX 3050(8GB VRAM)} \\ \hline
\text{CUDA} & \text{13.1} \\ \hline
\text{OS} & \text{Windows 11 Pro} \\ \hline
\text{Python} & \text{3.12.10} \\ \hline
\text{推論エンジン} & \text{Transformers / llama.cpp (b8683)} \\ \hline
\text{担当AI} & \text{クロ助(Claude Desktop)} \\ \hline
\end{array} 項目 検証 PC CPU RAM GPU CUDA OS Python 推論エンジン 担当 AI 内容 メイン PC (デスクトップ) Intel Core i9-12900T ( 16 コア 24 スレッド) 128GB NVIDIA GeForce RTX 3050 ( 8GB VRAM ) 13.1 Windows 11 Pro 3.12.10 Transformers / llama.cpp (b8683) クロ助( Claude Desktop )
🎯 この記事で得られること LLM-jp-4をGGUF変換しようとしたら何が起きるか(失敗のリアル)
8Bモデルと32B-A3B(MoE)の実測速度と品質
「パラメータ数4倍なのに6.5倍速い」逆転現象の理由
ラズパイのモデルとの比較で見える国産LLMの実力
thinkingモデルの思考過程の面白さ
💥 Step 1:Plan A — GGUF変換に挑戦→撃沈! 予告編で紹介した「自力GGUF変換」から始めました。D:\AIToolsにllama.cppのビルド済みバイナリ(CUDA 13版)とソースコードを準備し、HuggingFaceからLLM-jp-4 8B-thinkingモデル(約17GB)をダウンロード。
いざ変換!
python convert_hf_to_gguf.py D:\AITools\models\llm-jp-4-8b-thinking --outtype bf16結果:エラー。
NotImplementedError: BPE pre-tokenizer was not recognized
- update get_vocab_base_pre()エラーの箇所 LLM-jp-4は独自のUnigramバイトフォールバック型トークナイザー を使っており、llama.cppの変換スクリプトがまだ対応していないのです。
これは「モデルが悪い」のではなく「ツールが追いついていない」だけ。公開からわずか4日なので、llama.cpp側の対応は時間の問題でしょう。
🐢 Step 2:Plan B — Transformersで8Bを直接実行 GGUF変換がダメなら、HuggingFace公式のTransformersライブラリで直接動かします。RAM 128GBあるので、bf16(16bit)のまま丸ごとメモリに載せられるのがメインPCの強みです。
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="cpu",
trust_remote_code=True,
)モデル読み込み:0.4秒。メモリ使用量:28GB/128GB(22%)。
ラズパイシリーズと同じ3問テストを実行しました。
問 プロンプト 時間 速度 品質 1 AIの歴史を200字で説明 144秒 1.8 tok/s ✅ 正確な年表(1943→2020年代) 2 PythonでFizzBuzz 145秒 1.8 tok/s ✅ docstring付き正しいコード 3 りんご3個みかん5個を2人で 146秒 1.8 tok/s ✅ 8÷2=4個ずつ+配分例 \begin{array}{|l|l|l|l|l|} \hline
\text{問} & \text{プロンプト} & \text{時間} & \text{速度} & \text{品質} \\ \hline
\text{1} & \text{AIの歴史を200字で説明} & \text{144秒} & \text{1.8 tok/s} & \text{✅ 正確な年表(1943→2020年代)} \\ \hline
\text{2} & \text{PythonでFizzBuzz} & \text{145秒} & \text{1.8 tok/s} & \text{✅ docstring付き正しいコード} \\ \hline
\text{3} & \text{りんご3個みかん5個を2人で} & \text{146秒} & \text{1.8 tok/s} & \text{✅ 8÷2=4個ずつ+配分例} \\ \hline
\end{array} 問 1 2 3 プロンプト AI の歴史を 200 字で説明 Python で FizzBuzz りんご 3 個みかん 5 個を 2 人で 時間 144 秒 145 秒 146 秒 速度 1.8 tok/s 1.8 tok/s 1.8 tok/s 品質 ✅ 正確な年表( 1943→2020 年代) ✅ docstring 付き正しいコード ✅ 8÷2=4 個ずつ+配分例
CPU使用率96-98%(全コアフル稼働)、GPU使用率7-12%(ほぼ不使用)。
CPU使用率がフルフル稼働です! 回答品質は文句なし。 ラズパイのllama3.2:1bが「ポテンフェuter」「ラブリー(リトルライフル)」といったハルシネーションだらけだったのに対して、LLM-jp-4 8Bは正確で構造的な回答を返してきます。
問1回答 問2回答 問3の回答 ただし速度が1.8 tok/s 。1問あたり約2.5分かかるのは実用的とは言いがたい。これはCPU推論のため仕方ありません。
🔍 面白い発見:thinkingモデルの思考過程 LLM-jp-4 8B-thinkingは名前の通り「思考するモデル」です。回答の前に `analysis...` として英語で思考してから日本語で回答する という興味深い動作をします。
例えば問3「りんご3個みかん5個を2人で均等に分けるには?」では:
analysis: The user asks in Japanese: "There are 3 apples and 5 oranges. How to divide equally between two people?" Since total items = 8, each gets 4. But types differ...
日本語の質問を英語に翻訳して思考し、配分パターンを検討してから、最終的に日本語で回答を出力しています。
🚀 Step 3:32B-A3B — GGUF版で逆転劇! ここで朗報。32B-A3Bの方はmmngaさんがGGUF版を公開済み でした!
huggingface-cli download mmnga-o/llm-jp-4-32b-a3b-thinking-gguf
--include "llm-jp-4-32b-a3b-thinking-Q4_K_M.gguf"21.4GBのQ4_K_M量子化版をダウンロードし、llama.cppのllama-serverで起動。ブラウザから日本語でチャットできます。
llama-server.exe -m llm-jp-4-32b-a3b-thinking-Q4_K_M.gguf
-c 4096 --gpu-layers 10 --host 127.0.0.1 --port 8080結果は衝撃的でした。
問 プロンプト 時間 トークン 速度 品質 1 AIの歴史を200字で 2分4秒 1427 11.44 tok/s ✅ 正確+文字数カウント 2 PythonでFizzBuzz 44秒 570 12.71 tok/s ✅ コード+説明表+応用例 3 りんご3個みかん5個 46秒 542 11.57 tok/s ✅ 表形式配分+代替案 \begin{array}{|l|l|l|l|l|l|} \hline
\text{問} & \text{プロンプト} & \text{時間} & \text{トークン} & \text{速度} & \text{品質} \\ \hline
\text{1} & \text{AIの歴史を200字で} & \text{2分4秒} & \text{1427} & \text{11.44 tok/s} & \text{✅ 正確+文字数カウント} \\ \hline
\text{2} & \text{PythonでFizzBuzz} & \text{44秒} & \text{570} & \text{12.71 tok/s} & \text{✅ コード+説明表+応用例} \\ \hline
\text{3} & \text{りんご3個みかん5個} & \text{46秒} & \text{542} & \text{11.57 tok/s} & \text{✅ 表形式配分+代替案} \\ \hline
\end{array} 問 1 2 3 プロンプト AI の歴史を 200 字で Python で FizzBuzz りんご 3 個みかん 5 個 時間 2 分 4 秒 44 秒 46 秒 トークン 1427 570 542 速度 11.44 tok/s 12.71 tok/s 11.57 tok/s 品質 ✅ 正確+文字数カウント ✅ コード+説明表+応用例 ✅ 表形式配分+代替案
8Bの約6.5倍速い! しかも品質も上。
問1の回答 問2の回答1 問2の回答2 問3の回答 CPUも60%弱の処理で適度な感じでした 🤔 なぜ32Bが8Bより速いのか? 一見矛盾していますが、理由は明確です。
① 推論エンジンの違い
8B 32B-A3B エンジン Transformers (Python) llama.cpp (C++) 形式 safetensors (bf16) GGUF (Q4_K_M) GPU活用 ほぼなし(7%) 一部レイヤーをGPU(gpu-layers 10) \begin{array}{|l|l|l|} \hline
\text{} & \text{8B} & \text{32B-A3B} \\ \hline
\text{エンジン} & \text{Transformers (Python)} & \text{llama.cpp (C++)} \\ \hline
\text{形式} & \text{safetensors (bf16)} & \text{GGUF (Q4_K_M)} \\ \hline
\text{GPU活用} & \text{ほぼなし(7%)} & \text{一部レイヤーをGPU(gpu-layers 10)} \\ \hline
\end{array} エンジン 形式 GPU 活用 8B Transformers (Python) safetensors (bf16) ほぼなし( 7 %) 32B-A3B llama.cpp (C++) GGUF (Q4 _ K _ M) 一部レイヤーを GPU ( gpu-layers 10 )
Transformersは汎用性が高い反面、推論速度の最適化ではllama.cppに大きく劣ります。llama.cppはC++で書かれた推論特化エンジンで、量子化モデルの高速処理に最適化されています。
② MoE(Mixture of Experts)の威力
32B-A3Bは総パラメータ320億ですが、推論時にアクティブなのは約38億(3.8B)だけ。128個の「専門家」のうち最適な8個だけが動くので、320億の知識量を持ちながら38億の計算コストで済む のです。
③ 量子化の恩恵
Q4_K_M量子化により、モデルサイズが64GB→21.4GBに圧縮。メモリに載りやすく、データ転送も速くなります。
📊 全モデル比較(同一3問テスト) モデル PC エンジン 速度 日本語 コード 推論 LLM-jp-4 32B-A3B メインPC llama.cpp GGUF 11.4 tok/s ✅✅ ✅✅ ✅✅ LLM-jp-4 8B メインPC Transformers bf16 1.8 tok/s ✅ ✅ ✅ llama3.2:1b ラズパイ Ollama 0.5 tok/s △ ✅ △ tinyllama ラズパイ Ollama 0.3 tok/s ✕ ✕ ✕ qwen2:0.5b ラズパイ Ollama 0.5 tok/s △ △ ✕ \begin{array}{|l|l|l|l|l|l|l|} \hline
\text{モデル} & \text{PC} & \text{エンジン} & \text{速度} & \text{日本語} & \text{コード} & \text{推論} \\ \hline
\text{LLM-jp-4 32B-A3B} & \text{メインPC} & \text{llama.cpp GGUF} & \text{11.4 tok/s} & \text{✅✅} & \text{✅✅} & \text{✅✅} \\ \hline
\text{LLM-jp-4 8B} & \text{メインPC} & \text{Transformers bf16} & \text{1.8 tok/s} & \text{✅} & \text{✅} & \text{✅} \\ \hline
\text{llama3.2:1b} & \text{ラズパイ} & \text{Ollama} & \text{~0.5 tok/s} & \text{△} & \text{✅} & \text{△} \\ \hline
\text{tinyllama} & \text{ラズパイ} & \text{Ollama} & \text{~0.3 tok/s} & \text{✕} & \text{✕} & \text{✕} \\ \hline
\text{qwen2:0.5b} & \text{ラズパイ} & \text{Ollama} & \text{~0.5 tok/s} & \text{△} & \text{△} & \text{✕} \\ \hline
\end{array} モデル LLM-jp-4 32B-A3B LLM-jp-4 8B llama3.2:1b tinyllama qwen2:0.5b PC メイン PC メイン PC ラズパイ ラズパイ ラズパイ エンジン llama.cpp GGUF Transformers bf16 Ollama Ollama Ollama 速度 11.4 tok/s 1.8 tok/s 0.5 tok/s 0.3 tok/s 0.5 tok/s 日本語 ✅✅ ✅ △ ✕ △ コード ✅✅ ✅ ✅ ✕ △ 推論 ✅✅ ✅ △ ✕ ✕
ラズパイとの差は歴然。国産LLMがこのレベルに到達していることに感動します。
🔗 関連記事 📝 まとめ GGUF自力変換はトークナイザー非対応で失敗(llama.cpp側の対応待ち)
8B Transformers CPU推論は品質◎だが1.8 tok/sで遅い
32B-A3B GGUF版(mmnga氏)+ llama.cppで11.4 tok/s を達成
パラメータ数4倍の32Bが8Bの6.5倍速いという逆転現象
国産LLMの日本語品質はラズパイで試した海外モデルとは次元が違う
🚀 次回予告 llama.cppのサーバーUIにはMCPサーバー接続機能もあることが判明しました。次回はこの32B-A3Bモデルを活用した応用検証か、Ollama対応が来たときの再チャレンジをお届けする予定です。お楽しみに!
🎨 おまけ:見出し画像作成プロンプト 今日の見出し画像のベースはジミー(Gemini)に下記プロンプトで作成。
柔らかな照明で撮影された超現実的でプロフェッショナルな写真を作成してください。
下記条件のnote見出し画像をサイズは横長で作成してください。サイズは必ず横長で作成してください。
テーマ:国産LLM「LLM-jp-4」検証編 — GGUF変換失敗→逆転劇
雰囲気:テクノロジーの挑戦と発見、ドラマチック
要素:
- 左側にエラーメッセージ風の赤い警告表示(GGUF変換失敗)
- 中央に大きな矢印で「→」転換を表現
- 右側にllama.cppのチャットUI画面(成功・緑色)
- 背景は濃紺→赤→緑のグラデーション(失敗→成功の転換)
- 「32B > 8B !?」のテキストを目立つように配置
- 速度数値「1.8 → 11.4 tok/s」を対比表示Step 7 : 下部中央寄りに「YaroTech」のロゴを12ptで控えめに配置Step 8 : 全体のバランスを確認して完成
#国産LLM #LLMjp4 #ローカルLLM #llamacpp #GGUF #Transformers #MoE #NII #オープンソース #YaroTech