Skip to main content

Ajuste fino de modelos de generación de video

Al utilizarlo para imagen a video, si la optimización de prompts o la llamada a los efectos de video oficiales no satisfacen sus requisitos personalizados para acciones, efectos o estilos específicos, utilice el ajuste fino del modelo.

Ámbito de aplicación

  • Región aplicable: Las funciones descritas en este documento están disponibles solo en la región de Singapore. Debe utilizar una clave de API creada en esta región.
  • Método de ajuste fino admitido: Ajuste fino SFT-LoRA eficiente.
  • Modelos admitidos para ajuste fino:
    • Imagen a video (basado en primer fotograma): wan2.7-i2v, wan2.6-i2v, wan2.5-i2v-preview, wan2.2-i2v-flash.
    • Imagen a video (basado en primer y último fotograma): wan2.7-i2v (requiere configurar el hiperparámetro task_type en kf2v), wan2.2-kf2v-flash.

Cómo ajustar finamente un modelo

  • Imagen a video (basado en el primer fotograma)
  • Imagen a video (basado en el primer y último fotograma)
Objetivo del ajuste fino: Entrenar un modelo LoRA para el efecto de lluvia de dinero.Resultado esperado: Introduzca una imagen del primer fotograma. No se necesita ningún prompt. El modelo genera un video con el efecto de lluvia de dinero.
Imagen del primer fotograma de entrada
image_3
Video de salida (antes del ajuste fino)
No puede generar un efecto de lluvia de dinero consistente cada vez usando prompts. El movimiento no es controlable.
Video de salida (después del ajuste fino)
El modelo ajustado reproduce el efecto específico de lluvia de dinero del conjunto de datos de entrenamiento sin prompts.
Antes de ejecutar el código a continuación, obtenga su clave de API y host de API, y configure su clave de API.

Paso 1: Cargar su conjunto de datos

Cargue su conjunto de datos local (en formato .zip) en Alibaba Cloud Model Studio. Obtenga el ID de archivo (id). Conjunto de datos de entrenamiento de muestra: Consulte el conjunto de entrenamiento para detalles sobre el formato. Ejemplo de solicitud
Este ejemplo utiliza el modelo de imagen a video basado en el primer fotograma. Solo cargue el conjunto de entrenamiento. El sistema divide automáticamente una parte del mismo como conjunto de validación. Cargar un conjunto de datos tarda varios minutos. El tiempo exacto depende del tamaño del archivo.
curl --location --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"./wan-i2v-training-dataset.zip"' \
--form 'purpose="fine-tune"'
Ejemplo de respuesta Guarde el id. Este es el identificador único para su conjunto de datos cargado.
{
    "id": "file-ft-b2416bacc4d742xxxx",
    "object": "file",
    "bytes": 73310369,
    "filename": "wan-i2v-training-dataset.zip",
    "purpose": "fine-tune",
    "status": "processed",
    "created_at": 1766127125
}

Paso 2: Ajustar finamente el modelo

Paso 2.1 Crear un trabajo de ajuste fino
Inicie el entrenamiento utilizando el ID de archivo del Paso 1. Ejemplo de solicitud Reemplace <replace with training dataset file ID> completamente con el id del paso anterior.
  • Imagen a video (basado en el primer fotograma)
  • Imagen a video (basado en el primer y último fotograma)
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model": "wan2.7-i2v",
    "training_file_ids": [
        "<your-training-dataset-file-id>"
    ],
    "training_type": "efficient_sft",
    "hyper_parameters": {
        "task_type": "i2v",
        "n_epochs": 50,
        "batch_size": 1,
        "learning_rate": 2e-5,
        "split": 0.9,
        "max_split_val_dataset_sample": 5,
        "eval_epochs": 20,
        "max_pixels": 102400,
        "save_total_limit": 10,
        "lora_rank": 32,
        "lora_alpha": 32
    }
}'
Hiperparámetros
CampoTipoObligatorioDescripciónValor recomendado
task_typestringNoTipo de tarea de ajuste fino. Solo es efectivo para el modelo wan2.7-i2v; otros modelos no necesitan configurar este parámetro.
  • i2v (predeterminado): Ajuste fino de primer fotograma a video.
  • kf2v: Ajuste fino de primer y último fotograma a video.
i2v
batch_sizeintSíTamaño del lote. El número de muestras de datos enviadas al modelo para entrenamiento a la vez.Este parámetro es una configuración por instancia. Recomendamos utilizar el valor predeterminado para cada modelo. No lo ajuste a menos que sea necesario.
  • wan2.7-i2v: Valor recomendado: 1.
  • wan2.6-i2v: Valor recomendado: 1.
  • wan2.5-i2v-preview: Valor recomendado: 4.
  • wan2.2-i2v-flash: Valor recomendado: 4.
  • wan2.2-kf2v-flash: Valor recomendado: 4.
