← Cloudflare Workers AI / workers-ai / features / fine-tunes
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í
- LoRAs podporujeme pouze pro řada modelů (nesmí být kvantovaný)
- Adaptér musí být trénován s parametrem rank
r <=8a také vyšší hodnoty ranku až do 32. Rank předtrénovaného LoRA adaptéru zjistíte v jehoconfig.jsonsoubor - Soubor adaptéru LoRA musí mít velikost < 300 MB
- Soubory adaptérů LoRA musí být pojmenovány
adapter_config.jsonaadapter_model.safetensorspřesně - Na jeden účet můžete otestovat až 100 adaptérů LoRA
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ů:
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é:Workers AI Write
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.
## 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é:Workers AI WriteWorkers AI Read
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"
}'