ローカルLLMを動かす——Ollama
クラウドのAIサービスを使うだけでなく、自分のLinuxマシンの中でAIモデルそのものを動かす方法を学びます。Ollamaというツールを使うと、モデルのダウンロードから対話までコマンド一つで完結します。ネットに繋がらない場所でも使え、API利用料もかからず、手元で自由に試せるのが最大の魅力です。この章では導入からモデルの選び方、REST API経由での呼び出しまでを扱います。
AIを使うといえば、多くの人はブラウザでチャット画面を開き、クラウドの向こう側にあるモデルへ質問を送る場面を思い浮かべる。だが同じことは、自分のLinuxマシンの中だけでも完結させられる。その仕組みを裏返し、自分の手元だけで完結させてしまおうというのが、この章のテーマだ。
手元で動かすAIモデルのことを、ここではローカルLLM(ai-linux-local-llm)と呼ぶ。LLMは大規模言語モデルの略で、文章を理解し生成する仕組みそのものを指す。それをクラウドではなく自分のマシン上で動かすのがローカルLLMだ。
これまでAIを「使う側」だった人にとって、ローカルLLMは初めて自分の手でAIを「動かす側」に回る体験になる。難しそうに聞こえるが、道具さえ揃えば操作自体はごく簡単だ。誰かのサービスを間借りするのではなく、自分の環境で完結させる感覚だ。
🔒 なぜ手元で動かすのか
理由の一つ目はプライバシーだ。入力した文章や質問は、ネットワークの外へ一切出ていかない。社内文書や個人的な相談ごとを扱うとき、この安心感は大きい。
二つ目はオフラインで使えること。飛行機の中や電波の弱い場所でも、一度モデルを取得してしまえばネット接続なしで対話できる。出先で調べものができない状況でも、手元のモデルなら応答してくれる。
三つ目はAPI利用料金がかからないこと。クラウドのAIサービスは使った分だけ課金される従量制が多いが、ローカルLLMは電気代以外の追加費用が発生しない。何度質問しても、何行のコードを生成させても、追加の請求は来ない。
四つ目は実験の自由度だ。設定を変えたり、複数のモデルを気軽に切り替えて比較したりできる。クラウド側の仕様変更に振り回されることもなく、自分のペースで試行錯誤できる。設定を戻せなくなる心配も、他人の使用中の環境を巻き込む心配もない。
もちろん万能ではない。手元のマシンの性能に処理速度が左右されるし、最新の最強クラスのモデルはクラウド側にしかないことも多い。両者は競合というより、場面に応じた使い分けの関係にある。「常にどちらか一方を使う」のではなく、機密情報を扱う作業はローカルで、複雑な調べ物はクラウドで、というように場面で切り替える使い方が現実的だ。
図のように、クラウドAIは強力だがネット接続と利用料が前提になる。ローカルLLMは非力な場面もあるが、手元で完結する気軽さがある。この章では後者を動かす道具を扱う。
🐋 Ollamaを導入する
ローカルLLMを手軽に動かすためのツールとして広く使われているのがOllamaだ。モデルの取得・起動・管理をシンプルなコマンドにまとめてくれる。以前は環境構築だけで一苦労だった分野だが、Ollamaの登場でそのハードルはぐっと下がった。
インストールが終わると、Ollamaはsystemdサービスとしてバックグラウンドに常駐する。つまりPCを再起動しても自動的に立ち上がり、いつでもコマンドを受け付ける状態になる。ターミナルを開くたびに手動で起動する必要はない。手動で起動し直す手間がない点は地味に助かる。
インストール手順や対応OS・対応モデルは更新が早い分野なので、実行前に公式サイト(ollama.com)で最新の案内を確認してほしい。 サービスが起動しているかどうかは systemctl status ollama のようなコマンドで確認できる。動いていなければ ollama コマンド自体が接続エラーを返すので、まずここを疑うとよい。
常駐サービスという仕組みのおかげで、裏側では静かに待機し、要求が来たときだけモデルを読み込んで応答する。この待機の仕方がAPI連携のしやすさにもつながっている。
⌨️ 基本操作を覚える
Ollamaの操作は驚くほど少ないコマンドで完結する。まず覚えるべきは pull・run・list の3つだ。この3つさえ押さえれば、日常的な利用の大半をカバーできる。
最初の pull は、モデルのデータをインターネットから取得して手元に保存するコマンドだ。取得中はターミナル上にパーセント表示で進捗が流れていくので、待ち時間の目安もつかみやすい。回線速度やモデルの大きさによっては数分かかることもあるので、初回だけは気長に待つ心づもりでいるとよい。
run コマンドは、指定したモデルが手元になければ自動的に pull も行ってから起動する。だから最初の一歩は run だけで済ませることもでき、実際には pull を省いて run だけを打つ人も多い。
対話を終えるときは /bye と打つか、Ctrl+D で抜けられる。難しい終了手順はなく、思い立ったらすぐに切り上げられる。
手元に取得済みのモデルが増えてくると、どれをダウンロード済みだったか忘れてしまうことがある。そこで役に立つのが list だ。ollama list と打つと、モデル名・サイズ・更新日時が一覧で表示される。一度取得したモデルはディスクに残り続けるので、この一覧でいつでも確認できる。
取得は初回だけ時間がかかるが、二回目以降のrunはディスクに保存済みのデータを読み込むだけなのですぐに立ち上がる。複数のモデルを併用している場合は、切り替えるたびに読み込みが発生する点は覚えておきたい。使わなくなったモデルは、必要に応じて手動で削除することもできる。
⚖️ モデルの大きさと量子化
モデルを選ぶとき、名前の後ろに付くBという単位を目にする。7Bなら70億、3Bなら30億のパラメータ数を意味し、大まかに言えばモデルの規模の指標だ。
パラメータ数が多いほど、モデルは複雑な文脈や込み入った指示を理解しやすくなる傾向がある。一方でモデルのファイルサイズも大きくなり、7B級のモデルはそれだけで数ギガバイトに達する。
この重さを軽くする工夫が量子化(ai-linux-quantization)だ。モデル内部の数値を、精度を落とした軽量な形式に変換して保存する。同じモデルでも量子化の度合いが違えば、必要な容量も応答の質感も変わってくる。
量子化されたモデルは、必要なメモリが減り動作も軽くなる代わりに、応答の精度がわずかに落ちることがある。Ollamaで配布されているモデルの多くは、あらかじめ扱いやすい量子化済みの形で提供されている。
💾 RAM・VRAMの目安をつかむ
モデルを動かすには、そのモデルの重さに見合ったメモリが要る。おおまかには、モデルのファイルサイズに近い量のメモリが読み込み時に必要になると考えておくとよい。
手元のマシンにどれくらい空きメモリがあるかを事前に確認しておくと、モデル選びで迷ったときの判断材料になる。大は小を兼ねると思って安易に大きなモデルへ手を伸ばすと、起動すらしないという事態にもなりかねない。
GPUを積んでいるマシンではVRAM(グラフィックボード上のメモリ)を使うと高速に動く。GPUがない、あるいはVRAMが足りない場合はCPUとRAM(通常のメモリ)で動かすこともできるが、応答は遅くなる。
非力なマシンで試すときは、名前に量子化のヒントが含まれる軽量版や、パラメータ数の小さいモデルから始めると失敗が少ない。慣れてきたら、手元のメモリ容量と相談しながら少しずつ大きなモデルへ手を伸ばせばよい。
大きすぎるモデルを無理に動かそうとすると、途中で止まってしまったり、他の作業が重くなったりする。自分のマシンのメモリ容量を把握したうえで、段階的に大きなモデルへ挑戦していくのが実践的だ。
🔌 REST APIで話しかける
Ollamaはコマンドラインの対話だけでなく、裏側でREST APIも公開している。これを使うと、自分のプログラムやスクリプトからモデルを呼び出せる。
常駐しているOllamaサービスは、既定で localhost:11434 というアドレスで要求を待ち受けている。ここへcurlのようなツールでアクセスすれば、対話画面を介さずに直接やり取りできる。
この仕組みのおかげで、自作のツールやWebアプリからローカルLLMを部品として組み込むことができる。対話用のターミナルはあくまで入り口の一つに過ぎず、本当の使いどころはこのAPI連携にあるとも言える。
自分のマシンの中でAIを動かし、それをAPI越しに呼び出せるようになると、AIを使うだけの立場から、AIを組み込んで動かす立場へと一歩進んだことになる。ここから先は、どのモデルを選び、どう組み合わせるかという実践の領域だ。この章で扱ったOllamaは、その一歩を踏み出すための、数あるツールの中でも特に敷居の低い入り口だ。