다음을 통해 공유


문제 해결

이 페이지에서는 사용자가 겪는 가장 빈번한 문제 중 일부를 수집합니다.

이진 분류자를 학습하는 동안 첫 번째 미니배치에서도 항상 ClassificationError가 0으로 표시됩니다.

ClassificationError는 다중 클래스 문제에 대해서만 올바르게 작동합니다. 이진 분류의 경우 이 간단한 레시피를 사용하세요.

모델이 평가 집합보다 큰 집합으로 학습되었지만 CNTK 평가 중에 메모리가 부족합니다.

모델 학습에는 minibatchSize 일반적으로 CNTK 구성 파일에 속성 집합이 있습니다. CNTK.exe 사용하여 모델을 평가할 때 적절한지 확인 minibatchSize 합니다. 이 속성이 문제를 일으키는지 신속하게 확인하려면 평가 명령에 대한 구성 파일에서 속성을 낮은 값(예: minibatchSize=2낮은 값)으로 설정합니다. (cf. Issue #468)

심층 네트워크(예: ResNet152)를 사용하여 Linux에서 SegFault를 가져옵니다.

스택 크기가 충분하지 않을 수 있습니다. BrainScript에는 많은 스택이 필요합니다. ulimit -s 65536 명령을 실행합니다. 그러면 스택 크기가 64MB로 설정됩니다.

eval 중에 다음 오류가 표시됩니다. 'cuDNN 실패 8: CUDNN_STATUS_EXECUTION_FAILED; 예외를 throw하려고 합니다. GPU=0 ; hostname=haha; expr=err'

minibatchSize 속성을 더 작은 값(예: minibatchSize=2)으로 설정합니다.

VS2013/VS2015를 사용하여 CNTK 컴파일할 때 컴파일러 오류가 표시됩니다. 무엇이 잘못되나요?

2017 Visual Studio 업그레이드해야 합니다. 여기를 참조하세요. Windows CNTK 설정

Zip 지원으로 이미지 판독기를 사용하도록 설정하고 이미지 판독기 단위 테스트를 실행하거나 판독기를 사용하려고 할 때 "플러그 인을 찾을 수 없습니다. 'Cntk.Deserializers.Image-.dll'(이전 이름 'ImageReader.dll')" 오류가 발생합니다. 무엇이 잘못되었을까요?

zlib 및 libzip을 올바르게 설치했는지 확인합니다.

방금 CNTK 이진 패키지를 다운로드하여 설치했으며 작업을 실행하려고 하지만 CUDA 라이브러리 누락과 같은 이상한 오류가 발생합니다.

에 있는 내용을 주의 깊게 확인하세요 PATH. 특히 공유 개발 컴퓨터인 경우 이는 종종 구성된 PATH를 통해 연결할 수 있는 이전(이전) 버전의 CNTK 또는 CNTK 구성 요소에 의해 발생합니다.

Windows 새 버전의 NVIDIA 드라이버를 설치했고, 이제 다음과 같은 오류로 CNTK 빌드가 실패합니다. ..\Common\BestGpu.cpp(24): fatal error C1083: Cannot open include file: 'nvml.h': No such file or directory

NVIDIA 드라이버 설치 관리자에서 새로 설치 수행 옵션을 선택했습니다. 그러면 GDK(GPU 배포 키트)가 제거됩니다. 시스템을 복구하려면 다음 단계를 수행합니다.

  • CUDA 설치 관리자 시작
  • 사용자 지정(고급) 설치 선택
  • GPU 배포 키트를 제외한 모든 설치 옵션 선택 취소
  • 그러면 그래픽 드라이버 옵션이 자동으로 선택됩니다. 선택한 상태로 둡니다.
  • CUDA 설치 진행
  • CUDA 설치에 성공하면 원하는 그래픽 드라이버 버전의 설치를 시작합니다.
  • 사용자 지정(고급) 설치 선택
  • 새로 설치 수행이 선택되지 않았는지 확인하고 설치를 계속합니다.

초기 읽기 시간이 매우 오래 걸리 거나 다음 예외 중 하나가 발생합니다. "OS 호출이 실패했거나 이 OS에서 지원되지 않는 작업" 또는 "예외 발생: CUSPARSE 실패 1" 또는 스택에서 AllocationFailureHandler가 있는 Segfault입니다.

여기서 가능한 한 가지 이유는 기본(즉, 무제한) 임의화 창을 사용하여 메모리에 전체 데이터 집합을 로드하여 발생하는 과도한 메모리 압력입니다. 메모리에 캐시된 입력 데이터의 양을 제한하는 명시적 randomizationWindow 값으로 워크로드를 실행해 보세요. 이렇게 하려면 구성 섹션에 다음 매개 변수를 추가합니다 reader ( 10000 예를 들어 메모리에 맞는 값을 선택하고 임의로 잘 표시되도록 할 수 있음).

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

Azure 웹앱에서 Eval C# 라이브러리 Cntk.Eval.Wrapper.dll(이전 이름 EvalWrapper.dll)를 사용할 때 오류가 발생합니다. "파일 또는 어셈블리 '일부 CNTK DLL' 또는 예외 System.Runtime.InteropServices.SEHException 또는 "InternalServiceFault: 외부 구성 요소가 예외를 throw했습니다."를 로드할 수 없습니다.

먼저 모든 CNTK 종속성 DLL이 Azure 웹앱에 배포되었는지 확인합니다. 그런 다음 64비트 VM을 사용하도록 Azure 웹앱을 설정해야 합니다. Azure 웹앱이 관리되지 않는 DLL을 CNTK 로드할 수 있도록 하려면 다음 코드를 메서드global.asax에 추가하여 PATH 변수를 Application_Start() 변경해야 합니다.

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

자세한 단계는 "Azure WebApi에서 모델 평가" 페이지를 참조하세요.

Cntk.Eval-.lib/dll을 사용하여 애플리케이션을 빌드할 수 있지만 실행하는 동안 아래와 유사한 예외가 발생했습니다.

'Microsoft.MSR' 형식의 처리되지 않은 예외입니다. CNTK. extensibility.Managed.CNTKRuntimeException'이 Cntk.Wrapper-.dll

추가 정보: configparameters: 필수 매개 변수 누락: unknown:modelPath

가능한 원인은 다음과 같습니다.

  • 애플리케이션과 Cntk.Eval-<VERSION>.lib/dll애플리케이션 간에 다른 빌드 구성(릴리스 또는 디버그) 릴리스에서 애플리케이션을 빌드하는 경우 릴리스 버전 Cntk.Eval-<VERSION>.dll에 연결하세요. 디버그 구성과 동일합니다. 이 오류는 일반적으로 C++ 애플리케이션에서 발생합니다.
  • Linux의 다양한 GCC 컴파일러 버전: Cntk.Eval Linux의 라이브러리는 GCC 5.4로 빌드됩니다. 애플리케이션에 다른 GCC 버전을 사용하는 경우 위의 오류가 표시될 수 있습니다.
  • modelPath가 잘못되었습니다. 현재 modelPath는 전체 경로로 지정해야 합니다. CSEvalClient 예제에서 상대 경로는 현재 작업 디렉터리와 결합되어 전체 경로를 빌드합니다. 또한 CreateNetwork()는 모델의 파일 경로를 지정하는 "modelPath=" 특성을 포함하는 문자열을 전달해야 합니다. 현재 매핑된 드라이브는 modelpath에서 지원되지 않습니다.

CNTKTextFormat-Reader 다음 결과를 얻습니다. 경고: 오프셋에서 부동 소수점 값을 읽는 동안 현재 시퀀스에 필요한 모든 입력을 모두 사용했습니다.

CTF 판독 기를 사용하려면 잘 구성된 각 줄이 "줄 바꿈" \n 또는 "캐리지 리턴, 줄 바꿈" \r\n 기호(파일의 마지막 줄 포함)로 끝나야 합니다.