>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Python

OpenAI API対応のオープンソースAIモデルを1コマンドでデプロイする方法

OpenAIプロジェクトが成長すると、プライバシーやコスト削減の問題がほぼ必ず発生します。ローカルのLlama 3やQwenをデプロイしたいと思っても、インフラの面倒が始まります。vLLMの設定、FastAPIラッパーの作成、ストリーミング応答の実装、フォーマットの互換性確保、そしてすべてをDockerでラップする必要があります。

BentoMLチームがこの定型的な作業をOpenLLMユーティリティにパッケージ化了しました。本質的には、カタログからオープンモデルを取得し、1つのコンソールコマンドでOpenAIフォーマットのエンドポイントを持つ本格的なサーバーを起動するツールです。

hello

内部構造と必要な理由

OpenLLMは独自の推論エンジンをゼロから開発していません。開発者は実績のあるソリューションを採用し、 готовуюスタックとして組み立てました:

  • 最適化されたメモリペイジングを備えたvLLMが推論バックエンドとして使用されます。
  • Astralのuvユーティリティがパッケージ管理と高速な依存関係ロードを処理します。
  • モデルはBentoML標準に従ってパッケージ化されているため、サーバーはすぐにKubernetesやクラウドへのデプロイ готовです。
  • 迅速な手動テストのために、軽量なWebインターフェースchatgpt-liteが組み込まれています。

このアプローチの主な利点は、クライアントコードを書き直す必要がないことです。アプリケーションがすでにPython、TypeScript、またはGoで標準的なOpenAIライブラリを使用している場合は、ベースURLを変更してダミーのAPIキーを渡すだけで済みます。

クイックスタートとローカル起動

OpenLLMは標準的なpipでインストールできます。基本的な検証用のインタラクティブなグリーティングコマンドがあります:

pip install openllm
openllm hello

特定のモデル起動するには、 コマンドを使用します。例えば、Llama 3.2の場合:

# Для закрытых моделей Meta нужен токен Hugging Face
export HF_TOKEN=hf_your_token_here

openllm serve llama3.2:1b

コマンドを実行すると、ポート3000でサーバーが起動します。公式のOpenAIクライアントを使用してすぐに接続できます:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:3000/v1", 
    api_key="na"
)

chat_completion = client.chat.completions.create(
    model="meta-llama/Llama-3.2-1B-Instruct",
    messages=[
        {
            "role": "user",
            "content": "Объясни квантовую запутанность простыми словами"
        }
    ],
    stream=True,
)

for chunk in chat_completion:
    print(chunk.choices[0].delta.content or "", end="")

Python SDK 외에도、LlamaIndexやLangChainなどのライブラリに問題없이接続できます。単に を渡すだけです。

組み込みWebインターフェースとターミナル操作

まだコードを書く気がなくて、特定のプロンプトでのモデル応答の品質を確認だけしたい場合は、OpenLLMには組み込みのUIがあります。サーバーを起動すると、 で利用可能です。

openllm_ui

インターフェースはミニマリストで、余計な設定はありません。ブラウザでタブを開き、テキストを入力して、ストリーミング速度と生成を評価します。

ターミナルから離れたくない人のために、直接チャットコマンドがあります:

openllm run llama3:8b

コンソール内でモデルと通信するためのインタラクティブセッションがすぐに開きます。

サポートされているモデルとハードウェア要件

OpenLLMは、小さなローカルネットワークから大規模なクラスター variants まで、適切なモデルのリストをサポートしています:

  • DeepSeek(r1-671bまで、80GBのカードを16枚必要とします)
  • Llamaファミリー(バージョン3.1、3.2、3.3および実験的ビルド)
  • Qwen 2.5およびQwen 2.5 Coder
  • Gemma 2およびGemma 3
  • Mistral 8BおよびMistral Large
  • Phi-4

コマンドでカタログ全体を表示できます:

openllm model list

重みが更新された場合または центральномуリポジトリに新しいリリースが追加された場合、リストは経由で同期されます。BentoML形式でパッケージ化された特定の微調整を含む独自のリポジトリを接続することもできます。

本番環境への移行

ローカル起動は実験に最適ですが、本番環境ではサーバーは負荷下でスケールする必要があります。プロジェクトはBentoMLの作成者によって作成されているため、彼らのインフラとの直接統合があります。

bentocloud_ui

BentoCloudへのデプロイは文字通り1行で完了します:

openllm deploy llama3.2:1b --env HF_TOKEN

これにより、リクエスト数に基づく自動スケーリング、メトリクス、レイテンシ監視を備えた готовуюサービスをデプロイし、生のKubernetesマニフェストを扱う必要はありません。

ニュアンスと制限事項

OpenLLMを操作する際には、いくつかのことに注意する必要があります:

  1. VRAMの食欲。KV-cache用の事前割り当てメモリを備えたvLLMが内部で実行されているため、小さな1-3Bパラメータモデルでもデフォルト設定で12-24GBのVRAMが必要になる場合があります。离散GPUのない通常のラップトップでは、重いネットワークを実行することはできません。
  2. Hugging Faceトークン。OpenLLMは重み自体を保存しませんが、ハブからダウンロードします。クローズドライセンスのモデル(Meta Llama、Mistral)の場合は、事前にHugging Faceでアクセスを取得し、環境変数として を渡す必要があります。
  3. パブリックリポジトリ。現在、カスタムモデルカタログの追加はパブリックのGitリポジトリのみサポートされています。

誰が役立つか

OpenLLMは、Ollamaのようなホームユーティリティと複雑なエンタープライズフレームワークの間のギャップを埋めます。既存のパイプラインへの統合用のOpenAIインターフェースを持つクイックなセルフホスト型バックエンドが必要な場合、BentoMLとvLLMベースのサービスを数分で組み立てることができます。

適切なNVIDIA GPUを備えた任意のーマシンで、Gemma 2BやLlama 3.2 1Bなどのコンパクトなモデルから始めて、プロジェクトを試すことができます。

関連プロジェクト