El número real de instancias en ejecución para un trabajo de entrenamiento está determinado por la programación de la plataforma. La salida de Paso Global en los registros de entrenamiento puede diferir de los resultados estimados, pero esto no cambia la cantidad total de datos de entrenamiento ni afecta el rendimiento final del modelo.
Dependiente del modelo
n_epochsintSíÉpocas de entrenamiento. steps = n_epochs x ceiling(dataset size / batch_size). El total de pasos debe ser >= 800.
Ejemplo: el conjunto de datos tiene 5 muestras, batch_size=4, pasos por época = ceiling(5/4) = 2, mínimo n_epochs = 800/2 = 400.
El número recomendado de épocas de entrenamiento se ajusta automáticamente según el volumen de datos. Menos datos requieren más épocas para aprender suficientemente; más datos significan que cada época contiene más muestras, por lo que se necesitan menos épocas. 50 épocas es adecuado principalmente para conjuntos de datos muy pequeños de aproximadamente 2 muestras; cuando el volumen de datos alcanza 50-60 videos, generalmente se recomienda entrenar aproximadamente 3000-5000 pasos.
50
learning_ratefloatSíTasa de aprendizaje. Controla la magnitud de las actualizaciones de los pesos del modelo. Un valor demasiado alto puede degradar el modelo; uno demasiado bajo puede resultar en cambios insignificantes.2e-5
eval_epochsintSíIntervalo de evaluación. El valor debe ser >= n_epochs/10. Especifica cuántas épocas transcurren entre cada evaluación y guardado de punto de control.20
max_pixelsintSíResolución máxima para los videos de entrenamiento (píxeles totales = ancho x alto). El sistema solo escala los videos que superan este valor.
  • wan2.7-i2v: Recomendado 102400. Rango: 36864-123904.
  • wan2.6-i2v: Recomendado 36864. Rango: 16384-36864.
  • wan2.5-i2v-preview: Recomendado 36864. Rango: 16384-36864.
  • wan2.2-i2v-flash: Recomendado 262144. Rango: 65536-262144.
  • wan2.2-kf2v-flash: Recomendado 262144. Rango: 65536-262144.
Dependiente del modelo
splitfloatNoProporción de división del conjunto de entrenamiento. Rango de valores: (0,1). Solo tiene efecto cuando no se especifica validation_datasets.0.9
max_split_val_dataset_sampleintNoNúmero máximo de muestras de validación de la división automática. Recuento de validación = min(total x (1 - split), este valor).5
save_total_limitintNoNúmero máximo de puntos de control a conservar. El sistema solo retiene los últimos N puntos de control.10
lora_rankintNoDimensión de la matriz de bajo rango LoRA. El valor debe ser 2n (16/32/64).32
lora_alphaintNoCoeficiente de escalado de peso LoRA. El valor debe ser 2n (16/32/64).32
Ejemplo de respuesta Verifique estos tres parámetros clave en output:
  • job_id: ID de trabajo. Úselo para verificar el progreso.
  • finetuned_output: Nombre del nuevo modelo ajustado. Use este nombre para el despliegue.
  • status: Estado del entrenamiento. Después de crear el trabajo, el estado inicial es PENDING. El entrenamiento aún no ha comenzado.
{
    ...
    "output": {
        "job_id": "ft-202511111122-xxxx",
        "status": "PENDING",
        "finetuned_output": "xxxx-ft-202511111122-xxxx",
        ...
    }
}
Paso 2.2 Verificar el estado del trabajo de ajuste fino
Utilice el job_id del Paso 2.1 para verificar el progreso. Consulte este endpoint periódicamente hasta que status sea SUCCEEDED.
Este trabajo de ajuste fino toma varias horas. El tiempo exacto depende del modelo. Espere pacientemente.
Ejemplo de solicitud Reemplace <replace with fine-tuning job job_id> en la URL completamente con el valor de job_id.
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<your-job-id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
Ejemplo de respuesta Verifique estos dos parámetros en el campo output:
  • status: Cuando este valor sea SUCCEEDED, el entrenamiento habrá finalizado. Puede desplegar el modelo.
  • usage: Total de tokens utilizados para el entrenamiento. Se utiliza para la facturación.
{
    ...
    "output": {
        "job_id": "ft-202511111122-xxxx",
        "status": "SUCCEEDED",
        "usage": 432000,
        ...
    }
}

Paso 3: Desplegar el modelo ajustado finamente

Paso 3.1 Desplegar el modelo como un servicio en línea
Después de que el estado del trabajo de ajuste fino sea SUCCEEDED, despliegue el modelo como un servicio en línea. Ejemplo de solicitud Reemplace <replace with model name model_name> completamente con el valor de finetuned_output de creación del trabajo de ajuste fino.
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
    "model_name": "<your-model-name>",
    "aigc_config": {
        "use_input_prompt": false,
        "prompt": "Provide a video description based on the image content. The description must include the phrase “Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding them. The bills continue to fall, while the camera slowly zooms in, they stretch their arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.”\nOutput Template:\nThe video begins with a shot of [subject description]. [Environment description]. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding them. The bills continue to fall, while the camera slowly zooms in, they stretch their arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.\nExample:\nThe video begins showing a young woman standing in front of a brick wall covered with ivy. She has long, smooth reddish-brown hair, wearing a white sleeveless dress, a shiny silver necklace, and a smile on her face. The brick wall in the background is covered with green vines, appearing rustic and natural. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, while the camera slowly zooms in, she stretches her arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.",
        "lora_prompt_default": "Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding the main character. The bills continue to fall, while the camera slowly zooms in, the main character stretches their arms upward, neck slightly tilted back, with a surprised expression, completely immersed in this wild money rain."
    },
    "capacity": 1,
    "plan": "lora"
}'
Ejemplo de respuesta Verifique estos dos parámetros en output:
  • deployed_model: Nombre del modelo desplegado. Úselo para verificar el estado del despliegue y llamar al modelo.
  • status: Estado de la implementación. Después de implementar el modelo ajustado, el estado inicial es PENDING. La implementación aún no ha comenzado.
{
    ...
    "output": {
        "deployed_model": "xxxx-ft-202511111122-xxxx",
        "status": "PENDING",
        ...
    }
}
Paso 3.2 Verificar el estado del despliegue
Sondee este endpoint hasta que status sea RUNNING.
El despliegue de este modelo ajustado toma aproximadamente 5–10 minutos.
Ejemplo de solicitud Reemplace <replace with deployed_model> completamente con el valor de deployed_model del Paso 3.1. Ejemplo de respuesta Verifique estos dos parámetros en el campo output:
  • status: Cuando el estado cambia a RUNNING, el modelo se ha implementado correctamente. Puede comenzar a invocarlo.
  • deployed_model: Nombre del modelo desplegado.
{
    ...
    "output": {
        "status": "RUNNING",
        "deployed_model": "xxxx-ft-202511111122-xxxx",
        ...
    }
}

