2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker Model Runnerがすごい】開発環境ひとつに1LLM時代へ

Posted at

Docker Model Runnerとは?

Docker Model Runnerは、

  • 機械学習モデル(例:LLM)をDockerコンテナ感覚で起動できる仕組み
    です。

機械学習モデルをAPIサーバー化するには、

  • ライブラリインストール
  • モデルロードコードの実装
  • 推論エンドポイントの作成
    といった工程が必要でしたが、

Model Runnerを使うと

docker model run <モデル名>

このコマンド1行

  • モデルの取得
  • サーバー立ち上げ
  • APIエンドポイント公開
    まで自動で完了します。

Model Runner全体イメージ図

[ Docker Hub上のモデル ]
        ↓ pull
+----------------------+
| Docker Model Runner   |
| (モデル実行環境)       |
+----------------------+
        ↓ API公開
[ Webアプリケーションからアクセス ]

特徴まとめ

特徴 内容
セットアップ不要 依存関係やサーバーコードを意識せず即起動
Docker CLIから操作 docker model runコマンドだけでOK
標準化されたAPI OpenAI互換エンドポイント(/v1/completionsなど)を自動提供
将来的にGPUサポート予定 現時点はCPUメイン、GPUロードマップあり

実際にWebサーバーと連携できるのか?

結論,可能です

Docker Model Runnerが公開するエンドポイントは普通のREST APIなので、
別のWebサーバー(Flask, FastAPI, Next.jsなど)から問題なく通信できます。


Webサーバーとの連携構成図

+-----------------+        HTTP POST        +------------------------+
| Web Application | --------------------->  | Docker Model Runner LLM |
| (e.g., Flask)   |                         | (モデルAPIサーバー化)    |
+-----------------+                         +------------------------+

実際のdocker-compose例

docker-compose.ymlを使って、LLMサーバーとWebサーバーを立ち上げる例です。

version: '3.8'
services:
  llm:
    image: ghcr.io/docker/model-runner
    ports:
      - "11434:11434"
    command: --model mistralai/Mistral-7B-Instruct-v0.1

  web:
    build: ./web
    ports:
      - "3000:3000"
    environment:
      - LLM_SERVER=http://llm:11434
    depends_on:
      - llm
  • llmコンテナ(Model Runner)がポート11434でモデルAPIを公開
  • webコンテナ(Webアプリ)がhttp://llm:11434にアクセスして推論リクエストを送信

Compose内ネットワークにより、サービス名(llm)をホスト名として利用できます。


Webサーバー側サンプル(Flaskの場合)

簡単なFlaskアプリを例に、Model Runnerに質問するコードを示します。

import requests
from flask import Flask, request, jsonify

app = Flask(__name__)
LLM_SERVER = "http://llm:11434"

@app.route("/ask", methods=["POST"])
def ask():
    user_prompt = request.json["prompt"]
    res = requests.post(
        f"{LLM_SERVER}/v1/chat/completions",
        json={"messages": [{"role": "user", "content": user_prompt}]}
    )
    return jsonify(res.json())

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=3000)

注意点(2025年4月現在)

注意点 内容
一般公開はまだ 現在はクローズドβ。招待制で利用可能。
サインアップ必要 公式サイトから申し込み可能。
モデルは制限あり 初期はMistralやLlamaベースの中小モデル中心。
CPU優先 現時点はGPU非対応。将来対応予定あり。

まとめ

Docker Model Runnerを使うことで、

  • モデルAPIサーバーの構築を極限まで簡単にできる
  • Docker Composeを使えばWebアプリから自然に連携できる

といった大きなメリットがあります。

正式版リリースが非常に楽しみです。
興味がある方は、今のうちにβ版登録をしてみることをおすすめします!

▶︎ Docker Model Runner Beta Sign-up


最後に

DockerがAIインフラに本格参入してきた今、
開発者にとって「モデルを自由に扱うスキル」はますます重要になっていくと感じました。

今後、個人開発や小規模チームでも強力なLLMを扱える時代が到来しそうです。
これからの進化にも注目していきたいと思います!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?