プライベート大規模言語モデル・サービスのスタート・ガイド- パート1 (2026/08/12)
プライベート大規模言語モデル・サービスのスタート・ガイド- パート1 (2026/08/12)
https://blogs.oracle.com/database/getting-started-private-llm-service-part1
投稿者:Doug Hood | Product Manager for Oracle AI Vector Search and Private AI Services Container
この2部構成のブログでは、CPU駆動のOCI仮想マシン上で、Private AI Services Container 26.2.1のPrivate Large Language Model Serviceをデプロイして使用する方法を説明します。
パート1では、VMを作成し、大容量のAVX-512コンテナイメージをダウンロードし、デフォルトのLLMを使用してチャットを行います。
パート2では、Hugging FaceからオープンウェイトLLMをダウンロードし、llama.cppおよびvLLMランタイムで使用する方法を学びます。また、LLMの状態を確認する方法、Hugging FaceトークンとSSLを使用する方法についても学びます。
llama.cppおよびvLLMランタイムは、プライベート大規模言語モデルサービスの動作に使用されます。

同じサービスは、オンプレミス環境、エアギャップ環境、またはパブリッククラウドで実行できます。このチュートリアルでは、OCIにおけるCPUのデプロイに焦点を当てます。GPUのデプロイやその他のクラウド環境でのデプロイについては、今後のブログで取り上げます。
2.サイズは重要
大規模言語モデルは実行に多くのリソースを必要とします。パラメータ数が増えると一般的にモデルのリソース要件も増加しますが、モデルの機能とパフォーマンスは、アーキテクチャ、トレーニング、最適化、ワークロードなどの要因によって異なります。しかし、大規模なLLMは実行に多くのリソースを必要とし、結果として処理速度が低下する傾向があります。このため、さまざまなサイズと機能のトレードオフと最適化が行われてきました。

