コンテンツにスキップ

LoRAアダプタの使用

ベータ

Workers AIは、Low-Rank Adaptationでトレーニングされたアダプタによるファインチューニング推論をサポートしています。この機能はオープンベータ中であり、この期間中は無料です。

制限事項

  • 次のモデルに対してのみLoRAをサポートしています(量子化されてはいけません):
    • @cf/meta-llama/llama-2-7b-chat-hf-lora
    • @cf/mistral/mistral-7b-instruct-v0.2-lora
    • @cf/google/gemma-2b-it-lora
    • @cf/google/gemma-7b-it-lora
  • アダプタはランク r <=8 でトレーニングされる必要があります。事前トレーニングされたLoRAアダプタのランクは、アダプタの config.json ファイルで確認できます。
  • LoRAアダプタファイルは100MB未満でなければなりません。
  • LoRAアダプタファイルは、正確に adapter_config.jsonadapter_model.safetensors という名前でなければなりません。
  • アカウントごとに最大30個のLoRAアダプタをテストできます。

互換性のあるLoRAアダプタの選択

オープンソースのLoRAアダプタを見つける

Workers AIと互換性のあるいくつかのLoRAアダプタをリストしたHugging Face Collectionを開始しました。一般的に、上記の制限に適合するLoRAアダプタは動作するはずです。

自分のLoRAアダプタをトレーニングする

自分のLoRAアダプタをトレーニングするには、チュートリアルに従ってください。


LoRAアダプタのアップロード

Workers AIでLoRAを使用して推論を実行するには、アカウントで新しいファインチューニングを作成し、アダプタファイルをアップロードする必要があります。モデルの重みを含む adapter_model.safetensors ファイルと、設定情報を含む adapter_config.json ファイルを用意してください。これらのタイプのアダプタファイルのみを受け付けることに注意してください。

現在、アップロード後にファインチューニングのアセットファイルを編集することはできません。これをすぐにサポートしますが、今のところ新しいLoRAを使用したい場合は、新しいファインチューニングを作成し、再度ファイルをアップロードする必要があります。

LoRAアダプタをアップロードする前に、adapter_config.json ファイルを編集して、model_typemistralgemma、または llama のいずれかとして以下のように含める必要があります。

{
"alpha_pattern": {},
"auto_mapping": null,
...
"target_modules": [
"q_proj",
"v_proj"
],
"task_type": "CAUSAL_LM",
"model_type": "mistral",
}

Wrangler

次のコマンドを使用して、wranglerを介してファインチューニングを作成し、LoRAアダプタをアップロードできます。

wrangler CLI
npx wrangler ai finetune create <model_name> <finetune_name> <folder_path>
#🌀 モデル "@cf/mistral/mistral-7b-instruct-v0.2-lora" の新しいファインチューニング "test-lora" を作成中...
#🌀 ファイル "/Users/abcd/Downloads/adapter_config.json" を "test-lora" にアップロード中...
#🌀 ファイル "/Users/abcd/Downloads/adapter_model.safetensors" を "test-lora" にアップロード中...
#✅ アセットがアップロードされ、ファインチューニング "test-lora" が使用可能です。
npx wrangler ai finetune list
┌──────────────────────────────────────┬─────────────────┬─────────────┐
finetune_id name description
├──────────────────────────────────────┼─────────────────┼─────────────┤
00000000-0000-0000-0000-000000000000 test-lora
└──────────────────────────────────────┴─────────────────┴─────────────┘

REST API

また、REST APIを使用してファインチューニングを作成し、アダプタファイルをアップロードすることもできます。REST APIに呼び出しを行うには、Workers AI: Edit 権限を持つCloudflare APIトークンが必要です。これはCloudflareダッシュボードを介して生成できます。

アカウントでのファインチューニングの作成

cURL
## 入力: ユーザー定義のファインチューニング名
## 出力: ユニークな finetune_id
curl -X POST https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/finetunes/ \
-H "Authorization: Bearer {API_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{
"model": "SUPPORTED_MODEL_NAME",
"name": "FINETUNE_NAME",
"description": "OPTIONAL_DESCRIPTION"
}'

アダプタの重みと設定のアップロード

新しいファイルをアップロードするたびにアップロードエンドポイントを呼び出す必要があるため、通常は adapter_model.safetensorsadapter_config.json のそれぞれに対してこれを一度ずつ実行します。ファイルへのパスの前に @ を含めることを確認してください。

ファインチューニングを作成したときに使用したファインチューニングの name または id を使用できます。

cURL
## 入力: finetune_id, adapter_model.safetensors, その後 adapter_config.json
## 出力: 成功 true/false
curl -X POST https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/finetunes/{FINETUNE_ID}/finetune-assets/ \
-H 'Authorization: Bearer {API_TOKEN}' \
-H 'Content-Type: multipart/form-data' \
-F 'file_name=adapter_model.safetensors' \
-F 'file=@{PATH/TO/adapter_model.safetensors}'

アカウント内のファインチューニングのリスト

このメソッドを呼び出して、アカウント内で作成したファインチューニングを確認できます。

cURL
## 入力: なし
## 出力: 成功 true/false
curl -X GET https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/finetunes/ \
-H 'Authorization: Bearer {API_TOKEN}'

LoRAを使用した推論の実行

推論リクエストを行い、LoRAアダプタを適用するには、モデルとファインチューニングの name または id が必要です。LoRAがトレーニングされたチャットテンプレートを使用する必要がありますが、以下のように raw: true とメッセージテンプレートを使用して実行してみることもできます。

const response = await env.AI.run(
"@cf/mistralai/mistral-7b-instruct-v0.2-lora", //LoRAをサポートするモデル
{
messages: [{"role": "user", "content": "Hello world"}],
raw: true, //デフォルトのチャットテンプレートの適用をスキップ
lora: "00000000-0000-0000-0000-000000000", //ファインチューニングのidまたはname
}
);