Share via


Configurar o CNTK no Windows

Se você quiser criar manualmente o CNTK a partir do código-fonte no Windows usando o Visual Studio 2017, esta página é para você.

Se você estiver procurando qualquer outro tipo de suporte para configurar um ambiente de build do CNTK ou instalar o CNTK em seu sistema, você deverá ir aqui .

Observação

Esta página pressupõe que você está tentando criar o branch mestre do CNTK.

Sistema operacional de 64 bits

O CNTK requer uma instalação do Windows de 64 bits. Testamos o processo de build em Windows 8.1, Windows 10 e Windows Server 2012 R2 e posterior. Não há suporte para outros ambientes oficialmente. Para problemas de compatibilidade, verifique a configuração de build e teste de produção do CNTK.

Componentes e variáveis de ambiente

A criação do CNTK em seu sistema requer a definição e a configuração de várias variáveis de ambiente. Uma visão geral das variáveis de ambiente usadas pelo build do Windows do CNTK pode ser encontrada nesta página. Além disso, esta página fornece uma visão geral dos componentes obrigatórios e opcionais para a criação do CNTK, bem como seu local de instalação padrão.

Visual Studio 2017

Instale o Microsoft Visual Studio 2017 para Windows. Um link para o download pode ser encontrado aqui.

A versão da comunidade do Visual Studio 2017 é suficiente para criar o CNTK.

Durante o processo de instalação, selecione "desenvolvimento Plataforma Universal do Windows", "desenvolvimento da área de trabalho do.NET", "Desenvolvimento da área de trabalho com C++" e cargas de trabalho de "desenvolvimento do Python":

im1

Além disso, na tela de componentes individuais, adicione o conjunto de ferramentas 'VC++ 2017 versão 15.4 v14.11' e 'Runtime do Visual C++ para UWP' à sua instalação:

im1

Por fim, adicione 'Windows 10 SDK (10.0.16299.0) para Desktop C++ [x86 e x64]':

im1

Instalação pré-inicial do Visual Studio 2017

Você deve ter o conjunto de ferramentas 'VC++ 2017 versão 15.4 v14.11', 'Runtime do Visual C++ para UWP' e 'SDK Windows 10 (10.0.16299.0) para Desktop C++ [x86 e x64]' instalados em seu sistema. Para marcar a abertura do Windows "Painel de Controle -> Programas -> Programas e Recursos" e selecione "Visual Studio Community 2017" na lista de programas instalados. Isso iniciará a instalação do Visual Studio novamente e permitirá que você verifique se os componentes mencionados acima estão instalados no sistema (consulte a imagem acima).

Observação

Se VS2017INSTALLDIR a variável de ambiente não foi definida pelo instalador do Visual Studio, defina-a manualmente. O diretório de instalação exato depende tanto da versão (2017, nesse caso) quanto da oferta (Community, Enterprise etc) do Visual Studio, de acordo com o seguinte padrão: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>.

Para o Visual Studio 2017 Enterprise Edition, execute:

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"

Para o Visual Studio 2017 Community Edition, execute:

setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"

Git

O Git é necessário para trabalhar com a base de código CNTK. Você pode usar as seguintes ferramentas:

Inscrição no repositório Do GitHub do CNTK

