1-bit BonsaiでローカルLLM環境を構築!Cloudflare Tunnelで外部アクセス&TypingMind連携までやってみた

「ローカルLLMを動かしたいけど、GPUないし無理かなー。まじメモリ高すぎ」

ずっとそう思っていました。しかし、最近登場した1-bit Bonsai 8Bというモデルに出会って、状況が変わりました。24GB RAMのミニPC NiPoGi E3B(もちろんGPUなし)で、驚くほど快適にローカルLLMが動いたのです。

しかも、私がすでに使っているCloudflare Tunnelと組み合わせることで、外出先のスマホからも自宅ミニPCのLLMにアクセスできる環境が整いました。さらにTypingMindと統合すれば、ChatGPTライクなインターフェースでローカルLLMが使えます。

今回は、私が実際に試行錯誤した「1-bit Bonsaiのローカル環境構築〜Cloudflare Tunnel経由の外部アクセス〜TypingMind連携」までの一連の手順を紹介します。

1.なぜ1-bit Bonsaiなのか

ローカルLLMの選択肢はたくさんありますが、私がBonsaiを選んだ理由はシンプルです。

たった1.15GBで動く。

8Bパラメータのモデルにおいてもその他のモデルと遜色ない性能を維持しつつ、メモリ使用量が14分の1。さらに8倍高速、5倍省エネ。つまり、GPUがなくても現実的に動かせるんです。


2.私のPC環境

私がセールで購入したミニPCです。ちょっとでもメモリ多いほうが良いかなと、NiPoGiのミニpc E3Bを選びました。

項目スペック
CPUAMD Ryzen 7 7735HS (8C/16T)
GPURadeon 680M(統合GPU、VRAMなし)
RAM24GB
SSD512GB
OSWindows 11 Pro

GPUがないので、もちろんCPUで動かします。


3.セットアップ手順

3-1. Gitのインストール

まず、Gitがインストールされていない必要があります。

https://git-scm.com/download/win からダウンロードしてインストール。

インストール後、PowerShellを再起動して

powershell

git --version が表示されるか確認。

3-2. リポジトリのクローン

powershell
git clone https://github.com/PrismML-Eng/Bonsai-demo.git
cd Bonsai-demo

3-3. セットアップスクリプトの実行

Windowsの場合は PowerShell(setup.ps1)を使います。setup.shはUnix系なので動きません。

powershell
.\setup.ps1

セットアップスクリプトは以下を自動で行います:

  • Python環境のセットアップ
  • HuggingFaceからモデルのダウンロード
  • llama.cppバイナリのダウンロード(or ビルド)

3-4. CPU版バイナリのダウンロード

CPU版のllamaを直接ダウンロードしました。

powershell
Invoke-WebRequest -Uri "https://github.com/PrismML-Eng/llama.cpp/releases/download/prism-b8846-d104cf1/llama-bin-win-cpu-x64.zip" -OutFile "cpu.zip"
Expand-Archive -Path "cpu.zip" -DestinationPath "bin\cpu" -Force

4.サーバーの起動

4-1. 最適化された起動コマンド

試行錯誤の末、私の環境に最適化された起動コマンドがこれです。

powershell
.\bin\cpu\llama-server.exe -m models\gguf\8B\Bonsai-8B-Q1_0.gguf --host 0.0.0.0 --port 8080 -ngl 0 -t 8 --jinja -c 8192 --api-key my-bonsai-api

各オプションの意味:

オプション設定値理由
-mモデルファイルのパスBonsai 8BのGGUFファイル
--host0.0.0.0全インターフェースでリッスン
--port80808080が他のサービスで使用している場合は空いてるポートに変更
-ngl0GPUオフロードなし。Radeon 680MはVRAMが不足するためCPU駆動で安定
-t8物理コア数に固定。ハイパースレッド16を全割り当てるとキャッシュの奪い合いが発生し逆に遅くなる
--jinja有効チャットテンプレートエンジンを有効化。Function Callingやツール呼び出しのサポートに必要
-c8192コンテキスト長。2048だと会話履歴がすぐに切れるため8192に拡張
--api-keymy-bonsai-apiAPIキー認証。外部からの不正アクセスを防止

💡 コンテキスト長の選び方

  • 8,192(推奨):日常的なチャット、メモリ約2.5GB
  • 16,384:コード生成・長い文書、メモリ約3.5GB
  • 32,768:最大限、メモリ約5.9GB

起動成功すると、以下のような表示が出ます。

main: server is listening on http://0.0.0.0:8080
main: starting the main loop...
srv  update_slots: all slots are idle

4-2. バックグラウンド起動

PowerShellを閉じるとサーバーが止まるので、バックグラウンドで起動します。

