Partilhar via


Resolução de problemas

Esta página recolhe algumas das armadilhas mais frequentes que os utilizadores encontram.

Durante o treino do meu classificador binário vejo sempre um Classificador de Classificação de 0, mesmo a partir da primeira minibatch

O ClassificationError só funciona corretamente para problemas de multiclasse. Para classificação binária, por favor, use esta receita simples

Embora o modelo tenha sido treinado com um conjunto maior do que o conjunto de avaliação, CNTK fica sem memória durante a avaliação.

Treinar o modelo geralmente tem uma minibatchSize propriedade definida no seu ficheiro de configuração CNTK. Ao avaliar o modelo utilizando CNTK.exe, certifique-se de que o minibatchSize mesmo é adequado. Para determinar rapidamente se esta propriedade está a causar o problema, defina a propriedade para um valor baixo (por exemplo minibatchSize=2) no ficheiro de configuração para o comando de avaliação. (cf. Emissão nº 468)

Estou a receber o SegFault no Linux com redes profundas (como o ResNet152).

Pode não ter o tamanho da pilha suficiente. BrainScript requer muita pilha. Executar o comando: ulimit-s 65536. Isto irá definir o tamanho da sua pilha para 64 MB.

Durante a avaliação é visto o seguinte erro: Prestes a lançar a exceção 'falha cuDNN 8: CUDNN_STATUS_EXECUTION_FAILED ; GPU=0; hostname=haha; expr=err'

Defina a propriedade minibatchSize para um valor menor (por exemplo). minibatchSize=2

Quando compilo CNTK usando VS2013/VS2015, vejo um erro do compilador, o que se passa?

Tem de atualizar Visual Studio 2017. Veja aqui: Configuração CNTK na Windows

Eu capacitei o Leitor de Imagem com suporte zip e recebo "Plugin não encontrado: 'Cntk.Deserializers.Image-.dll' (nome antigo 'ImageReader.dll')" ao executar testes da unidade Image Reader ou tentar utilizar o leitor. O que pode estar errado?

Verifique se instalou corretamente zlib e libzip.

Acabei de descarregar e instalar CNTK pacote binário e quero gerir um emprego, mas tenho erros estranhos, como faltar às bibliotecas da CUDA.

Por favor, verifique cuidadosamente o que tem na sua PATH. Especialmente, se for uma máquina de desenvolvimento partilhada . Muitas vezes isto é causado por versões mais antigas (anteriores) de CNTK ou CNTK componentes que são alcançáveis através do PATH configurado.

No Windows instalei uma nova versão do controlador NVIDIA e agora CNTK construir falha com os erros como ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory

Selecionou Realizar uma opção de instalação limpa no Instalador do Controlador NVIDIA. Isto resulta na remoção do Kit de Implantação da GPU (GDK). Para reparar o sistema, execute os seguintes passos:

  • Lançar instalador CUDA
  • Selecione instalação personalizada (avançada)
  • Desescolh todas as opções de instalação, com exceção do Kit de Implantação da GPU
  • Isto irá selecionar automaticamente a opção Do Controlador gráfico - espera-se. Deixe-o selecionado
  • Proceda à instalação cuda
  • Após o sucesso da instalação cuda lançar a instalação da versão desejada do Condutor gráfico
  • Selecione instalação personalizada (avançada)
  • Certifique-se de que a Realização de uma instalação limpaNÃO é selecionada e proceda com a instalação

O tempo de leitura inicial demora muito tempo ou estou a receber uma das seguintes exceções: "Chamada de SO falhou ou operação não suportada neste SISTEMA" ou "EXCEÇÃO ocorreu: falha cusparse 1" ou um Segfault com AllocationFailureHandler na pilha.

Uma razão possível aqui é a pressão de memória excessiva causada pelo carregamento de todo o conjunto de dados na memória com a janela de aleatoriedade padrão (ou seja, ilimitada). Por favor, tente executar a sua carga de trabalho com um valor explícito randomizationWindow , que irá limitar a quantidade de dados de entrada em cache na memória. Para isso, adicione os seguintes parâmetros à sua reader secção de configuração (usando 10000 como exemplo, pode escolher qualquer valor que se encaixe na memória e garanta uma boa aleatoriedade):

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

Recebo erros ao utilizar Cntk.Eval.Wrapper.dll de biblioteca Eval C# (nome antigo EvalWrapper.dll) na aplicação web Azure como o seguinte: "Não podia carregar ficheiros ou montagem 'alguns DLLs CNTK', ou um sistema de exceção.Runtime.InteropServices.SEHException, ou "InternalServiceFault: Componente externo lançou uma exceção."

Em primeiro lugar, certifique-se de que todos os DLLs de dependência CNTK são implantados na aplicação web Azure. Em seguida, você tem que definir a sua aplicação web Azure para usar VM de 64 bits. Para permitir que a aplicação web Azure carregue CNTK DLLs não geridos, deve alterar a variável PATH adicionando o seguinte código no Application_Start() método em global.asax:

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

Consulte a página "Avaliar uma modelo numa página Azure WebApi" para obter etapas detalhadas.

Posso construir a minha aplicação usando Cntk.Eval-.lib/dll, mas tenho uma exceção semelhante às que estão abaixo enquanto corre

Uma exceção não manipulada do tipo 'Microsoft.MSR. CNTK. Extensibilidade.Managed.CNTKRuntimeException' ocorreu em Cntk.Wrapper-.dll

Informações adicionais: configparameters: parâmetro obrigatório em falta: desconhecido:modeloPa

As razões possíveis são:

  • Configuração de construção diferente (release ou depurar) entre a sua aplicação e a Cntk.Eval-<VERSION>.lib/dll. Se construir a sua aplicação em versão, por favor ligue-se contra a versão de lançamento de Cntk.Eval-<VERSION>.dll. O mesmo para a configuração do depurg. Este erro acontece normalmente para a aplicação C++.
  • Diferentes GCC versões de compilador em Linux: A Cntk.Eval biblioteca em Linux é construída com GCC 5.4. Se utilizar uma versão GCC diferente para a sua aplicação, poderá ver o erro acima
  • O modeloPath está incorreto. Atualmente, o modelPath tem de ser especificado como um caminho completo. No exemplo CSEvalClient, o caminho relativo é combinado com o atual diretório de trabalho para construir todo o caminho. E a CreateNetwork() deve ser passada uma cadeia contendo o atributo "modelPath=" especificando o caminho do ficheiro do modelo. Atualmente, a unidade mapeada não é suportada para o modelpath.

Obtê o seguinte resultado com CNTKTextFormat-Reader -- AVISO: Esgotado toda a entrada esperada para a sequência atual enquanto leio um valor de ponto flutuante no offset

O leitor CTF exige que cada linha bem formada termine com um \n "Feed de Linha" ou símbolos de \r\n de "Transporte", "Feed de linha" (incluindo a última linha do ficheiro).