Partager via


Dépanner

Cette page collecte certains des pièges les plus fréquents rencontrés par les utilisateurs.

Pendant l’entraînement de mon classifieur binaire, je vois toujours une ClassificationError de 0 même à partir du premier minibatch

ClassificationError fonctionne uniquement correctement pour les problèmes multiclasses. Pour la classification binaire, utilisez cette recette simple

Bien que le modèle ait été entraîné avec un ensemble plus grand que le jeu d’évaluation, CNTK manque de mémoire pendant l’évaluation.

L’entraînement du modèle a généralement une minibatchSize propriété définie dans son fichier de configuration CNTK. Lors de l’évaluation du modèle à l’aide de CNTK.exe, vérifiez que le minibatchSize modèle est approprié. Pour déterminer rapidement si cette propriété provoque le problème, définissez la propriété sur une valeur faible (par exemple minibatchSize=2) dans le fichier de configuration de la commande d’évaluation. (cf. Problème n° 468)

Je reçois SegFault sur Linux avec des réseaux profonds (comme ResNet152).

Vous n’avez peut-être pas suffisamment de taille de pile. BrainScript nécessite beaucoup de pile. Exécutez la commande : ulimit -s 65536. Cette opération définit la taille de votre pile sur 64 Mo.

Pendant l’évaluation, l’erreur suivante s’affiche : Sur le point de lever l’exception ' échec cuDNN 8 : CUDNN_STATUS_EXECUTION_FAILED ; GPU=0 ; hostname=haha; expr=err'

Définissez la propriété minibatchSize sur une valeur plus petite (par exemple minibatchSize=2).

Quand je compile CNTK à l’aide de VS2013/VS2015, je vois une erreur du compilateur, qu’est-ce qui ne fonctionne pas ?

Vous devez mettre à niveau Visual Studio 2017. Voir ici : Configuration de CNTK sur Windows

J’ai activé le lecteur d’images avec prise en charge zip et obtenir l’erreur « Plug-in introuvable : « Cntk.Deserializers.Image-.dll » (ancien nom « ImageReader.dll ») lors de l’exécution de tests unitaires lecteur d’images ou en essayant d’utiliser le lecteur. Qu’est-ce qui pourrait être incorrect ?

Vérifiez que vous avez correctement installé zlib et libzip.

J’ai juste téléchargé et installé CNTK package binaire et je veux exécuter un travail, mais obtenir des erreurs bizarres, comme des bibliothèques CUDA manquantes.

Vérifiez attentivement ce que vous avez dans votre PATH. En particulier, s’il s’agit d’un ordinateur de développement partagé . Cela est souvent dû à des versions antérieures de CNTK ou de composants CNTK accessibles via le chemin d’accès configuré.

Sur Windows j’ai installé une nouvelle version du pilote NVIDIA et maintenant CNTK build échoue avec les erreurs telles que ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory

Vous avez sélectionné Effectuer une option d’installation propre dans le programme d’installation du pilote NVIDIA. Cela entraîne la suppression du Kit de déploiement GPU (GDK). Pour réparer le système, procédez comme suit :

  • Lancer le programme d’installation CUDA
  • Sélectionner l’installation personnalisée (avancée)
  • Désélectionner toutes les options d’installation, à l’exception du Kit de déploiement GPU
  • Cette option sélectionne automatiquement l’option Graphics Driver . Elle est attendue. Laissez-le sélectionné
  • Poursuivre l’installation de CUDA
  • Après la réussite de l’installation de CUDA, lancez l’installation de la version de Graphics Driver souhaitée.
  • Sélectionner l’installation personnalisée (avancée)
  • Vérifiez que l’option Effectuer une nouvelle installationn’est PAS sélectionnée et passez à l’installation.

Le temps de lecture initial prend beaucoup de temps ou je reçois l’une des exceptions suivantes : « Échec ou opération d’appel de système d’exploitation non pris en charge sur ce système d’exploitation » ou « EXCEPTION s’est produite : ÉCHEC CUSPARSE 1 » ou segfault avec AllocationFailureHandler dans la pile.

