JAX
扫码查看

Documentation pour JAX, un cadre de calcul de tableaux à haute performance.

JAX

Dans les domaines en pleine évolution de l'apprentissage automatique et du calcul scientifique, les deux principaux facteurs indispensables sont la vitesse d'exécution et la flexibilité. Le programme appelé JAX, qui provient de l'équipe de recherche de Google, est un outil très connu qui est arrivé en tête de liste dans la poursuite de l'accélération dans les domaines du calcul numérique et de l'apprentissage profond. JAX possède toutes les fonctionnalités de base de NumPy, et en plus, il introduit un langage très familier avec certaines des fonctionnalités les plus avancées telles que la différenciation automatique, permettant d'exécuter des charges de travail d'apprentissage automatique et du code optimisé pour les GPU/TPU modernes et également avec une compilation juste à temps. Cet article étudie JAX dans sa recherche de la manière la plus appropriée de l'utiliser, en comparant la capacité réelle avec celle revendiquée, et en offrant un tutoriel simple adapté aux étudiants de première année dans ce domaine.
Qu'est-ce que JAX ?
JAX est une puissante bibliothèque de calcul numérique qui étend les fonctionnalités de NumPy afin d'incorporer diverses fonctions qui améliorent la productivité de l'apprentissage automatique moderne et du calcul scientifique. JAX, contrairement à d'autres bibliothèques plus anciennes, est centrée sur l'organisation du transfert de fonctions, ce qui permet au chercheur et à l'ingénieur d'écrire un code à la fois court et puissant. Les principales caractéristiques de JAX sont la prise en charge de la différenciation automatique, l'accélération matérielle et la facilité d'intégration avec les flux de travail Python existants.
Principaux attributs de JAX
JAX se distingue des autres outils de calcul par les caractéristiques uniques suivantes :
Compatibilité avec NumPy : JAX prend en charge la plupart des opérations sur les tableaux que NumPy a à offrir. Ainsi, les utilisateurs n'ont pas besoin de jeter leurs anciens codes lorsqu'ils utilisent des opérations Numpy et peuvent également profiter des avantages de l'accélération GPU/TPU.
Différenciation automatique : En intégrant la différenciation automatique en mode inverse et en mode direct dans la bibliothèque, JAX abaisse la barrière d'entrée au calcul laborieux des gradients pour les applications d'apprentissage automatique et d'optimisation.
Compilation juste à temps (JIT) : L'une des caractéristiques du décorateur jit est la capacité de compiler les fonctions Python directement en un code machine efficace, ce qui permet d'améliorer considérablement les performances.
Accélération matérielle : Sans aucune modification du code, JAX peut fonctionner sans problème sur les CPU, les GPU et les TPU pour des tâches de recherche simples ou à très grande échelle.
Transformations de fonctions : Des outils très efficaces comme grad, vmap et pmap peuvent non seulement transformer (et donc optimiser) les fonctions en les vectorisant, en les parallélisant et en les regroupant automatiquement, mais aussi le faire de manière simple et rapide.

Premiers pas avec JAX : un tutoriel de base
Notre objectif dans ce cas est de fournir un court exemple qui présentera les fonctionnalités de différenciation automatique et de compilation JIT de JAX.
Tout d'abord, JAX doit être installé via pip :
pip install jax jaxlib
Ensuite, les modules requis doivent être importés :
importer jax
import jax.numpy as jnp
from jax import grad, jit
Il est conseillé de choisir une fonction facile à comprendre et à expliquer avant de trouver le gradient d'une fonction :
def f(x) :
retour 3 * x ** 2 + 2 * x + 1
df_dx = grad(f)
print(df_dx(2.0)) # Sortie : 14.0
L'exécution plus rapide peut maintenant être assurée par la compilation JIT :
@jit
def fast_f(x) :
retour 3 * x ** 2 + 2 * x + 1
print(fast_f(2.0)) # Sortie : 17.0
Ce tutoriel ne se contente pas de montrer à quel point JAX est performant dans la recherche de gradients. En intégrant de telles opérations dans le noyau, JAX offre vmap et pmap pour le travail par lots ou la parallélisation des périphériques.
Conclusion
JAX est une avancée majeure dans le domaine du calcul des tableaux, car il combine la facilité d'utilisation de NumPy avec les dernières optimisations de performance. Bien que l'apprentissage de la programmation fonctionnelle soit un petit obstacle à surmonter, l'étendue de la vitesse et de l'adaptabilité des avantages qui en résultent est tout à fait gratifiante. Qu'il s'agisse de l'entraînement de modèles d'apprentissage automatique, de simulations scientifiques ou de l'optimisation de fonctions mathématiques, JAX est l'outil qui vous aidera à repousser les limites de ce qui est possible en Python.

FacebookXWhatsAppPinterestLinkedIn