1 pontos por GN⁺ 2024-02-14 | 1 comentários | Compartilhar no WhatsApp
  • O Fly.io, que executa apps perto dos usuários, adicionou suporte a GPU, permitindo posicionar inferência de IA perto da borda em vez de apenas em uma região central
  • É possível anexar uma Nvidia A100 ao app para aproveitar CUDA e grande quantidade de VRAM, útil para reconhecimento de voz, segmentação de texto, resumo de artigos, geração de imagens e execução de modelos de assistência de código
  • Apps GPU baseados em Ollama podem ser implantados definindo vm.size = "a100-40gb" e a imagem ollama/ollama em fly.toml, depois usando fly apps create e fly deploy
  • Em regiões com suporte a GPU, o mesmo programa pode rodar com o mesmo IP público e certificado TLS, e pode ser expandido para a região de Amsterdam com fly scale count 2 --region ams
  • A A100 40GB custa $2.50 por hora, a A100 80GB $3.50, e a L40s $2.50; com início e parada automáticos configurados, é possível evitar a cobrança por hora de GPU quando não houver requisições

Execução com GPU perto do usuário

  • O Fly.io é uma nuvem capaz de executar apps full-stack ou plataformas de desenvolvimento baseadas na Fly Machines API perto dos usuários, e agora adicionou execução com GPU
  • A GPU do Fly.io conecta uma Nvidia A100 ao app para permitir o uso de CUDA e de mais VRAM do que uma 4090 local
  • As tarefas de IA/ML aplicáveis incluem:

Implantação de app GPU com Ollama

  • O objetivo do Fly.io é permitir que usuários implantem seus modelos preferidos e código próprio sobre o backbone em nuvem do Fly.io
  • Apps GPU baseados em Ollama podem ser executados apenas com a configuração do fly.toml e comandos de deploy
    • app = "sandwich_ai"
    • primary_region = "ord"
    • vm.size = "a100-40gb"
    • A imagem de build é ollama/ollama
    • Monta um volume de 100gb em /root/.ollama
  • O comando de execução é o seguinte:
fly apps create sandwich_ai && fly deploy

Inferência perto da região do usuário

  • O ponto que o Fly.io destaca não é apenas oferecer GPU, mas sim inferência na borda
  • O app de exemplo funciona assim: o usuário informa os ingredientes que tem na cozinha e recebe uma receita de sanduíche
  • Se implantado com primary_region = "ord", usuários perto de Chicago podem receber a receita de sanduíche rapidamente
  • Usuários fora de Chicago, por exemplo em Amsterdam, podem levar mais tempo porque a requisição precisa cruzar o Atlântico
  • Em regiões com suporte a GPU, o mesmo programa pode rodar com o mesmo endereço IP público e o mesmo certificado TLS
  • A expansão para Amsterdam é feita com o comando abaixo
fly scale count 2 --region ams

GPU usada só quando há requisição

  • GPUs são dispositivos poderosos de processamento paralelo, mas não são baratas; para apps pequenos, pode ser vantajoso pagar apenas quando houver requisições de usuários
  • É possível configurar início automático e parada automática na seção services do fly.toml
[[services]]
  internal_port = 8080
  protocol = "tcp"
  auto_stop_machines = true
  auto_start_machines = true
  min_machines_running = 0
  • auto_stop_machines = true e auto_start_machines = true fazem a máquina parar quando não há requisições e iniciar novamente quando necessário
  • Com min_machines_running = 0, não há custo de hora de GPU quando não houver pedidos de receita de sanduíche

GPUs oferecidas e recursos padrão

  • GPUs estão disponíveis em várias regiões dos EUA e da UE, além de Sydney
  • Os alvos de implantação e preços são os seguintes
  • Apps implantados em GPU usam por padrão 8 núcleos de CPU AMD EPYC
  • É possível anexar volumes de até 500GB
  • Também podem ser oferecidos descontos para instâncias reservadas e hosts dedicados

