View a markdown version of this page

Mise en cache des poids des modèles et mise en cache des images - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Mise en cache des poids des modèles et mise en cache des images

Lorsque vous agrandissez un déploiement d'inférence, chaque nouveau pod doit extraire l'image du conteneur du serveur d'inférence à partir d'un registre. Il doit également télécharger les poids des modèles depuis le stockage distant (Amazon S3 ou Amazon FSx) avant de pouvoir gérer le trafic. Pour les modèles linguistiques de grande taille, le téléchargement des poids des modèles et l'extraction des images des conteneurs contribuent le plus à la latence de démarrage à froid.

Pour éliminer ces goulots d'étranglement lors de la mise à l'échelle, configurez l'un des mécanismes de mise en cache locaux de l'hôte suivants ou les deux dans Amazon Inference : SageMaker HyperPod

Mise en cache des poids des modèles () weightsCache

Pre-populates modélisez les fichiers de poids sur le stockage NVMe local de l'hôte sur chaque nœud éligible. Déduisez les poids de charge des modules sur les mêmes nœuds à partir du stockage local au lieu de les télécharger depuis la source du modèle distant, ce qui élimine les téléchargements redondants entre les modules.

Mise en cache d'images () imageCache

Pre-pulls l'image du conteneur du serveur d'inférence sur les nœuds cibles afin que les nouveaux pods démarrent sans attendre l'extraction d'une image à froid.

Vous configurez les deux mécanismes de mise en cache via le modelCacheConfig champ de votre JumpStartModel déploiement InferenceEndpointConfig ou de votre déploiement.

Vous pouvez activer la mise en cache des pondérations et la mise en cache des images indépendamment ou conjointement. Les deux fonctionnalités fonctionnent avec toutes les sources de modèles Amazon SageMaker HyperPod Inference, y compris les SageMaker JumpStart déploiements Amazon (modèles à poids ouverts et modèles fermés) et les modèles personnalisés d'Amazon S3 ou Amazon FSx.

Conditions préalables

Avant d'activer la mise en cache, vérifiez les points suivants :

Type d'instance avec stockage NVMe local

La mise en cache des pondérations des modèles stocke les pondérations sur le stockage NVMe local de l'hôte (/opt/dlami/nvmepar défaut). Votre type d'instance doit fournir un stockage NVMe local au niveau configuréhostPath.

Capacité NVMe suffisante

Assurez-vous que le nœud dispose d'un espace de stockage local suffisant pour votre modèle. Chaque déploiement utilise son propre répertoire de cache isolé, de sorte que plusieurs déploiements mis en cache sur le même nœud consomment chacun leur propre espace de stockage.

Opérateur d'inférence

Votre cluster doit disposer d'une version de l'opérateur d' HyperPod inférence qui prend en charge la mise en cache des modèles. Si le modelCacheConfig champ n'est pas reconnu, mettez à jour le module complémentaire de l'opérateur d'inférence vers la dernière version.

Important

Si votre type d'instance ne dispose pas de stockage NVMe local au niveau configuréhostPath, la mise en cache des pondérations des modèles ne réchauffe pas le cache et les modules d'inférence reviennent au téléchargement des pondérations depuis la source distante du modèle. Vérifiez que votre type d'instance fournit un stockage NVMe local avant d'activer cette fonctionnalité.

Configurer la mise en cache des pondérations des modèles et la mise en cache des images

Ajoutez un modelCacheConfig bloc à votre JumpStartModel ressource InferenceEndpointConfig ou à votre ressource. spec L'exemple suivant active à la fois la mise en cache des pondérations des modèles et la mise en cache des images.

spec: # ... model source, worker, and TLS configuration ... modelCacheConfig: weightsCache: enabled: true hostPath: /opt/dlami/nvme imageCache: enabled: true

Le modelCacheConfig champ prend en charge les sous-champs suivants.

Champ Par défaut Description
weightsCache.enabled false Indique si la mise en cache des pondérations des modèles locaux à l'hôte est activée. Lorsquetrue, l'opérateur préremplit les poids du modèle sur le stockage local de l'hôte et les monte dans des modules d'inférence.
weightsCache.hostPath /opt/dlami/nvme Le chemin hôte où les poids des modèles mis en cache sont stockés. Il doit s'agir d'un chemin absolu non vide d'au plus 255 caractères.
imageCache.enabled false Si la mise en cache des images de conteneur est activée. Lorsquetrue, l'opérateur extrait au préalable l'image du conteneur du serveur d'inférence sur les nœuds cibles.

Comment fonctionne la mise en cache des poids des modèles

Lorsque weightsCache.enabled c'est le castrue, l'opérateur télécharge les pondérations de modèle depuis la source de modèle distante (Amazon S3 ou Amazon FSx) vers le stockage NVMe local de l'hôte sur chaque nœud éligible avant que les pods d'inférence ne commencent à gérer le trafic. Les modules d'inférence montent les poids mis en cache en lecture seule et chargent le modèle depuis le stockage local au lieu de le télécharger à plusieurs reprises depuis la source distante.

