Condividi tramite


Risolvere problemi

Questa pagina raccoglie alcuni dei problemi più frequenti riscontrati dagli utenti.

Durante il training del classificatore binario viene sempre visualizzato un classificationError pari a 0 anche dal primo minibatch

ClassificationError funziona solo correttamente per i problemi multiclasse. Per la classificazione binaria, usare questa ricetta semplice

Anche se il training del modello è stato eseguito con un set di dimensioni maggiori rispetto al set di valutazione, CNTK esaurisce la memoria durante la valutazione.

Il training del modello ha in genere una minibatchSize proprietà impostata nel relativo file di configurazione CNTK. Quando si valuta il modello usando CNTK.exe, assicurarsi che sia minibatchSize appropriato. Per determinare rapidamente se questa proprietà causa il problema, impostare la proprietà su un valore basso ( ad esempio minibatchSize=2) nel file di configurazione per il comando di valutazione. (cf. Problema 468)

Sto ottenendo SegFault in Linux con reti profonde (ad esempio ResNet152).

Le dimensioni dello stack potrebbero non essere sufficienti. BrainScript richiede un sacco di stack. Eseguire il comando: ulimit -s 65536. Verranno impostate le dimensioni dello stack su 64 MB.

Durante l'errore seguente viene visualizzato l'errore seguente: About to throw exception 'cuDNN failure 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0 ; hostname=haha; expr=err'

Impostare la proprietà minibatchSize su un valore più piccolo , ad esempio minibatchSize=2.

Quando si compila CNTK usando VS2013/VS2015, viene visualizzato un errore del compilatore, qual è l'errore?

È necessario aggiornare Visual Studio 2017. Vedere qui: Configurazione di CNTK in Windows

È stato abilitato il lettore di immagini con supporto zip e viene visualizzato l'errore "Plug-in non trovato: 'Cntk.Deserializers.Image-.dll' (nome precedente 'ImageReader.dll')" durante l'esecuzione di unit test del lettore di immagini o tentativo di usare il lettore. Cosa potrebbe essere sbagliato?

Verificare di aver installato correttamente zlib e libzip.

Ho appena scaricato e installato CNTK pacchetto binario e voglio eseguire un processo, ma ottenere errori strani, come le librerie CUDA mancanti.

Controllare attentamente ciò che si dispone in PATH. In particolare, se si tratta di un computer di sviluppo condiviso . Spesso ciò è causato da versioni precedenti (precedenti) di CNTK o componenti CNTK raggiungibili tramite il percorso configurato.

In Windows ho installato una nuova versione del driver NVIDIA e ora CNTK compilazione ha esito negativo con gli errori come ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory

È stata selezionata l'opzione Esegui un'installazione pulita nel programma di installazione del driver NVIDIA. Ciò comporta la rimozione di GPU Deployment Kit (GDK). Per ripristinare il sistema, seguire questa procedura:

  • Avviare il programma di installazione CUDA
  • Selezionare Installazione personalizzata (avanzata)
  • Deselezionare tutte le opzioni di installazione, ad eccezione di GPU Deployment Kit
  • Verrà selezionata automaticamente l'opzione Driver di grafica . È previsto. Lasciare selezionata
  • Procedere con l'installazione di CUDA
  • Dopo aver completato l'installazione di CUDA, avviare l'installazione della versione desiderata del driver grafico
  • Selezionare Installazione personalizzata (avanzata)
  • Assicurarsi che l'opzione Esegui un'installazione pulitanon sia selezionata e procedere con l'installazione

Il tempo di lettura iniziale richiede molto tempo o si riceve una delle eccezioni seguenti: "Chiamata del sistema operativo non riuscita o operazione non supportata nel sistema operativo" o "ECCEZIONE: errore CUSPARSE 1" o segfault con AllocationFailureHandler nello stack.

Uno dei motivi possibili è l'eccessiva pressione di memoria causata dal caricamento dell'intero set di dati in memoria con la finestra di casualizzazione predefinita (ad esempio illimitata). Provare a eseguire il carico di lavoro con un valore esplicito randomizationWindow , che limita la quantità di dati di input memorizzati nella cache in memoria. A tale scopo, aggiungere i parametri seguenti alla sezione di configurazione (usando 10000 come esempio, è possibile scegliere qualsiasi valore adatto alla reader memoria e garantire una buona casualizzazione):

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

Si verificano errori quando si usa la libreria C# Eval Cntk.Eval.Wrapper.dll (nome precedente EvalWrapper.dll) nell'app Web di Azure, ad esempio: "Impossibile caricare file o assembly "alcune DLL CNTK" o un'eccezione System.Runtime.InteropServices.SEHException o "InternalServiceFault: Il componente esterno ha generato un'eccezione".

Assicurarsi prima di tutto che tutte le DLL di dipendenza CNTK vengano distribuite nell'app Web di Azure. È quindi necessario impostare l'app Web di Azure per usare la macchina virtuale a 64 bit. Per consentire all'app Web di Azure di caricare CNTK DLL non gestite, è necessario modificare la variabile PATH aggiungendo il codice seguente nel Application_Start() metodo in global.asax:

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

Per informazioni dettagliate, vedere la pagina "Valutare un modello in un'api Web di Azure".

È possibile compilare l'applicazione usando Cntk.Eval-.lib/dll, ma si è ottenuta un'eccezione simile a quella seguente durante l'esecuzione

Eccezione non gestita di tipo 'Microsoft.MSR. CNTK. Extensibility.Managed.CNTKRuntimeException' si è verificato in Cntk.Wrapper-.dll

Informazioni aggiuntive: configparameters: parametro obbligatorio mancante: unknown:modelPath

Le possibili cause sono:

  • Configurazione di compilazione diversa (versione o debug) tra l'applicazione e .Cntk.Eval-<VERSION>.lib/dll Se si compila l'applicazione in versione definitiva, collegarsi alla versione di rilascio di Cntk.Eval-<VERSION>.dll. Uguale per la configurazione di debug. Questo errore si verifica in genere per l'applicazione C++.
  • Versioni del compilatore GCC diverse in Linux: la Cntk.Eval libreria in Linux è compilata con GCC 5.4. Se si usa una versione di GCC diversa per l'applicazione, è possibile che venga visualizzato l'errore precedente
  • ModelPath non è corretto. Attualmente, modelPath deve essere specificato come percorso completo. Nell'esempio CSEvalClient il percorso relativo viene combinato con la directory di lavoro corrente per compilare il percorso completo. E createNetwork() deve essere passata una stringa contenente l'attributo "modelPath=" che specifica il percorso del file del modello. Attualmente, l'unità mappata non è supportata per modelpath.

Si ottiene il risultato seguente con CNTKTextFormat-Reader -- AVVISO: Esaurito tutto l'input previsto per la sequenza corrente durante la lettura di un valore a virgola mobile in corrispondenza dell'offset

Il lettore CTF richiede che ogni riga ben formata debba terminare con un \n "Avanzamento riga" o "Ritorno a capo, Avanzamento riga" \r\n simboli (inclusa l'ultima riga del file).