As GPUs de alto nível para consumo são boas para inferência de difusão estável em escala? Se sim, qual seria o custo diário para gerar milhões de imagens? Você realmente precisa de A10s, A100s ou H100s?
Neste benchmark, respondemos a essas perguntas lançando um aplicativo baseado em difusão estável e ajustado no SaladCloud.
O resultado: ampliamos para 750 réplicas (GPUs) e geramos mais de 9,2 milhões de imagens usando 3,62 TB de armazenamento em 24 horas por um custo total de US$ 1.872 .
Ao gerar 4.954 imagens por dólar , este benchmark mostra que a inferência generativa de IA em escala em GPUs de consumo é prática, acessível e um caminho para reduzir os custos da nuvem. Nesta postagem, revisaremos a arquitetura do aplicativo e detalhes do modelo, implantação no SaladCloud com detalhes imediatos e resultados de inferência do benchmark. Em uma postagem subsequente, forneceremos um passo a passo técnico e um código de referência que você pode usar para replicar esse benchmark.
Este benchmark foi executado para uma ferramenta generativa de geração de imagens de IA no estilo SaaS para arte personalizada. Os usuários finais navegam pelas categorias de modelos ajustados, selecionam um modelo, personalizam o prompt e os parâmetros e enviam um trabalho para gerar uma ou mais imagens. Depois de geradas, as imagens são apresentadas ao usuário final. Ajudamos a desenvolver o contêiner de inferência para demonstrar o potencial dos nós SaladCloud para este caso de uso. O diagrama a seguir fornece uma representação de alto nível da arquitetura do sistema:
Os principais componentes incluem um aplicativo baseado na Web (frontend e backend), uma fila de tarefas dedicada, um contêiner de inferência e um serviço de armazenamento em bloco. O Azure Queue Storage foi usado para a fila de trabalhos e forneceu agendamento FIFO. O Azure Blob Storage foi usado para fornecer o armazenamento de blocos. O diagrama a seguir fornece uma representação de alto nível da arquitetura do contêiner de inferência:
O contêiner foi baseado na Stable Diffusion Web UI do Automatic1111 . Criamos e adicionamos um trabalhador personalizado ao contêiner escrito em Go que implementou o pipeline de processamento de trabalho. O trabalhador aproveitou o Azure SDK for Go para comunicar com os serviços Azure Queue Storage e Azure Blob Storage. O trabalhador pesquisa sequencialmente a fila em busca de um trabalho, usa o ponto de extremidade da API text2img fornecido pelo servidor Stable Diffusion Web UI para gerar as imagens e carrega as imagens no contêiner de blob.
Depois de construir a imagem do contêiner de inferência, criamos uma implantação de contêiner gerenciado SaladCloud usando o portal baseado na web.
A implantação teve como alvo 750 nós exclusivos com pelo menos 4 vCPUs, pelo menos 8 GB de RAM e uma GPU NVIDIA RTX série 2000, 3000 ou 4000 com pelo menos 8 GB de VRAM. Embora o SaladCloud permita uma seleção de nós mais direcionada, decidimos permitir que o agendador pegasse os primeiros nós disponíveis com uma GPU compatível com base na capacidade de rede não utilizada. Também digno de nota é que não restringimos a distribuição geográfica da implantação.
A fila de trabalhos foi preenchida com 10 milhões de prompts de geração de imagens variáveis . A seguir está um exemplo de um dos trabalhos:
{"prompt": "photo of a jump rope, lora:magic-fantasy-forest-v2:0.35, magic-fantasy-forest, digital art, most amazing artwork in the world, ((no humans)), volumetric light, soft balanced colours, forest scenery, vines, uhd, 8k octane render, magical, amazing, ethereal, intricate, intricate design, ultra sharp, shadows, cooler colors, trending on cgsociety, ((best quality)), ((masterpiece)), (detailed)","negative_prompt": "oversaturation, oversaturated colours, (deformed, distorted, disfigured:1.3), distorted iris, poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, human, man, woman", "sampler_name": "k_euler_a", "steps": 15, "cfg_scale": 7}
Cada trabalho incluía uma definição LoRA incorporada no prompt de texto, e cada trabalho usava substantivos concretos e descrições de ambiente ligeiramente diferentes. As imagens produzidas foram fixadas no tamanho de 512x512 pixels, o amostrador foi fixado no Euler Ancestral, o número de passos fixado em 15 e a escala CFG fixada em 7.
Durante o período de 24 horas, processamos um total de 9.274.913 solicitações de geração de imagens , produzindo 3,62 TB de conteúdo. Houve falhas mínimas de processamento (por exemplo, problemas transitórios de rede) e apenas 523 trabalhos foram reprocessados uma segunda vez. Em média, atingimos um tempo de ciclo de geração de imagem de 7 segundos . O mosaico a seguir é um exemplo de apenas algumas das imagens geradas:
Uma amostra de imagens geradas a partir do benchmark de inferência de difusão estável. A sugestão incluía diferentes substantivos ambientados em uma floresta de estilo fantasia.
Foi divertido navegar pelas imagens geradas e observar a qualidade relativa dada a falta de tempo gasto ajustando e otimizando os parâmetros.
Esta demonstração produziu resultados interessantes mostrando que, para inferência de difusão estável em escala, as GPUs de consumo não são apenas capazes, mas também mais econômicas. Dito isto, estava longe de ser otimizado. Há uma série de tarefas técnicas que poderíamos realizar para melhorar o desempenho. Notavelmente, implementamos rapidamente o trabalhador e estabelecemos um loop que puxa um trabalho sequencialmente, gera uma imagem e carrega a imagem. Com esta implementação, enquanto esperamos pela E/S da rede, a GPU fica ociosa.
Se adotarmos uma abordagem que canalize trabalhos, extraindo avidamente um extra da fila e paralelizando a E/S da rede com outra solicitação de geração de imagem, estimaremos uma melhoria de pelo menos 10% no rendimento geral do trabalho. Sem ajustar o custo total, isso nos levaria a mais de 10 milhões de imagens geradas por dia.
IA generativa é um tipo de inteligência artificial que pode criar novos conteúdos, como pinturas, música e escrita. Funciona aprendendo com as informações existentes para desenvolver um modelo de padrões e relacionamentos, e tem aplicações práticas na geração de conteúdo exclusivo e personalizado. Tornou-se uma tecnologia cada vez mais popular graças ao lançamento de uma série de modelos básicos de código aberto, muitos dos quais são desenvolvidos em conjuntos de dados de grande escala. Combinada com a relativa facilidade de desenvolvimento e aplicação de ajustes finos e o baixo custo para executar inferências em escala, a democratização da IA generativa está a desbloquear novas aplicações a um ritmo incrível.
Especificamente relacionado à inferência, muitos modelos ainda requerem recursos computacionais significativos para gerar conteúdo de forma eficiente. No entanto, os saltos no poder de processamento e na capacidade de recursos das GPUs de consumo alcançaram muitas aplicações de modelos generativos de IA.
Em vez de recorrer a grandes fornecedores de computação em nuvem e competir pelo escasso acesso a GPUs de nível empresarial como A10s, A100s ou H100s, um número crescente de clientes está recorrendo ao SaladCloud, um ambiente de computação em nuvem distribuído composto pelos PCs para jogos mais poderosos do mundo. .
Uma aplicação de IA generativa em rápida expansão inclui a criação de imagens a partir de uma descrição textual. O fluxo de trabalho "texto para imagem" pode ser usado para gerar ativos para jogos, campanhas publicitárias e de marketing, storyboards e muito mais. Stable Diffusion é um modelo básico popular de código aberto no espaço "texto para imagem".
No momento, estamos planejando demonstrações e benchmarks de fluxo de trabalho de "imagem para imagem" e "áudio para texto" e esperamos compartilhar mais resultados em nosso blog em um futuro próximo.
Este benchmark foi executado no SaladCloud, a nuvem de GPU mais acessível do mundo para inferência de IA generativa e outras aplicações de uso intensivo de computação. Com mais de 10 mil GPUs a partir de US$ 0,10/hora, SaladCloud tem os preços de GPU mais baixos do mercado.
Se as altas contas de nuvem e a disponibilidade de GPU estão prejudicando seu crescimento e lucratividade, a SaladCloud pode ajudar com preços baixos e disponibilidade sob demanda.
Recentemente, Daniel Sarfati , nosso chefe de produto, conversou com Clay Pascal do LLM Utils (recurso LLM altamente recomendado), para discutir como escolher a GPU certa para difusão estável. Para saber mais sobre a escolha da GPU para difusão estável, você pode ouvir a entrevista completa em áudio .
Contate-nos para uma demonstração personalizada. Para executar seus próprios modelos ou receitas pré-configuradas de modelos populares (Stable Diffusion, Whisper, BERT, etc.), confira o Portal SaladCloud para um teste gratuito.
Também publicado aqui .