まえがき
近年、AIチャットサービスといえば ChatGPT が代表的な存在となっています。クラウド上のサーバで巨大な言語モデルが稼働し、ユーザーはインターネット経由でその恩恵を受ける仕組みです。
一方で「ローカル LLM」という言葉を耳にすることも増えてきました。これは文字通り「ローカル(自分のPCやサーバ)」で動かす 大規模言語モデル(Large Language Model) のことを指します。つまり、ChatGPTのような高度なAIを、自分の環境で動かし、インターネットに依存せず利用できる仕組みです。
ローカルでLLMを動かすメリットは以下の通りです。
- プライバシー性
入力したデータが外部に送信されない - 柔軟性
環境に合わせたモデル選択が可能 - コスト削減
クラウド利用料を気にせず使える
本記事では、代表的なローカル LLM 実行環境である Ollama をLinuxサーバへ導入し、PHPプログラムから「挨拶」を返す簡単なサンプルを動かすまでの手順を解説します。
さらに、サーバのスペックが不足する場合に有効な スワップ領域の設定 についても紹介し、実用的に利用できるようにします。
サーバ環境の前提と推奨スペック
まずはサーバのスペックを確認します。LLMはメモリやCPUに大きな負荷をかけるため、環境によって動作可否が分かれます。
推奨スペック(快適に動作させる場合)
- CPU:8コア以上
- メモリ:16GB以上
- ストレージ:SSD 50GB以上
- GPU:あれば望ましいが必須ではない
最低限の動作環境(軽量モデルを試す場合)
- CPU:4コア
- メモリ:8GB
- ストレージ:SSD 20GB
スペック不足時の対応(スワップ設定)
メモリが不足している場合は「スワップ領域」を確保することで、物理メモリの代わりにディスクを仮想メモリとして利用できます。
# スワップファイルの作成(例:8GB)
sudo fallocate -l 8G /swapfile
# 権限設定
sudo chmod 600 /swapfile
# フォーマットして有効化
sudo mkswap /swapfile
sudo swapon /swapfile
# 永続化(/etc/fstabに追記)
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
これで、物理メモリが不足していても大きめのモデルを動かすことが可能になります。
Ollamaの導入手順(Linux)

Ollamaは、簡単にローカルでLLMを動かせる実行環境です。
インストール
Ubuntuを例にします。
curl -fsSL https://ollama.com/install.sh | sh
これで ollama
コマンドが使えるようになります。
動作確認
ollama run hello
このコマンドで「Hello」という軽量モデルが動作し、正常に応答が返れば成功です。
モデルの選択と導入
Ollamaは複数のモデルを提供しています。本記事では 3種類のモデル をピックアップし、それぞれの特徴と導入方法を紹介します。
TinyLlama(軽量・テスト用)
- 特徴:非常に軽量で、メモリ8GB以下でも動作可能
- 利用シーン:動作確認やテスト用
導入コマンド:
ollama pull tinyllama
実行例:
ollama run tinyllama
LLaMA 3 8B(実用的・汎用)
- 特徴:Meta社が公開したLLM。8Bパラメータで性能と軽量性のバランスが良い
- 利用シーン:実用的な会話や文章生成
導入コマンド:
ollama pull llama3
実行例:
ollama run llama3
Mistral 7B(高精度・実用向け)
- 特徴:文章生成性能が高く、多くの利用者に支持されている
- 利用シーン:文章作成、コード補助など本格利用
導入コマンド:
ollama pull mistral
実行例:
ollama run mistral
PHPからOllamaを利用する
OllamaはHTTP APIを提供しているため、PHPから簡単に呼び出せます。
APIサーバの起動
ollama serve
これで http://localhost:11434
が利用可能になります。
PHPサンプルコード(挨拶プログラム)
<?php
// モデルを指定してリクエスト
$url = "http://localhost:11434/api/generate";
$data = [
"model" => "llama3", // 利用するモデル
"prompt" => "こんにちは!自己紹介してください。"
];
$options = [
"http" => [
"header" => "Content-type: application/json\r\n",
"method" => "POST",
"content" => json_encode($data),
],
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
// 結果を表示
echo "AIの返答: " . $result;
?>
ブラウザからこのPHPファイルにアクセスすると、指定したモデルが「こんにちは!」に応答してくれます。
各モデルのまとめ
最後に、本記事で紹介したモデルの特徴と推奨環境を表にまとめます。
モデル名 | 特徴 | メモリ要件 | 利用シーン |
---|---|---|---|
TinyLlama | 超軽量・動作確認用 | 4GB~ | テスト・デモ |
LLaMA 3 8B | 性能と軽量性のバランス | 8GB~16GB | 汎用的な会話・文章生成 |
Mistral 7B | 高精度・本格的利用 | 16GB~ | 長文生成・コード補助 |
参考情報
1GBメモリのサーバに8Gのスワップを設定しTinyLlamaのモデルを使用した動作確認を行った実行結果を以下に記載します。
[XXXX@XXXX]$ ollama run tinyllama "こんにちは、自己紹介してください"
⠼ 大きなおじとうに行くかも。 今回も仕事を辿ればいいよね。 あっさり、あの日のことは急ぎ書きます。 いつも売
りだからご注文お願いして頂けるから、仕事の中で練うのがよかったと思います。 そこに考えるほどのやさしさを
見せたいです。 帰ってきている間は急ぎ書きます。 こんなに良い気持ちを持つように、あらゆることに向けるの
が最も重要な為と思います。
[XXXX@XXXX]
上記、結果の通り極端に低スペックな環境では正常動作は望めないばかりか、この結果が出力されるまで2時間程度の時間がかかりました。
おわりに
ここまでで、LinuxサーバにOllamaを導入し、PHPから挨拶を返すサンプルを動かす手順を紹介しました。
- サーバスペック不足時はスワップ設定で対応
- モデルは用途に応じて軽量版から実用版まで選択可能
- PHPからAPIを叩くことで簡単にWebアプリと連携可能
「ローカル LLM」を導入することで、クラウドに依存しない新しいAI体験が可能になります。まずは軽量モデルで試し、用途に合わせて実用的なモデルへステップアップしてみてください
引用元
- Ollama 公式サイト
https://ollama.com/ - Ollama GitHubリポジトリ(インストール手順やAPI仕様)
https://github.com/ollama/ollama - Ollama ドキュメント(APIリファレンス)
https://github.com/ollama/ollama/blob/main/docs/api.md - Meta AI: LLaMA 3 発表記事
https://ai.meta.com/llama/ - Mistral AI 公式サイト(Mistral 7B の概要)
https://mistral.ai/ - Linux Swap 設定方法(Ubuntu公式)
https://help.ubuntu.com/community/SwapFaq
コメント