Paso 4: Llamar al modelo para generar videos

Después de una implementación exitosa del modelo (cuando el status de implementación es RUNNING), puede comenzar a invocar el modelo.
Ejemplo de solicitudReemplace <replace with deployed_model name> con el valor de deployed_model generado en el paso anterior.
  • Imagen a video (basado en el primer fotograma)
  • Imagen a video (basado en el primer y último fotograma)
Resultado esperado: Introduzca una imagen del primer fotograma. No se necesita ningún prompt. El modelo genera automáticamente un video con el "efecto de lluvia de dinero" basado en la imagen.

Llamada al modelo Wan2.7

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'X-DashScope-Async: enable' \
--data '{
    "model": "<replace with deployed_model name>",
    "input": {
        "media": [
            {
                "type": "first_frame",
                "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20251219/xmvyqn/lora.webp"
            }
        ]
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": false
    }
}'
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/video-generation/video-synthesis' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--header 'X-DashScope-Async: enable' \
--data '{
    "model": "<replace with deployed_model name>",
    "input": {
        "img_url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/en-US/20251219/xmvyqn/lora.webp"
    },
    "parameters": {
        "resolution": "720P",
        "prompt_extend": false
    }
}'
Ejemplo de respuestaCopie y guarde el task_id para consultar los resultados en el siguiente paso.
{
    "output": {
        "task_status": "PENDING",
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx"
    },
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx"
}
Descripción de parámetros de entrada
Al llamar a un modelo LoRA ajustado, el uso de los parámetros de entrada de Wan2.7 es mayormente el mismo que el de Wan2.7 - imagen a video. Para Wan2.6/Wan2.5/Wan2.2, consulte Wan - referencia de API de imagen a video - primer fotograma (2.1-2.6).La siguiente tabla enumera únicamente el uso o restricciones de parámetros específicos de LoRA. Para parámetros generales no listados aquí (como duration), consulte la documentación de la API.

Campo

Tipo

Obligatorio

Descripción

Valor de ejemplo

model

string

Sí

Nombre del modelo.

Debe usar un modelo ajustado que esté desplegado correctamente y tenga un estado RUNNING.

xxxx-ft-202511111122-xxxx

input.prompt

string

No

Indicador de texto.

Si este parámetro surte efecto depende de la configuración aigc_config.use_input_prompt:

  • Si use_input_prompt=true, este parámetro surte efecto. El sistema genera el video basándose en este prompt.

  • Si use_input_prompt=false, este parámetro se ignora. El sistema utiliza la plantilla preestablecida aigc_config.prompt para generar automáticamente el prompt.

-

parameters.resolution

string

No

Resolución del video generado.

Modelos wan2.2 y wan2.5: 480P, 720P. El valor predeterminado es 720P.

Modelos wan2.6: 720P, 1080P. El valor predeterminado es 720P.

Modelos wan2.7: 720P, 1080P. El valor predeterminado es 1080P.

720P

parameters.prompt_extend

boolean

No

Habilitar la reescritura de indicadores.

Al llamar a un modelo LoRA ajustado, desactive esto. Establézcalo en false.

false

Sondee el estado de la tarea usando el task_id hasta que task_status sea SUCCEEDED. Luego obtenga la URL del video.Ejemplo de solicitud
Reemplace 86ecf553-d340-4e21-xxxxxxxxx con el task_id real.
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Ejemplo de respuesta
La URL del video es válida por 24 horas. Descargue el video oportunamente.
{
    "request_id": "c87415d2-f436-41c3-9fe8-xxxxxx",
    "output": {
        "task_id": "a017e64c-012b-431a-84fd-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2025-11-12 11:03:33.672",
        "scheduled_time": "2025-11-12 11:03:33.699",
        "end_time": "2025-11-12 11:04:07.088",
        "orig_prompt": "",
        "video_url": "https://dashscope-result-sh.oss-cn-shanghai.aliyuncs.com/xxx.mp4?Expires=xxxx"
    },
    "usage": {
        "duration": 5,
        "video_count": 1,
        "SR": 480
    }
}

Crear un conjunto de datos personalizado

Además de usar los conjuntos de datos de muestra en esta guía, puede crear su propio conjunto de datos para el ajuste fino. Su conjunto de datos debe incluir un conjunto de entrenamiento (obligatorio) y puede incluir un conjunto de validación (opcional, admite la división automática desde el conjunto de entrenamiento). Empaquete todos los archivos en un archivo .zip. Utilice solo letras inglesas, números, guiones bajos o guiones en los nombres de archivo.

Formato del conjunto de datos

Conjunto de entrenamiento: Obligatorio

  • Imagen a video (basado en el primer fotograma)
  • Imagen a video (basado en el primer y último fotograma)
