-
リクエスト数を気にせず使いたかった
-
API料金を気にせず試行錯誤したかった
-
バッチ処理を大量に回したかった
-
AIをインフラのように扱いたかった
OpenAI APIは非常に便利ですが、試行錯誤のための処理にもお金がかかります。
例えば、
* プロンプトを少し変えて結果を比較する
* READMEをまとめて要約してみる
* 面白そうなアイデアを大量に試す
* 品質評価のために何度も実行する
といった処理です。
これらは事業上必須というより、
「ちょっと試してみたい」「面白そうだからやってみたい」
という性質のものが多くありました。
そのたびにコストを意識すると、
自然と実験回数が減ってしまいます。
私は「どうでもいい処理」や「失敗するかもしれない実験」にこそ
気軽にAIを使いたかったため、
コストをほとんど気にせず実行できるローカルLLMに興味を持ちました。
品質よりもまず、
「思いついたらすぐ試せる環境」を作りたかったのです。
今回利用した構成
-
モデル: Qwen 2.5 3B Instruct
-
量子化: Q4_K_M
-
VM: Standard_D4ps_v6
-
CPU: Arm64(Ampere Altra)
-
推論エンジン: llama.cpp
実行環境には Azure Virtual Machine の Standard_D4ps_v6 を利用しています。
CPUは Arm64 アーキテクチャの Ampere Altra を採用しており、
4 vCPU・16GBメモリの構成です。
当初はもっと大きなモデルや高性能な構成も検討しましたが、
今回の用途は
* README要約
* テキスト分類
* スライド生成の前処理
* バッチ処理
が中心でした。
そのため、
「最高品質の回答を得る」
ことよりも、
「十分な品質で大量に処理できる」
ことを重視しました。
実際に運用してみると、
Standard_D4ps_v6 + Qwen 2.5 3B Instruct の組み合わせは、
レスポンス速度と月額コストのバランスが非常に良く、
個人開発用途としては十分実用的だと感じています。
特に『失敗しても気にならない処理を大量に回せる』という点は、
商用APIにはない大きなメリットでした。
-
最初はAKS上で動かしていた
-
リソース調整が非常に難しかった
-
LLM専用環境として切り出した
-
運用がかなりシンプルになった
ただ、実際に運用してみるとリソース調整がかなり難しいことが分かりました。
LLMはCPUやメモリを継続的に消費するため、
* requestsをどれくらいにするか
* limitsをどれくらいにするか
* ノードサイズをどうするか
* 他のPodとどう共存させるか
を常に考える必要があります。
特に個人開発環境では、
* Webアプリ
* Sidekiq
* GitHub Actions Runner
* 検証用Pod
など様々なものが同じクラスタ上で動いているため、
LLMがクラスタ全体の設計に影響を与えるようになっていました。
本来は『LLMを動かしたい』だけなのに、
気付くと『Kubernetesのリソース管理』に時間を使っていたのです。
そこで発想を変え、
LLMだけをAzure VMへ切り出しました。
結果として、
リソース調整に悩む時間が大幅に減り、
LLMそのものの活用に集中できるようになりました。
動かしてみたモデル
-
Llama系
-
Qwen系
-
3Bクラスを中心に検証
-
最終的にQwen 2.5 3Bを採用
複数のモデルを試しました。
用途は主に
* README要約
* テキスト整理
* スライド生成の前処理
* バッチ処理
です。
そのため最新・最大のモデルではなく、
3Bクラスの小型モデルを中心に評価しました。
最終的には Qwen 2.5 3B Instruct が
最もバランスが良いと感じました。
日本語の要約品質や指示追従性能は十分実用的で、
私の用途では期待していた水準を満たしていました。
推論速度については、
OpenAI APIのような即時応答と比べると明らかに遅いです。
ただし今回の用途はチャットではなく、
* 定期実行ジョブ
* バッチ処理
* 非同期処理
が中心です。
そのため数秒〜十数秒程度かかる処理であっても、
ジョブとして裏側で実行するのであれば十分許容できる範囲でした。
結果として、
「多少遅くてもいいから安く大量に回したい」
という目的には、
Qwen 2.5 3B Instruct が最も適していました。
導入してみて良かった点
-
APIコストを気にせず試せる
-
モデル切り替えが簡単
-
レスポンスが意外と速い
-
OpenAI互換で既存コードを流用可能
導入してみて困った点
-
モデル選定が難しい
-
メモリ消費が大きい
-
日本語品質に差がある
-
長文処理はモデル依存
ベンチマークだけでは実運用の品質が分かりにくかった。
-
GitHub README要約
-
スライド生成前処理
-
トレンド収集
-
バッチ処理のコスト削減
定期実行やバックグラウンド処理との相性が良いと感じた。
現時点の結論
-
小規模用途なら十分実用的
-
要約や分類タスクと相性が良い
-
高品質な文章生成は商用APIが有利
-
「まずローカルLLMで試す」という選択肢が増えた
用途に応じて商用APIと使い分けるのが現実的。
関連スライド
slidictとは?
2026/05/30
マイクラブロック一覧
2026/05/20
github要約スライドを作った
2026/05/20
GitHub Actions+Release Notes活用デプロイフロー
2026/05/17
Rails7アップグレードとwebpacker脱却ログ
2026/05/10
cloudflare入れてみた
2026/04/27
1Passwordと Kubernetes Secretsで実現する方法
2026/04/24
スライド作成の型まとめ
2026/04/11
Vibe Coding×LLM時代の個人開発攻略:前提設計でAIのミスを減らす実践テク
2026/04/09
OpenClawに挑む: 私の使ってみたい気持ちとセキュリティの不安
2026/04/04
Tauriで子供向けアプリを作ってみた話
2026/04/02
43歳、常用偏光レンズで気づいたこと
2026/02/15
デザインを外注してよかった話
2026/02/15
子供向けアプリをTauriで作ってみた話
2026/02/15
ピラティスを始めて感じたこと
2026/02/15
AIにコードを書かせている僕の話
2026/02/15
GitHub READMEをそのままスライドへ
2026/02/14
過程を楽しむ人間は、どう稼げるのか
2026/02/08
埋め込み用コード
コピーしてご自身のブログなどに貼り付けることでスライドが表示されます。