Ollama(ローカルLLM実行)
Ollamaとは
Ollama は、自分のPCやサーバー上でLLMを動かすためのランタイムです。モデルの取得・起動・API提供までを1つのコマンド体系で扱えます。
ollama pull llama3 # モデルを取得する
ollama run llama3 # 対話形式で実行する
起動すると HTTP のエンドポイントが立ち上がり、アプリからは通常の [[生成AI・LLM]] のAPIと同じ感覚で呼べます。APIキーも従量課金も無く、ネットワークが切れていても動きます。
curl http://localhost:11434/api/generate -d '{"model":"llama3","prompt":"要約して"}'
クラウドAPIとの使い分け
| 観点 | クラウドのLLM API | Ollama(ローカル実行) |
|---|---|---|
| データの送信先 | 事業者のサーバー | 手元の環境から出ない |
| コスト | トークン単位の従量課金 | 電気代と機材のみ |
| モデルの性能 | 最新・最大規模を使える | 端末のメモリに収まる規模に限られる |
| 応答速度 | 通信込み。混雑の影響を受ける | 通信なし。GPUの有無に大きく左右される |
| 運用 | 事業者が面倒を見る | 更新・監視を自分で行う |
判断の軸は性能とデータの持ち出し可否です。社外に出せない文書を扱う、ネットワークが不安定、試行回数が多くて課金が読めない、といった場面ではローカル実行が向きます。逆に最高精度が要る処理はクラウドのAPIに任せる、という併用が現実的な構成です。
アプリ側を「モデルの呼び出し口」で抽象化しておくと、同じコードのままローカルとクラウドを切り替えられます。
動かすときの制約
ローカル実行で最初に当たるのがメモリの上限です。モデルはパラメータ数に応じたメモリを必要とし、収まらなければ動きません。そこで量子化(パラメータの精度を落として容量を削る手法)されたモデルが広く使われます。
- パラメータ数が小さいモデルほど速く動くが、複雑な指示には弱くなる
- 量子化は容量と速度を稼げるが、精度はいくらか落ちる
- [[コンテキストウィンドウ]] を大きく取るとその分メモリを消費する
生成の挙動は [[推論パラメータと出力のばらつき]] と同じ考え方で調整します。temperature などのパラメータはリクエストで渡せます。
初学者向けポイント
- まずは小さいモデルで動作を確認し、必要になってから大きいモデルへ上げるのが安全です
- 同じモデル名でも量子化の程度が違う配布物があります。手元のメモリに合うものを選びます
- モデルの実体は [[Hugging Face Transformers]] のエコシステムで公開されているものが多く、ライセンスは配布元の条件に従います
関連技術とのつながり
- [[生成AI・LLM]] — 実行場所を手元に置いた形。呼び出し方の考え方は同じ
- [[推論パラメータと出力のばらつき]] — temperature などの調整はローカルでも同様に効く
- [[コンテキストウィンドウ]] — 大きく取るほどメモリを消費するため、ローカルでは制約が直結する
- [[Hugging Face Transformers]] — モデルの入手元・より細かい制御が要るときの選択肢
Q: Ollamaを使う最大の利点はどれ?
- [ ] クラウドAPIより必ず高精度な回答が得られる
- [x] データを外部へ送らずに手元でLLMを実行できる
- [ ] モデルの学習を自動で行ってくれる
解説: Ollama はローカル実行のランタイムです。データが手元から出ない点と、APIキー・従量課金が不要な点が主な利点です。
Q: ローカルLLM実行で最初に制約になりやすいものはどれ?
- [ ] ディスプレイの解像度
- [x] 端末のメモリ容量
- [ ] ブラウザのバージョン
解説: モデルはパラメータ数に応じたメモリを必要とし、収まらなければ動きません。量子化された小さいモデルが使われるのはこのためです。
Q: 量子化されたモデルの説明として正しいものはどれ?
- [x] パラメータの精度を落として容量と速度を稼ぐ代わりに、精度はいくらか落ちる
- [ ] 学習データを圧縮したモデル
- [ ] 精度も速度も無条件に向上したモデル
解説: 量子化は容量・速度と精度のトレードオフです。手元のメモリに収めるための現実的な手段です。