Todos os produtos
Search
Central de documentação

Alibaba Cloud Model Studio:Fine-tune image generation models

Última atualização: Jul 10, 2026

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)

7217b6ac-789d-43c3-aaa5-22647532de52_0

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)

1_24

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

29_0

Imagem de saída (antes do ajuste fino)

output_0_0

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)

29_1

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.

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

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.

Nota

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.

Nota

O modelo implantado atualmente suporta apenas chamadas assíncronas, e não há campo type em message.content.

Etapa 4.1: Criar uma tarefa de geração de imagens e obter o task_id

Exemplo de solicitação

Substitua <replace_with_deployed_model> pelo valor de deployed_model da etapa anterior.

Text-to-image

Forneça uma descrição de texto contendo a palavra-gatilho. O modelo gera imagens correspondentes ao estilo treinado.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "<replace_with_deployed_model>",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"text": "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."}
                ]
            }
        ]
    },
    "parameters": {
        "size": "2K",
        "n": 1
    }
}'

Image-to-image

Forneça uma imagem de referência e instruções de edição. O modelo gera imagens baseadas na imagem de referência no estilo treinado.

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/image-generation/generation' \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "X-DashScope-Async: enable" \
--data '{
    "model": "<replace_with_deployed_model>",
    "input": {
        "messages": [
            {
                "role": "user",
                "content": [
                    {"image": "<replace_with_reference_image_URL>"},
                    {"text": "s86b5p, Change the background to an elevator with red lighting. Change the character clothing to red tight-fitting mech armor with black stripe decorations."}
                ]
            }
        ]
    },
    "parameters": {
        "size": "2K",
        "n": 1
    }
}'

Exemplo de resposta

Copie e salve o task_id para consultar o resultado na próxima etapa.

{
    "request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx",
    "output": {
        "task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx",
        "task_status": "PENDING"
    }
}

Parâmetros de entrada

Nota

Ao invocar um modelo LoRA ajustado, os parâmetros de entrada são os mesmos do Wan2.7 - geração e edição de imagens.

A tabela a seguir lista apenas os parâmetros principais para invocação de modelo LoRA.

Campo

Tipo

Obrigatório

Descrição

Exemplo

model

string

Sim

O nome do modelo. Use um modelo ajustado que tenha sido implantado com sucesso e esteja com status RUNNING.

wan2.7-image-pro-xxxxxxxxxxxx

input.messages[].content[].text

string

Sim

O prompt de texto. Recomendamos incluir a palavra-gatilho para ativar o estilo LoRA.

s86b5p, Uma pessoa em uma biblioteca privada silenciosa em uma tarde tranquila...

parameters.size

string

Não

A resolução da imagem de saída.

  • Opção 1: Especificar a resolução de saída (recomendado)

    • Suporta 1K, 2K (padrão) e 4K

    • Modes aplicáveis:

      • Texto-para-imagem: suporta 1K, 2K e 4K.

      • Edição de imagem: suporta 1K e 2K.

    • Total de pixels por resolução: 1K: 10241024, 2K: 20482048, 4K: 4096*4096

  • Opção 2: Especificar valores de largura e altura em pixels

    • Texto-para-imagem: O total de pixels deve estar entre [768768, 40964096], com proporção de aspecto entre [1:8, 8:1].

    • Edição de imagem: O total de pixels deve estar entre [768768, 20482048], com proporção de aspecto entre [1:8, 8:1].

2K

parameters.n

integer

Não

O número de imagens a serem geradas. Valores válidos: 1-4. Padrão: 1.

1

Etapa 4.2: Consultar resultados por task_id

Faça polling do status da tarefa usando o task_id até que o task_status mude para SUCCEEDED. Recupere a URL da imagem em output.choices[].message.content[].image.

Exemplo de solicitação

Substitua 86ecf553-d340-4e21-xxxxxxxxx pelo seu task_id real.
curl -X GET https://dashscope-intl.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-xxxxxxxxx \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Exemplo de resposta

