Cette page aide les ingénieurs en machine learning (ML) et les administrateurs de plate-forme à diagnostiquer et à résoudre les problèmes liés aux charges de travail Pathways sur Google Cloud. Utilisez ce guide pour inspecter les journaux des composants, vérifier l'aptitude des clusters et des tranches, surveiller les métriques de transfert Megascale XLA (MXLA) et corriger les erreurs d'exécution courantes. Dans chaque section, sélectionnez l'onglet GKE ou Cluster Director pour votre environnement.
Avant de commencer
-
Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :
gcloud
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée. Après vous être connecté, initialisez la Google Cloud CLI en exécutant la commande suivante :
gcloud initREST
Pour utiliser les exemples API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à la gcloud CLI.
Installez la Google Cloud CLI, puis connectez-vous à la gcloud CLI avec votre identité fédérée.
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .
Avant de commencer
GKE
Avant de continuer, assurez-vous de remplir les conditions préalables suivantes :
- Configurez Cluster Toolkit.
- Installez les outils Kubernetes.
- Installez la Google Cloud CLI.
- Activez l'API Kubernetes Engine.
- Créer un cluster Google Kubernetes Engine (GKE) avec Pathways
- Pour afficher les journaux et les métriques dans la console Google Cloud , assurez-vous de disposer des rôles IAM (Identity and Access Management) Lecteur de journaux (
roles/logging.viewer) et Lecteur Monitoring (roles/monitoring.viewer) sur votre projet.
Cluster Director
Avant de continuer, assurez-vous de remplir les conditions préalables suivantes :
- Créez un cluster Cluster Director et configurez l'environnement Pathways.
- Vérifiez que vous disposez d'un accès SSH au nœud de connexion du cluster.
Afficher les journaux
GKE
Vous pouvez afficher les journaux de vos charges de travail Pathways directement à l'aide de la commande gcluster job logs (transmettez --main-only=false pour inclure les journaux des pods de nœuds de calcul) :
gcluster job logs WORKLOAD_NAME \ --cluster=CLUSTER \ --project=PROJECT_ID \ --location=LOCATION \ --main-only=false
Remplacez les éléments suivants :
WORKLOAD_NAME: nom de votre charge de travail lorsque vous utilisez Cluster Toolkit, ou nom du JobSet lorsque vous utilisezkubectl.CLUSTER: nom de votre cluster GKE.PROJECT_ID: ID de votre projetGoogle Cloud .LOCATION: région ou zone dans laquelle vous avez créé votre cluster GKE.
Pour lister tous les pods de votre charge de travail à l'aide de kubectl, filtrez par l'étiquette de nom JobSet :
kubectl get pods \ -l jobset.sigs.k8s.io/jobset-name=WORKLOAD_NAME
Pour vérifier l'état de la charge de travail ou lister les jobs ayant échoué, utilisez la commande gcluster job list :
gcluster job list --status Failed \ --cluster=CLUSTER \ --project=PROJECT_ID \ --location=LOCATION
Vous pouvez également exécuter la requête suivante dans l'explorateur de journaux de Cloud Logging, en l'adaptant à votre projet, votre emplacement, votre cluster et votre charge de travail :
resource.type="k8s_container" resource.labels.project_id="PROJECT_ID" resource.labels.location="LOCATION" resource.labels.cluster_name="CLUSTER" resource.labels.namespace_name="default" resource.labels.pod_name:"WORKLOAD_NAME"
Cette requête correspond à plusieurs conteneurs Kubernetes Pathways portant des noms tels que pathways-rm, pathways-proxy, pathways-worker et workload-container. Pour déterminer quel conteneur est à l'origine d'un problème, ajoutez un filtre de nom de conteneur tel que resource.labels.container_name:"CONTAINER_NAME", où CONTAINER_NAME est le nom du conteneur.
Cluster Director
Les scripts Pathways écrivent des journaux dans le système de fichiers partagé :
- Le job du service Pathways écrit
pathways-service-SERVICE_JOB_ID.outetpathways-service-SERVICE_JOB_ID.errdans le répertoire où vous avez exécutésbatch, par exemple~/pathways. - Le gestionnaire de ressources Pathways, le serveur proxy IFRT et les nœuds de calcul TPU écrivent dans
~/pathways/service_SERVICE_JOB_ID/logs, y comprisrm.log,proxy.log, et un fichierslice-*.outetslice-*.errpar tâche de nœud de calcul. - L'exemple de charge de travail MaxText écrit son journal dans
maxtext-llama31-JOB_ID.err.
Sur le nœud de connexion, vérifiez l'état des jobs Pathways et recherchez leurs ID :
squeue -u ${USER}
Surveiller les composants et les métriques Pathways
Les sections suivantes s'appliquent à Pathways sur GKE.
Surveillance d'état
Vous pouvez surveiller l'état de divers composants Pathways en recherchant des entrées dans les journaux de conteneurs.
Le conteneur pathways-proxy est prêt à diffuser de nouvelles requêtes de connexion lorsqu'il écrit l'entrée de journal suivante. Pour afficher les journaux, exécutez la commande suivante :
kubectl logs HEAD_POD_NAME --container pathways-proxy
Remplacez HEAD_POD_NAME par le nom du pod principal Pathways.
Le résultat inclut une ligne semblable à celle-ci :
I1101 04:51:41.967764 1 proxy_server.cc:125] IFRT proxy server started with status OK
Le conteneur pathways-rm est prêt à diffuser de nouvelles requêtes de connexion lorsqu'il écrit l'entrée de journal suivante :
kubectl logs HEAD_POD_NAME --container pathways-rm
Le résultat inclut une ligne semblable à celle-ci :
I1101 04:50:41.967764 1 server_lib.cc:1473] Pathways Server serving on POD_IP:29001
POD_IP est l'adresse IP du pod, qui peut changer lorsque le pod redémarre ou est replanifié.
Pour vérifier que toutes les tranches de TPU sont prêtes, recherchez Pathways Slices Now Ready dans les journaux du conteneur pathways-rm :
kubectl logs HEAD_POD_NAME --container pathways-rm
Par exemple, l'entrée de journal suivante indique que deux tranches sur deux sont prêtes :
I1101 04:52:41.967764 1 multi_job_allocator.cc:1063] *** 2/2 Pathways Slices Now Ready ***
Le client Pathways peut se connecter au serveur proxy IFRT dès que le serveur proxy est prêt, même si toutes les tranches ne sont pas prêtes. Votre job fonctionne avec des tranches virtuelles jusqu'à ce que les tranches de TPU soient prêtes. Les tranches virtuelles permettent à votre code de s'exécuter lorsque les TPU ne sont pas disponibles.
Pour vérifier qu'un conteneur pathways-worker est prêt, consultez ses journaux :
kubectl logs WORKER_POD_NAME --container pathways-worker
Remplacez WORKER_POD_NAME par le nom d'un pod de nœud de calcul Pathways.
Une fois le nœud de calcul prêt, le résultat inclut une ligne semblable à celle-ci :
I1101 04:50:41.967764 1 server_lib.cc:1473] Pathways Server serving on POD_IP:29005
POD_IP est l'adresse IP du pod, qui peut changer lorsque le pod redémarre ou est replanifié.
Collecte de métriques
Pathways peut écrire des métriques système de bas niveau dans Cloud Monitoring pour le débogage. Les métriques incluent les éléments suivants :
- Latence de transfert du réseau de centre de données (DCN)
- Latence collective
- Latence de transfert hôte à appareil
- Latence de transfert d'appareil à hôte
Vous trouverez les métriques sur le tableau de bord Monitoring du projetGoogle Cloud dans lequel le cluster GKE est exécuté.
Pour surveiller ces métriques dans l'explorateur de métriques, procédez comme suit :
- Dans la console Google Cloud , accédez à la page Explorateur de métriques.
- Dans le champ Sélectionner une métrique, filtrez par nom de métrique.
- Pour filtrer par nom de charge de travail et par période, cliquez sur Ajouter un filtre, puis filtrez par
pod_name. - Pour Agrégation, choisissez un type d'agrégation en fonction de la métrique et des charges de travail que vous surveillez.
Latence de transfert DCN
Cette métrique Megascale XLA (MXLA) mesure la distribution cumulative des latences de transfert réseau pour le trafic multislice. La mesure de la latence commence lorsque le système émet une requête de transfert de données sur le DCN et se termine lorsqu'il reçoit un accusé de réception indiquant que le transfert de données est terminé. Pour surveiller cette métrique, filtrez par le nom de métrique dcn_transfer_latencies.
Latence collective
Cette métrique MXLA mesure la distribution cumulative de la latence collective de bout en bout pour le trafic multislice. La mesure de la latence commence lorsque le système émet une requête pour une opération collective et se termine lorsqu'il reçoit un accusé de réception indiquant que le transfert de données est terminé. Pour surveiller cette métrique, filtrez par le nom de métrique collective_end_to_end_latencies.
Latence de transfert hôte à appareil
Cette métrique MXLA mesure la distribution cumulative des latences de transfert hôte à appareil pour le trafic multitranche. La mesure de la latence commence lorsque le système émet une requête de transfert de données de l'hôte vers un appareil TPU et se termine lorsqu'il reçoit un accusé de réception indiquant que le transfert de données est terminé. Pour surveiller cette métrique, filtrez par le nom de métrique host_to_device_transfer_latencies.
Latence de transfert d'appareil à hôte
Cette métrique MXLA mesure la distribution cumulative des latences de transfert d'appareil à hôte pour le trafic multislice. La mesure de la latence commence lorsque le système émet une requête de transfert de données d'un appareil TPU vers l'hôte et se termine lorsqu'il reçoit un accusé de réception indiquant que le transfert de données est terminé. Pour surveiller cette métrique, filtrez par le nom de métrique device_to_host_transfer_latencies.
Déboguer les erreurs courantes
GKE
Impossible de hacher les avertissements de configuration de l'accélérateur
Les messages suivants ne sont que des avertissements et n'affectent pas les performances de votre code JAX :
INFO:jax._src.cache_key:get (_hash_accelerator_config): unable to hash accelerator config, falling back to hashing devices + platform: UNIMPLEMENTED: GetTopologyForDevices is not supported for the IFRT proxy client. (type <class 'jaxlib.xla_extension.XlaRuntimeError'>)
Autorisation logging.logEntries.create refusée pour la ressource
Si l'erreur suivante s'affiche, assurez-vous que le compte de service Compute Engine utilisé par Vertex AI Workbench est autorisé à écrire des entrées de journal dans Logging :
INFO:absl:Created 'ArrayHandler' with primary_host=0, replica-id=0
WARNING:absl:pathwaysutils: Detected Pathways-on-Cloud backend. Applying changes.
Failed to submit 1 logs.
Traceback (most recent call last):
File "/opt/conda/lib/python3.10/site-packages/google/api_core/grpc_helpers.py", line 65, in error_remapped_callable
return callable_(**args, **kwargs)
File "/opt/conda/lib/python3.10/site-packages/grpc/_channel.py", line 1181, in __call__
return _end_unary_response_blocking(state, call, False, None)
File "/opt/conda/lib/python3.10/site-packages/google/api_core/grpc_helpers.py", line 1006, in _end_unary_response_blocking
raise _InactiveRpcError(state) # pytype: disable-not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
status = StatusCode.PERMISSION_DENIED
details = "Permission 'logging.logEntries.create' denied on resource (or it may not exist)."
debug_error_string = "UNKNOWN:Error received from peer ipv4:216.239.34.174:443 {created_time:"2024-10-03T20:30:44.820425276+00.00", grpc_status:7, grpc_message:"Permission \'logging.logEntries.create\' denied on resource (or it may not exist)."}"
>
Pour résoudre ce problème, attribuez le rôle Rédacteur de journaux (roles/logging.logWriter) au compte de service Compute Engine.
Impossible de se connecter au serveur proxy IFRT
Lorsque votre première commande JAX qui envoie une commande IFRT au cluster Pathways tente de s'exécuter, elle peut cesser de répondre pendant environ une minute, puis afficher un RuntimeError semblable à celui-ci :
RuntimeError: Unable to initialize backend 'proxy': UNAVAILABLE: Unable to establish connection to ifrt_proxy server, please check provided address example-workload-proxy-0-0.example-workload.default.svc.example-cluster-domain.:38676'; detailed error: DNS resolution failed (set JAX_PLATFORMS='' to automatically choose an available backend)
Si cette erreur s'affiche, cela signifie que votre client proxy IFRT ne peut pas se connecter au serveur proxy IFRT. Vérifiez les éléments suivants :
- Vérifiez que vous avez correctement configuré votre réseau de cloud privé virtuel (VPC).
- Vérifiez que vos règles de pare-feu autorisent la connexion.
- Vérifiez que votre cluster Pathways est provisionné.
- Recherchez les messages d'erreur de démarrage dans les journaux du conteneur.
Échec du handshake ALTS ou socket fermé lors de la connexion au serveur proxy IFRT
Vous pouvez voir Alts handshake failed (TSI_INTERNAL_ERROR) ou UNAVAILABLE: Unable to establish connection to ifrt_proxy server ... Socket
closed lorsque vous exécutez un fichier manifeste personnalisé sans le champ hostNetwork: true sur un pool de nœuds Workload Identity Federation for GKE. Pour résoudre ce problème, définissez la variable d'environnement IFRT_PROXY_USE_INSECURE_GRPC_CREDENTIALS: "true" sur le conteneur pathways-proxy et le conteneur client JAX (les deux côtés doivent correspondre). L'ajout de cette variable d'environnement désactive ALTS et utilise gRPC non sécurisé à la place. Par conséquent, ne l'utilisez que dans un réseau de cluster de confiance.
Une connexion au cluster Pathways existe déjà
Un cluster Pathways ne peut maintenir une session qu'avec un seul client à la fois. Si deux notebooks distincts tentent de se connecter au même cluster Pathways, l'un se connecte et l'autre affiche les erreurs suivantes :
INFO:absl:Created ArrayHandler with primary_host=0, replica_id=0
WARNING:absl:pathwaysutils: Detected Pathways-on-Cloud backend. Applying changes.
E0927 21:19:52.919607 37624 rpc_helper.cc:56] Connection to IFRT proxy server was terminated: CANCELLED: Cancelled
E0927 21:20:03.467547 37719 rpc_helper.cc:56] Connection to IFRT proxy server was terminated: CANCELLED: Cancelled
E0927 21:20:14.011645 37807 rpc_helper.cc:56] Connection to IFRT proxy server was terminated: CANCELLED: Cancelled
E0927 21:20:24.557955 37924 rpc_helper.cc:56] Connection to IFRT proxy server was terminated: CANCELLED: Cancelled
---------------------------------------------------------------------------
XlaRuntimeError Traceback (most recent call last)
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:887, in backends()
885 continue
--> 887 backend = _init_backend(platform)
888 _backends[platform] = backend
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:973, in _init_backend(platform)
972 logger.debug("Initializing backend '%s'", platform)
--> 973 backend = registration.factory()
974 # TODO: consider raising more descriptive errors directly from backend
975 # factories instead of returning None.
File /opt/conda/lib/python3.10/site-packages/pathwaysutils/proxy_backend.py:24, in register_backend_factory.<locals>.<lambda>()
21 def register_backend_factory():
22 xla_bridge.register_backend_factory(
23 "proxy",
---> 24 lambda: ifrt_proxy.get_client(
25 jax.config.read("jax_backend_target"),
26 ifrt_proxy.ClientConnectionOptions(),
27 ),
28 priority=-1,
29 )
XlaRuntimeError: UNAVAILABLE: Unable to establish connection to ifrt_proxy server, please check provided address example-workload-proxy-0-0.example-workload.default.svc.example-cluster-domain.:38676'; detailed error: Connection to IFRT proxy server was terminated: CANCELLED: Cancelled
During handling of the above exception, another exception occurred:
RuntimeError Traceback (most recent call last)
Cell In[2], line 4
1 import pathwaysutils
3 import jax
----> 4 print(jax.devices())
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:1085, in devices(backend)
1060 def devices(
1061 backend: str | xla_client.Client | None = None
1062 ) -> list[xla_client.Device]:
1063 """Returns a list of all devices for a given backend.
1064
1065 .. currentmodule:: jaxlib.xla_extension
(...)
1083 List of Device subclasses.
1084 """
-> 1085 return get_backend(backend).devices()
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:1019, in get_backend(platform)
1015 @lru_cache(maxsize=None) # don't use util.memoize because there is no X64 dependence.
1016 def get_backend(
1017 platform: None | str | xla_client.Client = None
1018 ) -> xla_client.Client:
-> 1019 return _get_backend_uncached(platform)
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:998, in _get_backend_uncached(platform)
994 return platform
996 platform = (platform or _XLA_BACKEND.value or _PLATFORM_NAME.value or None)
--> 998 bs = backends()
999 if platform is not None:
1000 platform = canonicalize_platform(platform)
File /opt/conda/lib/python3.10/site-packages/jax/_src/xla_bridge.py:903, in backends()
901 else:
902 err_msg += " (you may need to uninstall the failing plugin package, or set JAX_PLATFORMS=cpu to skip this backend.)"
--> 903 raise RuntimeError(err_msg)
905 assert _default_backend is not None
906 if not config.jax_platforms.value:
RuntimeError: Unable to initialize backend 'proxy': UNAVAILABLE: Unable to establish connection to ifrt_proxy server, please check provided address 'example-workload-proxy-0-0.example-workload.default.svc.example-cluster-domain.:38676'; detailed error: Connection to IFRT proxy server was terminated: CANCELLED: Cancelled (set JAX_PLATFORMS='' to automatically choose an available backend)
Une fois que le client d'origine se déconnecte, le deuxième client peut se connecter. Après une déconnexion inattendue, vous devrez peut-être redémarrer le cluster Pathways pour que d'autres clients puissent se connecter.
LocalProxy.__init__() got an unexpected keyword argument
'unbound_message'
Si l'erreur suivante s'affiche après l'importation de pathwaysutils, vérifiez si des versions obsolètes de Flask ou Werkzeug sont installées dans votre environnement (remplacez pip3 par pip si nécessaire) :
pip3 list --outdated
Si Flask ou Werkzeug sont listés, mettez à niveau les packages (notez que la mise à niveau peut affecter d'autres packages ou dépendances de votre projet) :
pip3 install --upgrade flask Werkzeug
Erreur interne du serveur proxy
"Internal error from proxy server during Array::IsDeleted(): UNAVAILABLE:Connection to IFRT proxy server was terminated: FAILED_PRECONDITION:
GrpcClientSession: writes no longer allowed."
Cette erreur indique que le serveur proxy IFRT s'est déconnecté du client. Pour résoudre ce problème, redémarrez votre client. Pour les notebooks, redémarrez le noyau du notebook et réexécutez votre notebook.
SIGTERM et OOM HBM
Une entrée SIGTERM dans les journaux associée à une erreur RESOURCE_EXHAUSTED peut indiquer une erreur de mémoire insuffisante (OOM) de la mémoire à haut débit (HBM). Dans ce cas, réduisez la quantité de mémoire HBM utilisée par votre code JAX.
INVALID_ARGUMENT
"INVALID_ARGUMENT : Permanent error, with a last message of Lifecycle
matches_prefix cannot specify more than 50 prefixes per config.; Error while
initializing persistent cache storage Cloud Storage"
Cette erreur se produit si le bucket Cloud Storage transmis à l'option --pathways-gcs-location a atteint la limite maximale de règles de cycle de vie (50 préfixes). Pour résoudre ce problème, supprimez les règles de cycle de vie Cloud Storage que vous n'utilisez plus.
Erreur permanente
Permanent error, with a last message of The specified bucket does not exist.; Error while initializing persistent cache storage gcs
Le gestionnaire de ressources Pathways ou les nœuds de calcul Pathways affichent cette erreur lorsque vous fournissez un emplacement Cloud Storage non valide aux conteneurs Pathways.
Error response from daemon
Error response from daemon: dockerfile parse error line 16: Unknown flag: exclude
Cette erreur se produit lorsque vous utilisez une ancienne version de Docker. Mettez à niveau votre version de Docker.
Le client et le serveur proxy IFRT n'ont pas réussi à s'accorder
IFRT Proxy client and server failed to agree on the protocol version; supported versions: client = [1, 1], server = [3, 14]
Cette erreur indique que vous utilisez une ancienne version de MaxText. Recompilez la dernière image MaxText.
Cluster Director
setup_env.sh échoue avec une erreur Enroot mktemp
Si setup_env.sh échoue avec l'erreur suivante, le répertoire temporaire d'Enroot n'existe pas :
mktemp: failed to create directory via template '/tmp/UID/tmp/enroot...'
Pour résoudre ce problème, exécutez mkdir -p /tmp/$(id -u)/tmp, puis exécutez à nouveau le script.
setup_env.sh ne peut pas extraire les images Pathways
Si setup_env.sh échoue avec Couldn't pull ..., aucune image Pathways n'est taguée pour le JAX_VERSION demandé. Utilisez une version de JAX compatible.
Le cluster ne comporte aucune partition cpu
Si sinfo n'affiche pas de partition cpu, la définition du cluster ne contient pas l'ensemble de nœuds de processeur ou nomme sa partition différemment. Les scripts Pathways envoient des jobs à une partition nommée cpu. Pour résoudre ce problème, mettez à jour votre plan de cluster afin de définir une partition de processeur nommée cpu et redéployez le cluster, ou mettez à jour le nom de la partition dans vos scripts de job Pathways pour qu'il corresponde à la partition de processeur indiquée par sinfo.
Les nœuds TPU ne s'affichent pas
Vérifiez que la réservation se trouve dans la zone du cluster et qu'elle dispose de suffisamment de VM ct6e-standard-4t, et que staticNodeCount et acceleratorTopology correspondent.
Le service Pathways se ferme avec le code Invalid partition name specified
La variable PARTITION est incorrecte. Choisissez une partition TPU dans le résultat de sinfo.
Le service Pathways n'est pas prêt
Si le journal de service reste à Waiting for at least MIN_SLICES=..., cela signifie qu'un nombre insuffisant de segments sont en cours d'exécution. La colonne NODELIST(REASON) de la commande suivante indique la raison, par exemple l'absence de capacité disponible ou une valeur SLICE_SHAPE qui ne correspond pas au nœud TPU :
squeue -u ${USER} -n pw-slice
Le gestionnaire de ressources Pathways ou le serveur proxy IFRT ne démarre pas
Si le service échoue avec Timed out waiting for Pathways Resource Manager ou Timed out waiting for Pathways IFRT Proxy Server, un conteneur Pathways n'a pas démarré. Vérifiez rm.log et proxy.log dans le répertoire des journaux.
Le service Pathways s'arrête de manière inattendue
Si le service s'arrête avec The Pathways Resource Manager or IFRT proxy
exited, l'un d'eux a planté et le service a arrêté ses nœuds de calcul. Vérifiez rm.log et proxy.log dans le répertoire de journaux, puis redémarrez le service.
Un nœud TPU est bloqué dans un état incorrect
Pour récupérer le nœud, exécutez la commande suivante sur le nœud de connexion :
sudo scontrol update nodename=NODE \ state=power_down_force
Remplacez NODE par le nom du nœud, comme indiqué par sinfo.
MaxText ne trouve pas de service Pathways en cours d'exécution
Si MaxText échoue avec No running Pathways service after 60 minutes, cela signifie que le service n'est pas en cours d'exécution ou n'est pas encore prêt. Vérifiez le journal du service. Pour attendre plus longtemps, définissez SERVICE_WAIT_MINUTES lorsque vous envoyez run_maxtext.sh.
MaxText échoue avec RESOURCE_EXHAUSTED
Le modèle ne tient pas dans la mémoire du TPU. Utilisez des tranches 2x4 ou 4x4, ou définissez REDUCED_LAYERS=1.
Le job MaxText reste en attente
Le nœud CPU ne dispose pas des 8 processeurs et des 96 Go de mémoire demandés par run_maxtext.sh, en plus de ce qu'utilise le service Pathways. Pour résoudre ce problème, augmentez la capacité du processeur et de la mémoire (ou le nombre de nœuds) dans votre partition cpu, ou réduisez la requête de ressource dans run_maxtext.sh.
Impossible de se connecter au serveur proxy IFRT
Si le client cesse de répondre ou échoue avec UNAVAILABLE, il ne peut pas joindre le serveur proxy :
- Vérifiez que le journal du service affiche
READY. - Vérifiez que
JAX_BACKEND_TARGETcorrespond à l'adresse dans~/pathways/cluster.env. - Si vous utilisez le transfert de port, vérifiez que le tunnel SSH est toujours en cours d'exécution.
Si le client s'exécute sur une VM, vérifiez que celle-ci se trouve dans le sous-réseau du cluster. La commande suivante devrait aboutir :
nc -zv PROXY_IP 29000
Remplacez
PROXY_IPpar l'adresse IP du proxy IFRT du journal de service.
jax.devices() liste les appareils CPU au lieu des appareils TPU
Vous avez défini les variables d'environnement JAX_PLATFORMS et JAX_BACKEND_TARGET après avoir importé jax. Redémarrez le kernel du notebook et définissez les variables avant d'importer jax.
Erreurs survenant juste après la connexion au serveur proxy IFRT
La version jax ou pathwaysutils du client ne correspond pas à celle du serveur Pathways. Installez les versions dans ~/pathways/venv.
Un calcul échoue avec DATA_LOSS et PlacementDataLoss
Le calcul a utilisé un appareil sur une tranche qui n'est pas en cours d'exécution. Vérifiez que MIN_SLICES est égal à MAX_SLICES et que chaque tâche de nœud de calcul est en cours d'exécution :
squeue -u ${USER} -n pw-slice
Échec d'un calcul après une préemption Spot
Les calculs qui utilisent les appareils de la tranche préemptée échouent. Pour récupérer automatiquement après une préemption Spot, configurez la création de points de contrôle et le redimensionnement élastique des tranches, comme décrit dans Entraînement résilient avec Pathways.