跳转到内容
搜索文档

使用 LoRA adapter

最后更新 查看 MarkdownAgent 设置

Workers AI 支持使用 Low-Rank Adaptation 训练的 adapter 进行微调推理。此功能处于 open beta 阶段,在此期间免费。

限制

  • 我们仅支持多种模型的 LoRA(不得量化)
  • Adapter 必须使用 rank r <=8 训练,较大 rank 最高可达 32。可通过 adapter 的 config.json 文件检查预训练 LoRA adapter 的 rank
  • LoRA adapter 文件必须小于 300MB
  • LoRA adapter 文件必须精确命名为 adapter_config.jsonadapter_model.safetensors
  • 每个账户最多可测试 100 个 LoRA adapter

选择兼容的 LoRA adapter

查找开源 LoRA adapter

我们创建了 Hugging Face Collection,列出了与 Workers AI 兼容的若干 LoRA adapter。通常,符合上述限制的 LoRA adapter 都应可用。

训练自己的 LoRA adapter

要训练自己的 LoRA adapter,请按照教程操作。


上传 LoRA adapter

要在 Workers AI 上使用 LoRA 运行推理,需要在账户上创建新的 fine tune 并上传 adapter 文件。你应该有包含模型权重的 adapter_model.safetensors 文件和包含配置信息的 adapter_config.json请注意,我们仅接受这两种类型的 adapter 文件。

目前,上传后无法编辑 fine tune 的资源文件。我们很快会支持此功能,但目前如需使用新 LoRA,需要创建新的 fine tune 并重新上传文件。

上传 LoRA adapter 之前,需要编辑 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 adapter:

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 并上传 adapter 文件。你需要具有 Workers AI: Edit 权限的 Cloudflare API Token 来调用 REST 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 权重和配置

每次上传新文件都需要调用 upload 端点,因此通常对 adapter_model.safetensorsadapter_config.json 各运行一次。确保在文件路径前包含 @

可以使用创建 fine tune 时使用的 finetune nameid

cURLbash
## 输入: finetune_id, adapter_model.safetensors, 然后是 adapter_config.json
## 输出: 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 adapter,需要模型和 finetune 的 nameid。应使用 LoRA 训练时的 chat template,但也可以尝试使用 raw: true 和如下 messages template。

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 或名称
	},
);
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"
  }'

这篇文档对您有帮助吗?