A URL da imagem é válida por 24 horas. Baixe a imagem prontamente.
{
    "request_id": "3f2ebb4e-3d47-97b5-xxxx-xxxxxx",
    "output": {
        "task_id": "aeea547c-e24e-4acb-xxxx-xxxxxx",
        "task_status": "SUCCEEDED",
        "submit_time": "2026-05-29 17:35:23.826",
        "scheduled_time": "2026-05-29 17:35:23.865",
        "end_time": "2026-05-29 17:36:32.498",
        "finished": true,
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": [
                        {
                            "image": "https://dashscope-7c2c.oss-accelerate.aliyuncs.com/xxx.png?Expires=xxxxxx"
                        }
                    ]
                }
            }
        ]
    },
    "usage": {
        "size": "2048*2048",
        "total_tokens": 770,
        "image_count": 1,
        "output_tokens": 691,
        "input_tokens": 79
    }
}

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"
    }
Nota
  • O modo multi-imagem-para-imagem usa input_imgs (array), enquanto o modo imagem-para-imagem simples usa input_img (string). Observe a diferença.

  • A ordem das imagens no array input_imgs deve 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_imgs suporta até 9 imagens de referência.

Nota
  • 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:

  • 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.

Sobre palavras-gatilho

  • O que é uma palavra-gatilho?

    Ela serve como uma "âncora visual". Como muitos estilos visuais complexos (como uma textura de imagem única ou esquema de cores específico) são difíceis de descrever precisamente em texto, uma palavra-gatilho diz explicitamente ao modelo: quando você vir s86b5p, deve gerar este estilo visual específico.

  • Por que usá-la?

    O ajuste fino do modelo estabelece mapeamentos entre "texto" e "características da imagem". A palavra-gatilho vincula um "estilo indescritível" a uma palavra única, permitindo que o modelo se fixe no alvo.

  • Se já temos uma palavra-gatilho, por que ainda descrever o estilo em detalhes?

    Os dois servem a propósitos diferentes e funcionam melhor juntos.

    • Descrição do estilo: Explica "como a imagem deve parecer". Ela informa ao modelo o estilo artístico básico e as características visuais. A descrição do estilo geralmente é consistente em várias amostras.

    • Palavra-gatilho: Explica "como o estilo se parece especificamente". Ela representa características visuais únicas que não podem ser descritas com precisão em texto.

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.

Procedimento: Carregar manualmente um conjunto de validação

  1. Prepare o conjunto de validação: Compacte os dados de validação em um arquivo .zip separado. Consulte Formato do conjunto de validação.

  2. Carregue o conjunto de validação: Chame a API de Ajuste fino de modelos de geração de vídeo e imagem para carregar este arquivo .zip do conjunto de validação e obtenha um ID de arquivo dedicado.

  3. Especifique o conjunto de validação ao criar o job: Ao chamar a API de Ajuste fino de modelos de geração de vídeo e imagem, preencha este ID de arquivo no parâmetro validation_file_ids.

    {
        "model":"wan2.7-image-pro",
        "training_file_ids":[ "<training_set_file_id>" ],
        "validation_file_ids": [ "<custom_validation_set_file_id>" ],
        ...
    }

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

Etapa 1: Visualizar resultados de pré-visualização gerados pelos checkpoints

Etapa 1.1: Consultar a lista de checkpoints validados

Esta API retorna apenas checkpoints que passaram na validação e geraram imagens de pré-visualização com sucesso. Checkpoints que falharam na validação não são listados.

Exemplo de solicitação

curl --location 'https://dashscope.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' 

Exemplo de resposta

Esta API retorna uma lista contendo apenas os nomes dos checkpoints que passaram com sucesso na validação.

