Coisas que eu quero fazer
Vou tentar usar o modelo de geração de imagens Z-Image-Turbo no Alibaba em um ambiente sem CUDA.
Configuração do ambiente
Crie uma pasta de trabalho.
Mudar para o ambiente venv (opcional)
Se necessário, execute o seguinte comando no prompt de comando para criar e ativar o ambiente Venv.
python -mvenv venv
venv\scripts\activate.batInstalação da Biblioteca
Execute o seguinte comando para instalar as bibliotecas necessárias.
pip install git+https://github.com/huggingface/diffusers
pip install torch torchvision
pip install transformers
pip install accelerateSalve o seguinte conteúdo como um arquivo chamado run.py.
import torch
from diffusers import ZImagePipeline
pipe = ZImagePipeline.from_pretrained(
"Tongyi-MAI/Z-Image-Turbo",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=False,
)
pipe.to("cpu")
prompt = "Young Chinese woman in red Hanfu, intricate embroidery. Impeccable makeup, red floral forehead pattern. Elaborate high bun, golden phoenix headdress, red flowers, beads. Holds round folding fan with lady, trees, bird. Neon lightning-bolt lamp (⚡️), bright yellow glow, above extended left palm. Soft-lit outdoor night background, silhouetted tiered pagoda (西安大雁塔), blurred colorful distant lights."
# 2. Generate Image
image = pipe(
prompt=prompt,
height=256,
width=256,
num_inference_steps=9,
guidance_scale=0.0,
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("example.png")O código é basicamente o mesmo da página seguinte (modelo de cartão), mas foi modificado para rodar na CPU. Além disso, o tamanho das imagens geradas foi reduzido para fins de teste.

execução
Execute o seguinte comando para executar o script.
Um arquivo chamado example.png será criado na pasta onde você executou o comando.
python run.py
Tempo de execução
(A primeira execução será lenta porque o modelo será baixado. Dependendo do seu ambiente, pode levar de 1 a 2 horas adicionais. O download terá mais de 20 GB.)
Cada iteração leva cerca de 20 minutos para ser concluída.

No entanto, leva um bom tempo depois que o progresso mostrado acima atinge 100%. (Não cronometrei com precisão, mas talvez mais uma hora?)
pensamentos
Como o Flux.1 demorou 20 minutos para gerar uma imagem, minha impressão sincera é que ele foi lento.
No entanto, nunca tive sucesso em gerar uma imagem decente de 256×256 usando outros modelos de geração de imagens. Mas com o Z-Image-Turbo, consegui gerar imagens com a mesma qualidade da amostra.
Se as especificações forem suficientes
bônus
Registro de tentativas frustradas de execução usando DirectML.
import torch
from diffusers import ZImagePipeline
import torch_directml
dml = torch_directml.device()
pipe = ZImagePipeline.from_pretrained(
"Tongyi-MAI/Z-Image-Turbo",
torch_dtype=torch.float,
low_cpu_mem_usage=False,
)
pipe.to(dml)
prompt = "Young Chinese woman in red Hanfu, intricate embroidery. Impeccable makeup, red floral forehead pattern. Elaborate high bun, golden phoenix headdress, red flowers, beads. Holds round folding fan with lady, trees, bird. Neon lightning-bolt lamp (⚡️), bright yellow glow, above extended left palm. Soft-lit outdoor night background, silhouetted tiered pagoda (西安大雁塔), blurred colorful distant lights."
# 2. Generate Image
image = pipe(
prompt=prompt,
height=256,
width=256,
num_inference_steps=9, # This actually results in 8 DiT forwards
guidance_scale=0.0, # Guidance should be 0 for the Turbo models
generator=torch.Generator().manual_seed(42),
).images[0]
image.save("example.png")
erro
É de ponto flutuante para ponto flutuante, então nenhuma conversão deve ser necessária… memória?
Rastreamento (chamada mais recente por último):
Arquivo F:\projects\python\Qwen-Image\zi.py , linha 11, em
pipe.to(dml)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\diffusers\pipelines\pipeline_utils.py , linha 545, em
módulo.para(dispositivo, tipo de dispositivo)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\transformers\modeling_utils.py , linha 4343, em para
retornar super().to(*args, **kwargs)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 1174, em
retornar self._apply(converter)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 780, em _apply
módulo._aplicar(fn)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 780, em _apply
módulo._aplicar(fn)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 780, em _apply
módulo._aplicar(fn)
[Previous line repeated 1 more time]
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 805, em _apply
param_applied = fn(param)
Arquivo F:\projects\python\Qwen-Image\venv\lib\site-packages\torch\nn\modules\module.py , linha 1160, em convert
retornar t.para(
Erro de tempo de execução


コメント