Create a model fine-tuning task.
Create a fine-tuning job
For Windows CMD, replace${DASHSCOPE_API_KEY}with%DASHSCOPE_API_KEY%. In PowerShell, use$env:DASHSCOPE_API_KEY.
Text generation
curl --location --request POST "https://dashscope.aliyuncs.com/api/v1/fine-tunes" \
--header "Authorization: Bearer ${DASHSCOPE_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{
"model":"qwen3-14b",
"training_file_ids":[
"86a9fe7f-dd77-43b0-9834-2170e12339ec",
"03ead352-6190-4328-8016-61821c23d4fc"
],
"hyper_parameters":{
"n_epochs":3,
"batch_size":32,
"max_length":8192,
"learning_rate":"1.6e-5",
"lr_scheduler_type":"linear",
"split":0.9
},
"training_type":"sft",
"finetuned_output_suffix":"suffix"
}'
Video and image generation
curl --location 'https://dashscope.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer ${DASHSCOPE_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{
"model": "wan2.5-i2v-preview",
"training_file_ids": [
"<Replace with the file ID of your training dataset>"
],
"training_type": "efficient_sft",
"hyper_parameters": {
"n_epochs": 400,
"batch_size": 2,
"learning_rate": 2e-5,
"split": 0.9,
"max_split_val_dataset_sample": 5,
"eval_epochs": 50,
"max_pixels": 36864,
"save_total_limit": 10,
"lora_rank": 32,
"lora_alpha": 32
}
}'
Input parameters
|
Parameter |
Required |
Type |
Location |
Description |
|
training_file_ids |
Yes |
Array |
Body |
A list of file IDs for the training set. File IDs are generated by the File Management API. |
|
validation_file_ids |
No |
Array |
Body |
A list of file IDs for the validation set. File IDs are generated by the File Management API. |
|
model |
Yes |
String |
Body |
The ID of the model to fine-tune. This can be a base model ID or the ID of a model from a previous tuning job. Video/image generation models support the following
|
|
hyper_parameters |
No |
Map |
Body |
An object that contains the hyperparameters for the tuning job. The supported parameters and their default values vary by model. To view the actual default values, select the corresponding model and tuning method in the console.
|
|
training_type |
No |
String |
Body |
The tuning method. Valid values are |
|
job_name |
No |
String |
Body |
A name for the tuning job. |
|
model_name |
No |
String |
Body |
The name of the resulting fine-tuned model. |
Text generation model
Settings for hyper_parameters
CosyVoice
These parameters apply only to the cosyvoice-v3-flash model. They are distinct from the n_epochs, batch_size, and max_length parameters for text generation models.
|
Parameter |
Required |
Recommended |
Value |
Description |
|
lm_max_epoch |
Yes |
60 |
[1, 2147483647] |
Number of epochs for LM tuning. |
|
lm_step |
Yes |
5 |
[1, 2147483647] |
Interval, in epochs, for saving LM checkpoints. |
|
lm_num |
Yes |
3 |
[1, 2147483647] |
Maximum number of LM checkpoints to keep. |
|
lm_batch_size |
Yes |
1000 |
[1, 2147483647] |
Batch size for LM tuning. |
|
fm_max_epoch |
Yes |
100 |
[1, 2147483647] |
Number of epochs for FM tuning. |
|
fm_step |
Yes |
10 |
[1, 2147483647] |
Interval, in epochs, for saving FM checkpoints. |
|
fm_num |
Yes |
3 |
[1, 2147483647] |
Maximum number of FM checkpoints to keep. |
|
fm_batch_size |
Yes |
2000 |
[1, 2147483647] |
Batch size for FM tuning. |
CosyVoice tuning currently supports only efficient_sft for the training_type parameter. For a complete request example and an end-to-end workflow, refer to the CosyVoice model tuning user guide.
Hyperparameters for video generation models
These hyperparameters apply only to video generation models (Wan series). If model performance is poor or training fails to converge, consider adjusting n_epochs or learning_rate. A minimum of 800 total training steps is recommended.
Parameter |
Type |
Required |
Description |
Recommended value |
batch_size |
int |
Yes |
Batch size. The number of data samples processed in a single training iteration.
|
Varies by model |
n_epochs |
int |
Yes |
Number of training epochs. The total number of steps is calculated as: steps = n_epochs × ⌈dataset size / batch_size⌉. A minimum of 800 total steps is recommended. Example: If the dataset has 5 samples and |
400 |
learning_rate |
float |
Yes |
Learning rate. Controls the magnitude of model weight updates during training. A value that is too high can degrade model performance, while a value that is too low may result in insignificant changes. |
2e-5 |
eval_epochs |
int |
Yes |
Validation interval. The interval, in epochs, at which to perform validation and save a checkpoint. The value must be ≥ |
50 |
max_pixels |
int |
Yes |
Maximum resolution for training videos (total pixels = width × height). The system only resizes videos that exceed this value.
|
Varies by model |
split |
float |
No |
Training set split ratio. The proportion of the dataset used for training, with a valid range of (0, 1). This parameter is ignored if |
0.9 |
max_split_val_dataset_sample |
int |
No |
Maximum samples for auto-split validation set. The size of the validation set is the smaller of two values: the result of total_samples × (1 − split) or the value of this parameter. |
5 |
save_total_limit |
int |
No |
Checkpoint save limit. The maximum number of recent checkpoints to keep. The system deletes older checkpoints once this limit is exceeded. |
10 |
lora_rank |
int |
No |
LoRA rank. The rank (dimension) of the LoRA low-rank matrices. Must be a power of 2 (2n), such as 16, 32, or 64. |
32 |
lora_alpha |
int |
No |
LoRA alpha. The scaling factor for the LoRA weights. Must be a power of 2 (2n), such as 16, 32, or 64. |
32 |
Image generation model hyperparameters
Applies only to the wan2.7-image-pro model. The image generation model uses max_steps and eval_steps to control training steps and the evaluation interval, unlike video models, which use n_epochs/eval_epochs.
Parameter |
Type |
Required |
Description |
Recommended value |
max_steps |
int |
Yes |
Total training steps. A minimum of 500 steps is recommended for proper model convergence. |
800 |
eval_steps |
int |
Yes |
Evaluation interval. The number of steps between evaluations. A checkpoint is saved after each evaluation. |
200 |
learning_rate |
float |
Yes |
Learning rate. Controls the magnitude of model weight updates. |
3e-5 |
generation_type |
string |
Yes |
Generation mode. |
t2i |
max_pixels |
string |
Yes |
Maximum training image resolution. For example, "1k" (1024×1024) or "2k" (2048×2048). This value should be consistent with |
text-to-image: "2k" |
val_img_size |
string |
Yes |
Evaluation image resolution. The target resolution for images generated during evaluation. |
text-to-image: "2k" |
max_token_length |
string |
Yes |
Maximum token length per training step. Works with |
text-to-image: "2k" |
gradient_clip |
float |
Yes |
Gradient clipping. The threshold for global gradient norm clipping to prevent gradient explosion. A value of -1 disables clipping. |
0.5 |
weight_decay |
float |
Yes |
Weight decay. The decoupled weight decay coefficient for the AdamW optimizer, used for regularization. |
0.02 |
lora_rank |
int |
Yes |
LoRA low-rank matrix dimension. The value must be a power of 2 (e.g., 16, 32, or 64). |
32 |
lora_alpha |
int |
Yes |
LoRA weight scaling factor. The value must be a power of 2 (e.g., 16, 32, or 64). |
32 |
save_total_limit |
int |
No |
Checkpoint retention limit. The maximum number of recent checkpoints to keep. When this limit is exceeded, the oldest checkpoint is removed. |
10 |
split |
float |
No |
Training set split ratio. The value must be in the range (0, 1). This parameter applies only when |
0.9 |
Example response
Text generation model
{
"request_id": "9654e55a-d74b-4113-aee1-fa19c9384fcc",
"output": {
"job_id": "ft-202410291653-1c7f",
"job_name": "ft-202410291653-1c7f",
"status": "PENDING",
"model": "qwen3-14b",
"base_model": "qwen3-14b",
"training_file_ids": [
"976bd01a-f30b-4414-86fd-50c54486e3ef"
],
"validation_file_ids": [
],
"hyper_parameters": {
"n_epochs": 3,
"batch_size": 32,
"max_length": 8192,
"learning_rate": "1.6e-5",
"lr_scheduler_type": "linear",
"split": 0.9
},
"training_type": "sft",
"create_time": "2024-10-29 16:53:53",
"workspace_id":"llm-v71tlv***",
"user_identity": "1396993924585947",
"modifier": "1396993924585947",
"creator": "1396993924585947",
"group": "llm"
}
}
Video and image generation model
Focus on output.job_id (job ID) and output.finetuned_output (the name of the new model generated after fine-tuning, which is used for deployment).
Video generation model
{
"request_id": "0eb05b0c-02ba-414a-9d0c-xxxxxxxxx",
"output": {
"job_id": "ft-202511111122-xxxx",
"job_name": "ft-202511111122-xxxx",
"status": "PENDING",
"finetuned_output": "wan2.5-i2v-preview-ft-202511111122-xxxx",
"model": "wan2.5-i2v-preview",
"base_model": "wan2.5-i2v-preview",
"training_file_ids": [
"xxxxxxxxxxxx"
],
"validation_file_ids": [],
"hyper_parameters": {
"n_epochs": 400,
"batch_size": 2,
"learning_rate": 2.0E-5,
"split": 0.9,
"eval_epochs": 50
},
"training_type": "efficient_sft",
"create_time": "2025-11-11 11:22:22"
}
}
Image generation model
{
"request_id": "0eb05b0c-02ba-414a-9d0c-xxxxxxxxx",
"output": {
"job_id": "ft-202606030110-xxxx",
"job_name": "ft-202606030110-xxxx",
"status": "PENDING",
"finetuned_output": "wan2.7-image-pro-ft-202606030110-xxxx",
"model": "wan2.7-image-pro",
"base_model": "wan2.7-image-pro",
"training_file_ids": [
"xxxxxxxxxxxx"
],
"validation_file_ids": [],
"hyper_parameters": {
"max_steps": 800,
"learning_rate": 3.0E-5,
"eval_steps": 200,
"max_token_length": "2k",
"max_pixels": "2k",
"val_img_size": "2k",
"generation_type": "t2i",
"lora_rank": 32,
"lora_alpha": 32
},
"training_type": "efficient_sft",
"create_time": "2026-06-03 01:10:47"
}
}
Response parameters
|
Parameter |
Type |
Description |
|
request_id |
String |
The ID of the request. |
|
output |
Object |
Details of the fine-tuning job. |
|
output.job_id |
String |
The ID of the fine-tuning job. You can use this ID with other APIs, such as querying fine-tuning job details, querying fine-tuning job logs, canceling a fine-tuning job, and deleting a fine-tuning job. Format: |
|
output.jobs_name |
String |
Same as |
|
output.status |
String |
The job status. |
|
output.model |
String |
The ID of the model that was fine-tuned. |
|
output.base_model |
String |
The ID of the base model used for fine-tuning. Example: For the fine-tuning job |
|
output.training_file_ids |
Array |
An array of fine-tuning file IDs. |
|
output.validation_file_ids |
Array |
An array of validation file IDs. |
|
output.hyper_parameters |
Object |
The hyperparameters explicitly set for the job. |
|
output.training_type |
String |
The fine-tuning method. |
|
output.create_time |
String |
The time the fine-tuning job was created. |
|
output.workspace_id |
String |
The ID of the workspace that contains the fine-tuning job. |
|
output.user_identity |
String |
The UID of the owning main account. |
|
output.modifier |
String |
The UID of the account that last modified the job. For example, if a sub-account cancels the job, this field returns the UID of that sub-account. |
|
output.creator |
String |
The UID of the user who created the job. |
|
output.group |
String |
The job type for model fine-tuning. |
|
Job status |
Description |
|
PENDING |
The fine-tuning job is waiting to start. |
|
QUEUING |
The fine-tuning job is in the queue. (Only one fine-tuning job can run at a time.) |
|
RUNNING |
The fine-tuning job is running. |
|
CANCELING |
The fine-tuning job is being canceled. |
|
SUCCEEDED |
The fine-tuning job has succeeded. |
|
FAILED |
The fine-tuning job has failed. |
|
CANCELED |
The fine-tuning job has been canceled. |
Request error codes
Returned when a request fails.
|
Parameter |
Type |
Description |
Example |
|
code |
String |
The error code. |
NotFound |
|
request_id |
String |
The system-generated unique ID for this request. |
6332fb02-3111-43f0-bf79-f9e8c5ffa7f9 |
|
message |
String |
The error message. |
Not Found! |
Example response
{
"code": "NotFound",
"request_id": "BE213CDD-8A5C-59EE-9A67-055EAB0CB59B",
"message": "Not Found!"
}
Error codes
|
HTTP status code |
Error code |
Example |
Description |
Solution |
|
400 |
InvalidParameter |
Missing training files |
A parameter is invalid, either because a required parameter is missing or a value has an incorrect format. |
Check the error message and correct the parameters in your request. |
|
400 |
UnsupportedOperation |
The fine-tune job cannot be deleted because it has already succeeded, failed, or been canceled. |
The resource is in a state that prevents this operation. |
Retry the operation after the resource enters an operational state. |
|
404 |
NotFound |
Not found! |
The requested resource does not exist. |
Verify that the resource ID is correct. |
|
409 |
Conflict |
Model instance xxxxx already exists, please specify a suffix |
A deployment instance with the specified name already exists. |
Specify a unique suffix for the deployment. |
|
429 |
Throttling |
|
The request was rejected because a platform limit was reached. |
|
|
500 |
InternalError |
Internal server error! |
An internal error occurred. |
Record the request_id and submit a ticket to Alibaba Cloud support for troubleshooting. |