powershell
Start-Process -FilePath "C:\Users\〇〇\Bonsai-demo\bin\cpu\llama-server.exe" -ArgumentList "-m C:\Users\〇〇\Bonsai-demo\models\gguf\8B\Bonsai-8B-Q1_0.gguf --host 0.0.0.0 --port 8080 -ngl 0 -t 8 --jinja -c 8192 --api-key my-bonsai-api" -WindowStyle Hidden

⚠️ フルパスを使う必要があります。相対パスだと「ファイルが見つかりません」エラーになります。

4-3. 動作確認

powershell
Invoke-RestMethod -Uri "http://localhost:8080/v1/models"

モデル名が表示されれば成功です。ブラウザで http://localhost:8080 にアクセスすれば、Web UIでもチャットできます。


5.PC起動時に自動起動させる

毎回手動で起動するのは面倒なので、タスクスケジューラで自動起動にしました。

管理者PowerShellで実行

powershell
$action = New-ScheduledTaskAction -Execute "C:\Users\〇〇\Bonsai-demo\bin\cpu\llama-server.exe" -Argument "-m C:\Users\〇〇\Bonsai-demo\models\gguf\8B\Bonsai-8B-Q1_0.gguf --host 0.0.0.0 --port 8080 -ngl 0 -t 8 --jinja -c 8192 --api-key my-bonsai-api" -WorkingDirectory "C:\Users\〇〇\Bonsai-demo"

$trigger = New-ScheduledTaskTrigger -AtStartup

Register-ScheduledTask -TaskName "Bonsai-LLM" -Action $action -Trigger $trigger -Description "Bonsai 8B LLM Server" -RunLevel Highest

これでPC起動時に自動でBonsai LLMサーバーが立ち上がります。


6.Cloudflare Tunnelで外部アクセス

6-1. cloudflaredのインストールとサービス化

Cloudflareダッシュボードの「Tunnel」タブにあるトンネルを作成

インストーラーのダウンロード:
表示されているリンク(cloudflared-windows-amd64.msi)をクリックしてファイルをダウンロードします。

インストール:
ダウンロードした .msi ファイルを実行し、画面の指示に従ってインストールを完了させます。

管理者権限でコマンドプロンプトを開く:
Windowsの検索バーに「cmd」と入力し、「コマンドプロンプト」を右クリックして「管理者として実行」を選択します。

トンネルのインストールと実行:
コマンドプロンプト上で、画面に表示されている専用のインストールコマンドをコピーし、貼り付けて実行してください。
コマンド例:
cloudflared.exe service install <あなたのトークン>

6-2. ルート追加

Cloudflareダッシュボード > Tunnels > llama.cpp > ルート > ルートを追加

項目設定
アプリケーション名bonsai-llm
ドメイン★★.gogogogogogogogogogogo5555555555.uk
サービスの種類HTTP
URLlocalhost:8080

7.TypingMindと連携

最後に、TypingMind(ChatGPTライクなチャットUI)でローカルLLMを使えるように設定しました。TypigMindについての解説はこちら

カスタムモデルの追加

TypingMind > モデル > カスタムモデルを追加

項目設定
モデル名Bonsai-8B
APIエンドポイントhttps://★★.gogogogogogogogogogogo5555555555.uk/v1/chat/completions
モデルIDBonsai-8B-Q1_0.gguf
APIキーmy-bonsai-api

注意:プラグインとの相性

TypingMindの高度なプラグイン(Web検索、画像生成など)はFunction Callingを使いますが、Bonsai 8Bでは完全にサポートされていない場合があります。--jinjaオプションで改善されますが、完全ではありません。

私の使い分けは以下の通りです:

用途モデル
日常チャット・ローカル処理Bonsai 8B(無料・プライベート)
プラグインが必要なタスクGemini(無料枠)/MIMO(有料)

8.実行結果と所感

項目結果
モデルサイズ1.15GB
スレッド数8(物理コア数に固定)
コンテキスト8,192トークン
必要メモリ約2.5GB
レスポンスCPUでも十分使える速度(15t/s)
外部アクセス✅ Cloudflare Tunnel経由で動作
TypingMind連携✅ カスタムモデルとして認識
自動起動✅ タスクスケジューラ + Windowsサービス

正直な感想:「GPUなしでもローカルLLMは動くんだ」 と驚きました。1ビット量子化の精度は、日常的なチャットや簡潔なタスクなら問題なく使えます。

Cloudflare Tunnelと組み合わせることで、自宅のPCをAPIサーバーとして使い、スマホやタブレットからもアクセスできるのはかなり便利です。API費用もゼロですし、プライバシーも確保できます。


まとめ

1-bit Bonsaiは、GPUなしの環境でもローカルLLMを実用的に動かせる画期的なモデルです。Cloudflare TunnelとTypingMindを組み合わせることで、チャットUIから外部アクセスまで、手軽なプライベートAI環境が構築できました。

Leave a comment