- Fly.io, qui exécute les apps au plus près des utilisateurs, ajoute la prise en charge des GPU, ce qui permet de placer l’inférence IA près de l’edge plutôt que dans une région centrale
- Les apps peuvent être associées à un Nvidia A100 afin d’exploiter CUDA et une grande quantité de VRAM, pour la reconnaissance vocale, le découpage de texte, le résumé d’articles, la génération d’images et l’exécution de modèles d’assistance au code
- Une app GPU basée sur Ollama peut être déployée en indiquant l’image
ollama/ollama et vm.size = "a100-40gb" dans fly.toml, puis avec fly apps create et fly deploy
- Dans les régions prenant en charge les GPU, le même programme peut être exécuté avec la même IP publique et le même certificat TLS, et il est possible de l’étendre à la région d’Amsterdam avec une commande comme
fly scale count 2 --region ams
- L’A100 40GB coûte $2.50 par heure, l’A100 80GB $3.50, et le L40s $2.50 ; en configurant le démarrage et l’arrêt automatiques, on peut éviter la facturation du temps GPU en l’absence de requêtes
Exécuter des GPU au plus près des utilisateurs
- Fly.io est un cloud qui permet d’exécuter des apps full-stack ou des plateformes de développement basées sur la Fly Machines API au plus près des utilisateurs, et y ajoute désormais l’exécution sur GPU
- Les GPU Fly.io connectent un Nvidia A100 à une app, permettant d’exploiter CUDA et davantage de VRAM qu’une 4090 locale
- Les tâches IA/ML applicables sont notamment :
Déployer une app GPU Ollama
- Fly.io vise une approche où les utilisateurs déploient leurs modèles préférés et leur propre code sur le backbone cloud de Fly.io
- Une app GPU basée sur Ollama peut être lancée avec une simple configuration
fly.toml et des commandes de déploiement
app = "sandwich_ai"
primary_region = "ord"
vm.size = "a100-40gb"
- l’image de build est
ollama/ollama
- un volume de
100gb est monté sur /root/.ollama
- La commande d’exécution est la suivante :
fly apps create sandwich_ai && fly deploy
Faire de l’inférence au plus près des régions
- Le point mis en avant par Fly.io n’est pas simplement la fourniture de GPU, mais l’inférence à l’edge
- L’app d’exemple permet à l’utilisateur de saisir les ingrédients présents dans sa cuisine pour recevoir une recette de sandwich
- Avec un déploiement
primary_region = "ord", les utilisateurs proches de Chicago peuvent recevoir rapidement une recette de sandwich
- Pour les utilisateurs situés hors de Chicago, par exemple à Amsterdam, les requêtes doivent traverser l’Atlantique, ce qui peut prendre plus de temps
- Dans les régions prenant en charge les GPU, le même programme peut être exécuté avec la même adresse IP publique et le même certificat TLS
- L’extension à Amsterdam se fait avec la commande suivante :
fly scale count 2 --region ams
Utiliser les GPU uniquement lorsqu’il y a des requêtes
- Les GPU sont des unités de traitement parallèle puissantes, mais elles ne sont pas bon marché ; pour les petites apps, il est donc préférable de ne payer que lorsque des utilisateurs envoient des requêtes
- Il est possible de configurer le démarrage et l’arrêt automatiques dans la section
services de fly.toml
[[services]]
internal_port = 8080
protocol = "tcp"
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
auto_stop_machines = true et auto_start_machines = true configurent l’arrêt des machines lorsqu’il n’y a pas de requête et leur redémarrage lorsque c’est nécessaire
- Avec
min_machines_running = 0, aucun coût de temps GPU n’est facturé lorsqu’il n’y a pas de demande de recette de sandwich
GPU proposés et ressources par défaut
- Les GPU sont disponibles dans plusieurs régions aux États-Unis et dans l’UE, ainsi qu’à Sydney
- Les cibles de déploiement et les tarifs sont les suivants :
- Les apps déployées sur GPU utilisent par défaut 8 cœurs CPU AMD EPYC
- Des volumes allant jusqu’à 500GB peuvent être attachés
- Des remises peuvent aussi être proposées pour les instances réservées et les hôtes dédiés
1 commentaires
Avis sur Hacker News
Je me demande si Fly a vraiment les fonctionnalités de base au point. Après l’avoir utilisé en production réelle, c’est décevant : le support n’est même pas en mesure de consulter les problèmes de plateforme internes, et les messages d’erreur sont vagues, voire inexistants.
Cela peut sembler attractif pour les personnes qui ont peur de Kubernetes ou ne le connaissent pas bien, mais à force d’utiliser Fly, j’en suis venu à regretter Kubernetes.
watch -n 2 curlpendant un déploiement, et c’était le cas quelle que soit la stratégie documentée utilisée, y compris le blue-green.Dans le pire des cas, je m’attendais à ce que seules les connexions existantes soient terminées prématurément et que les nouvelles ne soient pas coupées ; dans le meilleur des cas, à une attente propre jusqu’à la fin des connexions existantes. En réalité, c’était à chaque fois un basculement avec downtime complet. Quand on pense à la topologie réseau décrite dans leur blog, on a l’impression que cela ne pouvait de toute façon pas être implémenté correctement.
Je laisse rarement des commentaires négatifs sur un service, mais le fait que le support ait réagi comme si nous étions les bizarres, alors même que nous avions envoyé une preuve vidéo, était assez irritant pour une entreprise d’infrastructure. Je ne le recommande plus, sauf pour des applis jouets.
J’ai aussi construit un système de déploiement assez conséquent pour Kubernetes, donc ce n’est pas une remarque due à une méconnaissance de Kubernetes. Il y a clairement de la place pour un vrai déploiement à la Heroku, mais soit personne ne le fait bien, soit les ressources de calcul sont ridiculement maigres ou chères.
Je pourrais aussi parler de la base de données non managée emballée comme du managé, des downtimes aléatoires, etc., mais ce n’est pas un service prêt pour la production, et nous sommes partis il y a quelques mois.
Au début, j’étais très enthousiaste à propos de Fly et j’ai même construit tout un orchestrateur au-dessus de Fly Machines, mais nous avons eu une panne de plusieurs jours, et il a aussi fallu plusieurs jours pour obtenir une réponse.
Kubernetes peut être complexe, mais cette complexité est au moins contrôlable, et c’est une voie déjà largement éprouvée.
Je suis l’auteur du billet et responsable des relations développeurs chez Fly.io. Si vous avez des questions, je peux y répondre. Les GPU ont été lancés officiellement hier, et si le dieu des algorithmes anti-fraude vous l’autorise, vous pouvez expérimenter autant que vous voulez.
Je suis plutôt surpris que l’article explicatif sur ce que sont réellement les « GPU » n’ait pas si bien pris ici : https://fly.io/blog/what-are-these-gpus-really/
L’avantage du nœud de gravure et l’accès prioritaire au SoC/HBM vont-ils durer assez longtemps pour que le logiciel rattrape son retard ? Le matériel Metal haut de gamme paraît cher, mais vu autrement, quand on le compare à NVIDIA avec 64 Go+ de bande passante mémoire assez élevée et des unités vectorielles FP dédiées, la perspective change.
Si une plateforme comme
fly.iopermettait de déplacer des charges d’inférence vers et depuis les appareils, cela pourrait offrir beaucoup de liberté aux applications fortement orientées edge.Dans un workflow de segmentation d’imagerie médicale, un fichier prend environ 5 minutes.
À ma connaissance, Fly utilise Firecracker pour ses VM. J’ai suivi Firecracker pendant un certain temps et je l’ai aussi utilisé dans un projet, mais il ne prend pas en charge les GPU par défaut et il n’est pas prévu de le faire [1].
Je me demande comment Fly a résolu sa propre prise en charge GPU avec Firecracker. Par le passé, ils publiaient des articles techniques très détaillés sur la façon dont ils avaient implémenté certaines fonctionnalités ; j’aimerais donc voir un article sur le support GPU plus tard.
[1]: https://github.com/firecracker-microvm/firecracker/issues/11...
Le fait de pouvoir gérer le scale down jusqu’à 0 est super. C’est particulièrement utile pour travailler sur des sites expérimentaux avec peu d’utilisateurs, où même le coût d’un petit serveur est difficile à justifier.
Ce serait bien d’avoir un exemple du temps facturé pour une requête. Bien sûr, cela dépendra, mais je me demande si c’est 2 secondes ou plutôt « minimum 60 secondes par démarrage ».
Pour les machines GPU, selon la taille des données qui doivent entrer dans la mémoire GPU, il peut falloir environ 30 secondes d’exécution pour que ce soit utile.
Fly.io a été adopté très tôt, mais il n’est pas prêt pour la production. Avant d’ajouter de nouvelles fonctionnalités, il faudrait corriger les fonctions de base.
Il faut un peu plus de configuration et c’est nettement plus cher, mais en production, on a besoin de fiabilité. On ne peut pas se permettre que des clients appellent à cause d’une interruption de service.
Un logiciel peut tomber en panne, mais l’attitude de Fly dans la gestion des incidents est peu professionnelle et immature. En gros, on paie 10 fois plus pour un service instable qui ne fait que “bien” présenter.
Aujourd’hui, avec Hetzner + Kamal, j’utilise un matériel bien meilleur pour un quart du coût, ça fonctionne de manière fiable, le prix est prévisible, et je ne me retrouve pas à payer 25 % de plus le mois suivant pour la même utilisation.
https://news.ycombinator.com/item?id=36808296
Indépendamment de l’annonce des GPU, j’aimerais que Fly propose une alternative à S3. Pour l’instant, ils suggèrent un projet GNU Affero, ce qui est un obstacle pour les entreprises.
Si je dois sortir de Fly pour stocker les ressources des utilisateurs, il devient difficile d’utiliser Fly pour le prochain projet. C’est dommage, car j’aime sa simplicité, son rapport qualité-prix et son VPN intégré.
C’est aussi discuté ici : https://benhoyt.com/writings/flyio-and-tigris/ https://news.ycombinator.com/item?id=39360870
https://fly.io/docs/reference/tigris/
Si vous accédez à un service de type S3 uniquement via une API HTTPS, cela ne soumet pas votre code à l’AGPL.
Je me demande quel est le marché cible de ce service. De petites apps non validées qui doivent faire tourner un modèle d’IA, mais qui n’utilisent pas, ou ne peuvent pas utiliser, les innombrables startups se livrant une guerre des prix pour proposer l’hébergement de modèles open source ?
Pour avoir beaucoup exploité moi-même des modèles et du matériel, je comprends l’envie de contrôler jusqu’au bare metal. Mais j’aimerais savoir à qui cela s’adresse.
En pratique, l’inférence elle-même prend du temps, donc cette différence pourrait ne pas être si importante.
Avoir le calcul GPU dans le même datacenter, ou au moins chez le même fournisseur cloud, peut être un gros avantage. Il n’a pas été rare non plus de voir des A100 en rupture chez plusieurs fournisseurs, et je l’ai vécu plusieurs fois même chez de gros fournisseurs. C’est moins problématique si vous n’êtes pas attaché à une région précise.
Tous les fournisseurs ne proposent pas un modèle exploitable de scale down à 0 à la demande. Je ne sais pas à quel point cela fonctionnera bien chez Fly à long terme, mais cela pourrait être un avantage supplémentaire.
Les startups qui se livrent une guerre des prix ont tendance à ne pas durer longtemps ; on est plutôt dans une dynamique où seule une infime minorité sur 100 survit.
Si vous utilisez déjà Fly et que vous faites simplement évaluer quelques démos techniques privées, les GPU de Fly peuvent devenir un choix par défaut qui ne demande pas beaucoup de réflexion. Bien sûr, utiliser les services de Hugging Face est probablement plus courant.
Beaucoup d’entreprises ne peuvent pas exploiter leur propre matériel pour diverses raisons, et au mieux elles louent des racks dans un autre datacenter, ce qui n’a pas toujours de valeur pour de petits cas d’usage. On peut aussi avoir besoin d’un A100, mais seulement rarement, comme pour des analyses hebdomadaires ; si cela représente moins d’une heure par semaine, les services à prix agressifs ne sont peut-être pas si attractifs.
Les exemples de recettes, ou n’importe quel cas d’usage LLM, semblent être de très mauvais exemples pour mettre en avant l’inférence en edge. Quelques centaines de ms de latence aller-retour en plus n’ont pas vraiment d’importance.
Mais c’est un domaine à fort potentiel d’abus, donc personne ne semble encore vouloir s’y associer. Ce sera sans doute le sujet du prochain article, et dans ce cas il faudra créer son propre GPT en ligne façon Perplexity. Pour l’instant, ils semblent volontairement faire une introduction banale afin de voir si d’autres idées émergent.
Je me demande si quelqu’un a testé les performances. À première vue, ça paraît assez cher, par exemple par rapport aux machines CPU de Hetzner.
Même une H100 est disponible à 2,24 $ de l’heure, donc moins cher que ce tarif.
Ça semble donc un peu cher, mais c’est peut-être dû à une forte demande client et à une offre limitée.
J’utilise le niveau gratuit de Fly.io pour faire tourner Uptime Kuma et surveiller la disponibilité. Ça marche super bien, j’en suis très satisfait.