Ao usar o Wan para geração de imagens, se o Guia de prompts para texto-para-vídeo/imagem-para-vídeo não atender às suas necessidades de personalização de estilos específicos, personagens de IP ou efeitos visuais, use o ajuste fino de modelo.
Escopo
Região suportada: Este documento aplica-se apenas à região de Singapore. Use uma chave de API desta região.
Método de ajuste fino suportado: Ajuste fino eficiente SFT-LoRA.
-
Modelos suportados:
Geração de imagens (texto-para-imagem/imagem-para-imagem): wan2.7-image-pro, wan2.7-image.
Como ajustar um modelo
Text-to-image
Objetivo do ajuste fino: Treinar um modelo LoRA de personagem.
Resultado esperado: Dado um prompt de texto, o modelo gera imagens de um personagem específico na cena descrita pelo prompt.
|
Prompt de entrada Uma pessoa em um vagão de metrô lotado durante o horário de pico matinal, segurando no corrimão, com passageiros desfocados ao fundo e luzes do túnel visíveis pelas janelas, vestindo camisa branca e calça preta comuns de escritório, parada de frente para a câmera, plano médio, sensação realista de foto espontânea. |
Imagem de saída (antes do ajuste fino - texto-para-imagem)
Sem uma imagem de referência, o modelo não consegue gerar um personagem específico. |
Imagem de saída (após o ajuste fino)
Após o ajuste fino, o modelo reproduz com confiabilidade o personagem específico do conjunto de treinamento. |
Image-to-image
Objetivo do ajuste fino: Treinar um modelo LoRA de "armadura mecha vermelha e preta pós-apocalíptica".
Resultado esperado: Dada uma imagem de personagem, o modelo gera uma versão estilizada do personagem com "armadura mecha vermelha e preta pós-apocalíptica", sem necessidade de prompt de texto.
|
Imagem de entrada
|
Imagem de saída (antes do ajuste fino)
Apenas prompts de texto não conseguem produzir de forma confiável o efeito específico de "armadura mecha vermelha e preta pós-apocalíptica" todas as vezes. |
Imagem de saída (após o ajuste fino)
Após o ajuste fino, o modelo reproduz o efeito de "armadura mecha vermelha e preta pós-apocalíptica" do conjunto de treinamento sem exigir um prompt de texto. |
Antes de executar o código abaixo, Obtenha uma chave de API e Configure a chave de API como variável de ambiente.
Etapa 1: Carregar o conjunto de dados
Carregue seu conjunto de dados local (no formato .zip) para a plataforma Alibaba Cloud Model Studio e obtenha o ID do arquivo (file_idid).
Dados de treinamento de exemplo: Para o formato, consulte Conjunto de treinamento.
Geração de imagens - texto-para-imagem: wan-image-t2i-training-dataset.zip
Geração de imagens - imagem-para-imagem: wan-image-i2i-training-dataset.zip
Exemplo de solicitação
Este exemplo usa texto-para-imagem e carrega apenas o conjunto de treinamento. O sistema divide automaticamente uma parte do conjunto de treinamento para servir como conjunto de validação.
curl --location --request POST 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/files' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--form 'file=@"./wan-image-t2i-training-dataset.zip"' \
--form 'purpose="fine-tune"'
Exemplo de resposta
Salve o id. Este é o identificador exclusivo do conjunto de dados carregado.
{
"id": "file-ft-3c67043a747c-xxxxxx",
"object": "file",
"bytes": 73310369,
"filename": "wan-image-t2i-training-dataset.zip",
"purpose": "fine-tune",
"status": "processed",
"created_at": 1782271893
}
Etapa 2: Ajustar o modelo
Etapa 2.1: Criar um job de ajuste fino
Use o ID do arquivo obtido na Etapa 1 para iniciar um job de treinamento.
Exemplo de solicitação
Substitua <replace_with_training_dataset_file_id> pelo id obtido na etapa anterior. Para a referência completa de parâmetros e restrições de formato, consulte Hiperparâmetros.
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-image-pro",
"training_datasets": [
{
"data_source_type": "file_id",
"file_id": "<replace_with_training_dataset_file_id>"
}
],
"training_type": "efficient_sft",
"hyper_parameters": {
"learning_rate": 3e-5,
"max_steps": 800,
"eval_steps": 200,
"max_token_length": "1k",
"gradient_clip": 0.5,
"weight_decay": 0.02,
"max_pixels": "1k",
"val_img_size": "1k",
"generation_type": "t2i",
"lora_rank": 32,
"save_total_limit": 10
}
}'
Referência de duração do treinamento:
Texto-para-imagem (t2i): aproximadamente 77 minutos para 300 etapas.
Imagem-para-imagem (i2i): aproximadamente 110 minutos para 300 etapas.
Exemplo de resposta
Observe três parâmetros principais no campo output:
job_id: O ID do job, usado para consultar o progresso.finetuned_output: O nome do modelo ajustado. Use este nome para implantação e invocação subsequentes.status: O status do treinamento. Após criar um job de ajuste fino, o status inicial é PENDING, indicando que o treinamento ainda não começou.
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "PENDING",
"finetuned_output": "xxxx-ft-202511111122-xxxx",
...
}
}
Etapa 2.2: Consultar o status do job de ajuste fino
Use o job_id obtido na Etapa 2.1 para consultar o progresso do job. Faça polling da seguinte API até que o status mude para SUCCEEDED.
Exemplo de solicitação
Substitua <replace_with_fine_tuning_job_id> na URL pelo valor de job_id.
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
Exemplo de resposta
Observe dois parâmetros no campo output:
status: Quando o valor mudar para SUCCEEDED, o treinamento do modelo estará concluído e você poderá prosseguir com a implantação.usage: O número total de tokens consumidos durante o treinamento do modelo, usado para fins de faturamento.
{
...
"output": {
"job_id": "ft-202511111122-xxxx",
"status": "SUCCEEDED",
"usage": 432000,
...
}
}
Etapa 3: Implantar o modelo ajustado
Etapa 3.1: Implantar o modelo como um service online
Depois que o status do job de ajuste fino mudar para SUCCEEDED, implante o modelo como um service online.
Exemplo de solicitação
Substitua <replace_with_model_name> pelo valor de finetuned_output obtido na saída de Criar um job 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": "<replace_with_model_name>",
"capacity": 1,
"plan": "lora"
}'
Exemplo de resposta
Observe dois parâmetros no campo output:
deployed_model: O nome do modelo implantado, usado para consultar o status da implantação e invocar o modelo.status: O status da implantação do modelo. Após implantar o modelo ajustado, o status inicial é PENDING, indicando que a implantação ainda não começou.
{
...
"output": {
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
"status": "PENDING",
...
}
}
Etapa 3.2: Consultar o status da implantação
Consulte o status da implantação. Faça polling da seguinte API até que o status mude para RUNNING.
Para o modelo ajustado neste exemplo, o processo de implantação leva aproximadamente 5 a 10 minutos.
Exemplo de solicitação
Substitua <replace_with_deployed_model> pelo valor de deployed_model obtido na saída da Etapa 3.1.
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/deployments/<replace_with_deployed_model>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json'
Exemplo de resposta
Observe dois parâmetros no campo output:
status: Quando o status mudar para RUNNING, o modelo foi implantado com sucesso e você pode começar a invocá-lo.deployed_model: O nome do modelo implantado.
{
...
"output": {
"status": "RUNNING",
"deployed_model": "wan2.7-image-pro-xxxxxxxxxxxx",
...
}
}
Etapa 4: Invocar o modelo para gerar imagens
Após a implantação bem-sucedida do modelo (quando o status da implantação for RUNNING), inicie as invocações.
O modelo implantado atualmente suporta apenas chamadas assíncronas, e não há campo type em message.content.
Criar conjuntos de dados personalizados
Além de usar os dados de exemplo deste documento para experimentar o fluxo de trabalho de ajuste fino, você também pode criar seus próprios conjuntos de dados para ajuste fino.
Um conjunto de dados deve conter um conjunto de treinamento (obrigatório) e um conjunto de validação (opcional; suporta divisão automática a partir do conjunto de treinamento). Compacte todos os arquivos no formato .zip. Os nomes dos arquivos devem conter apenas caracteres em inglês, dígitos, sublinhados ou hifens.
Formato do conjunto de dados
Conjunto de treinamento: Obrigatório
Text-to-image
O conjunto de treinamento inclui imagens-alvo de treinamento e um arquivo de anotação (data.jsonl).
Exemplo de conjunto de treinamento: wan-image-t2i-training-dataset.zip
-
Estrutura de diretórios do pacote Zip:
wan-image-t2i-training-dataset.zip ├── data.jsonl # Must be named data.jsonl, maximum 20MB ├── 1_0.png # Training target image, max resolution 4096*4096, max 20MB per image, supports PNG/JPG/JPEG/WEBP/BMP ├── 1_1.png # File names support only English characters, flat structure (no subdirectories) └── 1_2.png -
Arquivo de anotação (data.jsonl): Cada linha representa uma amostra de treinamento e deve ser um objeto JSON.
{ "prompt": "s86b5p, A person in a quiet private library on a peaceful afternoon, with tall dark walnut bookshelves behind them, sunlight streaming through venetian blinds casting striped shadows, wearing a soft beige cable-knit sweater, standing facing the camera, half-body shot, the image has a delicate film grain texture.", "img_path": "./1_0.png" }
Image-to-image
O conjunto de treinamento inclui imagens de referência (entrada), imagens-alvo de treinamento (saída) e um arquivo de anotação (data.jsonl).
Exemplo de conjunto de treinamento: wan-image-i2i-training-dataset.zip
-
Estrutura de diretórios do pacote Zip:
wan-image-i2i-training-dataset.zip ├── data.jsonl # Must be named data.jsonl, maximum 20MB ├── 1_0.jpg # Training target image (output) ├── 1_1.jpg # Reference image (input) ├── 6_0.jpg # Training target image (output) └── 6_1.jpg # Reference image (input) -
Arquivo de anotação (data.jsonl): Cada linha representa uma amostra de treinamento e deve ser um objeto JSON.
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./1_1.jpg", "img_path": "./1_0.jpg" }
Multi-image-to-image
O conjunto de treinamento inclui múltiplas imagens de referência (entrada), imagens-alvo de treinamento (saída) e um arquivo de anotação (data.jsonl). Diferente do modo imagem-para-imagem simples, o modo multi-imagem-para-imagem suporta a entrada de várias imagens de referência simultaneamente (por exemplo, uma foto de personagem + uma imagem de pose, até 9 imagens de referência). O modelo gera a imagem-alvo com base nas informações combinadas de todas as imagens de referência.
Exemplo de conjunto de treinamento:
-
Estrutura de diretórios do pacote Zip:
wan-image-multi-i2i-training-dataset.zip ├── data.jsonl # Must be named data.jsonl, maximum 20MB ├── 1_0.jpg # Training target image (output) ├── 1_ref.jpg # Reference image 1 (e.g., character photo) ├── 1_pose.jpg # Reference image 2 (e.g., pose image) ├── 6_0.jpg # Training target image (output) ├── 6_ref.jpg # Reference image 1 └── 6_pose.jpg # Reference image 2 -
Arquivo de anotação (data.jsonl): Cada linha representa uma amostra de treinamento e deve ser um objeto JSON. Use o campo
input_imgs(tipo array) para passar os caminhos de múltiplas imagens de referência.{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./1_ref.jpg", "./1_pose.jpg"], "img_path": "./1_0.jpg" }
O modo multi-imagem-para-imagem usa
input_imgs(array), enquanto o modo imagem-para-imagem simples usainput_img(string). Observe a diferença.A ordem das imagens no array
input_imgsdeve ser consistente com a intenção do treinamento (por exemplo, a primeira imagem como referência de personagem, a segunda como referência de pose).input_imgssuporta até 9 imagens de referência.
O arquivo data.jsonl deve estar no formato JSONL delimitado por linhas (um objeto JSON independente por linha). O uso de formato de array JSON (onde o primeiro caractere do arquivo é
[) não é permitido.Os arquivos dentro do pacote zip devem estar em uma estrutura plana. Subdiretórios não são permitidos. Os nomes dos arquivos suportam apenas caracteres em inglês (caracteres chineses, espaços e caracteres especiais não são permitidos).
Conjunto de validação: Opcional
O conjunto de validação inclui um arquivo de anotação (data.jsonl) e imagens de referência opcionais (obrigatórias para o modo imagem-para-imagem). Imagens-alvo não são necessárias. Em cada checkpoint de avaliação, o job de treinamento invoca automaticamente o service do modelo para gerar imagens de pré-visualização usando os prompts (e imagens de referência) do conjunto de validação.
-
Conjunto de validação:
Texto-para-imagem: wan-image-t2i-valid-dataset.zip
Imagem-para-imagem: wan-image-i2i-valid-dataset.zip
-
Estrutura de diretórios do pacote Zip:
wan-image-i2i-valid-dataset.zip ├── data.jsonl # Must be named data.jsonl, maximum 20MB ├── input_001.png # Optional, reference image for image-to-image mode └── input_002.png -
Arquivo de anotação (data.jsonl): Cada linha representa uma amostra de validação e deve ser um objeto JSON.
Text-to-image
{ "prompt": "s86b5p, A person in a crowded morning rush hour subway car, holding onto the handrail, with blurred passengers in the background and tunnel lights visible through the windows, wearing an ordinary office worker white shirt and black trousers, standing facing the camera, half-body shot, realistic candid feel." }Image-to-image
{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.", "input_img": "./input_001.png" }Multi-image-to-image
O conjunto de validação multi-imagem-para-imagem usa
input_imgs(array) para passar caminhos de múltiplas imagens de referência, suportando até 9 imagens.{ "prompt": "s86b5p, Change the background to an elevator with red lighting, featuring large floor-to-ceiling windows. Outside the windows, there is a post-apocalyptic scene with red mist. Change the character's clothing to red tight-fitting mech armor with black stripe decorations. Standing with both arms stretched horizontally to form a T-shape.", "input_imgs": ["./input_001.png", "./input_002.png"] }
Escala de dados e limites
Volume de dados: Recomendamos fornecer pelo menos 25 imagens (50 ou mais é recomendado para melhores resultados). Use o mesmo personagem ou estilo em várias cenas e ângulos, com descrições de conteúdo consistentes.
Pacote Zip: Ao carregar via API, o tamanho total do pacote não deve exceder 1 GB.
-
Requisitos da imagem de treinamento:
Formatos de imagem suportados: BMP, JPEG, PNG e WEBP.
A resolução da imagem não deve exceder 4096×4096.
O tamanho individual do arquivo de imagem não deve exceder 20 MB.
Coleta e limpeza de dados
1. Determinar o cenário de ajuste fino
O Wan suporta os seguintes cenários de ajuste fino para geração de imagens:
Estilização de personagem de IP: Treine o modelo para aprender o estilo de desenho de um personagem de IP específico, como personagens de anime ou imagens de mascotes.
Estilo visual fixo: Melhore a capacidade do modelo de reproduzir um estilo de arte específico, como ilustração flat, pintura a tinta ou pixel art.
Geração de cena específica: Replique padrões de composição específicos ou modelos de cena, como imagens de exibição de produtos ou layouts de pôsteres.
2. Obter materiais brutos
Geração e seleção por IA: Use o modelo base Wan para gerar imagens em massa e selecione manualmente as amostras de alta qualidade que melhor correspondem ao efeito desejado. Este é o método mais utilizado.
Fotografia real: Se o objetivo for alcançar cenas altamente realistas (como fotos reais de produtos ou retratos), o uso de filmagens reais é a melhor escolha.
Renderização em software 3D: Para cenas que exigem controle fino de detalhes ou estilos de renderização 3D, recomendamos o uso de softwares 3D (como Blender ou C4D) para criar materiais de origem.
3. Limpar os dados
|
Dimensão |
Melhor prática |
Anti-padrão |
|
Consistência |
As características principais devem ser altamente consistentes. Por exemplo: Ao treinar um "estilo de ilustração flat", todas as imagens devem compartilhar a mesma espessura de linha e esquema de cores. |
Estilos mistos. O conjunto de dados contém imagens tanto no estilo impasto quanto no estilo flat. O modelo não consegue determinar qual estilo aprender. |
|
Diversidade |
Quanto mais diversos os assuntos e cenas, melhor. Cubra diferentes assuntos (homens, mulheres, idosos, crianças, gatos, cães, edifícios) e diferentes composições (plano geral, close-up, extreme close-up). Resolução e proporções de aspecto também devem ser o mais variadas possível. |
Cena ou assunto único. Todas as imagens mostram "uma pessoa de roupa vermelha contra uma parede branca". O modelo pode aprender erroneamente que "roupa vermelha" e "parede branca" fazem parte do estilo e falhar ao gerar corretamente em cenas diferentes. |
|
Equilíbrio |
Proporções equilibradas entre tipos de dados. Se múltiplos estilos forem incluídos, a quantidade deve ser aproximadamente igual. |
Proporções severamente desequilibradas. 90% são imagens de retrato e 10% são imagens de paisagem. O modelo pode ter um desempenho ruim ao gerar imagens de paisagem. |
|
Limpeza |
Imagens limpas e claras. Use materiais originais sem distrações. |
Contém elementos distrativos. Imagens contêm marcas d'água, bordas pretas óbvias ou ruído. O modelo pode aprender as marcas d'água como parte do estilo. |
|
Resolução |
Resolução moderada. Recomendamos que a resolução da imagem de treinamento não exceda 2048×2048. Imagens excessivamente grandes aumentam o tempo de treinamento. |
Resolução varia muito. Ter imagens pequenas de 256×256 e imagens grandes de 4096×4096 no conjunto de treinamento afeta a estabilidade do treinamento. |
Anotação de imagens: Escrevendo prompts para imagens
No arquivo de anotação do conjunto de dados (data.jsonl), cada imagem possui um prompt correspondente. O prompt descreve o conteúdo da imagem-alvo. A qualidade do prompt determina diretamente o que o modelo aprende.
Fórmula de escrita de prompt
Prompt = [Descrição do assunto] + [Descrição do fundo] + [Palavra-gatilho] + [Descrição do estilo]
|
Componente do prompt |
Descrição |
Recomendação |
Exemplo |
|
Descrição do assunto |
Descreve as pessoas ou objetos na imagem |
Obrigatório |
Uma jovem vestindo uma camisa longa vermelha de estilo chinês... |
|
Descrição do fundo |
Descreve o ambiente onde o assunto está localizado |
Obrigatório |
O fundo é uma parede de tijolos coberta de videiras verdes... |
|
Palavra-gatilho |
Uma palavra rara sem significado real |
Recomendado |
s86b5p ou m01aa |
|
Descrição do estilo |
Descreve detalhadamente o estilo artístico e as características visuais da imagem-alvo |
Recomendado |
Renderizado em estilo de ilustração flat com linhas limpas e fluidas e cores planas vivas para enfatizar a tridimensionalidade e a estética de design moderno. |
Avaliar modelos com conjuntos de validação
Especificar o conjunto de validação
Um job de ajuste fino deve incluir um conjunto de treinamento, enquanto o conjunto de validação é opcional. Você pode optar por deixar o sistema fazer a divisão automática ou carregar manualmente um conjunto de validação. Os métodos específicos são os seguintes:
Método 1: Nenhum conjunto de validação carregado (divisão automática pelo sistema)
Ao utilizar a API de ajuste fino de modelos de geração de vídeo e imagem, se nenhum conjunto de validação for carregado separadamente (ou seja, o parâmetro validation_file_ids não for fornecido), o sistema divide um conjunto de validação a partir do conjunto de treinamento com base no split, cujo padrão é 0,9. Isso significa que 90% é usado para treinamento e 10% para validação.
Método 2: Carregar manualmente um conjunto de validação (especificado via validation_file_ids)
Se você quiser usar seus próprios dados preparados para avaliar checkpoints em vez de depender da divisão aleatória do sistema, carregue um conjunto de validação personalizado.
Nota: Uma vez que você opte por carregar manualmente, o sistema ignora completamente as regras de divisão automática acima e usa apenas os dados que você carregou para validação.
Selecionar o melhor checkpoint para implantação
Durante o treinamento, o sistema salva periodicamente "snapshots" do modelo (ou seja, checkpoints). Por padrão, o sistema produz o último checkpoint como o modelo final ajustado. No entanto, checkpoints produzidos em estágios intermediários podem ter um desempenho melhor do que a versão final. Selecione aquele que considerar mais satisfatório para implantação.
O sistema executa checkpoints no conjunto de validação e gera imagens de pré-visualização em intervalos definidos pelos Hiperparâmetros (hyper_parameters) eval_steps.
Como avaliar: Julgue os resultados observando diretamente as imagens de pré-visualização geradas.
Critérios de seleção: Encontre o checkpoint com os melhores resultados e o estilo mais próximo do desejado.
Procedimento
Faturamento
-
Treinamento do modelo: Cobrado.
Custo = Total de tokens de treinamento × Preço unitário. Consulte Preços de treinamento e implantação.
Após a conclusão do treinamento, verifique o número total de tokens consumidos durante o treinamento no campo
usageda API Recuperar um job de ajuste fino.
A tabela a seguir lista as contagens de etapas de treinamento e custos estimados para wan2.7-image e wan2.7-image-pro. Estes dados são apenas para referência. Os resultados reais do treinamento estão sujeitos à entrega final, e os custos estão sujeitos à fatura oficial. Para fórmulas detalhadas de faturamento, consulte Preços de treinamento e implantação.
generation_type
Resolução da Imagem
Contagem Comum de Etapas
Consumo Estimado de Tokens
Custo Estimado
t2i (texto-para-imagem)
1K
500
6.400.000
$96
1.000
12.800.000
$192
2.000
25.600.000
$384
2K
500
11.610.000
$174,15
1.000
23.220.000
$348,3
2.000
46.440.000
$696,6
i2i (imagem-para-imagem)
1K
500
11.610.000
$174,15
1.000
23.220.000
$348,3
2.000
46.440.000
$696,6
2K
500
16.000.000
$240
1.000
32.000.000
$480
2.000
64.000.000
$960
-
Implantação e invocação do modelo: A implantação é gratuita. As invocações são cobradas à taxa padrão do modelo base ajustado.
ID do Modelo
Preço de Implantação e Invocação LoRA
wan2.7-image-pro
$0,075/imagem
wan2.7-image
$0,03/imagem
Referência da API
FAQ
P: Como projetar uma boa palavra-gatilho?
R: As regras são as seguintes:
Recomendamos usar combinações raras de caracteres sem significado semântico real, como s86b5p, m01aa ou EVEAven638123. Garanta que não haja significado semântico no vocabulário do modelo base.
Evite usar palavras comuns em inglês (como beautiful, fire ou dance), pois isso poluiria o entendimento original do modelo sobre essas palavras.