L'opérateur remplit le cache sur les nœuds qui correspondent aux contraintes de planification du déploiement par inférence, et étiquette chaque nœud lorsque son cache est chaud. Le déploiement par inférence utilise l'affinité de nœud préférée sur cette étiquette, de sorte que les pods sont planifiés sur des nœuds chauds lorsqu'ils sont disponibles, mais peuvent toujours être planifiés ailleurs.

Isolation

Chaque déploiement utilise un répertoire de cache isolé par déploiement dans le répertoire configuréhostPath, de sorte que les déploiements de plusieurs modèles sur le même nœud n'interfèrent pas les uns avec les autres.

Cache Miss Fallback

Si un pod est planifié sur un nœud dont le cache n'est pas encore disponible, le déploiement revient au chargement des poids du modèle directement depuis la source du modèle distant, de sorte que les déploiements restent fonctionnels même sans cache chaud.

Remplacement du nœud

Si un nœud est remplacé (par exemple, après une panne), l'opérateur doit réchauffer à nouveau le cache du nouveau nœud avant que les pods ne soient planifiés de préférence pour celui-ci. Entre-temps, les nœuds chauds existants continuent de gérer le trafic.

Nettoyage lors de la suppression

Lorsque vous supprimez le déploiement, l'opérateur supprime les fichiers de poids mis en cache des nœuds qu'il a renseignés.

Comment fonctionne la mise en cache des images

Lorsque imageCache.enabled c'est le castrue, l'opérateur extrait au préalable l'image du conteneur du serveur d'inférence sur les nœuds cibles. Comme l'image est déjà présente sur le nœud, les nouveaux modules d'inférence évitent l'extraction d'images à froid qui retarderait autrement le démarrage du module. Cela est particulièrement utile pour les images de serveurs d'inférence volumineuses et pour les déploiements qui évoluent fréquemment.

La mise en cache des images est indépendante de la mise en cache des pondérations des modèles. Vous pouvez l'activer seul ou le combiner avec la mise en cache des pondérations pour réduire à la fois le temps d'extraction des images et de téléchargement des poids lors de la mise à l'échelle.

Vérifiez que la mise en cache fonctionne

Effectuez les vérifications suivantes pour vérifier que la mise en cache est active pour votre déploiement.

Vérifiez les étiquettes des nœuds pour un cache chaud

Lorsque le cache d'un nœud est chaud, l'opérateur lui applique une étiquette prête à être mise en cache. La mise en cache des pondérations des modèles utilise une étiquette avec le préfixeinference.sagemaker.aws.amazon.com/weights-cache-ready., et la mise en cache des images utilise le préfixeinference.sagemaker.aws.amazon.com/image-cache-ready., chacun étant suffixé par l'UID de la configuration de cache.

kubectl get nodes --show-labels | grep "cache-ready"

L'absence de sortie signifie qu'aucun nœud n'a encore réchauffé le cache.

Vérifiez les événements du pod pour le montage du cache

Inspectez un module d'inférence et vérifiez qu'il monte le chemin de cache local de l'hôte en lecture seule. Si le volume HostPath est absent, cela signifie que le pod charge des poids depuis le stockage distant.

kubectl describe pod inference-pod-name -n namespace

Vérifiez les journaux des opérateurs

Consultez les journaux des opérateurs d'inférence pour détecter toute activité de préchauffage du cache ou détecter des erreurs.

kubectl logs -n hyperpod-inference-system deployment/hyperpod-inference-controller-manager | grep -i "cache"

Résolution des problèmes

Symptôme Cause possible Résolution
Les pods démarrent lentement même si la mise en cache est activée. Le chemin NVMe n'existe pas sur le type d'instance. Vérifiez que votre type d'instance dispose d'un stockage NVMe local et qu'il hostPath correspond au point de montage réel.
Le cache ne se réchauffe jamais. Espace disque insuffisant sur le chemin d'accès de l'hôte. Vérifiez la capacité disponible àhostPath. Les grands modèles peuvent nécessiter un stockage local important.
Aucun nœud n'est étiqueté comme prêt pour le cache. Le téléchargement du cache a échoué ou la source distante est inaccessible. Consultez les journaux de l'opérateur pour détecter les erreurs de téléchargement et vérifiez l'accès réseau à Amazon S3 ou Amazon FSx.
Les déploiements multiples entraînent une pression du disque sur un nœud. Les déploiements mis en cache partagent le même nœud de stockage NVMe. Utilisez des groupes d'instances distincts ou réduisez le nombre de déploiements simultanés mis en cache par nœud.

Considérations

  • La mise en cache des poids des modèles nécessite des types d'instance dotés d'un stockage NVMe local. EBS-only les instances ne sont pas prises en charge.

  • La taille maximale du modèle pouvant être mise en cache est limitée par la capacité NVMe disponible sur le type d'instance.

  • Le temps de préchauffage du cache dépend de la taille du modèle et du débit réseau vers la source du modèle distant.