L’une des raisons possibles ici est la sollicitation excessive de la mémoire causée par le chargement de l’ensemble du jeu de données en mémoire avec la fenêtre de randomisation par défaut (c’est-à-dire illimitée). Essayez d’exécuter votre charge de travail avec une valeur explicite randomizationWindow , ce qui limite la quantité de données d’entrée mises en cache en mémoire. Pour ce faire, ajoutez les paramètres suivants à votre reader section de configuration (à l’aide 10000 d’un exemple, vous pouvez choisir n’importe quelle valeur qui s’adapte à la mémoire et garantit une bonne randomisation) :

   randomize=true
   randomizationWindow=10000 #(assuming that 10K samples << total available memory)

J’obtiens des erreurs lors de l’utilisation de la bibliothèque C# Eval Cntk.Eval.Wrapper.dll (ancien nom EvalWrapper.dll) dans l’application web Azure comme suit : « Impossible de charger le fichier ou l’assembly « some CNTK DLLs » ou d’une exception System.Runtime.InteropServices.SEHException, ou « InternalServiceFault : Le composant externe a levée une exception ».

Tout d’abord, vérifiez que toutes les DLL de dépendance CNTK sont déployées sur l’application web Azure. Vous devez ensuite définir votre application web Azure pour utiliser une machine virtuelle 64 bits. Pour permettre à l’application web Azure de charger CNTK DLL non managées, vous devez modifier la variable PATH en ajoutant le code suivant dans la Application_Start() méthode dans global.asax:

    string pathValue = Environment.GetEnvironmentVariable("PATH");
    string domainBaseDir = AppDomain.CurrentDomain.BaseDirectory;
    string cntkPath = domainBaseDir + @"bin\";
    pathValue += ";" + cntkPath;
    Environment.SetEnvironmentVariable("PATH", pathValue);

Pour obtenir des instructions détaillées, consultez la page « Évaluer un modèle dans une api web Azure ».

Je peux générer mon application à l’aide de Cntk.Eval-.lib/dll, mais j’ai obtenu une exception similaire à celle ci-dessous lors de l’exécution

Exception non gérée de type « Microsoft.MSR ». CNTK. Extensibility.Managed.CNTKRuntimeException' s’est produite dans Cntk.Wrapper-.dll

Informations supplémentaires : configparameters : paramètre requis manquant : unknown:modelPath

Les raisons possibles sont :

  • Configuration de build différente (mise en production ou débogage) entre votre application et le Cntk.Eval-<VERSION>.lib/dll. Si vous générez votre application en version, veuillez établir un lien avec la version release de Cntk.Eval-<VERSION>.dll. Identique pour la configuration de débogage. Cette erreur se produit généralement pour l’application C++.
  • Différentes versions du compilateur Cloud de la communauté du secteur public sur Linux : la Cntk.Eval bibliothèque sur Linux est générée avec Cloud de la communauté du secteur public 5.4. Si vous utilisez une autre version Cloud de la communauté du secteur public pour votre application, vous pouvez voir l’erreur ci-dessus
  • ModelPath est incorrect. Actuellement, modelPath doit être spécifié en tant que chemin d’accès complet. Dans l’exemple CSEvalClient, le chemin relatif est combiné avec le répertoire de travail actuel pour générer le chemin d’accès complet. Et createNetwork() doit être passé à une chaîne contenant l’attribut « modelPath= » spécifiant le chemin d’accès du fichier du modèle. Actuellement, le lecteur mappé n’est pas pris en charge pour modelpath.

J’obtiens le résultat suivant avec CNTKTextFormat-Reader -- AVERTISSEMENT : épuisé toutes les entrées attendues pour la séquence actuelle lors de la lecture d’une valeur à virgule flottante au décalage

Le lecteur CTF exige que chaque ligne bien formée se termine par un « saut de ligne » \n ou « Retour chariot, saut de ligne » \r\n symboles (y compris la dernière ligne du fichier).