Bitsletter n°3 : Équilibrage de charge pour les clusters, Mises à jour web incrémentielles et Magie des matrices

Bitsletter n°3 : Équilibrage de charge pour les clusters, Mises à jour web incrémentielles et Magie des matrices

🧠 Astuce ML : Évitez les zones de surcharge sur vos clusters d'apprentissage automatique

Si vous déployez des modèles d'apprentissage automatique avec un accès API, vous avez probablement rencontré des problèmes d'échelle. Idéalement, vous ne voulez pas que le serveur d'API qui fait les prédictions soit confronté à vos clients, car les tâches intensives en CPU sur les serveurs web augmenteront rapidement votre latence. Une solution consiste à utiliser un cluster d'apprentissage automatique, dédié à l'inférence en production. Cependant, si votre modèle accepte des lots d'entrées, il n'est pas bon d'envoyer toutes les entrées au même nœud. En effet, si votre API reçoit un grand lot et l'envoie à un seul nœud, cela pourrait paralyser ce nœud pendant longtemps. Ce genre de points chauds dans votre infrastructure peut sérieusement affecter la latence des prédictions.

Une solution consiste à répartir le lot sur les nœuds pour avoir une charge presque égale sur chaque nœud, maximisant ainsi la puissance de calcul parallèle de votre cluster. Pour ce faire, vous devez prendre soin de la séquence des sorties, sinon vous risquez de renvoyer les prédictions dans un ordre incorrect. Une solution simple consiste à associer une clé à chaque groupe de données que vous envoyez au cluster, puis chaque nœud renverra les sorties ainsi que la clé correspondante. Par exemple, vous recevez un lot (a,b,c,d,e,f), vous le divisez en 3 lots (1,a,b), (2,c,d), (3,e,f). Ainsi, même si vous recevez les prédictions dans un ordre mélangé comme (3, pred_e, pred_f), (1, pred_a, pred_b), (2, pred_b, pred_c), vous pouvez renvoyer les prédictions au client dans le bon ordre (pred_a, pred_b, pred_c, pred_d, pred_e, pred_f).

🌐 Astuce Web : Régénération statique incrémentielle (ISR)

Le JavaScript, les API et le balisage (JAMstack) sont une architecture populaire pour le développement web. Elle fonctionne en rendant intégralement votre site web en pages statiques, puis en les déployant à l'aide d'un CDN efficace pour une livraison ultra-rapide. Statique ici ne signifie pas seulement HTML et CSS, vous pouvez également inclure du JavaScript avec vos pages web et récupérer des données ou appeler des services côté client si nécessaire.

Les principaux avantages de cette architecture sont les suivants :

  • Sécurité & Évolutivité : pas de backend à sécuriser et vous n'avez qu'à servir des fichiers statiques. En utilisant un CDN mondial comme CloudFlare, vous pouvez mettre à l'échelle indéfiniment.
  • Performance : les pages sont pré-rendues, donc le navigateur les affichera en un clin d'œil, de plus le code est divisé entre chaque page pour un temps de chargement plus rapide.

Cependant, il y a un inconvénient : si votre site web compte des milliers de pages, vous devez reconstruire toutes les pages à chaque modification, ce qui peut prendre du temps. La régénération statique incrémentielle est une solution à ce problème. Dans cette architecture, vous pouvez rafraîchir les pages statiques après avoir construit votre site. Les développeurs et les éditeurs de contenu peuvent utiliser la génération statique, par page, sans reconstruire l'ensemble du site.

Vous pouvez définir un temps de révalidation par page, et vos pages seront reconstruites lors de l'exécution, à cet intervalle fixe. Le cache sera automatiquement invalidé afin que votre CDN puisse commencer à servir la page mise à jour. Ainsi, si le contenu de votre CMS a changé pour une page spécifique, il sera mis à jour après le temps de révalidation, sans reconstruire l'ensemble du site.

Maintenant, vous pouvez pré-rendre seulement les pages les plus visitées, réduisant ainsi le temps de construction, et laisser la régénération statique incrémentielle gérer le reste. Des frameworks modernes comme NextJS prennent en charge cette fonctionnalité.

👩‍🔬 Article de recherche : Multiplication de matrices sans multiplication

La multiplication de matrices est le bloc de construction fondamental de l'apprentissage automatique. Bien que nous soyons de plus en plus rapides (grâce à des accélérateurs comme les GPUs et des bibliothèques optimisées), nous devons encore nous améliorer : la complexité des modèles ne cesse d'augmenter, et de nombreuses applications nécessitent un traitement en temps réel. Sortons du domaine des multiplications exactes et passons à la multiplication approximative de matrices : sacrifions la précision pour gagner en vitesse.

