Windows での CNTK のセットアップ
Visual Studio 2017 を使用して Windows 上のソース コードから CNTK を手動でビルドする場合は、このページをお勧めします。
CNTK ビルド環境をセットアップしたり、システムに CNTK をインストールしたりするための他の種類のサポートをお探しの場合は、代わりに ここに 移動する必要があります。
注意
このページでは、CNTK のマスター ブランチを構築しようとしていることを前提としています。
64 ビット OS
CNTK には、64 ビットの Windows インストールが必要です。 R2 以降のWindows 8.1、Windows 10、Windows Server 2012でビルド プロセスをテストしました。 その他の環境は公式にはサポートされていません。 互換性の問題については、 CNTK 実稼働ビルドとテストの構成を確認してください。
環境変数とコンポーネント
システムで CNTK をビルドするには、さまざまな環境変数の定義と構成が必要です。 CNTK の Windows ビルドで使用される環境変数の概要 については、このページを参照してください。 さらに、このページでは、CNTK のビルドに 必要なコンポーネントとオプションのコンポーネント の概要と、既定のインストール場所について説明します。
Visual Studio 2017
Microsoft Visual Studio 2017 for Windows をインストールします。 ダウンロードへのリンク はこちらにあります。
CNTK をビルドするには、Visual Studio 2017 のコミュニティ バージョンで十分です。
インストール プロセス中に、"ユニバーサル Windows プラットフォーム開発"、".NET デスクトップ開発"、"C++ によるデスクトップ開発"、および "Python 開発" ワークロードを選択してください。
また、個々のコンポーネント画面で、インストールに 'VC++ 2017 バージョン 15.4 v14.11 ツールセット' と "UWP 用 Visual C++ ランタイム" を追加してください。
最後に、'Windows 10 SDK (10.0.16299.0) for Desktop C++ [x86 and x64]' を追加します。
既存の Visual Studio 2017 のインストール
'VC++ 2017 バージョン 15.4 v14.11 ツールセット'、'UWP 用 Visual C++ ランタイム'、および 'デスクトップ C++ 用の Windows 10 SDK (10.0.16299.0) [x86 および x64]' をシステムにインストールする必要があります。 確認するには、Windowsの「コントロール パネル - プログラム ->> プログラムと機能」を開き、インストールされているプログラムの一覧から「Visual Studio Community 2017」を選択します。 これにより、Visual Studio のセットアップが再び開始され、前述のコンポーネントがシステムにインストールされていることを確認できます (上の図を参照)。
注意
環境変数が Visual Studio インストーラーによって設定されていない場合 VS2017INSTALLDIR
は、手動で設定します。 正確なインストール ディレクトリは、次のパターンC:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>
に従って、Visual Studio のバージョン (この場合は 2017) とオファリング (Community、Enterprise など) の両方によって異なります。
Visual Studio 2017 Enterprise エディションの場合は、次を実行します。
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
Visual Studio 2017 Community エディションの場合は、次を実行します。
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
Git
Git は CNTK コード ベースを操作するために必要です。 次のツールを使用できます。
Git for Windows。 これは Git 用の標準的なコマンド ライン クライアントです。このページでは、CNTK リポジトリへの参加について説明します。
Git クライアントは、Visual Studio 2017 インストールの一部として使用できます。 組み込みの Git クライアントの使用に関する Microsoft アプリケーション ライフサイクル管理 に関するブログ投稿をお読みください。
CNTK GitHub リポジトリへの参加
ここでは、 Windows 用の Git をインストールしたと仮定します。 Git インストーラーの既定のオプション (特に [Windows コマンド プロンプトから Git を使用する] を使用し、"行末の構成" プロンプトで "Windows スタイルのチェックアウト、UNIX スタイルの行末をコミットする" オプションを有効にして Git をインストールしたものとします。
ディレクトリに CNTK ソース コードの複製を c:\repos\cntk
作成します。 別の場所を使用する場合は、それに応じてコマンドを調整する必要があります。
標準の Windows コマンド シェルを開き、次のコマンドを実行します
c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk
これにより、標準ビルドに必要なすべてのソース コードがシステムに配置されます。 CNTK コードの変更を計画している場合は、 開発とテストに関する情報を読む必要があります。
サブモジュール Multiverso は、 トレーニングのために DataParallelASGD を有効にするために使用されます。 DataParallelASGD のサポートが必要ない場合は、環境変数CNTK_ENABLE_ASGD追加し、その値を false に設定します。 たとえば、CMD プロンプトでこれを実行し、CMD シェルと Visual Studio を再度開いて変更を取得します。
setx CNTK_ENABLE_ASGD false
MKL
既定の CNTK 数学ライブラリは 、Intel Math Kernel Library (Intel MKL) です。 このページに従ってインストールします
MKL-DNN
MKL-DNN ソースをダウンロードし、ターゲット パスとしてMKL_PATHを使用してビルドします。 Windows での MKL-DNN のセットアップのビルド手順を確認する
環境変数
MKL_PATH
をディレクトリに設定します(例:
setx MKL_PATH c:\local\mklml-mkldnn-0.14
MS-MPI
このダウンロード ページから Microsoft MPI (MS-MPI) のバージョン 7 (7.0.12437.6) をインストールします。ページ タイトルには単に "バージョン 7" としてマークされています。 [ダウンロード] ボタンをクリックし、両方 msmpisdk.msi
を選択します MSMpiSetup.exe
。
昇格
システムに Boost ライブラリ をインストールするには、次の手順に従います。
- Sourceforge のこのダウンロード場所から Boost バージョン 1.60 (バイナリが
msvc-14.0
必要) をダウンロードしてインストールします。 - 環境変数を
BOOST_INCLUDE_PATH
Boost インストールに設定します。次に例を示します。
setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
- 環境変数
BOOST_LIB_PATH
を Boost ライブラリに設定します。次に例を示します。
setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
- Boost テスト フレームワークを Visual Studio に統合するには、 Visual Studio ギャラリーから Visual Studio に Boost テスト用のランナーをインストールします。
Protobuf
CNTK 用にコンパイルされた Protobuf 3.1.0 のバージョンが必要です。 このバージョンは、自分でコンパイルすることも、Protobuf 3.1.0 (このページで説明) の既に (プリコンパイル済みの) 準備済みバージョンを使用することもできます。 システム上に CNTK 用 Protobuf ライブラリをビルドする場合は、 こちら
この場所から、CNTK 用 Protobuf のプリコンパイル済みバージョンを含む ZIP ファイルをダウンロードします
アーカイブをローカル ディスク上のフォルダーに抽出します。たとえば C:\local\protobuf-3.1.0-vs15
、その場所を指す環境変数 PROTOBUF_PATH
を設定します(例:
setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15
GPU 固有のパッケージ
このセクションでは、CNTK が NVIDIA GPU を利用するためにセットアップする必要があるパッケージの概要について説明します。
CNTK で GPU を使用せず、CPU のみに依存する場合は、 次の一般的なセクションに直接スキップできます。 それ以外の場合 は、このページに進みます。
その場所を指す環境変数 CUDNN_PATH
を設定します(例:
setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda
その場所を指す環境変数 CUB_PATH
を設定します(例:
setx CUB_PATH c:\local\cub-1.7.4\
省略可能。 Swig。
Python から CNTK を利用する場合は、 SWIG をインストールする必要があります。 SWIG は、CNTK 評価ライブラリ (C#/.NET または Java 用) を構築するための要件でもあります。
このサイトからバージョンSWIG 3.0.10
をダウンロードしてください。
アーカイブをローカル ディスク上のフォルダーに抽出します。たとえば C:\local\swigwin-3.0.10
、その場所を指す環境変数 SWIG_PATH
を設定します(例:
setx SWIG_PATH C:\local\swigwin-3.0.10
クイック インストール チェック: 上記の手順に従い、同じパスを使用した場合、コマンド dir C:\local\swigwin-3.0.10\swig.exe
は成功し、1 つのファイルが表示されます。
省略可能。 OpenCV
CNTK 2.2 では、オープン ソース Computer Vision (OpenCV) をインストールする必要がありますが、CNTK 2.3 ではオプションです。 詳細な手順については 、このページ を参照してください。
OpenCV ビルド フォルダーを指す環境変数 OPENCV_PATH_V31
を設定します (例:
setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build
クイック インストール チェック: 上記の手順に従い、同じパスを使用した場合、コマンド dir C:\local\Opencv3.1.0\build
は成功します。
省略可能。 zlib と libzip
CNTK イメージ リーダーをビルドする場合は、zlib ライブラリと libzip ライブラリが必要です。
zlib と libzip
ZLib と LibZip はソース コードで配布されています。これらのパッケージを再コンパイルする必要があります。また、便宜上作成したプリコンパイル済みバージョンを使用することもできます (このセクションで説明します)。 ライブラリを自分でビルドするには、こちらの詳細な手順を参照してください。
CNTK 用 libzip/zlib 圧縮ライブラリのプリコンパイル済みバージョンを含む ZIP ファイルをこの場所からダウンロードします
アーカイブをローカル ディスク上のフォルダーに抽出します。たとえば C:\local\zlib-vs15
、その場所を指す環境変数 ZLIB_PATH
を設定します(例:
setx ZLIB_PATH c:\local\zlib-vs15
クイック インストール チェック: 上記の手順に従い、同じパスを使用した場合、コマンド dir C:\local\zlib-vs15\bin
は成功し、いくつかの DLL が表示されます。
省略可能。 Anaconda Python のインストール
Python サポートを使用して CNTK を構築する予定の場合は、 まだインストールしていない場合は SWIG をインストールします。 また、Python 環境が必要になります。 既定の Python インストールには Anaconda Python を使用します。
Anaconda のインストールがない場合: Anaconda Python for Windows をインストールします。
インストール プログラムで指定された標準構成に従うことができます (InstallationType=JustMe;AddToPath=No;RegisterPython=No)。 次の例では、Python Anaconda3 4.1.1
C:\local\Anaconda3-4.1.1-Windows-x86_64
を .
省略可能。 CNTK UWP ビルド
注意
CNTK バージョン 2.1 の新機能。
UWP 用 CNTK 評価ライブラリをビルドする場合は、 ここで説明する追加のインストール手順に従う必要があります。
CNTK Python 環境
CNTK では、Python 2.7、Python 3.5、Python 3.6 がサポートされています。 CNTK を使用するには、Python インストールに専用の環境を作成することをお勧めします。 このように、CNTK とインストールされているサポート パッケージは、他の Python プロジェクトには影響しません。 必要な Python パッケージの説明を含む複数のファイル (yml
-files) を提供します。 パッケージは、CNTK クローン内の scripts\install\windows
ディレクトリにあります。 対象の Python バージョンに一致するファイルを選択してください。
Python バージョン | ファイル名 |
---|---|
Python 2.7 | conda-windows-cntk-py27-environment.yml |
Python 3.5 | conda-windows-cntk-py35-environment.yml |
Python 3.6 | conda-windows-cntk-py36-environment.yml |
例として、Python 3.5 環境を名前の付いた cntk-py35
環境に作成します。 別の環境名が必要な場合は、それに応じて次の手順を調整してください。 Python 2.7 または Python 3.6 環境を作成する場合は、使用する Python バージョンに合わせて YML の名前を調整してください。
次の例では、GitHub からディレクトリ c:\repos\cntk
に CNTK ソース コードを複製していることを前提としています。
- 新しい conda 環境を作成してアクティブ化するには、Windows コマンド シェルから次のコマンドを実行します。
cntk-py35
cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
conda env create --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml --name cntk-py35
activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
環境がある場合 (例: cntk-py35
)、次のコマンドを使用して、最新の必要なパッケージで更新できます。
cd C:\local\Anaconda3-4.1.1-Windows-x86_64\scripts
conda env update --file c:\repos\cntk\scripts\install\windows\conda-windows-cntk-py35-environment.yml --name cntk-py35
activate C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
Python 用 CNTK 環境変数
CNTK のビルドを開始し、CNTK 用の Python ライブラリをビルドする前に、環境変数 CNTK_PY.._PATH
を設定/定義する必要があります。 PYTHONPATH
CNTK_PY.._PATH
Python 環境のビルド環境変数を設定します (適用される少なくとも 1 つを選択してください)。
setx CNTK_PY36_PATH [paths for your Python 3.6 environment]
setx CNTK_PY35_PATH [paths for your Python 3.5 environment]
setx CNTK_PY27_PATH [paths for your Python 2.7 environment]
これまでにインストールを行った場合、これは
setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35
、またはCNTK_PY27_PATH
環境変数のCNTK_PY36_PATH
CNTK_PY35_PATH
値は、次で実行することによって決定できます。conda ..activate cmd.exe [name-or-path-of-your-environment]
PYTHONPATH
PYTHONPATH
は、Python がインポートするモジュールを検索する場所へのパスを設定します。 CNTK をビルドする場合は、ビルド プロセスの出力パスをこの環境変数に追加する必要があります。 CNTK c:\repos\cntk
を複製した場合、次のようになります。
setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%
省略可能。 Java
CNTK 評価ライブラリの Java バインドをビルドするには、 SWIG ツール をまだインストールしていない場合はインストールします。 また、Java Development Kit (JDK) も必要です。 現在、64 ビット JDK 8 (JDK バージョン 1.8.0_131) を使用しています。
Java インストールのディレクトリを指す環境変数JAVA_HOMEを設定します。 次の設定では、JDK 1.8.0_131 が C:\local\jdk1.8.0_131 にインストールされていることを前提としています。
setx JAVA_HOME "c:\local\jdk1.8.0_131"
以前の CNTK バージョンをアンインストールする
以前に CNTK Python パッケージのバージョンをコンピューターにインストールした場合は、まず PYTHONPATH 環境変数内の CNTK 関連パスを削除してアンインストールします。 実行: echo %PYTHONPATH%
現在の値を確認し、コマンドを setx
使用して、CNTK 関連のパスが失われるよう PYTHONPATH を設定します。 これにより PYTHONPATH が空になる場合は、空になります。
アンインストールを実行します。 pip uninstall cntk
これで、インストール部分が終了します。 CNTK の構築を続けましょう
CNTK のビルド
現在、Visual Studio 2017 の CUDA 9 と既定の VCTools の間には互換性の問題があります。 CNTK では、CUDA 9 を使用してビルドするために VCTools 14.11 が必要です。 その手順を次に示します。
- コマンド プロンプトを開く
- call "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11
これにより、VCTools が CUDA 9 互換バージョンに設定されます。 コマンド プロンプトから、GitHub から複製された CNTK プロジェクトのルートで CNTK.sln を起動します。 CNTK.sln が既定の CUDA9 と互換性のないバージョンの VCTools で実行されている場合、"1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): 致命的なエラー C1189: #error: -- サポートされていない Microsoft Visual Studio バージョン! 2012、2013、2015、2017 のバージョンのみがサポートされています。
変更し、環境変数を変更した場合は、既に開いている Visual Studio インスタンスを閉じる必要があります。そうしないと、変更された環境変数の内容は Visual Studio 内に反映されません。
- ソリューション エクスプローラーで CNTK ソリューションを右クリックし、
Properties
- 開いたウィンドウでボタンを選択
Configuration Properties
して押すConfiguration Manager...
- Configuration Managerで、目的の構成を選択します。
- デバッグまたはリリース
- GPU または CPU のみ。 CPU のみの構成には明示的に名前が付けられます。 その他のすべての構成は、GPU 使用率を意味します (つまり、リリースを意味します
Release
。GPU 対応モード) - GPU 構成に必要なコンポーネントをインストールしていない場合は、常に CPU のみの構成を選択する必要があります
CNTK ソリューションをビルドします。 ビルド プロセスによって作成されるコンポーネントは、インストールした前提条件によって異なります。詳細については、 Windows 環境変数 の詳細に関するページを参照する必要があります。
Python モジュールをビルドする場合は、次の点に注意してください。
- Python モジュールは構成でのみ作成されます
Release
- これにより、CNTK Python モジュールが内部
bindings\python\cntk
にビルドされ、x64\Release\Python
ビルド出力フォルダーのサブフォルダーPython
(.whl
例: ) にパッケージ () も生成されます。 - パスにビルド出力フォルダー (例: )、
x64\Release
ディレクトリが含まれていることPYTHONPATH
をbindings\python
確認します。 これは、Pip パッケージのインストール用に示されているセットアップとは異なり、ここでは、Python 環境にインストールされているパッケージとしてではなく、CNTK リポジトリ クローンから CNTK モジュールを読み込むため、設定PYTHONPATH
の違いもあります。
CNTK ビルド機能のテスト
CNTK がシステムで正しく動作していることを確認するには、「Hello World - ロジスティック回帰」チュートリアルの例をすばやく実行できます。 この例では、単純なネットワークをトレーニングし、CPU または GPU のいずれかを使用するように指示できます。これにより、CNTK が正しく機能していることを迅速に確認できます。
以下では、CNTK リポジトリが複製されc:\repos\cntk
build\x64\release
、(リリース) ビルドのサブディレクトリとして使用されていることを前提としています。
- コマンド プロンプトを開く
- CNTK バイナリへのパス (環境変数を使用するか、次の最初のコマンドを使用してコマンド プロンプト セッション用) を指定し、ディレクトリに
Tutorials\HelloWorld-LogisticRegression
変更します。
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression
まず、次の例を試してください。
cntk configFile=lr_bs.cntk makeMode=false
サンプルが実行されている場合、つまりエラー メッセージがない場合は、最初に構成の読み取りに関連する出力が表示され、その後に実際のネットワーク トレーニングの出力が表示されます。
GPU を使用して CNTK を試す
GPU 使用用に CNTK を構築した場合は、次のコマンドを実行して GPU を使用してみてください。
cntk configFile=lr_bs.cntk makeMode=false deviceId=auto
出力の先頭付近に、GPU が使用されたことを確認する行が表示されます。
Model has 9 nodes. Using GPU 0.
GPU ID が異なる場合があることに注意してください。 このパラメーターは deviceId
、計算に使用するプロセッサを定義します。
-
deviceId=-1
は CPU の使用を意味します。 既定値 -
deviceId=X
ここで、X が整数 >=0 の場合は GPU X を使用します。つまりdeviceId=0
、GPU 0 などを意味します。 -
deviceId=auto
は GPU を使用し、GPU を自動的に選択する
CNTK Python API を試す
CNTK Python 環境 ( インストール スクリプト を使用するか 、手動で) を作成したものとします。 コマンド プロンプトを開き、CNTK Python 環境 (例:
activate cntk-py35
簡単なテストとして、フォルダに変更し Tutorials\NumpyInterop
、実行 python FeedForwardNet.py
します. トレーニング後、次のような出力が表示されます。
Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
error rate on an unseen minibatch 0.040000
Visual Studio での CNTK ソース コードのデバッグ
- Python Tools、CNTK、Visual Studio を使用する場合は、こちらを参照してください
- Visual Studio で CNTK で BrainScript をデバッグするには、 こちらの手順に従います。
CNTK コードへの貢献
コードの変更を計画する場合は、 開発とテストに関する情報をお読みください。