Compartir a través de


Solución de problemas

En esta página se recopilan algunos de los problemas más frecuentes que encuentran los usuarios.

Durante el entrenamiento de mi clasificador binario siempre veo un Valor classificationError de 0 incluso desde el primer minibatch

ClassificationError solo funciona correctamente para problemas de varias clases. Para la clasificación binaria, use esta receta sencilla.

Aunque el modelo se entrenó con un conjunto mayor que el conjunto de evaluación, CNTK se queda sin memoria durante la evaluación.

El entrenamiento del modelo normalmente tiene una minibatchSize propiedad establecida en su archivo de configuración de CNTK. Al evaluar el modelo mediante CNTK.exe, asegúrese de que minibatchSize sea adecuado. Para determinar rápidamente si esta propiedad está causando el problema, establezca la propiedad en un valor bajo (por ejemplo minibatchSize=2, ) en el archivo de configuración del comando de evaluación. (cf. Problema n.º 468)

Obtengo SegFault en Linux con redes profundas (como ResNet152).

Es posible que no tenga suficiente tamaño de pila. BrainScript requiere una gran cantidad de pila. Ejecute el comando: ulimit -s 65536. Esto establecerá el tamaño de la pila en 64 MB.

Durante eval se ve el siguiente error: Acerca de la excepción "error cuDNN 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0 ; hostname=haha; expr=err'

Establezca la propiedad minibatchSize en un valor más pequeño (por ejemplo, minibatchSize=2).

Al compilar CNTK con VS2013/VS2015, veo un error del compilador, ¿qué ocurre?

Debe actualizar Visual Studio 2017. Consulte aquí: Configuración de CNTK en Windows

He habilitado lector de imágenes con compatibilidad con zip y obtengo el error "Complemento no encontrado: 'Cntk.Deserializers.Image-.dll' (nombre antiguo 'ImageReader.dll')" al ejecutar pruebas unitarias del Lector de imágenes o intentar usar el lector. ¿Qué podría estar mal?

Compruebe que ha instalado correctamente zlib y libzip.

Acabo de descargar e instalar CNTK paquete binario y quiero ejecutar un trabajo, pero obtengo errores extraños, como las bibliotecas CUDA que faltan.

Por favor, compruebe cuidadosamente lo que tiene en su PATH. Especialmente, si es una máquina de desarrollo compartida . A menudo esto se debe a versiones anteriores (anteriores) de CNTK o CNTK componentes accesibles a través de la ruta de acceso configurada.

En Windows he instalado una nueva versión del controlador NVIDIA y ahora CNTK se produce un error en la compilación con los errores como ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory

Ha seleccionado Realizar una opción de instalación limpia en el Instalador de controladores de NVIDIA. Esto da como resultado la eliminación del Kit de implementación de GPU (GDK). Para reparar el sistema, realice los pasos siguientes:

  • Iniciar el instalador de CUDA
  • Seleccione Instalación personalizada (avanzada)
  • Anule la selección de todas las opciones de instalación, excepto el Kit de implementación de GPU.
  • Esto seleccionará automáticamente la opción Controlador de gráficos : se espera. Déjelo seleccionado.
  • Continuar con la instalación de CUDA
  • Después de que la instalación de CUDA se haya realizado correctamente, inicie la instalación de la versión deseada del controlador de gráficos.
  • Seleccione Instalación personalizada (avanzada)
  • Asegúrese de que la opción Realizar una instalación limpiano está seleccionada y continúe con la instalación.

El tiempo de lectura inicial tarda mucho tiempo o obtengo una de las siguientes excepciones: "Error de llamada del sistema operativo o no se admite en este sistema operativo" o "Excepción: error CUSPARSE 1" o segfault con AllocationFailureHandler en la pila.

Una posible razón aquí es la presión excesiva de memoria causada por cargar todo el conjunto de datos en memoria con la ventana de selección aleatoria predeterminada (es decir, ilimitada). Intente ejecutar la carga de trabajo con un valor explícito randomizationWindow , lo que limitará la cantidad de datos de entrada almacenados en caché en memoria. Para ello, agregue los parámetros siguientes a la reader sección de configuración (por 10000 ejemplo, puede elegir cualquier valor que se ajuste a la memoria y garantiza una buena selección aleatoria):

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

Obtengo errores al usar la biblioteca de C# de Eval Cntk.Eval.Wrapper.dll (nombre antiguo EvalWrapper.dll) en la aplicación web de Azure como la siguiente: "No se pudo cargar el archivo o ensamblado "algunos archivos DLL de CNTK" o una excepción System.Runtime.InteropServices.SEHException o "InternalServiceFault: El componente externo ha producido una excepción".

En primer lugar, asegúrese de que todos los archivos DLL de dependencia CNTK se implementan en la aplicación web de Azure. A continuación, debe establecer la aplicación web de Azure para que use una máquina virtual de 64 bits. Para permitir que la aplicación web de Azure cargue CNTK archivos DLL no administrados, debe cambiar la variable PATH agregando el código siguiente en el Application_Start() método en global.asax:

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

Consulte la página "Evaluar un modelo en una instancia de Azure WebApi" para ver los pasos detallados.

Puedo compilar mi aplicación con Cntk.Eval-.lib/dll, pero tengo una excepción similar a la siguiente mientras se ejecuta

Excepción no controlada del tipo "Microsoft.MSR". CNTK. Se produjo extensibility.Managed.CNTKRuntimeException en Cntk.Wrapper-.dll

Información adicional: configparameters: falta el parámetro necesario: unknown:modelPath

Los posibles motivos son:

  • Configuración de compilación diferente (versión o depuración) entre la aplicación y .Cntk.Eval-<VERSION>.lib/dll Si compila la aplicación en versión, vincule con la versión de lanzamiento de Cntk.Eval-<VERSION>.dll. Igual para la configuración de depuración. Este error se produce normalmente para la aplicación de C++.
  • Diferentes versiones del compilador de GCC en Linux: la Cntk.Eval biblioteca en Linux se compila con GCC 5.4. Si usa una versión de GCC diferente para la aplicación, es posible que vea el error anterior.
  • ModelPath es incorrecto. Actualmente, modelPath debe especificarse como una ruta de acceso completa. En el ejemplo de CSEvalClient, la ruta de acceso relativa se combina con el directorio de trabajo actual para compilar la ruta de acceso completa. Y se debe pasar la cadena CreateNetwork() que contiene el atributo "modelPath=" que especifica la ruta de acceso del archivo del modelo. Actualmente, no se admite la unidad asignada para modelpath.

Obtengo el siguiente resultado con CNTKTextFormat-Reader -- WARNING: Agotó toda la entrada esperada para la secuencia actual mientras lee un valor de punto flotante en el desplazamiento.

El lector CTF requiere que cada línea bien formada termine con un "Avance de línea" \n o "Retorno de carro, avance de línea" \r\n símbolos (incluida la última línea del archivo).