Vamos tentar executar o Z-Image-Turbo na CPU.

この記事は約9分で読めます。
スポンサーリンク

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

Instalaçã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 accelerate

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

Tongyi-MAI/Z-Image-Turbo · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
スポンサーリンク

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

コメント

タイトルとURLをコピーしました