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 開発" ワークロードを選択してください。

im1

また、個々のコンポーネント画面で、インストールに 'VC++ 2017 バージョン 15.4 v14.11 ツールセット' と "UWP 用 Visual C++ ランタイム" を追加してください。

im1

最後に、'Windows 10 SDK (10.0.16299.0) for Desktop C++ [x86 and x64]' を追加します。

im1

既存の 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) とオファリング (CommunityEnterprise など) の両方によって異なります。

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 コード ベースを操作するために必要です。 次のツールを使用できます。

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.1C:\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_PATHCNTK_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ディレクトリが含まれていること PYTHONPATHbindings\python 確認します。 これは、Pip パッケージのインストール用に示されているセットアップとは異なり、ここでは、Python 環境にインストールされているパッケージとしてではなく、CNTK リポジトリ クローンから CNTK モジュールを読み込むため、設定 PYTHONPATHの違いもあります。

CNTK ビルド機能のテスト

CNTK がシステムで正しく動作していることを確認するには、「Hello World - ロジスティック回帰」チュートリアルの例をすばやく実行できます。 この例では、単純なネットワークをトレーニングし、CPU または GPU のいずれかを使用するように指示できます。これにより、CNTK が正しく機能していることを迅速に確認できます。

以下では、CNTK リポジトリが複製されc:\repos\cntkbuild\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 コードへの貢献

コードの変更を計画する場合は、 開発とテストに関する情報をお読みください。