Modifier

Questions fréquentes (FAQ)

Cette page contient des réponses aux questions les plus courantes de la communauté.

Comment savoir si le modèle ONNX dont je dispose s’exécute avec Windows ML ?

Le moyen le plus simple de vérifier si votre modèle s’exécute avec Windows ML est d’utiliser l’outil WinML Model Runner. Vous pouvez également vérifier les versions d’ONNX et les builds Windows pour plus d’informations sur toutes les versions d’ONNX prises en charge pour une version de Windows donnée.

Comment convertir un modèle d’un autre format au format ONNX ?

Vous pouvez utiliser WinMLTools pour convertir des modèles de différents formats, comme Apple CoreML et scikit-learn, au format ONNX.

Quand je tente d’exporter et/ou de convertir mon modèle au format ONNX, je reçois des erreurs indiquant qu’il contient des « opérateurs non pris en charge ». Que dois-je faire ?

Il est possible que certains opérateurs du framework d’entraînement natif ne soient pas pris en charge par une version d’ONNX. Tout d’abord, nous vous recommandons de vérifier les versions d’ONNX prises en charge pour votre build Windows cible et d’essayer de convertir votre modèle dans la version maximale prise en charge. Les versions ultérieures d’ONNX incluent la prise en charge d’un plus grand ensemble d’opérateurs par rapport aux versions précédentes.

Si les problèmes persistent, nous vous recommandons de collaborer avec votre équipe de science des données pour essayer d’éviter les opérateurs non pris en charge. L’une des approches recommandées consiste à changer l’architecture du modèle dans le framework source et à tenter de convertir/d’exporter le modèle vers la version d’ONNX cible. Notez que vous n’avez cependant pas besoin de réentraîner le modèle : vous pouvez essayer de convertir l’architecture et, en cas de réussite, vous pouvez passer au réentraînement complet de votre modèle.

Pourquoi je n’arrive pas à charger un modèle ?

Plusieurs raisons peuvent expliquer pourquoi vous pouvez rencontrer des problèmes lors du chargement d’un modèle, mais les restrictions d’accès aux fichiers constituent l’une des raisons les plus courantes lors d’un développement sur UWP. Par défaut, les applications UWP peuvent uniquement accéder à certaines parties du système de fichiers et nécessitent une autorisation utilisateur ou des fonctionnalités supplémentaires pour accéder à d’autres emplacements. Pour plus d’informations, consultez Autorisations d’accès aux fichiers.

Quelle version de WinMLTools utiliser ?

Nous vous recommandons toujours de télécharger et d’installer la dernière version du package winmltools. Cela vous permet de créer des modèles ONNX qui ciblent les versions les plus récentes de Windows.

Puis-je utiliser onnxmltools au lieu de winmltools ?

Oui, c’est possible, mais vous devez veiller à installer la version appropriée d’onnxmltools pour cibler ONNX v 1.2.2, qui est la version minimale d’ONNX prise en charge par Windows ML. Si vous n’êtes pas sûr de la version à installer, nous vous recommandons de plutôt installer la dernière version de winmltools. Cela vous permet d’être sûr de pouvoir cibler la version d’ONNX prise en charge par Windows.

Quelle version de Visual Studio utiliser pour obtenir la génération de code automatique (mlgen) ?

La version minimale recommandée de Visual Studio avec prise en charge de mlgen est la version 15.8.7. Dans Windows 10, version 1903 et versions ultérieures, mlgen n’est plus inclus dans le SDK. Vous devez donc télécharger et installer l’extension. Il en existe une pour Visual Studio 2017 et une pour Visual Studio 2019.

Un message d’erreur s’affiche lors d’une tentative d’exécution de mlgen et aucun code n’est généré. Quelle peut en être la cause ?

Les deux erreurs les plus courantes lors d’une tentative d’exécution de mlgen sont les suivantes :

  • L’attribut obligatoire 'consumed_inputs' est manquant : Si vous rencontrez ce message d’erreur, vous essayez très probablement d’exécuter un modèle ONNX version 1.2 avec une version du SDK Windows 10 antérieure à la version 17763. Nous vous recommandons de vérifier la version du SDK et de la mettre à jour vers la version 17763 ou une version ultérieure.
  • Erreur de type : Le type (map(string,tensor(float))) de l’argument de sortie (loss) du nœud (ZipMap) ne correspond pas au type attendu... : Si vous rencontrez cette erreur, il est très probable que votre modèle ONNX est d’une version antérieure à celle acceptée par WinML à compter de la build 17763. Nous vous recommandons de mettre à jour votre package de convertisseur vers la dernière version disponible et de reconvertir votre modèle dans la version 1.2 d’ONNX.

Sur quel appareil WinML s’exécute par défaut ?

Si vous ne spécifiez pas d’appareil sur lequel il doit s’exécuter avec LearningModelDeviceKind, ou si vous utilisez LearningModelDeviceKind.Default, le système détermine quel appareil évaluera le modèle. Il s’agit généralement du processeur. Pour que WinML s’exécute sur le processeur graphique (GPU), spécifiez l’une des valeurs suivantes lors de la création du LearningModelDevice :

  • LearningModelDeviceKind.DirectX
  • LearningModelDeviceKind.DirectXHighPerformance
  • LearningModelDeviceKind.DirectXMinPower

Notes

Utilisez les ressources suivantes pour obtenir de l’aide sur Windows ML :

  • Pour poser des questions techniques ou apporter des réponses à des questions techniques sur Windows ML, veuillez utiliser le mot clé windows-machine-learning sur Stack Overflow.
  • Pour signaler un bogue, veuillez signaler un problème dans notre plateforme GitHub.