Les techniques habituelles utilisent d'abord des fonctions linéaires pour projeter les matrices dans un espace ayant une structure spéciale adaptée à une multiplication rapide (par exemple en exploitant la parcimonie). Ensuite, elles multiplient les matrices transformées : le problème est réduit à une multiplication exacte de matrices. L'article présente MADDNESS(https://arxiv.org/abs/2106.10860), une technique qui utilise une transformation non linéaire pour réduire le problème à une recherche dans une table. Dans le cas particulier où une matrice est connue à l'avance, MADDNESS n'utilise aucune opération de multiplication. C'est généralement le cas lors de l'inférence lorsque vous connaissez déjà votre matrice de poids du modèle.

La technique est proche de la quantification vectorielle, mais les auteurs introduisent une fonction de quantification qui n'utilise aucune multiplication : elle repose sur le hachage, la moyenne et le décalage des octets, des opérations CPU très rapides. L'article prétend être 100 fois plus rapide que la multiplication exacte et 10 fois plus rapide que les méthodes approximatives existantes. Ils ont même une implémentation open source sur GitHub(https://github.com/dblalock/bolt).

🛠 Outil : Gradio, un outil pour les démos d'apprentissage automatique et de science des données

Gradio est un outil pour construire facilement des démos pour les applications de science des données et d'apprentissage automatique. Il est important de montrer vos progrès rapidement dans un projet d'apprentissage automatique ou de science des données pour de nombreuses raisons :

  • Développement agile : fournir rapidement de la valeur et itérer rapidement
  • Obtenir des commentaires et des remarques de nombreux parties prenantes
  • Attirer les utilisateurs dès le début du processus de développement

Cependant, il peut être intimidant et chronophage pour les chercheurs en données de construire eux-mêmes une application web de démonstration pour leurs modèles. Principales fonctionnalités de Gradio :

  1. Configuration rapide et facile : vous pouvez l'installer avec pip
  2. Présentation et partage : fonctionne dans les Notebooks ou les applications web
  3. Hébergement permanent : hébergement gratuit et permanent sur Hugging Face Spaces

📰 Actualités

Google Imagen : Modèle de diffusion de texte en image

Google a publié Imagen, un nouveau modèle de diffusion texte en image. Il utilise une architecture de diffusion de super-résolution et offre une qualité d'image impressionnante et une fidélité textuelle. Imagen est un concurrent direct du modèle OpenAI DALL-E 2.

Hugging Face atteint une valorisation de 2 milliards de dollars

Hugging Face est une plateforme animée par une communauté avec de nombreux dépôts pour les modèles d'apprentissage automatique, les jeux de données et les applications d'apprentissage automatique. Grâce à Spaces, vous pouvez même facilement proposer des démonstrations d'apprentissage automatique dans des applications web. Ils sont devenus incontournables pour les praticiens de l'apprentissage automatique, et ont donc atteint une valorisation de 2 milliards de dollars.





Bitsletter n°3 : Équilibrage de charge pour les clusters, Mises à jour web incrémentielles et Magie des matrices

Bitsletter n°3 : Équilibrage de charge pour les clusters, Mises à jour web incrémentielles et Magie des matrices

🧠 Astuce ML : Évitez les zones de surcharge sur vos clusters d'apprentissage automatique

Si vous déployez des modèles d'apprentissage automatique avec un accès API, vous avez probablement rencontré des problèmes d'échelle. Idéalement, vous ne voulez pas que le serveur d'API qui fait les prédictions soit confronté à vos clients, car les tâches intensives en CPU sur les serveurs web augmenteront rapidement votre latence. Une solution consiste à utiliser un cluster d'apprentissage automatique, dédié à l'inférence en production. Cependant, si votre modèle accepte des lots d'entrées, il n'est pas bon d'envoyer toutes les entrées au même nœud. En effet, si votre API reçoit un grand lot et l'envoie à un seul nœud, cela pourrait paralyser ce nœud pendant longtemps. Ce genre de points chauds dans votre infrastructure peut sérieusement affecter la latence des prédictions.

Une solution consiste à répartir le lot sur les nœuds pour avoir une charge presque égale sur chaque nœud, maximisant ainsi la puissance de calcul parallèle de votre cluster. Pour ce faire, vous devez prendre soin de la séquence des sorties, sinon vous risquez de renvoyer les prédictions dans un ordre incorrect. Une solution simple consiste à associer une clé à chaque groupe de données que vous envoyez au cluster, puis chaque nœud renverra les sorties ainsi que la clé correspondante. Par exemple, vous recevez un lot (a,b,c,d,e,f), vous le divisez en 3 lots (1,a,b), (2,c,d), (3,e,f). Ainsi, même si vous recevez les prédictions dans un ordre mélangé comme (3, pred_e, pred_f), (1, pred_a, pred_b), (2, pred_b, pred_c), vous pouvez renvoyer les prédictions au client dans le bon ordre (pred_a, pred_b, pred_c, pred_d, pred_e, pred_f).

🌐 Astuce Web : Régénération statique incrémentielle (ISR)

Le JavaScript, les API et le balisage (JAMstack) sont une architecture populaire pour le développement web. Elle fonctionne en rendant intégralement votre site web en pages statiques, puis en les déployant à l'aide d'un CDN efficace pour une livraison ultra-rapide. Statique ici ne signifie pas seulement HTML et CSS, vous pouvez également inclure du JavaScript avec vos pages web et récupérer des données ou appeler des services côté client si nécessaire.

Les principaux avantages de cette architecture sont les suivants :

  • Sécurité & Évolutivité : pas de backend à sécuriser et vous n'avez qu'à servir des fichiers statiques. En utilisant un CDN mondial comme CloudFlare, vous pouvez mettre à l'échelle indéfiniment.
  • Performance : les pages sont pré-rendues, donc le navigateur les affichera en un clin d'œil, de plus le code est divisé entre chaque page pour un temps de chargement plus rapide.

Cependant, il y a un inconvénient : si votre site web compte des milliers de pages, vous devez reconstruire toutes les pages à chaque modification, ce qui peut prendre du temps. La régénération statique incrémentielle est une solution à ce problème. Dans cette architecture, vous pouvez rafraîchir les pages statiques après avoir construit votre site. Les développeurs et les éditeurs de contenu peuvent utiliser la génération statique, par page, sans reconstruire l'ensemble du site.

Vous pouvez définir un temps de révalidation par page, et vos pages seront reconstruites lors de l'exécution, à cet intervalle fixe. Le cache sera automatiquement invalidé afin que votre CDN puisse commencer à servir la page mise à jour. Ainsi, si le contenu de votre CMS a changé pour une page spécifique, il sera mis à jour après le temps de révalidation, sans reconstruire l'ensemble du site.

Maintenant, vous pouvez pré-rendre seulement les pages les plus visitées, réduisant ainsi le temps de construction, et laisser la régénération statique incrémentielle gérer le reste. Des frameworks modernes comme NextJS prennent en charge cette fonctionnalité.

👩‍🔬 Article de recherche : Multiplication de matrices sans multiplication

La multiplication de matrices est le bloc de construction fondamental de l'apprentissage automatique. Bien que nous soyons de plus en plus rapides (grâce à des accélérateurs comme les GPUs et des bibliothèques optimisées), nous devons encore nous améliorer : la complexité des modèles ne cesse d'augmenter, et de nombreuses applications nécessitent un traitement en temps réel. Sortons du domaine des multiplications exactes et passons à la multiplication approximative de matrices : sacrifions la précision pour gagner en vitesse.

Les techniques habituelles utilisent d'abord des fonctions linéaires pour projeter les matrices dans un espace ayant une structure spéciale adaptée à une multiplication rapide (par exemple en exploitant la parcimonie). Ensuite, elles multiplient les matrices transformées : le problème est réduit à une multiplication exacte de matrices. L'article présente MADDNESS(https://arxiv.org/abs/2106.10860), une technique qui utilise une transformation non linéaire pour réduire le problème à une recherche dans une table. Dans le cas particulier où une matrice est connue à l'avance, MADDNESS n'utilise aucune opération de multiplication. C'est généralement le cas lors de l'inférence lorsque vous connaissez déjà votre matrice de poids du modèle.

La technique est proche de la quantification vectorielle, mais les auteurs introduisent une fonction de quantification qui n'utilise aucune multiplication : elle repose sur le hachage, la moyenne et le décalage des octets, des opérations CPU très rapides. L'article prétend être 100 fois plus rapide que la multiplication exacte et 10 fois plus rapide que les méthodes approximatives existantes. Ils ont même une implémentation open source sur GitHub(https://github.com/dblalock/bolt).

🛠 Outil : Gradio, un outil pour les démos d'apprentissage automatique et de science des données

Gradio est un outil pour construire facilement des démos pour les applications de science des données et d'apprentissage automatique. Il est important de montrer vos progrès rapidement dans un projet d'apprentissage automatique ou de science des données pour de nombreuses raisons :

  • Développement agile : fournir rapidement de la valeur et itérer rapidement
  • Obtenir des commentaires et des remarques de nombreux parties prenantes
  • Attirer les utilisateurs dès le début du processus de développement

Cependant, il peut être intimidant et chronophage pour les chercheurs en données de construire eux-mêmes une application web de démonstration pour leurs modèles. Principales fonctionnalités de Gradio :

  1. Configuration rapide et facile : vous pouvez l'installer avec pip
  2. Présentation et partage : fonctionne dans les Notebooks ou les applications web
  3. Hébergement permanent : hébergement gratuit et permanent sur Hugging Face Spaces

📰 Actualités

Google Imagen : Modèle de diffusion de texte en image

Google a publié Imagen, un nouveau modèle de diffusion texte en image. Il utilise une architecture de diffusion de super-résolution et offre une qualité d'image impressionnante et une fidélité textuelle. Imagen est un concurrent direct du modèle OpenAI DALL-E 2.

Hugging Face atteint une valorisation de 2 milliards de dollars

Hugging Face est une plateforme animée par une communauté avec de nombreux dépôts pour les modèles d'apprentissage automatique, les jeux de données et les applications d'apprentissage automatique. Grâce à Spaces, vous pouvez même facilement proposer des démonstrations d'apprentissage automatique dans des applications web. Ils sont devenus incontournables pour les praticiens de l'apprentissage automatique, et ont donc atteint une valorisation de 2 milliards de dollars.