簡略化されたサイジングフレームワークとして、モデルはいくつかのパラメータ範囲に分類できます。適切なモデルサイズは、モデル、ワークロード、精度要件、レイテンシ要件、および利用可能なハードウェアによって異なります。これらのトレードオフにより、LLMは一般的に次の3つの異なるサイズ範囲に収まります。
十分な性能を持つLinuxサーバーがあれば、プライベート大規模言語モデルサービスは、上記3つの異なるサイズ範囲に対応できます。これは実際には次のことを意味します。
オープンウェイトLLMはより多くのメモリを必要とします。利用可能なメモリは、モデルの重み、実行時オーバーヘッド、コンテキストまたはKVキャッシュ、オペレーティングシステム、およびその他のプロセスに対応できるものでなければなりません。実際の要件は、量子化、コンテキスト長、並行処理、および実行時間によって異なります。
LLM推論では、数百万もの行列乗算演算が行われます。これらの演算は、CPUコア間で並列処理できます。モデル、実行時間、ワークロードによっては、利用可能なCPUリソースを増やすことで、推論のレイテンシとスループットを向上させることができます。
ダウンロードするLLMファイルはそれぞれ数GBのディスク容量を消費します。複数の異なるLLMファイルをテストすると、ディスク容量はすぐに膨れ上がってしまう可能性があります。
3.仮想マシンを作成する
10億から200億のパラメータ範囲でLLMを使用できるようにするには、Oracle Cloud Infrastructure上に以下の属性を持つ仮想マシンを作成します。
8個のOCPUを使用することは、性能とコストのトレードオフである。
サイズに関する考慮事項
CPU とオープンウェイト LLM を使用する場合、以下の点を考慮する必要があります。
ブートボリュームを拡張する
VMが作成され、ログインしたら、OCIブートボリュームを拡張してディスク容量をすべて利用できるようにする必要があります。これを怠ると、Hugging FaceからコンテナとオープンウェイトLLMをダウンロードするためのディスク容量が不足します。
Linuxのopcユーザーとして、シェルで以下のコマンドを実行してください。
sudo /usr/libexec/oci-growfs -y
df -hブートボリュームには、現在約121GBの空きディスク容量があるはずです。
4. VM環境を構成する
プライベートAIサービスコンテナをインストール、設定、実行するには、いくつかのディレクトリと環境変数が必要です。
Linuxシェルで、以下のコマンドを実行してください。
mkdir -p /home/opc/privateai
mkdir -p /home/opc/config
mkdir -p /home/opc/models
mkdir -p /home/opc/secrets
export PRIVATE_DIR=/home/opc/privateai
export SECRETS_DIR=/home/opc/secrets
export CONFIG_DIR=/home/opc/config
export HOST=$(hostname -f); echo $HOST5.適切なコンテナを選択する
プライベートAIサービスコンテナは、 7つの専用コンテナイメージを含む単一の製品です。
この演習では、以下のコンテナを使用します。
このコンテナにはデフォルトのLLMが含まれており、avx512アーキテクチャを搭載したCPU上で動作するコンテナ向けにプライベート大規模言語モデルサービスを有効にします。
6.コンテナをダウンロードする
ダウンロード手順は以前のリリースと同じです。このブログではその手順について説明します。このブログで特に重要なのは、Oracle Container Registryにログインするために必要な認証トークンを取得する方法です。
重要なコマンドは以下のとおりです。
- sudo dnf install -y container-tools
- podman login container-registry.oracle.com
- IMAGEID=`podman create container-registry.oracle.com/database/private-ai: large-cpu-avx512-infer-26.2.1.0.0 `
- podman cp $ IMAGEID:/privateai/scripts/privateai-setup-large-cpu-avx512-infer-26.2.1.0.0.zip .
- unzip privateai-setup-large-cpu-avx512-infer-26.2.1.0.0.zip
上記のコマンドは、Podmanをインストールし、Oracle Container Registryからコンテナをダウンロードし、ZIPファイルを解凍し、インストールスクリプトを含むファイルを解凍します。
7. コンテナをインストールする
コンテナをインストールして起動するには、Linuxシェルで以下のコマンドを実行してください。
cd /home/opc/setup
./secretsSetup.sh -s $SECRETS_DIR
./configSetup.sh -d $PRIVATE_DIR -s $SECRETS_DIR
./containerSetup.sh -d $PRIVATE_DIR --httpこの例では、コンテナはHTTPネットワークプロトコルとデフォルトのTCPポート8080を使用するように構成されています。
コンテナの状態を確認する
数秒後には、コンテナが起動したことを示すメッセージが表示されるはずです。
コンテナの起動には複数の段階があり、それらはバックグラウンドで実行されます。デフォルトのLLMが初めて使用される場合、準備が整うまで最大3分かかることがあります。
コンテナの実行中にその状態を確認するには、次のコマンドを使用します。
podman psLLMがディスクからロードされている間、コンテナの状態は「開始中」となります。
コンテナがメモリに完全にロードされると、状態は「異常」となり、リクエストを処理する準備が整うと最終的に「正常」な状態になります。
コンテナの状態を確認してください
コンテナの /health RESTエンドポイントを確認するには、次のcURLコマンドを使用します。
curl -i http://localhost:8080/health
上記のような有効なHTTPレスポンスが得られた場合、コンテナはリクエストを処理する準備ができています。エラーが発生した場合は、コンテナはまだリクエストを処理する準備ができていません。
ロードされたモデルを確認してください
ダウンロードしたlarge -cpu-avx512-infer-26.2.1.0.0コンテナイメージには、デフォルトでLLMといくつかの埋め込みモデルが設定されています。
Linuxシェルで以下のコマンドを実行すると、利用可能なモデルを検索できます。
curl http://localhost:8080/v1/models | jqjqコマンドラインユーティリティは、JSON出力を読みやすくするために整形表示します。jqユーティリティは、Oracle Linux 9にデフォルトで搭載されています。
出力は以下のようになります。

- 読み込まれたMinistral-3-3B-Rasoning-2512-GGUF-Q8_0モデルは、Mistral.aiの30億パラメータのLLMです。
- その他のモデルは、ONNXランタイムのデフォルトのベクトル埋め込みモデルです。
- これは、large-cpu-avx512-infer-26.2.1.0.0コンテナが、設定なしで LLM の推論を実行し、ベクトルを作成できることを意味します。
8. LLM担当者とチャットする

