3 pontos por GN⁺ 2024-10-15 | 1 comentários | Compartilhar no WhatsApp
  • 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-api altera levemente a saída, mas o impacto na qualidade foi pequeno; se necessário, é possível desativá-la com go_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
  • 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.compile e 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
  • A quantização do flux-fp8-api altera 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_fast como false permite 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

1 comentários

 
GN⁺ 2024-10-15
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...

    • Em geral, já ficou claro várias vezes que esse tipo de abordagem continua falhando em modelos baseados em redes neurais
      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
    • Acho que isso é essencialmente a mesma abordagem que falhou por muito tempo em áreas como reconhecimento de imagem, até que no fim resolveram empurrando matrizes maiores e mais profundas
      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
    • Eu gostaria que a arte com IA seguisse uma abordagem modular. Algo como gerar personagens, fundo, estilo e movimento de câmera em etapas separadas
      Não faz sentido descrever tudo de uma vez e torcer para gostar do resultado
    • Modelos de difusão fazem isso por essência. Só não há uma fronteira clara entre o "grafo de cena" e a "imagem completa"
      Eles começam do ruído e adicionam progressivamente cada vez mais detalhes
    • Há uma suposição equivocada aí de que uma imagem é um conjunto de objetos. Nem sempre é assim
      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

    • Existe o OpenFLUX.1, que faz fine-tuning do modelo FLUX.1-schnell e remove a destilação. O OpenFLUX.1 usa licença Apache 2.0
      https://huggingface.co/ostris/OpenFLUX.1/
    • Open source não significa que o código-fonte está visível e pode ser inspecionado? Não conheço nenhum aplicativo de código fechado que permita ver o código-fonte
  • 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

    • Essa expressão "apenas" soa bem cara para a maioria das pessoas
  • 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_...

    • Acho que esse exemplo mostra bem por que os artistas ficam irritados. O LLM está claramente imitando o estilo próprio de um artista específico, e como resultado esse artista acaba perdendo trabalho pago
      Não sei se tenho uma posição bem definida sobre isso. A tecnologia continua avançando. Ainda assim, é interessante
    • Você pode compartilhar o prompt?
  • 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

    • Parece otimizado para imagens artísticas?
  • 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

    • Ultimamente também tenho me perguntado se isso tem algum valor além do fator novidade. Fico curioso se você trocou por outras ferramentas ou se simplesmente deixou de ver valor nesse tipo de ferramenta
    • O Midjourney tem uma estética muito própria e é fraco com mãos, pés e texto, então nunca usei
      É 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?

    • Não é algo só do flux; dá para fazer a mesma coisa em outros modelos, incluindo Stable Diffusion
      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_...
    • Acho extremamente improvável que isso seja por causa do dataset bruto de treinamento. Eu tive o problema oposto. O token "background" introduzia um desfoque forte na imagem inteira, quase independentemente de como era usado no prompt, mas curiosamente a interpretação do prompt ficou muito melhor
      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
    • Passei pela mesma coisa e foi muito estranho. No começo saíam bons resultados, mas depois desandou
      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

    • O segundo parágrafo literalmente explica o motivo. Em vez de retornar uma URL que exige uma segunda requisição para obter os dados do arquivo, agora retorna os próprios dados do arquivo na resposta
    • Sim. Essa parte não estava clara. Adicionamos mais um parágrafo explicando o que era necessário fazer antes