# O Space ZeroGPU. `gradio` vem do SDK do Space (o front-matter do README o # declara); `spaces` é injetado pelo próprio Hugging Face em hardware ZeroGPU. # O torch NÃO se fixa aqui: no ZeroGPU a versão de torch/CUDA compatível é a # do ambiente deles, e fixar a nossa por cima é como se quebra a alocação. # # O resto é a MESMA camada de inferência do worker CUDA # (services/gpu-worker/requirements.txt) — mesmos modelos, mesmas versões, # de propósito: dois pares de versões seriam dois comportamentos. # `>=0.38` é MEDIDO: é a versão em que o AceStepPipeline entrou no diffusers # — a música daqui carrega o checkpoint oficial em formato diffusers # (acestep-v15-xl-turbo-diffusers), sem o pacote do projeto. Fixe a versão # exata que o primeiro build verde escolher. diffusers>=0.38 # `>=4.51` é MEDIDO, não gosto: o Z-Image usa encoder Qwen3, e a classe # Qwen3Model só existe do 4.51 em diante — com 4.50 a primeira geração real # caiu com "module transformers has no attribute Qwen3Model". transformers>=4.51 accelerate>=1.2 safetensors>=0.5 # A voz vem pelo pacote OFICIAL do projeto (Qwen3TTSModel + os checkpoints # 12Hz) — a primeira validação real provou que AutoModel não serve: o id # antigo nem existia no Hub. Ele pina transformers==4.57.3, que satisfaz o # >=4.51 do Z-Image — os dois convivem. qwen-tts>=0.1.1 # A IMAGEM QUANTIZADA PRECISA DOS DOIS MOTORES, e cada um abre uma porta. # Nenhuma variante do Qwen-Image cabe nos 50 GB de disco de um Space sem # quantização (o modelo cheio pesa 57,7 GB, medido no Hub), então o padrão é # quantizado — e sem o motor dele instalado o `from_pretrained` levanta na # hora de montar os pesos e a imagem degrada para o gerador gratuito, EM # SILÊNCIO, que é o pior desfecho possível aqui. # # torchao -> o padrão de hoje: Ilus-AI/Qwen-Image-2512-FP8 (30,1 GB), # `Float8WeightOnlyConfig` no transformer e no text_encoder. # bitsandbytes -> as voltas de 4 bits: diffusers/qwen-image-nf4 (27,8 GB) e # unsloth/Qwen-Image-2512-unsloth-bnb-4bit (18,7 GB). # # Os dois ficam porque a volta é uma VARIÁVEL sem deploy (`IMAGE_MODEL`): # instalar só o motor do padrão faria a volta falhar justamente no dia em que # ela fosse necessária — e esse é o dia em que ninguém tem tempo de publicar. torchao>=0.9 bitsandbytes>=0.45 Pillow==11.1.0 imageio==2.36.1 imageio-ffmpeg==0.6.0 # O PACOTE `acestep` NÃO ENTRA AQUI, E NÃO FOI ESQUECIMENTO. Ele crava # transformers==4.50.0, e o Z-Image/Qwen3-TTS exigem >=4.51: no MESMO # processo os dois não se resolvem (pip cai em ResolutionImpossible). A # música usa o checkpoint OFICIAL em formato diffusers, pelo AceStepPipeline # do próprio diffusers >=0.38 — mesmo stack dos outros modelos, zero # dependência extra. boto3==1.35.90 requests>=2.32 # A voz do Live (Rápido TTS): números, datas e dinheiro por extenso em pt-BR. num2words pydantic