Docker Model Runner を使用して AI モデルをローカルでビルド、実行、パッケージ化する方法

概要

シニアDevOpsエンジニアおよびDockerキャプテンとして、小売業のパーソナライゼーションから医用画像まで、あらゆるAIシステムの構築を支援してきました。1つの真実が際立っているのは、AI機能が現代のインフラストラクチャの中核であるということです。

このガイドでは、Docker Hub または Hugging Face から取得した AI モデルを操作するための軽量で開発者向けのツールである Docker Model Runner を使用して、ローカル AI モデルを実行およびパッケージ化する方法を示します。CLI または API を使用してモデルを実行する方法、独自のモデル成果物を公開する方法、Python 環境や Web サーバーを設定することなくすべてを行う方法を学びます。

AI in Developmentとは?

人工知能(AI)とは、人間の知能を模倣するシステムを指します。

  • 機械学習による意思決定
  • NLPによる言語の理解
  • コンピュータビジョンによる画像の認識
  • 新しいデータから自動的に学習する

開発中のAIの一般的なタイプ:

  • 機械学習(ML):構造化データと非構造化データから学習します
  • ディープラーニング:パターン認識のためのニューラルネットワーク
  • 自然言語処理(NLP):人間の言語を理解/生成します
  • Computer Vision: 画像を認識して解釈します

なぜ独自のAIモデルをパッケージ化して実行するのか?

ローカルモデルのパッケージ化と実行により、AIワークフローを完全に制御できます。外部APIに頼る代わりに、マシン上で直接モデルを実行することができます。

  • ローカルコンピューティングによる推論の高速化(API呼び出しによる遅延なし)
  • データとプロンプトを独自のハードウェアに保持することでプライバシーを強化
  • 独自のモデルのパッケージ化とバージョン管理によるカスタマイズ
  • Docker や GitHub Actions などのツールとのシームレスな CI/CD 統合
  • エッジのユースケースや制約のある環境向けのオフライン機能

Docker や Hugging Face などのプラットフォームにより、ゼロから構築しなくても、最先端の AI モデルにすぐにアクセスできます。それらをローカルで実行することは、レイテンシーが短く、プライバシーが向上し、イテレーションが高速になることを意味します。

AIの実世界でのユースケース

  • チャットボットとバーチャルアシスタント:サポートの自動化(例:ChatGPT、Alexa)
  • ジェネレーティブAI:テキスト、アート、音楽(Midjourney、Lensaなど)を作成します
  • 開発ツール: オートコンプリートとデバッグ コード (GitHub Copilot など)
  • リテールインテリジェンス:行動に基づいて製品を推奨します
  • 医用画像:スキャンを分析して診断を迅速化

Docker Model Runnerを使用してAIモデルをローカルにパッケージ化して実行する方法

前提 条件:

ステップ 0 — Docker Model Runner を有効にする

Docker Desktop を開く

[設定] → [開発中の機能] に移動します

[試験的機能] タブで、[Access 試験的機能] を有効にします

[適用して再起動] をクリックします

Docker Desktop を終了して再度開き、変更が有効になっていることを確認します

開発中の機能→設定を再度開く

[ベータ] タブに切り替えて、[Docker Model Runner を有効にする] をオンにします

(オプション) ホストサイドの TCP サポートを有効にして、localhost から API にアクセスします

有効にすると、 docker model CLI を使用して、[モデル] タブでモデルを管理できるようになります。

Docker Model Runner と Dev Environments が有効になっている [開発] タブの Docker Desktop の [機能] のスクリーンショット。

Docker Model Runner と Dev Environments が有効になっている [開発] タブの Docker Desktop の [機能] のスクリーンショット。

ステップ 1:モデルをプルする

Docker Hub から:

docker model pull ai/smollm2

または、Hugging Face(GGUF形式)から:

docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF

手記:GGUF モデルのみがサポートされています。GGUF (GPT-style General Use Format) は、特に CPU に最適化された (llama.cpp) ランタイムで効率的なローカル推論を行うために設計された軽量のバイナリ ファイル形式です。モデルの重み付け、トークナイザー、メタデータがすべて 1 か所に含まれているため、コンテナ化された環境での LLM のパッケージ化と配布に最適です。

ステップ 2:タグを付けてローカルレジストリにプッシュする(オプション)

モデルをプライベートレジストリまたはローカルレジストリにプッシュする場合は、次のようにします。

タグ model をレジストリのアドレスに置き換えます。

docker model tag hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF localhost:5000/foobar

ローカルのDockerレジストリを実行します。

docker run -d -p 6000:5000 --name registry registry:2

モデルをローカル レジストリにプッシュします。

docker model push localhost:6000/foobar

ローカルモデルを確認してください。

docker model list

ステップ 3: モデルの実行

プロンプトの実行 (ワンショット)

docker model run ai/smollm2 "What is Docker?"

インタラクティブチャットモード

docker model run ai/smollm2

手記: モデルはオンデマンドでメモリにロードされ、非アクティブな状態が 5 分間続くとアンロードされます。