{
    "request_id": "da1310f5-5a21-4e29-99d4-xxxxxx",
    "output": [
        {
            "checkpoint": "checkpoint-160"
        },
        ...
    ]
}
Etapa 1.2: Consultar os resultados do conjunto de validação para um checkpoint

Selecione um checkpoint da lista retornada na etapa anterior (por exemplo, "checkpoint-160") e visualize os resultados das imagens geradas.

Exemplo de solicitação

  • <replace_with_fine_tuning_job_id>: Substitua inteiramente pelo valor de job_id da saída de Criar um job de ajuste fino.

  • <replace_with_checkpoint_to_export>: Substitua inteiramente pelo valor do checkpoint, por exemplo "checkpoint-160".

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/validation-details/<replace_with_checkpoint_to_export>?page_no=1&page_size=10' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Exemplo de resposta

A URL da imagem de pré-visualização está no campo img_path e é válida por 24 horas. Baixe as imagens prontamente para revisar os resultados. Repita esta etapa para comparar os resultados de múltiplos checkpoints e encontrar o mais satisfatório.

{
    "request_id": "375b3ad0-d3fa-451f-b629-xxxxxxx",
    "output": {
        "page_no": 1,
        "page_size": 10,
        "total": 5,
        "list": [
            {
                "img_path": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/xxx.png?Expires=xxxxxx",
                "prompt": "s86b5p, Change the background to an elevator equipped with a white ceiling lighting, featuring large floor-to-ceiling windows. Change the character's clothing to red tight-fitting mech armor with black stripe decorations.",
                "input_img": "https://finetune-result.oss-cn-wulanchabu.aliyuncs.com/val_dataset/input_001.png?Expires=xxxxxx"
            },
            ...
        ]
    }
}

Etapa 2: Exportar o checkpoint e obter o nome do modelo para implantação

Etapa 2.1: Exportar o modelo

Assumindo que "checkpoint-160" tenha os melhores resultados, o próximo passo é exportá-lo.

Exemplo de solicitação

  • <replace_with_fine_tuning_job_id>: Substitua inteiramente pelo valor de job_id da saída de Criar um job de ajuste fino.

  • <replace_with_checkpoint_to_export>: Substitua inteiramente pelo valor do checkpoint, por exemplo "checkpoint-160".

  • <replace_with_exported_model_display_name>: Substitua inteiramente por um nome de modelo personalizado usado apenas para exibição no console, por exemplo "wan2.5-checkpoint-160". Este nome deve ser globalmente único. Não é suportada a exportação com nomes duplicados. Para detalhes dos parâmetros, consulte 3. Exportar um checkpoint.

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_display_name>' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Exemplo de resposta

O parâmetro de resposta output=true indica que a solicitação de exportação foi criada com sucesso.

{
    "request_id": "0817d1ed-b6b6-4383-9650-xxxxx",
    "output": true
}
Etapa 2.2: Consultar o novo nome do modelo para implantação

Consulte o status de todos os checkpoints, confirme que a exportação foi concluída e obtenha o novo nome de modelo dedicado (model_name) para implantação.

Exemplo de solicitação

curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/fine-tunes/<replace_with_fine_tuning_job_id>/checkpoints' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY"

Exemplo de resposta

Localize o checkpoint exportado (como checkpoint-160) na lista retornada. Quando seu status mudar para SUCCEEDED, a exportação foi bem-sucedida. O campo model_name retornado neste momento é o novo nome do modelo após a exportação.

{
    "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, used for model deployment and invocation
            "model_display_name": "xxxx-ft-202511111122-xxxx",
            "status": "SUCCEEDED" // Successfully exported checkpoint
        },
        ...

    ]
}

Etapa 3: Implantar e invocar o modelo

Após exportar com sucesso o checkpoint e obter o model_name, siga estas etapas para as operações subsequentes:

Faturamento

  • Treinamento do modelo: Cobrado.

    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

API de ajuste fino de modelos de geração de vídeo e imagem

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.