GenAIモデルの提供
| 項目 | 値 |
|---|---|
| カテゴリ | GenAI |
| 難易度 | 初級 |
| 推定所要時間 | 15-20 minutes |
| ラベル | genai, server, llm, vlm, asr, http |
ほとんどのアプリケーションでは、GenAIServerとそのOpenAI互換のPOST /v1/chat/completionsエンドポイントから開始します。組み込みのアプリケーションロジックが同じプロセスでモデルの呼び出しを所有す る必要がある場合は、直接model.run(request)呼び出しを使用します。
完全なエンドポイントとリクエストコントラクトについては、GenAI Serverリファレンスを参照してください。
ウォークスルー
サーバーの設定
ホストとポートを選択します。デフォルトのホストは0.0.0.0で、これはModalixデバイスにアクセスできる他のマシンからの接続を受け入れます。
genai::GenAIServerOptions options;
options.host = args.host;
options.port = args.port;
genai::GenAIServer server(options);
モデルディレクトリの登録
デプロイされた各モデルディレクトリを、提供する名前とともに追加します。このチュートリアルでは、llm、vlm、およびasrを登録します。クライアントがmodelフィールドに送信するのは、この提供する名前です。
if (!args.llm.empty()) {
server.add_model(args.llm, "llm");
}
if (!args.vlm.empty()) {
server.add_model(args.vlm, "vlm");
}
if (!args.asr.empty()) {
server.add_model(args.asr, "asr");
}
std::cout << "registered models:";
for (const auto& name : server.model_names()) {
std::cout << " " << name;
}
std::cout << "\n";
提供の開始
ブロッキングフォアグラウンドプロセスにする場合はserve()を呼び出し、アプリケーションがプロセスの残りのライフサイクルを所有する場合はstart()を呼び出します。
サーバーが開始されたら、GET /v1/modelsを使用して、登録されたモデル名を確認します。
curl http://<modalix-ip>:9998/v1/models
応答には、このチュートリアルで登録された提供する名前、つまりllm、vlm、およびasrが含まれている必要があります。
std::cout << "serving on http://" << options.host << ":" << options.port << "\n";
std::cout << "try: curl http://<modalix-ip>:" << options.port << "/v1/models\n";
server.serve();
実行
Modalix DevKitでは、Hugging FaceからLLM、VLM、およびASRモデルをLLiMa CLIを使用してダウンロードします。
llima pull Qwen3-4B-Instruct-2507-GPTQ-a16w4
llima pull Qwen3-VL-4B-Instruct-GPTQ-a16w4
llima pull whisper-small-a16w8
Modalixで、3つのDevKitローカルモデルディレクトリすべてを含むサーバーを開始します。
C++ (prebuilt):
./lib/sima-neat/tutorials/tutorial_021_serve_genai_models \
--llm /media/nvme/llima/models/Qwen3-4B-Instruct-2507-GPTQ-a16w4 \
--vlm /media/nvme/llima/models/Qwen3-VL-4B-Instruct-GPTQ-a16w4 \
--asr /media/nvme/llima/models/whisper-small-a16w8
C++ (build from source):
./build.sh --target tutorial_021_serve_genai_models
./build/tutorials-standalone/tutorial_021_serve_genai_models \
--llm /media/nvme/llima/models/Qwen3-4B-Instruct-2507-GPTQ-a16w4 \
--vlm /media/nvme/llima/models/Qwen3-VL-4B-Instruct-GPTQ-a16w4 \
--asr /media/nvme/llima/models/whisper-small-a16w8
開発中にサブセットのみを提供したい場合は、--vlmまたは--asrを削除します。
サーバーが実行されたら、最初にすべての提供する名前が登録されていることを確認します。
curl http://<modalix-ip>:9998/v1/models
次に、クライアントからエンドポイントを呼び出します。<modalix-ip> を、お使いの Modalix デバイスの IP アドレスまたはホスト名に置き換えてください。
以下に示すリクエストクライアントは、Python の requests を使用し、レスポンスをストリーミングし、サーバー側の TTFT に加えて、報告された場合のトークンごとの平均、最小、および最大 TPS を出力します。