INTEGRITY Dokumentace

Používání adaptérů LoRA

Workers AI podporuje doladěnou inferenci s adaptéry natrénovanými pomocí Low-Rank Adaptation. Tato funkce je v otevřené beta verzi a po tuto dobu je zdarma.

Omezení


Výběr kompatibilních adaptérů LoRA

Vyhledávání open-source adaptérů LoRA

Zahájili jsme Kolekce Hugging Face se seznamem několika LoRA adaptérů kompatibilních s Workers AI. Obecně by měl fungovat jakýkoli LoRA adaptér, který splňuje výše uvedená omezení.

Trénování vlastních adaptérů LoRA

Chcete-li natrénovat vlastní adaptér LoRA, postupujte podle návod.


Nahrávání adaptérů LoRA

Abyste mohli na Workers AI spouštět inferenci s LoRAs, musíte si ve svém účtu vytvořit nový fine tune a nahrát soubory adaptéru. Měli byste mít adapter_model.safetensors soubor s vahami modelu a adapter_config.json svými konfiguračními údaji. Mějte na paměti, že soubory adaptérů přijímáme pouze v těchto typech.

V současné době nelze po nahrání upravovat soubory assetů fine tune. Tuto funkci brzy podpoříme, ale prozatím budete muset vytvořit nový fine tune a soubory nahrát znovu, pokud chcete použít nový adaptér LoRA.

Než nahrajete svůj adaptér LoRA, budete muset upravit svůj adapter_config.json soubor tak, aby obsahoval model_type jako jeden z mistral, gemma nebo llama jako níže.

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

Wrangler

Finetune můžete vytvořit a svůj adaptér LoRA nahrát přes wrangler pomocí následujících příkazů:

wrangler CLI
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

Alternativně můžete pomocí REST API vytvořit finetune a nahrát soubory adaptéru. Budete potřebovat Cloudflare API token s oprávněním Workers AI: Edit oprávnění pro volání našeho REST API, které můžete vygenerovat na Cloudflare Dashboard.

Vytváření fine-tune ve vašem účtu

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
Vytvořte nový Finetune
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"
	}'

Nahrávání vah a konfigurace adaptéru

Endpoint pro nahrávání musíte zavolat pokaždé, když chcete nahrát nový soubor, takže se obvykle spouští jednou pro adapter_model.safetensors a jednou pro adapter_config.json. Nezapomeňte uvést @ před cestou k souborům.

Můžete použít buď finetune name nebo id které jste použili při vytváření finetunu.

cURL
## 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}'

Seznam finetunes ve vašem účtu

Tuto metodu můžete zavolat, abyste zjistili, jaké finetuny jste ve svém účtu vytvořili

Požadovaná oprávnění API tokenu

Alespoň jeden z následujících oprávnění tokenu je povinné:
Seznam Finetunes
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"
			}
		]
	]
}

Spouštění inference s adaptéry LoRA

Chcete-li odesílat inferenční požadavky a použít adaptér LoRA, budete potřebovat svůj model a finetune name nebo id. Měli byste použít chat šablonu, na které byl váš LoRA natrénován, ale můžete zkusit jej spustit s raw: true a šablonu zpráv jako níže.

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"
  }'