メインコンテンツへスキップ
このページでは、W&B Serverless Inference で独自のカスタム LoRA アダプター アダプターを提供する方法を説明します。インフラストラクチャーを管理することなく、サポート対象のベースモデルのファインチューニング済みバリアントをデプロイしたい開発者や ML 実務者向けの内容です。 LoRA アダプター (Low-Rank Adaptation) を使用すると、完全に新しいモデル全体ではなく、軽量な追加アダプターだけをトレーニングして保存することで、大規模言語モデルをカスタマイズできます。これにより、カスタマイズに必要な容量とコストを削減できます。 LoRA アダプター をトレーニングするかアップロードすることで、ベースモデルに新しい機能を持たせることができます。たとえば、カスタマー サポート、クリエイティブ ライティング、特定の技術分野向けに特化させることができます。これにより、モデル全体を再トレーニングしたり再デプロイしたりすることなく、モデルの動作を調整できます。

LoRAs で Serverless Inference を使用する理由

LoRAs 向けの Serverless Inference には、次の利点があります。
  • 一度アップロードすれば、サーバーを管理せずにデプロイできます。
  • アーティファクト のバージョン管理により、どのバージョンが本番稼働中かをトラッキングできます。
  • モデル全体の重みではなく、小さな LoRA ファイルを差し替えるだけで、モデルを更新できます。

ワークフロー

大まかには、カスタム LoRA アダプター を提供するには 3 つの手順があります。
  1. LoRA アダプター の重みを W&B アーティファクトとしてアップロードします
  2. API で、モデル名としてアーティファクト URI を指定します
  3. W&B が推論時に重みを動的に読み込みます
以下は、Serverless Inference を使用してカスタム LoRA アダプター モデルを呼び出す例です。以下のセクションでは、ここで参照している LoRA アダプター をアップロードまたはトレーニングする方法について説明します。
from openai import OpenAI

model_name = f"wandb-artifact:///{WB_TEAM}/{WB_PROJECT}/qwen_lora:latest"

client = OpenAI(
    base_url="https://api.inference.wandb.ai/v1",
    api_key=API_KEY,
    project=f"{WB_TEAM}/{WB_PROJECT}",
)

resp = client.chat.completions.create(
    model=model_name,
    messages=[{"role": "user", "content": "Say 'Hello World!'"}],
)
print(resp.choices[0].message.content)
LoRA アダプター を作成し、それをアーティファクトとして W&B にアップロードする方法を対話形式で示したデモについては、このスタートガイドノートブックをご覧ください。

前提条件

以下が必要です。

LoRA アダプター を追加して使用する

LoRA アダプター は、2 つの方法で W&B アカウントに追加して使用を開始できます。LoRA アダプター をトレーニングした場所に応じて、対応するタブを選択してください。
独自のカスタム LoRA アダプター ディレクトリを W&B アーティファクト としてアップロードします。LoRA アダプター を別の環境 (ローカル環境、cloud provider、またはパートナーサービス) でトレーニングした場合は、この方法を使用します。この Python コードは、ローカルに保存された LoRA アダプター の重みを、バージョン管理された アーティファクト として W&B にアップロードします。必要なメタデータ (ベースモデル と storage region) を含む lora タイプの アーティファクト を作成し、ローカルディレクトリから LoRA アダプター ファイルを追加して、推論で使用できるよう W&B のプロジェクトにログします。
import wandb

run = wandb.init(entity=WB_TEAM, project=WB_PROJECT)

artifact = wandb.Artifact(
    "qwen_lora",
    type="lora",
    metadata={"wandb.base_model": "OpenPipe/Qwen3-14B-Instruct"},
    storage_region="coreweave-us",
)

artifact.add_dir("[PATH-TO-LORA-WEIGHTS]")
run.log_artifact(artifact)

主な要件

独自の LoRA アダプター を Inference で使用するには、次の点を満たしていることを確認してください。
  • LoRA アダプター は、サポートされているベースモデル section に記載されているモデルのいずれかを使用してトレーニングされている必要があります。
  • LoRA アダプター は、W&B アカウント内に lora タイプの アーティファクト として PEFT 形式で保存されている必要があります。
  • 低レイテンシを実現するため、LoRA アダプター は storage_region="coreweave-us" に保存されている必要があります。
  • アップロード時には、トレーニングに使用した ベースモデル の名 (たとえば meta-llama/Llama-3.1-8B-Instruct) を含めてください。これにより、W&B は適切なモデルで読み込めます。
使用した方法に関係なく、LoRA アダプター を アーティファクト としてプロジェクトに追加した後は、その URI をモデル名として渡すことで、任意の推論 call から参照できます。
# トレーニングが完了したら、アーティファクトを直接使用する
model_name = f"wandb-artifact:///{WB_TEAM}/{WB_PROJECT}/your_trained_lora:latest"

サポートされているベースモデル

LoRA アダプターは、以下のいずれかのベースモデルに対してトレーニングされている必要があります。wandb.base_model を設定する際は、正確なモデル ID の string を使用してください。これにより、W&B は推論時にアダプターを正しいベースモデルと対応付けることができます。
モデル ID (API 用)最大 LoRA ランク
meta-llama/Llama-3.1-70B-Instruct16
meta-llama/Llama-3.1-8B-Instruct16
openai/gpt-oss-120b64
OpenPipe/Qwen3-14B-Instruct16
Qwen/Qwen3.6-27B16
Qwen/Qwen3-30B-A3B-Instruct-250716

料金

常時稼働のサーバーや専用 GPU インスタンスではなく、ストレージと実行した推論分に対してのみ料金が発生します。料金は次の 2 つの要素で構成されます。
  • ストレージ: LoRA アダプター の重みを保持するストレージに対して課金されます。
  • 推論使用量: LoRA アダプター アーティファクトを使用する Call には、標準的なモデル推論と同じ料金率が適用されます。