トラブルシューティング
このページでは、ユーザーが遭遇する最も頻繁な落とし穴の一部を収集します。
バイナリ分類器のトレーニング中に、最初のミニバッチからでも常に 0 の ClassificationError が表示されます
ClassificationError は、多クラスの問題に対してのみ正しく機能します。 二項分類の場合は、この簡単なレシピを使用してください
モデルは評価セットよりも大きなセットでトレーニングされましたが、CNTK評価中にメモリが不足します。
通常、モデルのトレーニングには、minibatchSize
CNTK構成ファイルにプロパティ セットがあります。 CNTK.exeを使用してモデルを評価する場合は、適切であることを minibatchSize
確認します。 このプロパティが問題の原因かどうかを迅速に判断するには、評価コマンドの構成ファイルでプロパティを低い値 (例: minibatchSize=2
) に設定します。 (cf. Issue #468)
ディープ ネットワーク (ResNet152 など) を使用して Linux で SegFault を取得しています。
スタック サイズが不足している可能性があります。 BrainScript には多くのスタックが必要です。 コマンド ulimit -s 65536 を実行します。 これにより、スタック サイズが 64 MB に設定されます。
評価中に、次のエラーが表示されます。例外 'cuDNN 失敗 8: CUDNN_STATUS_EXECUTION_FAILED; をスローします。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 ドライバー インストーラー で [クリーン インストールの実行 ] オプションを選択しました。 その結果、 GPU デプロイ キット (GDK) が削除されます。 システムを修復するには、次の手順を実行します。
- CUDA インストーラーを起動する
- カスタム (詳細) インストールの選択
- GPU デプロイ キットを除くすべてのインストール オプションの選択を解除する
- これにより、 グラフィックスドライバー オプションが自動的に選択されます。 選択したままにします
- CUDA のインストールを続行する
- CUDA のインストールが成功した後、目的のグラフィックス ドライバー バージョンのインストールを起動します
- カスタム (詳細) インストールの選択
- [ クリーン インストールの実行] が選択 されていないこと を確認し、インストールを続行します
最初の読み取り時間が非常に長いか、次のいずれかの例外が発生しています:"OS 呼び出しが失敗したか、この OS で操作がサポートされていません" または "EXCEPTION が発生しました: CUSPARSE failure 1" またはスタック内の AllocationFailureHandler を使用した Segfault。
ここで考えられる理由の 1 つは、既定の (つまり、無制限の) ランダム化ウィンドウを使用してデータ セット全体をメモリに読み込むことで発生する過剰なメモリ不足です。 明示的 randomizationWindow
な値を使用してワークロードを実行してみてください。これによって、メモリにキャッシュされる入力データの量が制限されます。 これを行うには、次のパラメーターを構成セクションに追加します reader
(例として、 10000
メモリに収まる任意の値を選択し、適切なランダム化を保証できます)。
randomize=true
randomizationWindow=10000 #(assuming that 10K samples << total available memory)
Azure Web アプリで Eval C# ライブラリ Cntk.Eval.Wrapper.dll (古い名前EvalWrapper.dll) を使用すると、次のようなエラーが発生します。"ファイルまたはアセンブリ 'some CNTK DLL' を読み込めませんでした。または、例外 System.Runtime.InteropServices.SEHException、または "InternalServiceFault: 外部コンポーネントが例外をスローしました"。
最初に、すべてのCNTK依存関係 DLL が Azure Web アプリにデプロイされていることを確認してください。
その後、64 ビット VM を使用するように Azure Web アプリを設定する必要があります。 Azure Web アプリがアンマネージ 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: required parameter missing: unknown:modelPath
次のような原因が考えられます。
- アプリケーションと
Cntk.Eval-<VERSION>.lib/dll
. リリースでアプリケーションをビルドする場合は、リリース バージョンにCntk.Eval-<VERSION>.dll
リンクしてください。 デバッグ構成でも同じです。 このエラーは、通常、C++ アプリケーションで発生します。 - Linux 上の異なるGCC コンパイラ バージョン: Linux 上のライブラリは
Cntk.Eval
、GCC 5.4 でビルドされています。 アプリケーションに別のGCC バージョンを使用すると、上記のエラーが表示されることがあります - modelPath が正しくありません。 現時点では、modelPath は完全なパスとして指定する必要があります。 CSEvalClient の例では、相対パスを現在の作業ディレクトリと組み合わせて、完全なパスを構築します。 また、CreateNetwork() には、モデルのファイル パスを指定する "modelPath=" 属性を含む文字列を渡す必要があります。 現時点では、マップされたドライブはモデルパスではサポートされていません。
CNTKTextFormat-Readerで次の結果が得られます-- 警告:オフセットで浮動小数点値を読み取っている間に、現在のシーケンスに必要なすべての入力が使い果たされました
CTF リーダー では、各整形式の行は、"改行" \nまたは "キャリッジ リターン、ライン フィード" \r\n記号 (ファイルの最後の行を含む) で終わる必要があります。