Path: blob/main/diffusers_doc/pt/pytorch/stable_diffusion.ipynb
7186 views
Desempenho básico
Difusão é um processo aleatório que demanda muito processamento. Você pode precisar executar o DiffusionPipeline várias vezes antes de obter o resultado desejado. Por isso é importante equilibrar cuidadosamente a velocidade de geração e o uso de memória para iterar mais rápido.
Este guia recomenda algumas dicas básicas de desempenho para usar o DiffusionPipeline. Consulte a seção de documentação sobre Otimização de Inferência, como Acelerar inferência ou Reduzir uso de memória para guias de desempenho mais detalhados.
Uso de memória
Reduzir a quantidade de memória usada indiretamente acelera a geração e pode ajudar um modelo a caber no dispositivo.
O método enable_model_cpu_offload() move um modelo para a CPU quando não está em uso para economizar memória da GPU.
Velocidade de inferência
O processo de remoção de ruído é o mais exigente computacionalmente durante a difusão. Métodos que otimizam este processo aceleram a velocidade de inferência. Experimente os seguintes métodos para acelerar.
Adicione
device_map="cuda"para colocar o pipeline em uma GPU. Colocar um modelo em um acelerador, como uma GPU, aumenta a velocidade porque realiza computações em paralelo.Defina
torch_dtype=torch.bfloat16para executar o pipeline em meia-precisão. Reduzir a precisão do tipo de dado aumenta a velocidade porque leva menos tempo para realizar computações em precisão mais baixa.
Use um agendador mais rápido, como
DPMSolverMultistepScheduler, que requer apenas ~20-25 passos.Defina
num_inference_stepspara um valor menor. Reduzir o número de passos de inferência reduz o número total de computações. No entanto, isso pode resultar em menor qualidade de geração.
Qualidade de geração
Muitos modelos de difusão modernos entregam imagens de alta qualidade imediatamente. No entanto, você ainda pode melhorar a qualidade de geração experimentando o seguinte.
Experimente um prompt mais detalhado e descritivo. Inclua detalhes como o meio da imagem, assunto, estilo e estética. Um prompt negativo também pode ajudar, guiando um modelo para longe de características indesejáveis usando palavras como baixa qualidade ou desfocado.
Para mais detalhes sobre como criar prompts melhores, consulte a documentação sobre Técnicas de prompt.
Experimente um agendador diferente, como
HeunDiscreteSchedulerouLMSDiscreteScheduler, que sacrifica velocidade de geração por qualidade.
Próximos passos
Diffusers oferece otimizações mais avançadas e poderosas, como group-offloading e compilação regional. Para saber mais sobre como maximizar o desempenho, consulte a seção sobre Otimização de Inferência.