llama.cppを使ったllama-serverコマンドは、ローカル環境で大規模言語モデル(LLM)を手軽に動かしたい方に最適なツールです。この記事では、llama-serverの基本的なコマンドの使い方や、サーバー起動手順、実際にリクエストを送る方法までを分かりやすく解説します
llama-serverは、llama.cppプロジェクトが提供するLLMサーバー機能です。ローカルPC上でLLMモデルを動かし、HTTPリクエストでテキスト生成や会話ができるようになります。サーバーを立てることで、モデルの読み込みを一度だけ行い、複数回の推論を効率よく実行できます。
llama.cppは、Meta(旧Facebook)社が開発した大規模言語モデル(LLM)であるLlamaやLlama2の重みファイルを、C/C++で効率的に動作させるための軽量な推論エンジンです。
llama.cppのインストール方法はこちらを参照
llama-serverの主なコマンドラインオプションは以下の通りです。
models/7B/ggml-model.gguf
--port 8181
その他にも、CPU/GPUのリソース割り当てや、バッチ処理のスレッド数など、細かな設定が可能です。
1.ターミナルでコマンドを実行
./llama-server -m ./models/モデル名.gguf --port 8181
これでサーバーが指定ポート(例:8181)で起動します。
2.バックグラウンド実行(任意)
nohup ./llama-server -m ./models/モデル名.gguf --port 8181 > output.log &
この方法で、サーバーをバックグラウンドで動かせます。
サーバーが起動したら、curlコマンドやPostman、Node.jsなどからHTTPリクエストを送信できます。
例:curlでリクエストを送る場合
curl --request POST \
--url http://localhost:8181/completion \
--header "Content-Type: application/json" \
--data '{"prompt": "富士山の高さは?", "n_predict": 128}'
このようにして、LLMに質問を投げて結果を受け取れます。
Pythonでリクエストを送るには、requests
ライブラリを使います。
import requests
url = "http://localhost:8181/completion"
headers = {"Content-Type": "application/json"}
data = {"prompt": "富士山の高さは?", "n_predict": 128}
response = requests.post(url, headers=headers, json=data)
print(response.json())
このスクリプトは、curlコマンドと同様のリクエストをPythonで実行し、サーバーのレスポンスをJSON形式で取得します。
もしサーバーがOpenAI互換エンドポイント(例:/v1/chat/completions
)をサポートしている場合、以下のようにopenai
パッケージも利用できます。
import openai
client = openai.OpenAI(
base_url="http://localhost:8181/v1", # 互換エンドポイントが有効な場合
api_key="dummy" # 適当な文字列でOK
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo", # 実際はローカルLLMが使われる
messages=[
{"role": "system", "content": "あなたはAIアシスタントです。"},
{"role": "user", "content": "富士山の高さは?"}
]
)
print(completion.choices[0].message.content)
※/v1/chat/completions
エンドポイントが利用可能な場合のみ有効です。通常の/completion
エンドポイントにはrequests
を使います。
オプション | 説明 |
---|---|
-m, –model | モデルファイルのパス |
–port | サーバー待ち受けポート |
-t, –threads | 推論に使うスレッド数 |
-c, –ctx-size | プロンプトの最大長(トークン数) |
–lora | LoRAアダプターのパス |
llama-serverコマンドを使えば、ローカル環境でLLMサーバーを簡単に起動でき、API経由でテキスト生成や会話が可能です。モデルファイルやポート番号、スレッド数などのオプションを活用し、用途に合わせて柔軟に設定しましょう