Aqui, presumimos que você instalou o Git para Windows. Presumimos que você instalou o Git usando as opções padrão no instalador git (especialmente "Usar o Git do Prompt de Comando do Windows" e com a opção "Checkout no estilo windows, confirmar terminações de linha no estilo UNIX" no prompt "Configurando terminações de linha" habilitado.

Crie um clone do código-fonte CNTK no c:\repos\cntk diretório. Se preferir um local diferente, você precisará ajustar os comandos de acordo.

Abra um shell de comando padrão do Windows e execute estes comandos

c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk

Isso coloca todo o código-fonte necessário para um build padrão em seu sistema. Se você planeja fazer modificações no código CNTK, deve ler as informações sobre Desenvolvimento e Teste.

O submódulo Multiverso é usado para habilitar DataParallelASGD para treinamento. Se você não precisar de suporte ao DataParallelASGD, adicione a variável de ambiente CNTK_ENABLE_ASGD e defina seu valor como false. Por exemplo, execute isso em um prompt do CMD e reabra os shells do CMD e o Visual Studio para obter a alteração:

setx CNTK_ENABLE_ASGD false

MKL

A biblioteca matemática padrão do CNTK é a Intel Math Kernel Library (Intel MKL). Siga esta página para instalá-la

MKL-DNN

  • Baixe a origem e o build do MKL-DNN com MKL_PATH como caminho de destino. Verificar instruções de build na Instalação do MKL-DNN no Windows

  • Defina a variável MKL_PATH de ambiente para o diretório, por exemplo:

    setx MKL_PATH c:\local\mklml-mkldnn-0.14

MS-MPI

Instale a versão 7 (7.0.12437.6) do MS-MPI (Microsoft MPI) nesta página de download, marcada simplesmente como "Versão 7" no título da página. Clique no botão Baixar e selecione ambos msmpisdk.msi e MSMpiSetup.exe.

Aumentar

Siga estas etapas para instalar a Biblioteca do Boost em seu sistema:

  • Baixe e instale o Boost versão 1.60 (você precisa dos msvc-14.0 binários) deste local de download no Sourceforge.
  • Defina a variável BOOST_INCLUDE_PATH de ambiente para a instalação do Boost, por exemplo:
    setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
  • Defina a variável BOOST_LIB_PATH de ambiente para as bibliotecas Boost, por exemplo:
    setx BOOST_LIB_PATH c:\local\boost_1_60_0-msvc-14.0\lib64-msvc-14.0
  • Para integrar a estrutura de teste do Boost ao Visual Studio, você pode instalar um executor para testes boost no Visual Studio por meio da Galeria do Visual Studio.

Protobuf

Você precisa de uma versão do Protobuf 3.1.0 compilada para CNTK. Você pode compilar essa versão sozinho ou usar uma versão já (pré-compilada) preparada do Protobuf 3.1.0 (descrito nesta página). Se você quiser criar a biblioteca Protobuf para CNTK em seu sistema, encontre os detalhes aqui

Baixe o arquivo ZIP que contém a versão pré-compilada do Protobuf para CNTK deste local

Extraia o arquivo morto para uma pasta em seu disco local, por exemplo, para C:\local\protobuf-3.1.0-vs15 e defina a variável PROTOBUF_PATH de ambiente apontando para esse local, por exemplo:

    setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15

Pacotes específicos da GPU

Esta seção descreve os pacotes que você precisa configurar para que o CNTK aproveite as GPUs NVIDIA.

Se você NÃO pretende usar gpus com CNTK e dependerá apenas da CPU, poderá pular diretamente para a próxima seção geral. Caso contrário, prossiga para esta página.

Defina a variável CUDNN_PATH de ambiente apontando para esse local, por exemplo:

    setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda

Defina a variável CUB_PATH de ambiente apontando para esse local, por exemplo:

    setx CUB_PATH c:\local\cub-1.7.4\

OPCIONAL. GOLE.

Se você quiser aproveitar o CNTK do Python, precisará instalar o SWIG. O SWIG também é um requisito para criar as bibliotecas de Avaliação do CNTK (para C#/.NET ou Java).

Baixe a versão SWIG 3.0.10deste site.

Extraia o arquivo morto para uma pasta em seu disco local, por exemplo, para C:\local\swigwin-3.0.10 e defina a variável SWIG_PATH de ambiente apontando para esse local, por exemplo:

    setx SWIG_PATH C:\local\swigwin-3.0.10

Verificação rápida de instalação: se você seguiu a instrução acima e usou os mesmos caminhos, o comando dir C:\local\swigwin-3.0.10\swig.exe terá êxito e mostrará um arquivo.

OPCIONAL. OpenCV

O CNTK 2.2 requer que o OpenCV (Pesquisa Visual Computacional de Software Livre) seja instalado, mas é opcional para o CNTK 2.3. Siga esta página para obter mais etapas.

Defina a variável OPENCV_PATH_V31 de ambiente apontando para a pasta de build OpenCV, por exemplo,

setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build

Verificação rápida de instalação: se você seguiu a instrução acima e usou os mesmos caminhos, o comando dir C:\local\Opencv3.1.0\build terá êxito.

OPCIONAL. zlib e libzip

Se você planeja criar o Leitor de Imagem do CNTK , precisará de bibliotecas zlib e libzip .

zlib e libzip

O ZLib e o LibZip são distribuídos no código-fonte, você precisará recompilar esses pacotes, também pode usar uma versão pré-compilada que criamos para sua conveniência (descrita nesta seção). Para criar as bibliotecas por conta própria, encontre instruções detalhadas aqui

Baixe o arquivo ZIP que contém a versão pré-compilada da biblioteca de compactação libzip/zlib para CNTK deste local

Extraia o arquivo morto para uma pasta em seu disco local, por exemplo, para C:\local\zlib-vs15 e defina a variável ZLIB_PATH de ambiente apontando para esse local, por exemplo:

    setx ZLIB_PATH c:\local\zlib-vs15

Verificação rápida de instalação: se você seguiu a instrução acima e usou os mesmos caminhos, o comando dir C:\local\zlib-vs15\bin terá êxito e mostrará algumas DLLs.

OPCIONAL. Instalação do Python do Anaconda

Se você planeja criar o CNTK com suporte do Python, instale o SWIG se ainda não tiver feito isso. Além disso, você precisará de um ambiente python. Usamos o Anaconda Python para nossa instalação padrão do Python.

Se você não tiver uma instalação do Anaconda: instale o Anaconda Python para Windows. Você pode seguir a configuração padrão fornecida no programa de instalação (InstallationType=JustMe; AddToPath=No; RegisterPython=Não). No seguinte, presumimos que você instalou o Python Anaconda3 4.1.1 em C:\local\Anaconda3-4.1.1-Windows-x86_64.

OPCIONAL. CNTK UWP Build

Observação

Novidades no CNTK versão 2.1.

Se você quiser criar a Biblioteca de Avaliação do CNTK para UWP, deverá seguir as etapas de instalação adicionais descritas aqui.

Ambientes do CNTK Python

O CNTK dá suporte ao Python 2.7, Python 3.5 e Python 3.6. Recomendamos que você crie um ambiente dedicado em sua instalação do Python para trabalhar com o CNTK. Dessa forma, o CNTK e os pacotes de suporte instalados não afetarão nenhum outro projeto do Python. Fornecemos vários arquivos (yml-arquivos) que contêm a descrição dos pacotes necessários do Python. Os pacotes estão localizados no diretório dentro do scripts\install\windows clone do CNTK. Selecione o arquivo que corresponde à sua versão do Python de destino.

Versão do Python Nome de arquivo
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

Como exemplo, criamos um ambiente python 3.5 em um ambiente chamado cntk-py35. Se você quiser um nome de ambiente diferente, ajuste as etapas a seguir de acordo. Se você quiser criar um ambiente Python 2.7 ou Python 3.6, ajuste o nome do YML para corresponder à versão do Python que você pretende usar.

O seguinte pressupõe que você clonou o código-fonte CNTK do GitHub no diretório c:\repos\cntk.

  • Para criar um novo ambiente conda (por exemplo cntk-py35) e ativá-lo, execute os seguintes comandos no shell de comando do Windows:
    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

Se você tiver um ambiente (por exemplo cntk-py35), poderá atualizá-lo com os pacotes necessários mais recentes com os seguintes comandos:

    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

Variáveis de ambiente CNTK para Python

Antes de iniciar o build do CNTK e criar as bibliotecas python para CNTK, você precisa definir/definir variáveis CNTK_PY.._PATH de ambiente e PYTHONPATH

CNTK_PY. _PATH

Configurar variáveis de ambiente de build para seu ambiente Python (escolha pelo menos uma que se aplique):

    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]

Se você seguiu a instalação até agora, isso significaria

    setx CNTK_PY35_PATH C:\local\Anaconda3-4.1.1-Windows-x86_64\envs\cntk-py35

O valor das CNTK_PY36_PATHvariáveis , CNTK_PY35_PATHou CNTK_PY27_PATH de ambiente pode ser determinado executando em conda ..activate cmd.exe [name-or-path-of-your-environment]

PYTHONPATH

PYTHONPATH define os caminhos para os locais em que o Python procurará módulos para importar. Se você criar o CNTK, precisará adicionar o caminho de saída do processo de build a essa variável de ambiente. Se você clonou cntk para c:\repos\cntk isso será

    setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%

OPCIONAL. Java

Para criar as associações Java para a biblioteca de Avaliação do CNTK, instale a ferramenta SWIG se você ainda não tiver feito isso. Além disso, um JDK (Java Development Kit) é necessário. Atualmente, usamos o JDK 8 de 64 bits (JDK versão 1.8.0_131).

Defina a variável de ambiente JAVA_HOME para apontar para o diretório da instalação do Java. A configuração a seguir pressupõe que você instalou o JDK 1.8.0_131 para C:\local\jdk1.8.0_131:

    setx JAVA_HOME "c:\local\jdk1.8.0_131"

Desinstalar versões anteriores do CNTK

Se você instalou anteriormente qualquer versão do pacote do CNTK Python em seu computador, desinstale-o removendo primeiro quaisquer caminhos relacionados ao CNTK na variável de ambiente PYTHONPATH. Faça: echo %PYTHONPATH% para ver seu valor atual e, em seguida, use o setx comando para definir PYTHONPATH de modo que os caminhos relacionados ao CNTK se foram. Se isso torna o PYTHONPATH vazio, que assim seja.

Faça a desinstalação: pip uninstall cntk


Isso conclui a parte de instalação. Vamos continuar com a criação do CNTK


Criando CNTK

Atualmente, há um problema de compatibilidade entre o CUDA 9 e o VCTools padrão no Visual Studio 2017. O CNTK requer que o VCTools 14.11 seja compilado com o CUDA 9. Para fazer isso:

  • Abrir o Prompt de Comando
  • chamar "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11

Isso definirá VCTools para a versão compatível com CUDA 9. No Prompt de Comando, inicie o CNTK.sln na raiz do projeto CNTK clonado do GitHub. Se o CNTK.sln for executado com a versão padrão incompatível com CUDA9 do VCTools, haverá erros de build como "1>c:\arquivos de programas\nkit de ferramentas de computação de gpu vidia\cuda\v9.0\include\crt/host_config.h(133): erro fatal C1189: #error: -- versão sem suporte do Microsoft Visual Studio! Há suporte apenas para as versões 2012, 2013, 2015 e 2017!"

Se você acabou de alterar e a variável de ambiente, deve fechar qualquer instância do Visual Studio já aberta, caso contrário, o conteúdo das variáveis de ambiente alteradas não será refletido dentro do Visual Studio.

  • Clique com o botão direito do mouse na Solução CNTK no Gerenciador de Soluções e selecioneProperties
  • Na janela aberta, selecione Configuration Properties e pressione o Configuration Manager... botão
  • Em Configuration Manager selecione a configuração desejada:
    • Depurar ou liberar
    • Somente GPU ou CPU. As configurações somente de CPU são nomeadas explicitamente. Todas as outras configurações implicam o uso de GPU (ou seja, Release significa Versão. Modo habilitado para GPU)
    • Você sempre deve selecionar configurações somente de CPU se não tiver instalado os componentes necessários para configurações de GPU

Crie a solução CNTK. Os componentes criados pelo processo de build dependem dos pré-requisitos instalados, para obter detalhes, a página que detalha as Variáveis de Ambiente do Windows deve ser consultada.

Se você criar módulos python observação:

  • Os módulos Python só são criados na Release configuração
  • Isso criará o módulo CNTK Python dentro bindings\python\cntk e também produzirá um pacote (.whl) em uma subpasta Python da pasta de saída de build (por exemplo, x64\Release\Python)
  • Verifique se o caminho inclui a pasta de saída de build (por exemplo, x64\Release) e isso PYTHONPATH inclui o bindings\python diretório. Isso é contrário à configuração mostrada para a instalação do pacote Pip, aqui vamos carregar o módulo CNTK do clone do repositório CNTK, não como um pacote instalado no ambiente do Python, portanto, também a diferença na configuração PYTHONPATH.

Teste da funcionalidade de build do CNTK

Para garantir que o CNTK esteja funcionando corretamente em seu sistema, você pode executar rapidamente um exemplo do tutorial Olá, Mundo – Regressão Logística. Este exemplo treina uma rede simples e pode ser direcionado para usar a CPU ou a GPU, o que ajuda a garantir rapidamente que o CNTK esteja funcionando corretamente.

Abaixo, supomos que o repositório CNTK seja clonado c:\repos\cntk e build\x64\release usado como um subdiretório para o build (Versão).

  • Abrir o Prompt de Comando
  • Forneça o caminho para os binários do CNTK (por meio da Variável de Ambiente ou da sessão do Prompt de Comando usando o primeiro comando abaixo) e altere para o Tutorials\HelloWorld-LogisticRegression diretório:
set PATH=C:\repos\cntk\x64\release;%PATH%
cd C:\repos\cntk\Tutorials\HelloWorld-LogisticRegression

Primeiro tente o exemplo:

cntk configFile=lr_bs.cntk makeMode=false

Se o exemplo for executado, ou seja, se não houver mensagens de erro, você obterá uma saída relacionada primeiro à leitura da configuração, seguida pela saída do treinamento de rede real.

Experimentar o CNTK com GPU

Se você criou o CNTK para uso de GPU, tente usar a GPU executando o seguinte comando:

cntk configFile=lr_bs.cntk makeMode=false deviceId=auto

Perto do início da saída, você deverá ver uma linha confirmando que uma GPU foi usada:

Model has 9 nodes. Using GPU 0.

Observe que a ID da GPU pode ser diferente. O deviceId parâmetro define qual processador usar para computação.

  • deviceId=-1 significa usar a CPU. Valor padrão
  • deviceId=X onde X é um inteiro >=0 significa usar GPU X, ou seja deviceId=0 , significa GPU 0, etc.
  • deviceId=auto significa usar GPU, selecionar GPU automaticamente

Experimentar a API do Python do CNTK

Presumimos que você criou um ambiente do CNTK Python (por meio do script de instalação ou manualmente. Abra um prompt de comando e ative o ambiente do CNTK Python, por exemplo, executando

activate cntk-py35

Como uma rápida alteração de teste na Tutorials\NumpyInterop pasta e em execução python FeedForwardNet.py. Após o treinamento, você deverá ver uma saída semelhante a esta:

Finished Epoch [1]: loss = 0.297748 * 25600 2.383s (10742.8 samples per second)
 error rate on an unseen minibatch 0.040000

Depurando código-fonte CNTK no Visual Studio

  • Se você quiser usar ferramentas do Python, CNTK e Visual Studio, confira aqui
  • Para depurar o BrainScript no CNTK com o Visual Studio, siga as etapas aqui.

Contribuindo para o código CNTK

Se você planeja modificações no código, deve ler as informações sobre Desenvolvimento e Teste.