Dans ce tutoriel de bout en bout, vous apprendrez à déployer et accélérer l’inférence de Stable Diffusion XL en utilisant AWS Inferentia2 et optimum-neuron sur Amazon SageMaker. AWS Inferentia (Inf2) est conçu pour les charges d’inférence d’apprentissage profond, offrant des performances optimisées pour les modèles lourds comme Stable Diffusion XL.
Contexte et prérequis
Nous allons utiliser le modèle stabilityai/stable-diffusion-xl-base-1.0 comme point de départ. Note: si vous souhaitez compiler votre propre modèle ou un autre point de contrôle SDXL, il faut prévoir ~120 Go de mémoire et la compilation peut durer environ 45 minutes. L’intégration principale se fait via optimum-neuron qui ajoute le support pour le pipeline 🤗 Diffusers et offre une compilation adaptée pour Inf2.
Si vous utilisez SageMaker dans un environnement local (pas SageMaker Studio ni Notebook Instances), vous devez disposer d’un rôle IAM avec les permissions requises pour SageMaker et les accès S3 pour stocker les artefacts du modèle.
Le toolkit Hugging Face Inference Toolkit ne permet pas actuellement les déploiements zéro-code sur Inf2 en raison des limitations actuelles, ce qui nécessite un script inference.py pour lancer l’inférence. Cependant, optimum-neuron intègre le support du pipeline 🤗 Diffusers, ce qui simplifie le flux lorsque l’on cible Inf2.
Déploiement et configuration
Après avoir téléversé les artefacts du modèle sur Amazon S3, nous pouvons créer un HuggingFaceModel personnalisé. La plus petite instance Inf2 prise en charge est inf2.xlarge, équipée d’un seul puits Inf2 et de 2 cœurs Neuron. Cette configuration permet de démarrer rapidement et d’évaluer les performances de l’inférence.
Le déploiement via .deploy() renvoie un objet HuggingFacePredictor qui peut être utilisé pour lancer l’inférence. L’endpoint attend un JSON contenant au minimum la clé inputs, qui représente le prompt d’entrée du modèle utilisé pour générer l’image. On peut aussi inclure des paramètres d’inférence. La fonction predictor.predict() renvoie un JSON avec la clé generated_images, qui contient l’image générée encodée en base64.
Exemple d’utilisation: générer des images à partir de prompts descriptifs et régler les paramètres d’inférence pour optimiser la vitesse et la qualité. Si une requête expire, relancer simplement l’inférence; les résultats montrent qu’environ 6 secondes par image peuvent être atteintes, soit environ 10 images par minute ou ~600 images par heure selon le scénario et les ressources.
À noter, le guide précise que certaines régions AWS (Inf2) ne sont disponibles que dans us-east-2 et us-east-1, ce qui peut impacter les déploiements si vous êtes ailleurs. Il est donc nécessaire de vérifier la disponibilité régionale au moment du déploiement. Une fois les artefacts publiés et l’environnement SageMaker configuré, le flux de travail peut être répliqué pour d’autres variantes de SDXL, avec des compromis sur la mémoire et le temps de compilation.
Éléments techniques clés
Utilisation du modèle base SDXL 1.0 et conversion via optimum-neuron pour obtenir le format neuronx compatible Inf2. Le pipeline Grep Diffusers est intégré, ce qui élimine le besoin d’un inference.py ad hoc dans certains cas et facilite le déploiement orienté inference.
Les détails pratiques incluent: specifier le type d’instance inf2.xlarge comme point d’entrée, comprendre que chaque Inf2 contient une unité Neuron et que la performance d’inférence dépendra des paramètres de précision et du pipeline utilisé. Le fichier de configuration et les artefacts doivent être stockés sur S3 et référencés lors de la création du HuggingFaceModel personnalisé sur SageMaker.
Le processus de génération peut être illustré par des prompts variés du type: “un chien qui tente d’attraper une pizza volante dans le style bande dessinée, à un coin de rue”, démontrant la capacité du modèle SDXL 1.0 à produire des images complexes et stylisées. Des ajustements peuvent être appliqués via les paramètres d’inférence pour moduler la densité, la résolution et le style.
Tableau synthèse
| Éléments | Description |
|---|---|
| Modèle | stabilityai/stable-diffusion-xl-base-1.0 |
| Version SDXL | SDXL 1.0 |
| Outils de compilation | optimum-neuron (conversion en neuronx) |
| Pipeline | 🤗 Diffusers via optimum-neuron |
| Infrastructure | AWS Inf2 via SageMaker |
| Régions Inf2 | us-east-1, us-east-2 |
| Instance minimale | inf2.xlarge (1 Inf2 chip, 2 Neuron Cores) |
| Déploiement | HuggingFaceModel personnalisé |
| Sortie | generated_images en base64 |
Pour accélérer les performances et réduire les coûts, il est possible d’ajuster les paramètres de précision et d’optimiser la compilation avec optimum-neuron, ce qui peut influencer le débit et la latence de l’inférence sur Inf2.
Ressources et contexte historique
En avril dernier, Stability AI annonçait la bêta de Stable Diffusion XL et présentait SDXL 0.9 en juin, comme évolution majeure de la suite Stable Diffusion. La sortie publique initiale de Stable Diffusion remonte à août 2022, suivie de SD 2.0 en novembre 2022. SDXL 1.0 est aujourd’hui un modèle phare pour la génération d’images et est en ligne sur Clipdrop selon les informations publiques.
Ce cadre historique souligne les progrès continus dans les modèles de génération d’images et l’importance des plateformes cloud comme AWS SageMaker pour l’entraînement et l’inférence à grande échelle, en tirant parti d’unités d’inférence spécialisées comme Inf2 et de solutions de compilation adaptées.

Amazon EC2 Inf2 Instances in Preview | Amazon Web Services
Les résultats de performance dépendent des charges et des prompts, mais l’ensemble du flux décrit permet une mise en production efficace de SDXL 1.0 sur AWS avec Inf2 et optimum-neuron, tout en respectant les contraintes régionales et matérielles.