ステップ 4:OpenAI互換APIによるテスト

ホストからモデルを呼び出すには、次のようにします。

  1. モデルランナーの TCPホストアクセス を有効にする(Docker Desktop GUIまたはCLIを使用)
Docker Model Runner でホスト側の TCP サポートが有効になっていることを示す、開発タブの Docker Desktop の [機能] のスクリーンショット。

Docker Model Runner でホスト側の TCP サポートが有効になっていることを示す、開発タブの Docker Desktop の [機能] のスクリーンショット。

docker desktop enable model-runner --tcp 12434
  1. OpenAI 互換のチャット エンドポイントを使用してプロンプトを送信します。
curl http://localhost:12434/engines/llama.cpp/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai/smollm2",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "Tell me about the fall of Rome."}
    ]
  }'

手記: APIキーは不要で、マシン上でローカルかつ安全に実行されます。

ステップ 5:独自のモデルをパッケージ化する

すでに.gguf ファイル—Hugging Faceからダウンロードしたものや、 llama.cppなどのツールを使用して変換したものなど。

手記: このガイドは、すでに .ggufモデルファイル。モデルをトレーニングする方法や GGUF に変換する方法については説明しません。

docker model package \
  --gguf "$(pwd)/model.gguf" \
  --license "$(pwd)/LICENSE.txt" \
  --push registry.example.com/ai/custom-llm:v1

これは、カスタムトレーニング済みモデルやプライベートモデルに最適です。これで、他のモデルと同じように引っ張ることができます。

docker model pull registry.example.com/ai/custom-llm:v1

ステップ 6:最適化と反復

  • docker model logsを使用してモデルの使用状況を監視し、問題をデバッグする
  • CI/CD を設定してプル、スキャン、パッケージ化を自動化する
  • モデルの系統とトレーニングのバージョンを追跡して一貫性を確保
  • カスタムモデルをパッケージ化する際には、latestの代わりにセマンティックバージョニング(:v1, :2025-05など)を使用します
  • 一度にロードできるモデルは 1 つだけです。新しいモデルをリクエストすると、前のモデルがアンロードされます。

Compose 統合(オプション)

Docker Compose v2.35+(Docker Desktop 4.41+ に含まれています) は、新しい provider.type: model を使用した AI モデル サービスのサポートを導入しています。モデルを compose.yml で直接定義し、 depends_onを使用してアプリ サービスで参照できます。

docker compose up中、Docker Model Runner はモデルを自動的にプルしてホスト システムで開始し、MY_MODEL_URLMY_MODEL_MODEL などの環境変数 (MY_MODEL はモデル サービスの名前と一致する) を使用して、接続の詳細を依存サービスに挿入します。

これにより、シームレスなマルチコンテナAIアプリケーションが可能になり、余分なグルーコードは必要ありません。詳細情報

AI開発の課題を乗り越える

  • レイテンシ: 量子化された GGUF モデルを使用
  • セキュリティ:不明なモデルを実行しないでください。ソースの検証とライセンスの添付
  • コンプライアンス:PIIをマスクし、データの同意を尊重する
  • コスト: クラウドコンピューティングの請求を避けるためにローカルで実行します

ベストプラクティス

  • 最適な CPU 推論のために GGUF モデルを優先する
  • カスタムモデルをパッケージ化する際には、 --license フラグを使用してコンプライアンスを確保します
  • 代わりに、バージョン管理されたタグ( :v1, :2025-05など)を使用します。 latest
  • モデルログの監視方法 docker model logs
  • プルまたはパッケージ化する前にモデルソースを検証する
  • 信頼できるソース (Docker Hub の ai/ 名前空間や検証済みの Hugging Face リポジトリなど) からのみモデルをプルします。
  • パッケージ化またはデプロイする前に、各モデルのライセンスと使用条件を確認してください。

今後の道のり

  • Retrieval-Augmented Generation (RAG) のサポート
  • マルチモーダルサポートの拡張(テキスト+画像、ビデオ、オーディオ)
  • Docker Compose のサービスとしての LLM (Docker Compose v2.35+ が必要)
  • Docker Desktop のより詳細な Model Dashboard 機能
  • プライベート AI モデルのパッケージ化とデプロイのパイプラインを保護

Docker Model Runner を使用すると、DevOps チームはモデルを他のアーティファクト (プル、タグ付け、バージョン管理、テスト、デプロイ) と同様に扱うことができます。

最終的な考え

AI アプリを構築するために GPU クラスターや外部 API は必要ありません。Docker Model Runner でできることをすべて学び、探索してください。

  • Docker HubまたはHugging Faceから事前構築済みモデルをプル
  • CLI、API、または Docker Desktop の [モデル] タブを使用して、ローカルで実行します
  • 独自のモデルをOCIアーティファクトとしてパッケージ化してプッシュします
  • CI/CDパイプラインと安全に統合

また、開始するためのその他の役立つ情報も次の場所で見つけることができます。 

コンテナをデプロイするだけでなく、インテリジェンスを提供します。

さらに詳しく

投稿カテゴリ

関連記事