El conjunto de entrenamiento incluye imágenes del primer fotograma, videos de entrenamiento y un archivo de anotaciones (data.jsonl).
wan-i2v-training-dataset.zip
├── data.jsonl        # Must be named data.jsonl. Max size: 20 MB.
├── image_1.jpeg      # Max resolution: 4096×4096. Formats: BMP, JPEG, PNG, WEBP.
├── video_1.mp4       # Max resolution: 4096×4096. Formats: MP4, MOV.
├── image_2.jpeg
└── video_2.mp4
  • Archivo de anotaciones (data.jsonl): Cada línea es una muestra de entrenamiento. Debe ser un objeto JSON. Estructura:
{
    "prompt": "The video begins showing a young woman standing in front of a brick wall covered with ivy. She has long, smooth reddish-brown hair, wearing a white sleeveless dress, a shiny silver necklace, and a smile on her face. The brick wall in the background is covered with green vines, appearing rustic and natural. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding her. The bills continue to fall, she stretches her arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.",
    "first_frame_path": "image_1.jpg",
    "video_path": "video_1.mp4"
}

Conjunto de validación: Opcional

  • Imagen a video (basado en el primer fotograma)
  • Imagen a video (basado en el primer y último fotograma)
El conjunto de validación incluye imágenes del primer fotograma y un archivo de anotaciones (data.jsonl). No se requieren videos. En cada punto de evaluación, el trabajo de entrenamiento llama automáticamente al servicio del modelo para generar videos de vista previa utilizando las imágenes y los prompts de validación.
wan-i2v-valid-dataset.zip
├── data.jsonl       # Must be named data.jsonl. Max size: 20 MB.
├── image_1.jpeg     # Max resolution: 4096×4096. Formats: BMP, JPEG, PNG, WEBP.
└── image_2.jpeg
  • Archivo de anotaciones (data.jsonl): Cada línea es una muestra de validación. Debe ser un objeto JSON. Estructura:
{
    "prompt": "The video begins showing a scene of a young man standing in front of a cityscape. He is wearing a black and white checkered jacket over a black hoodie, with a smile on his face and a confident expression. The background is a city skyline at sunset, with a famous domed building and layered roofs visible in the distance, the sky filled with clouds showing warm orange-yellow hues. Then the s86b5p money rain effect begins, countless huge-sized US dollar bills (beige background/dark green patterns) pour down like a torrential rain, densely hitting and surrounding him. The bills continue to fall while the camera slowly zooms in, he stretches his arms upward, neck slightly tilted back, expression surprised, completely immersed in this wild money rain.",
    "first_frame_path": "image_1.jpg"
}

Escala y límites de datos

  • Volumen de datos: Proporcione al menos 10 muestras. Más datos de entrenamiento producen mejores resultados. Recomendamos 20–100 muestras para un rendimiento estable.
  • Archivo ZIP: Al cargar mediante API, tamaño total ≤ 1 GB.
  • Requisitos de imágenes de entrenamiento:
    • Formatos: BMP, JPEG, PNG, WEBP.
    • Resolución ≤ 4096×4096.
    • No hay límite estricto en el tamaño individual del archivo (el sistema preprocesa automáticamente).
  • Requisitos de video de entrenamiento:
    • Formatos: MP4, MOV.
    • Resolución ≤ 4096×4096.
    • No hay límite estricto en el tamaño individual del archivo (el sistema preprocesa automáticamente).
    • Duración por video: se recomiendan 2–5 segundos para modelos wan2.2; 2–10 segundos para modelos wan2.5; 2–10 segundos para modelos wan2.6 y wan2.7.

Recopilación y limpieza de datos

1. Definir el escenario de ajuste fino
Wanxiang admite el ajuste fino para imagen a video en estos escenarios:
  • Efectos de video fijos: Enseñar al modelo un cambio visual específico, como un carrusel o un cambio mágico de vestuario.
  • Acciones de personaje fijas: Mejorar la capacidad del modelo para reproducir movimientos corporales específicos, como pasos de baile o técnicas de artes marciales.
  • Movimiento de cámara fijo: Replicar cinematografía compleja, como tomas de acercamiento, alejamiento, paneo, inclinación u órbita.
2. Recopilar activos sin procesar
  • Generación y filtrado con IA: Utilice el modelo base Wanxiang para generar videos por lotes. Seleccione manualmente muestras de alta calidad que coincidan mejor con su efecto objetivo. Este es el método más común.
  • Filmación en el mundo real: Si necesita un alto realismo para escenas interactivas (por ejemplo, abrazos, apretones de manos), utilice grabaciones reales.
  • Renderizado con software 3D: Para efectos o animaciones abstractas que requieren un control preciso, utilice software 3D (por ejemplo, Blender, Cinema 4D).
3. Limpie los datos

Dimensión

Requisitos positivos

Ejemplo negativo

Consistencia

Las características principales deben ser altamente uniformes.

Ejemplo: Para entrenar "rotación de 360 grados", todos los videos deben rotar en sentido horario aproximadamente a la misma velocidad.

Direcciones mixtas.

El conjunto de datos contiene rotaciones tanto en sentido horario como antihorario. El modelo no sabe qué dirección aprender.

Diversidad

Mayor variedad en sujetos y escenas es mejor.

Cubra diferentes sujetos (hombres, mujeres, niños, animales, edificios) y composiciones (primeros planos, planos generales, ángulos picados, ángulos contrapicados). Varíe también la resolución y la relación de aspecto.