1 comentários

 
GN⁺ 2024-02-14
Opiniões no Hacker News
  • Tenho dúvidas se a Fly realmente acertou o básico. Ao usá-la em produção de verdade, foi decepcionante ver que o suporte nem conseguia consultar problemas da plataforma interna, e as mensagens de erro eram vagas ou simplesmente inexistentes.
    Pode parecer atraente para quem tem medo de Kubernetes ou não o conhece bem, mas, usando a Fly, acabei sentindo falta do Kubernetes.

    • Testei uma migração para a Fly.io, e até um deploy simples derrubou a conexão por alguns segundos durante a troca. Dá para conferir diretamente rodando watch -n 2 curl durante o deploy; aconteceu com todas as estratégias documentadas, incluindo blue-green.
      Na pior das hipóteses, eu esperava que apenas as conexões existentes fossem encerradas antecipadamente e que novas conexões não caíssem; na melhor, que houvesse uma espera elegante até as conexões existentes terminarem. Na prática, porém, foi sempre uma transição com downtime total. Pensando na topologia de rede mostrada no blog, fico com a impressão de que isso nem poderia ter sido implementado corretamente desde o início.
      Raramente faço comentários negativos sobre serviços, mas, mesmo enviando provas em vídeo, o suporte reagiu como se nós é que estivéssemos fazendo algo estranho, o que, para uma empresa de infraestrutura, incomodou bastante. Agora não recomendo para nada além de apps de brinquedo.
      Também já construí um sistema de deploy bem grande para Kubernetes, então isso não é falta de conhecimento sobre Kubernetes. Existe claramente espaço para um deploy no estilo Heroku bem feito, mas ninguém está fazendo isso direito, ou então os recursos de computação são absurdamente limitados ou caros.
    • Envie mais detalhes por e-mail para as duas primeiras letras do nome de usuário @fly.io. Queremos entender o que causou as dificuldades e melhorar a situação da forma que for possível.
    • Sim, a confiabilidade e o suporte são terríveis. Uma vez fiquei 2 dias sem conseguir fazer deploy e, literalmente, me responderam para usar outra empresa.
      Poderia falar mais, como DBs não gerenciados embalados como se fossem gerenciados, downtimes aleatórios etc., mas saí alguns meses atrás porque não é um serviço pronto para produção.
    • Infelizmente, é um padrão bastante comum. Metade das pessoas que conheço que adotaram a Fly migrou para outro lugar.
      No começo eu estava muito empolgado com a Fly e até construí um orquestrador inteiro em cima do Fly Machines, mas houve uma falha de vários dias, e também levou dias para receber uma resposta.
      Kubernetes pode ser complexo, mas essa complexidade ao menos é controlável e já é um caminho bastante comprovado.
    • Rodei vários serviços na Fly por quase 1 ano e ainda não tive problemas.
  • Sou o autor do post e responsável por relações com desenvolvedores na Fly.io. Se houver perguntas, posso responder. As GPUs foram lançadas oficialmente ontem e, se o deus dos algoritmos antifraude permitir, você pode experimentar à vontade.
    Na verdade, me surpreendeu que o texto explicando o que uma “GPU” realmente é não tenha feito tanto sucesso aqui: https://fly.io/blog/what-are-these-gpus-really/

    • Tenho curiosidade especialmente sobre sua opinião a respeito de inferência em hardware Apple. Tenho passado bastante tempo ajustando inferência local em Apple Silicon on-premises ou em ambientes de mesa, e, mesmo considerando a quantidade de trabalho que entrou em coisas como GGUF, acho que ainda há muita margem.
      A vantagem do nó de fabricação e o acesso prioritário a SoC/HBM vão se manter por tempo suficiente para o software acompanhar? Equipamentos Metal avançados parecem caros, mas a comparação muda quando se olha para algo com 64 GB+ de largura de banda de memória bastante alta e unidades vetoriais FP dedicadas em relação à NVIDIA.
      Se uma plataforma como fly.io permitir mover workloads de inferência para dentro e para fora dos dispositivos, isso pode dar muita liberdade a aplicações com forte componente de edge.
    • O timing foi perfeito. Estou avaliando serviços de GPU serverless para um projeto futuro. Pelo anúncio, a cobrança é por hora, mas queria saber se, ao escalar para zero, a cobrança passa a ser por minuto/segundo.
      Em um fluxo de trabalho de segmentação de imagens médicas, cada arquivo leva cerca de 5 minutos.
    • Parabéns pelo lançamento. Mas tenho curiosidade sobre quem é o público-alvo deste serviço. É principalmente para clientes atuais da fly.io que querem permanecer dentro do sandbox da fly.io?
    • Tenho curiosidade sobre quão rápido é o cold start e como ele se compara a outros provedores de GPU, como runpod ou modal.
    • Não é uma pergunta, mas o link “Lovelace L40s are coming soon (pricing TBD)” está dando 404.
  • Pelo que sei, a Fly usa Firecracker para VMs. Acompanhei o Firecracker por um bom tempo e também o usei em projetos, mas ele basicamente não oferece suporte a GPU e não há planos de oferecer [1].
    Tenho curiosidade sobre como a Fly resolveu o suporte próprio a GPU com Firecracker. Antes, eles publicavam posts técnicos muito detalhados sobre como implementaram certas funcionalidades, então seria ótimo se no futuro saísse um texto também sobre suporte a GPU.
    [1]: https://github.com/firecracker-microvm/firecracker/issues/11...

    • Resumindo, as máquinas com GPU usam Cloud Hypervisor, não Firecracker.
  • É ótimo que consiga lidar com scale down até 0. Isso é especialmente útil para sites experimentais com poucos usuários, em que é difícil justificar até o custo de um servidor pequeno.
    Seria bom ter um exemplo de quanto tempo é cobrado por uma única requisição. Claro que varia, mas queria saber se são 2 segundos ou algo como “mínimo de 60 segundos por spin-up”.

    • A cobrança vai do momento em que a máquina é inicializada até ela parar. Não há um tempo mínimo obrigatório, mas, em geral, é difícil fazer algo significativo em uma máquina em menos de 5 segundos.
      Máquinas com GPU podem precisar de cerca de 30 segundos de tempo de execução para serem úteis, dependendo do tamanho dos dados que entram na memória da GPU.
  • Adotamos o Fly.io no começo, mas ele não estava pronto para produção. Antes de adicionar novos recursos, deveriam consertar o básico

    • Infelizmente, é verdade. No início eu tinha grandes expectativas para o produto, mas saí do fly.io e voltei para a plataforma de apps da DigitalOcean
      Exige um pouco mais de configuração e é bem mais caro, mas em produção é preciso estabilidade. Não dá para deixar clientes ligando por causa de indisponibilidade do serviço
    • Entre os serviços com “embalagem bonita”, foi a hospedagem mais instável que já usei na vida. Várias coisas quebravam com frequência ao mesmo tempo, e reuniões e fins de semana eram arruinados enquanto a página de status ficava sempre verde
      Software pode quebrar, mas a postura da Fly na resposta a incidentes é pouco profissional e imatura. Basicamente, você paga 10 vezes mais por um serviço instável que só “parece” bom
      Agora uso Hetzner + Kamal, com hardware muito melhor por um quarto do custo; funciona de forma estável, o preço é previsível e não acontece de eu pagar 25% a mais no mês seguinte pelo mesmo uso
      https://news.ycombinator.com/item?id=36808296
    • É uma pena ver comentários assim no HN. Não são construtivos. Você deveria escrever exatamente quais são as funcionalidades básicas de que está falando e que correções são necessárias
  • À parte o anúncio de GPUs, eu gostaria que a Fly tivesse um serviço alternativo ao S3. No momento eles sugerem um projeto GNU Affero, o que é um obstáculo para empresas
    Se eu tiver que sair da Fly por causa do armazenamento de ativos de usuários, fica difícil usar a Fly no próximo projeto. É uma pena, porque gosto da simplicidade, do custo-benefício e da VPN integrada

  • Fico curioso para saber qual é o mercado-alvo desse serviço. Seriam apps pequenos e não validados que precisam rodar algum modelo de IA, mas não usam ou não podem usar as inúmeras startups em guerra de preços que oferecem hospedagem de modelos open source?
    Depois de operar muitos modelos e muito hardware diretamente, entendo a vontade de controlar tudo até o metal. Só queria saber para quem isso é voltado

    • Tenho algumas ideias, mas ainda não uma resposta clara. Provavelmente pessoas que estão criando plataformas de hospedagem. Coisas que, por fora, não parecem plataformas de hospedagem, mas que na prática são
    • A Fly é uma rede de edge. Em teoria, se a GPU estiver ao lado do servidor e o servidor estiver ao lado do usuário, como o texto enfatiza, o app pode ficar muito rápido
      Na prática, como a própria inferência demora, talvez essa diferença não importe tanto
    • Em resumo, há muitos pequenos motivos para se interessar por GPUs na Fly, especialmente se você já usa a Fly, mas, se já está implantado em outra nuvem, falta um único motivo decisivo
      Ter a computação de GPU no mesmo datacenter, ou pelo menos no mesmo provedor de nuvem, pode ser uma grande vantagem. Não foi raro ver A100 esgotadas em vários provedores, e passei por isso várias vezes até em grandes provedores. Se você não estiver preso a uma região específica, isso é menos problemático
      Nem todos os provedores oferecem um modelo utilizável de scale-down para 0 sob demanda. Não sei quão bem isso funcionará na Fly no longo prazo, mas pode ser mais uma vantagem
      Startups em guerra de preços tendem a não durar muito; a dinâmica é mais próxima de apenas uma fração minúscula entre 100 sobreviver
      Se você já usa a Fly e só vai ter algumas avaliações de demos técnicos privados, GPUs na Fly podem se tornar a escolha padrão, sem muita reflexão. Claro, talvez seja mais comum usar serviços da Hugging Face
      Muitas empresas não conseguem operar hardware próprio por vários motivos e, na melhor das hipóteses, alugam racks em outro datacenter, o que nem sempre tem valor para casos de uso pequenos. Há casos em que se precisa de uma A100, mas só para rodar algo raramente, como análises semanais; se for menos de 1 hora por semana, um serviço em guerra de preços pode não ser tão atraente
    • Não vejo muito essa corrida de preços até o fundo do poço no lado dos serviços de hospedagem. A maioria é várias vezes mais cara que o GCP, e o próprio preço público do GCP já é várias vezes maior do que o que clientes corporativos realmente pagam
  • O exemplo de receitas, ou qualquer caso de uso de LLM, parece um péssimo exemplo para enfatizar inferência na edge, porque alguns centenas de ms a mais de latência de ida e volta não fazem muita diferença

    • Um caso de uso melhor é, obviamente, um assistente de voz na edge. Em um fluxo como voz→texto→busca/GPT→geração de resposta por voz, ms importam
      Mas parece ser uma área com alto potencial de abuso, então ninguém ainda quer se envolver. Provavelmente será abordado no próximo texto; nesse caso, teriam que criar um GPT online próprio no estilo Perplexity. Por enquanto, parece que fizeram uma introdução propositalmente comum para ver se surgem outras ideias
    • Concordo. Não consigo pensar em um caso de negócio para rodar LLMs na edge. Será este o momento Pets.com da indústria de IA?
  • Fico curioso para saber se alguém já testou o desempenho. À primeira vista, parece bem caro. Por exemplo, em comparação com uma máquina CPU da Hetzner

    • Não sei em outros lugares, mas na DigitalOcean é possível usar uma A100 com 90 GB de RAM por US$ 1,15 por hora. É cerca de um terço do preço
      Até mesmo uma H100 pode ser obtida por US$ 2,24 por hora, mais barato que esse preço
      Então parece um tanto caro, mas talvez seja porque a demanda dos clientes é alta e a oferta é limitada
  • Estou usando o plano gratuito da Fly.io para rodar o Uptime Kuma e monitorar uptime. Funciona extremamente bem, estou muito satisfeito

    • Como você é avisado de que o Uptime Kuma caiu?