- 上記の画像は、プライベートAIサービスコンテナで使用されているOpen WebUIを示しています。
- Open WebUIでプライベートAIサービスコンテナを使用するように設定する方法については、今後のブログ記事で解説します。
Oracle Private Agent Factory、Open WebUI 、 AnythingLLMなどの高度なLLMクライアントを使用してプライベートAIサービスコンテナとチャットすることもできますが、このブログの例ではcURLユーティリティを使用しています。cURLはインストールや設定が不要なため、最も簡単にテストできるチャットクライアントです。
プライベートAIサービスコンテナは、/v1/chat/completionsエンドポイントのOpenAI APIのRESTインターフェースを実装しています。つまり、有効なRESTリクエストを作成する必要があります。最も簡単な方法は、LinuxのcURLコマンドラインユーティリティを使用することです。cURLはHTTP POSTリクエストを実行するために使用できます。正しい構文を使用すれば、HTTP POSTリクエストは有効なOpenAI APIリクエストであるRESTメッセージになります。
このRESTメッセージに含まれる重要な情報は以下のとおりです。
- 使用されるLLMモデル
- LLMに送信されるメッセージ/プロンプト
- プライベートAIサービスコンテナのURL
以下の例では、URLにlocalhostを使用しています。プライベートAIサービスコンテナが動作するホストのIPアドレスまたは完全修飾ドメイン名もURLに使用できます。つまり、cURLコマンドは、プライベートAIサービスコンテナがローカル環境でもリモート環境でも実行できます。
cURLを使ったチャット
以下のcURLコマンドを実行するスクリプトを作成し、cURLを使用してデフォルトのMinistral-3-3B-Reasoning-2512-Q8_0 LLMとチャットします。cURLスクリプトの出力は、jqユーティリティにパイプされ、JSON出力が整形されて表示されます。
curl --noproxy '*' -X POST --header 'Content-Type: application/json' --header "Authorization: Bearer $API_KEY" --cacert $SECRETS_DIR/cert.pem --data '{
"model": "Ministral-3-3B-Reasoning-2512-Q8_0",
"messages":[
{"role": "user", "content": "Format the output as HTML. What does the SELECT statement in SQL do?"}
],
"max_tokens": 2048,
"temperature": 0.7,
"stream": false
}' http://localhost:8080/v1/chat/completions | jq出力は次のようになります。

- この例では、このブログで説明されている構成を使用した場合、応答時間は約18秒でした。結果は、モデル、構成、プロンプト、ワークロード、および利用可能なコンピューティングリソースによって異なります。
- 規模の大きいLLMは、リクエストへの対応に時間がかかる傾向がある。
- ワークロードと構成によっては、追加のCPUリソースによって応答時間を短縮できる場合があります。
- 今後の投稿では、他のLLMについても取り上げる予定です。
出力はLLMによって異なります。この例では次のようになります。
- コンテンツにはHTMLのような形式の回答が表示されます
ChromeでレンダリングされたコンテンツセクションのHTMLは次のようになります。

つまり、簡潔に言えば「正しい」のですが、HTMLの記述方法が最適ではありませんでした。
パート2では、他のオープンウェイトLLMからの、より適切な形式の回答を見ることができます。
9.まとめ
このブログでは、CPUを搭載したOCI VM上でプライベート大規模言語モデルサービスをダウンロード、インストール、設定し、チャットする方法を学びました。また、HTTP用のcURLユーティリティを使用してLLMとチャットする方法も学びました。
このブログのパート2では、次のような内容を取り上げています。
- ストリーミングチャットを使用する
- llama.cpp のモデルをダウンロードしています
- vLLM用のモデルをダウンロードしています
- Hugging Faceトークンの使用
- SSLを使用する
関連ブログ
- プライベートLLMサービス入門 – パート2
- プライベートLLMサービスでDBMS_VECTOR_CHAINを使用する
コメント
コメントを投稿