Escena o sujeto único.

Todos los videos muestran "una persona con ropa roja girando frente a una pared blanca". El modelo podría tratar erróneamente "ropa roja" y "pared blanca" como parte del efecto. Falla cuando cambia la ropa.

Equilibrio

Los tipos de datos deben estar equilibrados.

Si existen múltiples estilos, sus cantidades deben ser aproximadamente iguales.

Desequilibrio severo.

90% son videos verticales, 10% son videos horizontales. El modelo puede tener un rendimiento deficiente en videos horizontales.

Pureza

Visuales limpios y claros.

Utilice activos originales sin interferencias.

Elementos de interferencia.

Los videos contienen subtítulos, logotipos, marcas de agua, barras negras evidentes o ruido. El modelo podría aprender la marca de agua como parte del efecto.

Duración

Duración del activo ≤ duración objetivo.

Si usted want videos de 5 segundos, recorte los recursos a 4–5 segundos.

Activos demasiado largos.

Usted want videos de 5 segundos pero alimenta al modelo con recursos de 8 segundos. Esto provoca un aprendizaje incompleto de la acción y una sensación de entrecortamiento.

Anotación de video: Escribir prompts para videos

En el archivo de anotaciones del conjunto de datos (data.jsonl), cada video tiene un prompt correspondiente. El prompt describe el contenido del video. La calidad del prompt determina directamente lo que aprende el modelo.
Ejemplo de promptEl video comienza con una mujer joven parada frente a un muro de ladrillos cubierto de hiedra. Tiene cabello largo y liso de color castaño rojizo, viste un vestido blanco sin mangas, un collar plateado brillante y una sonrisa en su rostro. El fondo es un muro de ladrillos cubierto de enredaderas verdes, con apariencia rústica y natural. Entonces comienza el efecto de lluvia de dinero s86b5p, innumerables billetes de dólares estadounidenses de gran tamaño (fondo beige/patrones verde oscuro) caen como una lluvia torrencial, golpeándola densamente y rodeándola. Los billetes continúan cayendo, ella estira los brazos hacia arriba, el cuello ligeramente inclinado hacia atrás, expresión de sorpresa, completamente inmersa en esta salvaje lluvia de dinero.

Fórmula de redacción de indicadores

Prompt = [Descripción del sujeto] + [Descripción del fondo] + [Palabra desencadenante] + [Descripción del movimiento]

Elemento del indicador

Descripción

Orientación

Ejemplo

Descripción del sujeto

Describir personas u objetos presentes en el encuadre

Obligatorio

El video comienza con una mujer joven...

Descripción del fondo

Describir el entorno donde se encuentra el sujeto

Obligatorio

El fondo es una pared de ladrillos cubierta de enredaderas verdes...

Palabra desencadenante

Una palabra rara y sin significado

Recomendado

s86b5p o m01aa

Descripción de movimiento

Describa en detalle los cambios dinámicos durante el efecto

Recomendado

Incontables billetes de dólares estadounidenses de gran tamaño (fondo beige/patrones verde oscuro) caen como una lluvia torrencial...

Acerca de las palabras desencadenantes

  • ¿Qué es una palabra clave de activación? Actúa como un "ancla visual". Muchos movimientos complejos (por ejemplo, una trayectoria de baile única o un efecto de luz) son difíciles de describir con texto. Una palabra desencadenante obliga al modelo a generar ese efecto visual exacto cuando ve la palabra.
  • ¿Por qué usarlo? El ajuste fino crea un mapeo entre el texto y las características del video. La palabra desencadenante vincula un efecto difícil de describir con una palabra única para que el modelo pueda fijarse en el objetivo.
  • Si tenemos una palabra desencadenante, ¿por qué describir el movimiento en detalle? Cumplen diferentes funciones y funcionan mejor juntos.
    • La descripción del movimiento explica lo que sucede en la escena. Indica al modelo las acciones físicas básicas y la lógica. Las descripciones de movimiento suelen ser consistentes en todas las muestras.
    • La palabra desencadenante explica cómo se ve específicamente la acción. Representa cambios y características únicas que las palabras no pueden describir.

Cómo escribir buenos prompts

