Pour l’erreur de double précision MPS dans PyTorch 2.15, gardez sur CPU tout calcul qui exige réellement float64 ; ne convertissez pas vos données en float32 sans validation scientifique. Si votre protocole tolère la précision simple, vous pouvez essayer MPS, puis comparer ses résultats à une référence CPU avant de l’adopter.
Cette recommandation concerne les étudiantes et étudiants qui rencontrent une erreur double ou float64, les scientifiques qui évaluent un modèle sur MPS et les responsables d’équipe qui doivent documenter un environnement Apple Silicon. Elle ne remplace ni les critères scientifiques du projet ni les règles d’accès de votre établissement.
Dernière mise à jour : 11 novembre 2026. Version et limites vérifiées à partir des notes de publication de PyTorch 2.15, de la documentation MPS de PyTorch 2.15 et de la documentation sur la précision numérique.
Erreur de double précision MPS ou problème d’installation
Le premier diagnostic dépend du type du tenseur et du périphérique visé, pas seulement du fait que le calcul échoue sur un Mac. PyTorch 2.15, annoncé le 28 octobre 2026, apporte des mises à jour à MPS, mais cette annonce ne signifie pas que le type float64 est devenu pris en charge. La documentation du moteur MPS indique que float64 et complex128 ne sont pas pris en charge ; lorsqu’un calcul nécessite une double précision, il doit être exécuté sur CPU. Consultez les notes officielles de PyTorch 2.15 et la documentation de son moteur MPS avant de modifier votre installation.
Repérez les indices dans la trace d’erreur et dans le code qui prépare les données. Des mentions de float64, double, d’un type non pris en charge ou d’un transfert vers MPS orientent vers une incompatibilité de type. À l’inverse, si le moteur MPS n’est pas construit ou n’est pas disponible, vous avez plutôt un problème de disponibilité. Les deux cas peuvent se produire sur un même poste, mais ils ne se corrigent pas de la même façon.
La vérification officielle distingue ces états avec torch.backends.mps.is_built() et torch.backends.mps.is_available(). Le premier indique si PyTorch a été compilé avec le soutien de MPS ; le second indique si MPS est disponible dans l’environnement actif. Un contrôle positif de disponibilité ne certifie cependant pas que tous les types, opérateurs et chemins de calcul utilisés par votre modèle fonctionnent sur MPS. Les vérifications et leurs conditions sont décrites dans la documentation MPS de PyTorch.
| Option | Situation adaptée | Point de vigilance | Décision |
|---|---|---|---|
CPU avec float64 |
L’analyse exige la double précision ou doit reproduire une référence existante. | Vérifiez que paramètres, données et calculs intermédiaires restent sur CPU. | À privilégier si le protocole impose float64. |
MPS avec float32 |
La précision simple est acceptable selon les critères scientifiques du projet. | Le type seul ne garantit pas que chaque opérateur du modèle fonctionne sur MPS. | À tester, puis à valider contre une référence CPU. |
MPS avec float64 |
Le code demande la double précision sur ce périphérique. | Ce type n’est pas pris en charge par le moteur MPS documenté. | Ne pas en faire une voie d’exécution. |
| CPU et MPS répartis | Certaines parties du calcul ont des exigences numériques distinctes. | Les transferts peuvent être coûteux ou compliquer le suivi des périphériques. | À utiliser uniquement avec un découpage explicite et vérifié. |
Pourquoi PyTorch MPS ne prend-il pas en charge float64 ? La réponse pratique tient à la prise en charge des types par ce moteur : la documentation MPS de PyTorch exclut float64 et complex128. Il ne faut donc pas interpréter ce refus comme la preuve d’un défaut d’installation ni comme un réglage que l’on peut corriger en changeant une variable d’environnement. La documentation des variables d’environnement MPS décrit des options de configuration et de diagnostic, mais ne transforme pas un type non pris en charge en type pris en charge.
Disponibilité du périphérique ou type incompatible
Un problème de disponibilité apparaît avant même que le calcul demandé ne puisse utiliser le moteur. Un type incompatible survient plus tard : MPS est reconnu, mais le tenseur ou une opération réclame une capacité absente. Pour éviter de confondre ces deux causes, séparez vos contrôles et conservez leur résultat dans les notes de test.
Commencez par interroger l’environnement actif :
import torch
print(torch.backends.mps.is_built())
print(torch.backends.mps.is_available())
Si la construction ou la disponibilité échoue, vérifiez l’installation de PyTorch, la version de macOS et le matériel pris en charge en vous référant à la documentation officielle, plutôt que de conclure à partir de la seule trace float64. Si ces contrôles réussissent, reproduisez ensuite le calcul qui échoue avec son type d’origine et le périphérique qu’il utilise. Cela vous permettra de distinguer un défaut général de disponibilité d’une limite de type ou d’opérateur.
Les messages d’erreur ne suffisent pas toujours à localiser l’origine du type. Celui-ci peut être créé explicitement, provenir des données chargées ou être introduit par une conversion effectuée plus tôt. Pour le retrouver, examinez les types des entrées, des paramètres du modèle et des résultats intermédiaires juste avant le transfert vers MPS. La méthode .to() permet de déplacer ou de convertir un tenseur ; son comportement et ses arguments sont précisés dans la documentation officielle de Tensor.to(). Une conversion de périphérique ne constitue pas à elle seule une validation de compatibilité du calcul complet.
Calculs conservés en double précision sur CPU
Quand la méthode scientifique exige float64, la solution n’est pas de convertir silencieusement le modèle ou ses données en float32. Gardez sur CPU les étapes qui dépendent de cette précision, puis vérifiez explicitement où se trouvent les paramètres et les intermédiaires. Cela concerne notamment les réductions, les opérations sensibles aux erreurs d’arrondi et les calculs dont la stabilité conditionne l’interprétation des résultats.
Dans un projet mixte, il faut établir une frontière claire entre les étapes CPU et MPS. Par exemple, vous pouvez conserver une étape de calcul de référence en float64 sur CPU, puis transmettre à MPS uniquement les données déjà préparées pour une partie du modèle validée en précision simple. Ce découpage n’est pertinent que si les conversions et les résultats intermédiaires restent compatibles avec votre protocole. Les retours vers CPU ne doivent pas être laissés à des conversions implicites difficiles à repérer.
Pour traiter une erreur double dans PyTorch 2.15, préparez une reproduction minimale à partir du passage réellement fautif :
- Reprenez les mêmes données d’entrée et les mêmes paramètres que ceux du cas qui échoue.
- Vérifiez le type de chaque tenseur concerné, y compris les paramètres du modèle et les résultats intermédiaires.
- Enregistrez les résultats de
is_built()etis_available()pour l’environnement qui exécute le script. - Reproduisez l’opération fautive sur CPU avec le type
float64attendu. - Testez sur MPS uniquement une variante dont le type et les opérateurs sont compatibles avec le moteur.
- Comparez les sorties selon les critères définis par votre projet avant de conserver l’une des voies.
Ces étapes isolent la cause sans transformer un problème de précision en problème d’installation. Elles permettent aussi à un collègue de reproduire le diagnostic, ce qui est particulièrement utile lorsqu’un script passe d’un ordinateur personnel à un poste de laboratoire ou à une machine distante.
À retenir : réussir à déplacer un tenseur sur MPS ne prouve pas que l’ensemble du modèle s’exécutera sur MPS. Les opérateurs utilisés et leurs types doivent être vérifiés dans le parcours réel du calcul, y compris dans les branches rarement exécutées.
Voie float32 sur MPS et validation scientifique
Si votre question est de savoir comment rendre un modèle float32 fiable, commencez par fixer les critères d’acceptation avant de comparer les périphériques. La conversion de float64 vers float32 modifie la précision représentable ; elle ne doit donc pas être traitée comme une simple réparation technique. La documentation PyTorch sur la précision numérique rappelle que les résultats peuvent dépendre des opérations effectuées et des choix numériques. Elle ne fournit pas de seuil universel qui conviendrait à chaque expérience.
Pour établir un essai utile, partez d’une entrée contrôlée et exécutez le calcul de référence sur CPU. Faites ensuite passer la variante en précision simple sur MPS, en vérifiant que les opérateurs requis sont effectivement exécutés sans erreur. Comparez les valeurs obtenues, mais aussi les éléments qui déterminent la conclusion de l’étude : statistiques principales, classement, convergence, décision de détection ou résultat aval. Un écart numériquement faible peut être important pour une décision scientifique ; un écart plus visible peut parfois ne rien changer à l’interprétation. C’est votre question de recherche qui doit trancher.
La validation doit porter sur les données qui représentent réellement le domaine d’utilisation, et pas seulement sur une entrée artificiellement simple. Consignez les conditions d’exécution, la version de PyTorch, le type demandé, le périphérique utilisé, les éventuelles conversions et les critères d’acceptation. Si les valeurs produites comportent des infinis ou des valeurs non numériques, torch.isfinite() permet de repérer les éléments qui ne sont ni finis ni numériques ; son fonctionnement est documenté dans la référence officielle de torch.isfinite(). Ce contrôle complète la comparaison, mais ne prouve pas que les résultats sont scientifiquement acceptables.
| Contrôle de validation | Comparaison à effectuer | Critère à définir par votre équipe |
|---|---|---|
| Entrées et conditions | Même entrée, mêmes paramètres et même prétraitement sur CPU et MPS. | Conditions à maintenir identiques pour rendre l’essai interprétable. |
| Types et périphériques | Types des données, des paramètres et des sorties intermédiaires. | Types autorisés à chaque étape du protocole. |
| Résultats numériques | Sorties de référence CPU et sorties MPS en précision simple. | Tolérance justifiée par l’usage, les données et la méthode. |
| Résultat scientifique | Statistiques et conclusion aval produites par chaque voie. | Règle d’acceptation établie avant de retenir MPS. |
| Valeurs invalides | Présence éventuelle de valeurs non finies dans les sorties. | Traitement prévu dans le protocole si ces valeurs apparaissent. |
Ne choisissez pas une tolérance générique copiée d’un exemple trouvé en ligne. Faites-la découler de la méthode, des données et des conséquences d’une variation sur l’interprétation. Si votre équipe n’a pas encore défini de règle, gardez le calcul concerné sur CPU en double précision le temps d’établir et de documenter un critère d’acceptation.
Opérateurs pris en charge ou parcours GPU supposé
Un contrôle MPS positif ne signifie pas que votre modèle utilise le GPU pendant tout son parcours. Certaines opérations peuvent ne pas être prises en charge par MPS, certaines parties peuvent rester sur CPU et les transferts entre périphériques peuvent modifier le comportement ou le temps d’exécution. La disponibilité du moteur est donc un contrôle initial, pas un certificat de compatibilité pour votre application.
Vérifiez les opérations présentes dans le parcours réellement utilisé, y compris les branches propres à vos données, les étapes de prétraitement et les calculs postérieurs au modèle. Les nouveautés de PyTorch 2.15 annoncées pour Apple Silicon doivent être rapprochées de votre cas d’usage : une amélioration publiée ne garantit pas que chaque modèle, chaque opérateur ou chaque type bénéficie de la même prise en charge. Revenez aux notes de version de PyTorch 2.15 et à la documentation MPS pour les capacités effectivement documentées.
Un contrôle MPS positif signifie-t-il que le modèle utilise entièrement le GPU ? Non. Il confirme que le moteur est disponible dans l’environnement, pas que tous les opérateurs du modèle, avec les types employés, s’exécutent sur MPS. Vérifiez le parcours complet et surveillez les changements de périphérique avant de conclure que le calcul est intégralement réalisé sur GPU.
Quelles étapes doivent rester en double précision sur CPU ? Gardez-y celles dont la précision est explicitement requise par votre méthode, celles pour lesquelles la comparaison de référence révèle une différence qui change l’interprétation, ou celles qui dépendent d’opérations incompatibles avec MPS. La décision doit venir du protocole et des résultats observés, pas d’une règle générale selon laquelle tout le modèle devrait être déplacé sur GPU ou, à l’inverse, rester sur CPU.
Une situation fréquente en laboratoire illustre bien cette distinction : un script de traitement audio peut charger les données et préparer des caractéristiques avant d’exécuter un modèle, puis calculer des statistiques utilisées dans l’analyse. Le fait que le modèle passe sur MPS ne valide pas automatiquement ces autres étapes, ni les résultats qui servent à tirer une conclusion. Pour un travail de conception ou de traitement vidéo, le même raisonnement s’applique à la chaîne complète : le traitement accéléré n’est utile que si les sorties restent conformes aux critères établis.
Pour éviter les conclusions trop larges, notez séparément ce que vous avez vérifié : disponibilité de MPS, prise en charge des types nécessaires, exécution de chaque étape ciblée et conformité des résultats. Cette séparation aide également à comprendre si un changement ultérieur vient d’une mise à jour du projet, de PyTorch ou de l’environnement.
Environnement Mac de validation et décision de location
Si votre laboratoire ne dispose pas d’un Mac à puce Apple, vous pouvez envisager un environnement macOS distant lorsque le but est de reproduire un parcours MPS réel. Avant de vous engager, vérifiez le système et la puce effectivement disponibles ainsi que la méthode d’accès. Un environnement distant sert à valider un chemin d’exécution macOS ; il ne remplace ni la comparaison CPU/MPS, ni l’approbation de votre établissement, ni la vérification de la précision scientifique.
La location présente un intérêt lorsque vous avez besoin d’une machine Mac pour un essai, une validation de compatibilité ou un travail temporaire, sans acheter un appareil dédié. Elle ne conviendra pas forcément à un usage durable et intensif, à une expérience nécessitant des périphériques physiques particuliers ou à des données que votre établissement n’autorise pas à traiter dans un environnement externe. L’accès distant implique aussi de tenir compte de la latence, des droits d’accès et des règles de transfert des données.
| Choix | Atouts pour un projet de recherche | Limites à vérifier |
|---|---|---|
| Poste Linux ou Windows existant | Reste dans l’environnement déjà administré par votre laboratoire. | Ne permet pas, à lui seul, de confirmer l’exécution sur un Mac réel avec MPS. |
| Achat d’un Mac | Offre un accès local et durable au matériel. | Demande un budget d’achat et la gestion d’un équipement dédié. |
| Mac distant loué | Peut donner accès à un environnement macOS réel pour une validation ciblée. | Dépend des caractéristiques réellement fournies, de l’accès réseau et des règles institutionnelles. |
| CPU sur votre poste actuel | Permet de conserver une voie de référence en double précision. | Ne valide pas le comportement des opérateurs sur MPS. |
Avant toute location, demandez à confirmer la version du système, la puce et le mode d’accès proposés pour l’environnement concerné. Vous pouvez consulter les environnements Mac distants disponibles et comparer les éléments à vérifier dans la présentation des options, sans supposer qu’une configuration particulière est disponible tant qu’elle n’a pas été confirmée. Gardez aussi une trace des données utilisées, de leur sensibilité et des règles de votre établissement concernant leur traitement hors du laboratoire.
En pratique, conserver uniquement un poste Linux ou Windows laisse sans réponse la question de la compatibilité réelle avec MPS ; convertir tout le calcul en précision simple sans mesure compromet la justification numérique ; acheter un Mac pour une validation ponctuelle peut immobiliser un budget et demander une gestion matérielle supplémentaire. Si vous avez besoin d’un Mac à puce Apple pour vérifier un parcours macOS sans en acheter un, VpsHold peut être une option à examiner après confirmation du système, de la puce et de l’accès. Pour une expérience sensible ou un calcul exigeant durablement float64, gardez toutefois votre voie CPU de référence et les validations scientifiques au centre de la décision.
Pour aller plus loin
Testez vos calculs sur un Mac dédié avec VpsHold
Louez un Mac mini physique dédié pour examiner vos workflows MPS et conserver sur le processeur les calculs qui nécessitent une double précision.
