Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

LoRA アダプターを使う

最終更新 Markdown で表示Agent セットアップ

Workers AI は、Low-Rank Adaptation で学習したアダプターによるファインチューニング推論に対応しています。この機能はオープンベータで、期間中は無料です。

制限

  • 対応しているのは、各種モデル 向けの LoRA だけです(量子化モデルは対象外です)
  • アダプターはランク r <=8 で学習したものに加え、最大 32 までの大きなランクにも対応します。事前学習済み LoRA アダプターのランクは、アダプターの config.json で確認できます
  • LoRA アダプターファイルは 300MB 未満である必要があります
  • LoRA アダプターファイルの名前は、adapter_config.jsonadapter_model.safetensors である必要があります
  • アカウントあたり、最大 100 個の LoRA アダプターを試せます

互換性のある LoRA アダプターを選ぶ

オープンソースの LoRA アダプターを探す

Workers AI と互換性のある LoRA アダプターをいくつかまとめた Hugging Face Collection を公開しています。一般に、上記の制限を満たす LoRA アダプターは動作します。

自分で LoRA アダプターを学習する

自分で LoRA アダプターを学習するには、チュートリアル に従ってください。


LoRA アダプターをアップロードする

Workers AI で LoRA を使った推論を実行するには、アカウント上に新しい fine tune を作成し、アダプターファイルをアップロードする必要があります。モデルの重みを含む adapter_model.safetensors と、設定情報を含む adapter_config.json を用意します。受け付けるアダプターファイルはこの種類だけです。

現時点では、アップロード後に fine tune のアセットファイルを編集できません。まもなく対応予定ですが、新しい LoRA を使う場合は、新しい fine tune を作成してファイルを再アップロードしてください。

LoRA アダプターをアップロードする前に、adapter_config.json を編集し、model_typemistralgemmallama のいずれかにしてください。次の例を参照してください。

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

Wrangler

次のコマンドで、Wrangler から finetune を作成し、LoRA アダプターをアップロードできます。

wrangler CLIbash
npx wrangler ai finetune create <model_name> <finetune_name> <folder_path>
#🌀 Creating new finetune "test-lora" for model "@cf/mistral/mistral-7b-instruct-v0.2-lora"...
#🌀 Uploading file "/Users/abcd/Downloads/adapter_config.json" to "test-lora"...
#🌀 Uploading file "/Users/abcd/Downloads/adapter_model.safetensors" to "test-lora"...
#✅ Assets uploaded, finetune "test-lora" is ready to use.

npx wrangler ai finetune list
┌──────────────────────────────────────┬─────────────────┬─────────────┐
 finetune_id name description
├──────────────────────────────────────┼─────────────────┼─────────────┤
 00000000-0000-0000-0000-000000000000 test-lora
└──────────────────────────────────────┴─────────────────┴─────────────┘

REST API

または、REST API で finetune を作成し、アダプターファイルをアップロードできます。REST API を呼び出すには、Workers AI: Edit 権限を持つ Cloudflare API トークンが必要です。Cloudflare ダッシュボードで発行できます。

アカウント上に fine-tune を作成する

Required API token permissions

At least one of the following token permissions is required:
  • Workers AI Write
Create a new Finetunebash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai/finetunes" \
	--request POST \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
	--json '{
		"model": "SUPPORTED_MODEL_NAME",
		"name": "FINETUNE_NAME",
		"description": "OPTIONAL_DESCRIPTION"
	}'

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

新しいファイルをアップロードするたびに、このアップロードエンドポイントを呼び出す必要があります。通常は adapter_model.safetensorsadapter_config.json で 1 回ずつ実行します。ファイルパスの前に @ を付けてください。

fine tune を作成したときに使った name または id のいずれかを指定できます。

cURLbash
## Input: finetune_id, adapter_model.safetensors, then adapter_config.json
## Output: success 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}'

アカウント内の fine-tune を一覧する

このメソッドを呼び出すと、アカウント内に作成した fine-tune を確認できます。

Required API token permissions

At least one of the following token permissions is required:
  • Workers AI Write
  • Workers AI Read
List Finetunesbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/ai/finetunes" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
{
	"success": true,
	"result": [
		[
			{
				"id": "00000000-0000-0000-0000-000000000",
				"model": "@cf/meta-llama/llama-2-7b-chat-hf-lora",
				"name": "llama2-finetune",
				"description": "test"
			},
			{
				"id": "00000000-0000-0000-0000-000000000",
				"model": "@cf/mistralai/mistral-7b-instruct-v0.2-lora",
				"name": "mistral-finetune",
				"description": "test"
			}
		]
	]
}

LoRA で推論を実行する

推論リクエストを送り、LoRA アダプターを適用するには、モデルと finetune の name または id が必要です。LoRA の学習に使ったチャットテンプレートを使うのがよいですが、次のように raw: true と messages テンプレートで試すこともできます。

const response = await env.AI.run(
	"@cf/mistralai/mistral-7b-instruct-v0.2-lora", //the model supporting LoRAs
	{
		messages: [{ role: "user", content: "Hello world" }],
		raw: true, //skip applying the default chat template
		lora: "00000000-0000-0000-0000-000000000", //the finetune id OR name
	},
);
curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/ai/run/@cf/mistral/mistral-7b-instruct-v0.2-lora \
  -H 'Authorization: Bearer {API_TOKEN}' \
  -d '{
    "messages": [{"role": "user", "content": "Hello world"}],
    "raw": "true",
    "lora": "00000000-0000-0000-0000-000000000"
  }'

役に立ちましたか?