Siga las reglas de consistencia para las descripciones de efectos
Para todas las muestras que contengan el mismo efecto, mantenga la parte de descripción del movimiento lo más consistente posible. Aplique esta regla tanto a los conjuntos de entrenamiento como de validación.
  • Propósito: Cuando el modelo ve s86b5p seguido de la misma descripción fija y siempre observa lluvia de dinero, aprende que s86b5p = efecto visual de lluvia de dinero.
  • Ejemplo: Ya sea que el sujeto sea una “mujer joven” o un “hombre trajeado”, el prompt termina de la misma manera para el efecto de lluvia de dinero: “...entonces comienza el efecto de lluvia de dinero s86b5p, innumerables billetes de dólares estadounidenses caen como una lluvia torrencial...”

    Tipo de muestra

    Contenido del prompt (Note la consistencia en las partes subrayadas)

    Muestra de entrenamiento 1

    El video comienza con una mujer joven parada frente a un muro de ladrillos... (descripción del entorno omitida)...

    Entonces comienza el efecto de lluvia de dinero s86b5p, innumerables billetes de dólares estadounidenses de gran tamaño (fondo beige/patrones verde oscuro) caen como una lluvia torrencial, golpeándola densamente y rodeándola. Los billetes continúan cayendo, ella estira los brazos hacia arriba, el cuello ligeramente inclinado hacia atrás, expresión de sorpresa, completamente inmersa en esta salvaje lluvia de dinero.

    Muestra de entrenamiento 2

    El video comienza con un hombre trajeado en un restaurante de alta gama... (descripción del entorno omitida)...

    Entonces comienza el efecto de lluvia de dinero s86b5p, innumerables billetes de dólares estadounidenses de gran tamaño (fondo beige/patrones verde oscuro) caen como una lluvia torrencial, golpeándolo densamente y rodeándolo. Los billetes continúan cayendo, él estira los brazos hacia arriba, el cuello ligeramente inclinado hacia atrás, expresión de sorpresa, completamente inmerso en esta salvaje lluvia de dinero.

    Muestra de validación 1

    El video comienza con un niño pequeño parado frente a un paisaje urbano... (descripción del entorno omitida)...

    Entonces comienza el efecto de lluvia de dinero s86b5p, innumerables billetes de dólares estadounidenses de gran tamaño (fondo beige/patrones verde oscuro) caen como una lluvia torrencial, golpeándolo densamente y rodeándolo. Los billetes continúan cayendo mientras la cámara hace zoom lentamente, él estira los brazos hacia arriba, el cuello ligeramente inclinado hacia atrás, expresión de sorpresa, completamente inmerso en esta salvaje lluvia de dinero.

Usar IA para generar prompts
Para obtener prompts de alta calidad, utilice modelos de lenguaje grande multimodales como Qwen-VL para asistirle.
  1. Use IA para generar descripciones iniciales
    1. Lluvia de ideas libre (encontrar inspiración): Si no está seguro de cómo describir el efecto, deje que la IA explore libremente.
      • Envíe "Describe the video content in detail" y observe la salida del modelo.
      • Concéntrese en los términos que utiliza el modelo para la trayectoria de movimiento (por ejemplo, "caer como una lluvia torrencial", "la cámara hace zoom lentamente"). Estos términos pueden utilizarse para optimizaciones posteriores.
    2. Prompts de formato fijo (estandarizar la salida): Una vez que tenga una idea aproximada, diseñe un formato fijo para guiar a la IA a generar prompts que coincidan con su plantilla.
      Consulte comprensión visual para obtener detalles sobre la llamada a la API.
      import os
      from openai import OpenAI
      
      client = OpenAI(
          # API keys differ between Beijing and Singapore regions. Get your API key: https://www.alibabacloud.com/help/model-studio/get-api-key
          # If you haven’t set environment variables, replace the next line with: api_key="sk-xxx".
          api_key=os.getenv("DASHSCOPE_API_KEY"),
          # Base URL for Singapore region. For Beijing region, replace with: https://dashscope.aliyuncs.com/compatible-mode/v1
          base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
      )
      completion = client.chat.completions.create(
          model="qwen3-vl-plus",
          messages=[
              {"role": "user","content": [{
                  # When passing a video file directly, set type to video_url.
                  # With OpenAI SDK, frames are sampled every 0.5 seconds by default and cannot be changed. For custom frame rates, use DashScope SDK.
                  "type": "video_url",
                  "video_url": {"url": "https://cloud.video.taobao.com/vod/Tm1s_RpnvdXfarR12RekQtR66lbYXj1uziPzMmJoPmI.mp4"}},
                  {"type": "text", "text": "Analyze the video carefully and generate a detailed video description using the following fixed format:"
                                          "Format template: The video begins with [subject description]. The background is [background description]. Then the s86b5p melting effect begins, [detailed motion description]."
                                          "Requirements:"
                                          "1.[Subject description]: Describe people or objects in the frame in detail, including appearance, clothing, and expressions."
                                          "2.[Background description]: Describe the environment, lighting, and weather in detail."
                                          "3.[Motion description]: Describe dynamic changes during the effect (e.g., how objects move, how lighting changes, how the camera moves)."
                                          "4.Integrate all content naturally into the format. Do not keep “[ ]” symbols or add unrelated text."}]
               }]
      )
      print(completion.choices[0].message.content)
      
  2. Extraer plantillas de efectos
    1. Ejecute el proceso varias veces en muestras con el mismo efecto. Identifique frases precisas y de alta frecuencia utilizadas para describir el efecto. Extraiga una "descripción del efecto" genérica.
    2. Copie y pegue esta descripción estandarizada del efecto en todas las muestras para ese efecto.
    3. Mantenga descripciones únicas de "sujeto" y "fondo" para cada muestra. Reemplace únicamente la parte de "descripción del efecto" con la plantilla unificada.
  3. Revisión manual La IA puede tener alucinaciones o cometer errores de detección. Como paso final, realice una revisión manual. Por ejemplo, confirme que las descripciones de la entidad y el fondo coinciden con la escena real.

Evaluar el modelo usando un conjunto de validación

Especificar un conjunto de validación

Un trabajo de ajuste fino requiere un conjunto de entrenamiento. Un conjunto de validación es opcional. Puede elegir dejar que el sistema split automatically o upload manually. Especifíquelo de la siguiente manera:
Método 1: No se cargó conjunto de validación (el sistema divide automáticamente)
Cuando usted crea un trabajo de ajuste fino, si no carga un conjunto de validación por separado, lo que significa que no se pasa el parámetro validation_file_ids, el sistema divide automáticamente una parte del conjunto de entrenamiento para usarla como conjunto de validación basándose en los siguientes dos hiperparámetros:
  • split: Proporción de datos de entrenamiento a dividir. Por ejemplo, 0.9 significa 90% para entrenamiento y 10% para validación.
  • max_split_val_dataset_sample: Número máximo de muestras para el conjunto de validación dividido automáticamente.
