O modelo de geração de imagens FLUX é rápido e open source
(replicate.com)- A velocidade de execução do FLUX no Replicate ficou significativamente maior, e o código de otimização também foi aberto, permitindo verificar a implementação e fazer extensões customizadas
- Pelas medições de ponta a ponta, o FLUX.1 [schnell] chegou a 0,29 s em 512x512·4 steps e a 0,72 s em 1024x1024·4 steps
- A melhoria de velocidade é resultado da combinação de otimizações baseadas no
flux-fp8-api,torch.compile, o kernel de attention CuDNN rápido do nightly Torch e a nova API HTTP síncrona - A quantização do
flux-fp8-apialtera levemente a saída, mas o impacto na qualidade foi pequeno; se necessário, é possível desativá-la comgo_fast=false - A Replicate está abrindo as melhorias do FLUX e colaborando com o AI Compiler Study Group e pesquisadores para criar um FLUX open source rápido
Velocidade de execução do FLUX e demo pública
- A execução dos modelos FLUX no Replicate ficou mais rápida, e a implementação das otimizações foi publicada como open source
- A velocidade de ponta a ponta medida no oeste dos EUA usando o cliente Python é a seguinte
- FLUX.1 [schnell], 512x512, 4 steps: 0,29 s, P90 0,49 s
- FLUX.1 [schnell], 1024x1024, 4 steps: 0,72 s, P90 0,95 s
- FLUX.1 [dev], 1024x1024, 28 steps: 3,03 s, P90 3,90 s
- A demo do FLUX.1 [schnell] é oferecida com entrada em tempo real, e também é possível conferir o app completo e o código-fonte
Métodos de otimização e controle de qualidade
- Muitos modelos da Replicate são contribuídos pela comunidade, mas os modelos FLUX são mantidos em colaboração com a Black Forest Labs
- Duas iniciativas foram aplicadas para melhorar a velocidade
- Usar como ponto de partida o flux-fp8-api, de Alex Redden, junto com
torch.compilee o kernel de attention CuDNN rápido das builds nightly do Torch - Adicionar a nova API HTTP síncrona da Replicate para que todos os modelos de imagem funcionem mais rápido
- Usar como ponto de partida o flux-fp8-api, de Alex Redden, junto com
- A quantização do
flux-fp8-apialtera levemente as saídas do modelo, mas o impacto na qualidade foi pequeno- Há uma ferramenta que compara as saídas de milhares de prompts no FLUX.1 [schnell] e no FLUX.1 [dev], e você pode ver diretamente os resultados da comparação
- Definir a entrada
go_fastcomofalsepermite desativar essa otimização
- Como muitas vezes não fica claro se um provedor de modelo aplica otimizações que afetam a qualidade, a Replicate divulga seus métodos de otimização e permite que os usuários os desativem
Código open source e formas de uso
- O código de otimização do FLUX está disponível em github.com/replicate/cog-flux
- A Replicate está disponibilizando as melhorias do FLUX como open source e colaborando com o AI Compiler Study Group e pesquisadores de IA para criar uma versão rápida e open source do FLUX
- Com o FLUX, é possível fazer o seguinte
1 comentários
Comentários do Hacker News
Modelos de texto para imagem parecem ineficientes. Fico pensando se seria possível e melhor dividir em etapas, como texto→grafo de cena→imagem segmentada semanticamente→imagem final
Cada etapa poderia ser treinada separadamente e modularizada, e talvez fosse mais fácil editar a imagem em vez de refazer tudo com uma nova saída de prompt. Assim, gerações como "o objeto x está ao lado do objeto y, e acima deles há o texto foo" seriam muito mais fáceis, e o estilo artístico ou nível de realismo poderiam ficar a cargo de um modelo final de renderização separado da aderência ao prompt
Parece algo parecido com video2video para melhorar a saída de videogames ou com modelos de img2img quadro a quadro
https://www.theverge.com/2021/5/12/22432945/intel-gta-v-real...
https://www.reddit.com/r/aivideo/comments/1fx6zdr/gta_iv_wit...
Se você consegue treinar uma rede neural que vai de a→b e outra que vai de b→c, normalmente pode substituir a combinação por uma rede neural mais simples que vá direto de a→c. Isso faz sentido, porque pode haver perda de informação ao converter a em b. Uma única rede neural garante que a informação relevante de a necessária para produzir c seja propagada para camadas mais altas
Extrair características e raciocinar como um humano parece plausível, mas no fim ampliar o casamento de padrões que o computador faz de forma pura parece ter sido mais fácil
Não faz sentido descrever tudo de uma vez e torcer para gostar do resultado
Eles começam do ruído e adicionam progressivamente cada vez mais detalhes
Eu quero uma foto de penugem de pêssego turquesa congelada
Licença não comercial não é open source. Se o autor original parar de manter, outra pessoa não pode continuar ou terá de trabalhar como escravo de graça
O cerne do open source está no que é possível fazer quando o autor original para de trabalhar. Open source dá a qualquer pessoa a licença para continuar o desenvolvimento, o que obviamente inclui a capacidade de cobrar por isso. Se esse aspecto está faltando, não deveria ser chamado de open source
Apenas o FLUX.1 [schnell] é open source (Apache2); o FLUX.1 [dev] usa licença não comercial
https://huggingface.co/ostris/OpenFLUX.1/
Se você quiser testar o FLUX.schnell facilmente, basta colocar o prompt na URL do Pollinations
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/a_donkey_holding_a_sign_with_flux_...
https://pollinations.ai/p/Minimalist%20and%20conceptual%20ar...
A velocidade é realmente impressionante. Com apenas três GPUs L40S, geram 8.000 imagens a cada 30 minutos para usuários. Para referência, sou do pessoal do Pollinations
Minha tarefa favorita com o Flux é criar imagens com fundo branco para o Substack. O texto que vem depois é excelente, e também dá para transmitir algo visualmente por meio da arte
[1]https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...
Não sei se tenho uma posição bem definida sobre isso. A tecnologia continua avançando. Ainda assim, é interessante
O Flux é um dos principais candidatos entre os sistemas de geração com hospedagem local em termos de aderência ao prompt, mas a profundidade de campo rasa onipresente é irritantemente difícil de remover
Acabei de cancelar minha assinatura do Midjourney. Para o tipo de trabalho que quero fazer, parece que ele ficou para trás demais
Também pensei por muito tempo em usar Replicate e Ideogram
É insano que, em menos de um ano desde a queda do Emad, tenha surgido um modelo local, open source e melhor. Isso mostra como o fosso dessas empresas é raso e, no fim, somos nós que nos beneficiamos enquanto elas queimam quantias enormes de dinheiro
Alguém sabe com o que o FLUX 1.1 foi treinado? No modelo pro, gerei quase 100 imagens com prompts de duas palavras no formato "nome de arquivo de câmera + palavra simples", e todas pareciam fotos tiradas do celular de alguém
Se não houvesse texto, eu nem pensaria que eram imagens de IA. Às vezes parecem fotos cortadas, e aparecem muitas fotos de comida, mesas bagunçadas e apartamentos
Rasparam posts públicos do Facebook, Snapchat e Vkontakte? Compraram imagens privadas do OneDrive ou Dropbox? Se eu coloco um nome feminino como segunda palavra, o filtro NSFW quase sempre ativa. Então presumo que haja imagens bem privadas no conjunto de treino
Veja você mesmo. Atenção: música com reprodução automática
people: https://vm.tiktok.com/ZGdeXEhMg/
food and stuff: https://vm.tiktok.com/ZGdeXEBDK/
signs: https://vm.tiktok.com/ZGdeXoAgy/
[edit] Ver essas imagens é desconfortável, como se você estivesse olhando as fotos privadas de alguém. Prompts como "IMG00012.JPG forbid" não têm pistas suficientes para descrever esse tipo de imagem, então elas só podem ter vindo dos dados de treinamento
Não acredito que o FLUX 1.1 pro tenha usado um conjunto de treino fundamentalmente diferente dos modelos públicos anteriores. Mas ele pode ser mais suscetível a esse tipo de geração
A sensação é realmente estranha. Então pergunto de novo: existe alguma informação sobre os dados de treinamento usados nesses modelos?
Os dois posts do Reddit abaixo tratam um pouco desses padrões de nome de arquivo
DSC_0001-9999.JPG - padrão da Nikon
DSCF0001-9999.JPG - padrão da Fujifilm
IMG_0001-9999.JPG - imagem genérica
P0001-9999.JPG - padrão da Panasonic
CIMG0001-9999.JPG - padrão da Casio
PICT0001-9999.JPG - padrão da Sony
Photo_0001-9999.JPG - fotos do Android
VID_0001-9999.mp4 - vídeo genérico
Além disso, também criei versões de nomes de arquivo de software 3D. Testei todas, e só algumas funcionaram
Autodesk Filmbox (FBX): my_model0001-9999.fbx
Stereolithography (STL): Model0001-9999.stl
3ds Max: 3ds_Scene0001-9999.max
Cinema 4D: Project0001-9999.c4d
Maya (ASCII): Animation0001-9999.ma
SketchUp: SketchUp0001-9999.skp
[1]: https://www.reddit.com/r/StableDiffusion/comments/1fxkt3p/co...
[2]: https://www.reddit.com/r/StableDiffusion/comments/1fxdm1n/i_...
Junto com um ajuste forte em relação ao texto, é bem provável que tenham feito muito tuning para fazer o modelo preferir imagens com cara de flux
Seja qual for o processo, acabaram deixando o modelo hipersensível a certos termos, a ponto de eles terem mais efeito do que uma LoRA só por estarem presentes
As fotos mostradas não são particularmente notáveis no contexto geral. Não exige muito esforço sair do formato de imagem padrão para obter resultados ultrarrealistas. Pessoalmente, não acho que estejam tentando esconder o fotorrealismo; me parece mais uma tentativa de definir o padrão para as imagens que as pessoas querem
Não sei por que todos os comentários críticos ao Flux recebem downvote ou flag, e isso é bem estranho
Dizem que a qualidade é parecida e apontam para uma página de comparação, mas antes de tudo está muito claro que há bem menos detalhes. Pior ainda é o exemplo "vista frontal em 3/4 de um Corvette amarelo 2017 fazendo uma curva em uma estrada de montanha com vista para um vale verde em um dia nublado"
O modelo original mostra a frente, mas a versão rápida mostra a traseira do Corvette. É uma imagem completamente diferente. Não é parecida; é visivelmente diferente
https://flux-quality-comparison.vercel.app/
Sempre que aparece um tópico sobre modelos da Meta, chove correção dizendo que não são open source de verdade
Então isso também precisa ficar claro para o FLUX. Entre os modelos publicados, o único open source é o FLUX schnell, e ele foi destilado a partir do modelo proprietário, então é muito mais difícil de trabalhar
Ironicamente, os modelos Llama da Meta têm uma licença muito mais permissiva do ponto de vista prático, e também são muito fáceis de ajustar finamente com os frameworks open source da própria Meta ou várias ferramentas de terceiros. Já o FLUX schnell não é assim
Acho que a comunidade open source deveria concentrar esforços em OpenFLUX ou projetos parecidos para corrigir as limitações artificiais do Schnell: https://huggingface.co/ostris/OpenFLUX.1
Dizem que “foi adicionada uma nova API HTTP síncrona que torna todos os modelos de imagem do Replicate muito mais rápidos”, mas por que ser síncrona seria mais rápido? Cliquei para ver.
https://replicate.com/changelog/2024-10-09-synchronous-api
“Agora a biblioteca cliente e a API executam modelos muito mais rápido, especialmente quando arquivos são retornados”
…ok, obrigado?
Estou compartilhando a frustração de um desenvolvedor. Se querem ser memoráveis e que a gente vire defensor da ferramenta, seria bom explicar um pouco melhor