Regla de división del conjunto de validación: El sistema selecciona el valor menor entre dataset size × (1 - split) y max_split_val_dataset_sample.
  • Ejemplo: Suponga que carga solo un conjunto de entrenamiento con 100 muestras, split=0.9 (10% para validación) y max_split_val_dataset_sample=5.
    • División teórica: 100 × 10% = 10 muestras.
    • División real: min(10, 5)=5. Por lo tanto, el sistema usa solo 5 muestras para el conjunto de validación.
Método 2: Cargar un conjunto de validación manualmente (usando validation_file_ids)
Si prefiere evaluar los puntos de control utilizando sus propios datos preparados en lugar de depender de divisiones aleatorias del sistema, cargue un conjunto de validación personalizado. Nota: Una vez que elija la carga manual, el sistema ignores las reglas de división automática anteriores y valida únicamente con los datos que usted haya cargado.

Pasos: Cargar un conjunto de validación manualmente

  1. Prepare el conjunto de validación: Empaquete los datos de validación en un archivo .zip independiente. Consulte formato del conjunto de validación.
  2. Cargar el conjunto de validación: Llame a la API de carga de conjunto de datos para cargar este archivo .zip. Obtenga un ID de archivo dedicado.
  3. Especifique el conjunto de validación al crear el trabajo: Al llamar a la API de creación de trabajo de ajuste fino, coloque este ID de archivo en el parámetro validation_file_ids.
{
    "model":"wan2.5-i2v-preview",
    "training_file_ids":[ "<training set file ID>" ],
    "validation_file_ids": [ "<custom validation set file ID>" ],
    ...
}

Seleccionar el mejor punto de control para el despliegue

Durante el entrenamiento, el sistema guarda "instantáneas" periódicas (puntos de control). Por defecto, el sistema genera el punto de control final como el modelo ajustado. Pero los puntos de control intermedios pueden superar en rendimiento a la versión final. Puede elegir el mejor para su implementación. El sistema ejecuta puntos de control en el conjunto de validación y genera videos de vista previa a intervalos definidos por el hiperparámetro eval_epochs.
  • Evaluación: Juzgue viendo directamente los videos de vista previa.
  • Criterios de selección: Elija el punto de control con la mejor calidad visual y sin distorsión de movimiento.

Procedimiento

Paso 1.1 Listar puntos de control validados
Esta API devuelve únicamente los puntos de control que pasaron la validación y generaron correctamente videos de vista previa. Los puntos de control fallidos no se listan.Ejemplo de solicitud
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/validation-results' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
Ejemplo de respuestaEsta API devuelve una lista de nombres de puntos de control que pasaron la validación.
{
    "request_id": "da1310f5-5a21-4e29-99d4-xxxxxx",
    "output": [
        {
            "checkpoint": "checkpoint-160"
        },
        ...
    ]
}
Paso 1.2 Ver los resultados de validación de un punto de control
Seleccione un punto de control de la lista anterior (por ejemplo, "checkpoint-160") y vea su resultado de video.Ejemplo de solicitud
  • <replace_with_fine-tuning_job_id>: Reemplace completamente con el job_id de la creación del trabajo de ajuste fino.
  • <replace_with_selected_checkpoint>: Reemplace completamente con el valor del punto de control, por ejemplo, "checkpoint-160".
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/validation-details/<replace_with_selected_checkpoint>?page_no=1&page_size=10' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Ejemplo de respuestaLa URL del video de vista previa es video_path. Es válida durante 24 horas. Descárguelo y revíselo rápidamente. Repita este paso para comparar múltiples puntos de control y encontrar el mejor.
{
    "request_id": "375b3ad0-d3fa-451f-b629-xxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 1,
        "list": [
            {
                "video_path": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/xxx.mp4?Expires=xxxx",
                "prompt": "The video begins with a young man sitting in a cafe...",
                "first_frame_path": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/xxx.jpeg"
            }
        ]
    }
}
Paso 2.1 Exportar el modelo
Suponga que "checkpoint-160" ofrece el mejor resultado. Ahora expórtelo.Ejemplo de solicitud
  • <replace_with_fine_tuning_job_id>: Reemplace completamente con el job_id de la creación del trabajo de ajuste fino.
  • <replace_with_checkpoint_to_export>: Reemplace completamente con el valor del punto de control, por ejemplo, "checkpoint-160".
  • <replace_with_exported_model_name_for_console_display>: Reemplace completamente con un nombre de modelo personalizado para mostrar en la consola, por ejemplo, “wan2.5-checkpoint-160”. Este nombre debe ser globalmente único. No se permiten nombres duplicados. Para obtener orientación sobre los parámetros, consulte exportar punto de control.
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/export/<replace_with_checkpoint_to_export>?model_name=<replace_with_exported_model_name_for_console_display>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Ejemplo de respuestaEl parámetro de respuesta output=true significa que la solicitud de exportación se creó correctamente.
{
    "request_id": "0817d1ed-b6b6-4383-9650-xxxxx",
    "output": true
}
Paso 2.2 Consultar el nuevo nombre del modelo después de la implementación
Consulte los estados de todos los puntos de control para confirmar la finalización de la exportación y obtener el nombre único del modelo (model_name) para su implementación.Ejemplo de solicitud
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine-tuning_job_id>/checkpoints' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
Ejemplo de respuestaEn la lista devuelta, localice el punto de control exportado (por ejemplo, checkpoint-160). Cuando su status cambie a SUCCEEDED, la exportación habrá sido exitosa. El campo model_name es el nuevo nombre del modelo para su implementación y llamadas.
{
    "request_id": "b0e33c6e-404b-4524-87ac-xxxxxx",
    "output": [
         ...,
        {
            "create_time": "2025-11-11T13:27:29",
            "full_name": "ft-202511111122-496e-checkpoint-160",
            "job_id": "ft-202511111122-496e",
            "checkpoint": "checkpoint-160",
            "model_name": "xxxx-ft-202511111122-xxxx-c160", // Important field. Use for model deployment and calls.
            "model_display_name": "xxxx-ft-202511111122-xxxx",
            "status": "SUCCEEDED" // Successfully exported checkpoint.
        },
        ...

    ]
}
Después de exportar correctamente el punto de control y obtener el model_name, siga estos pasos:
  • Implementación del modelo: En el parámetro de entrada model_name, introduzca el valor específico obtenido después de la exportación.
  • Llamada al modelo: Siga la documentación de la API para invocar el modelo implementado.

Puesta en marcha

En producción, si el modelo entrenado inicialmente tiene un rendimiento deficiente (por ejemplo, visuales distorsionados, efectos débiles, movimiento inexacto), ajuste siguiendo estas dimensiones: 1. Verificar datos e indicadores
  • Consistencia de datos: La consistencia es crítica. Revise si hay "muestras defectuosas" con direcciones opuestas o estilos muy diferentes.
  • Recuento de muestras: Aumente los datos de alta calidad a 20+ muestras.
  • Prompt: Asegúrese de que las palabras desencadenantes sean términos raros y sin significado (por ejemplo, s86b5p). Evite palabras comunes (por ejemplo, correr) que causen interferencia.
2. Ajustar hiperparámetros:
  • n_epochs (épocas de entrenamiento)
    • Predeterminado: 50. Utilice el valor predeterminado a menos que sea necesario. Si lo ajusta, siga la regla: "Pasos totales de entrenamiento ≥ 800".
    • Fórmula de pasos totales: steps = n_epochs × ceiling (training set size / batch_size).
    • Fórmula mínima de n_epochs: n_epochs = 800 / ceiling (dataset size / batch_size).
    • Ejemplo: Suponga un conjunto de entrenamiento de 5 muestras, utilizando el modelo Wan2.5 (batch_size=4).
      • Pasos por época: 5 / 4 = 1.25, redondeado hacia arriba a 2. Épocas totales: n_epochs = 800 / 2 = 400. Este es el mínimo recomendado. Puede aumentarlo según sea necesario.
  • batch_size (tamaño de lote)
    • Tamaño del lote. El número de muestras de datos enviadas al modelo para entrenamiento a la vez.
    • Este parámetro es una configuración por instancia. Recomendamos utilizar el valor predeterminado para cada modelo. No lo ajuste a menos que sea necesario.
    • wan2.7-i2v: Valor recomendado: 1.
    • wan2.5-i2v-preview: Valor recomendado: 4.
    • wan2.2-i2v-flash: Valor recomendado: 4.
    • wan2.2-kf2v-flash: Valor recomendado: 4.
    El número real de instancias en ejecución para un trabajo de entrenamiento está determinado por la programación de la plataforma. La salida de Paso Global en los registros de entrenamiento puede diferir de los resultados estimados, pero esto no cambia la cantidad total de datos de entrenamiento ni afecta el rendimiento final del modelo.
  • learning_rate (tasa de aprendizaje): Utilice el valor predeterminado (2e-5). Por lo general, no requiere modificación.

Facturación

Referencia de API

API de ajuste fino de modelos de generación de video e imágenes

FAQ

P: ¿Cómo se calculan los volúmenes de datos de los conjuntos de entrenamiento y validación?

R: El conjunto de entrenamiento es obligatorio, el conjunto de validación es opcional. Los métodos de cálculo son los siguientes:
  • Cuando no se proporciona un conjunto de validación: El conjunto de entrenamiento cargado constituye el "tamaño total del conjunto de datos". El sistema divide automáticamente una parte de los datos para la validación.
    • Tamaño del conjunto de validación = min(total dataset size × (1 − split), max_split_val_dataset_sample). Para ver un ejemplo, consulte especificar un conjunto de validación.
    • Tamaño del conjunto de entrenamiento = total dataset size − validation set size.
  • Cuando se carga manualmente un conjunto de validación: El sistema ya no divide el conjunto de validación a partir de los datos de entrenamiento.
    • Tamaño del conjunto de entrenamiento = Volumen de datos del conjunto de entrenamiento cargado.
    • Tamaño del conjunto de validación = Volumen de datos del conjunto de validación cargado.

P: ¿Cómo diseño una buena palabra clave de activación?

R: Siga estas reglas:
  • Use combinaciones de letras sin significado, como sksstyle, a8z2_bbb.
  • Evite palabras comunes en inglés (por ejemplo, beautiful, fire, dance). Esto evita contaminar la comprensión original que tiene el modelo de estas palabras.

P: ¿Puede el ajuste fino cambiar la resolución o la duración del video?

R: No. El ajuste fino aprende "contenido" y "dinámica", no "especificaciones". El formato de video de salida (resolución, velocidad de fotogramas, duración máxima) sigue estando determinado por el modelo base.