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":
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:
Por fim, adicione 'Windows 10 SDK (10.0.16299.0) para Desktop C++ [x86 e x64]':
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:
Git para Windows. Este é o cliente de linha de comando padrão para Git, que usaremos nesta página para descrever o registro no repositório CNTK.
Um cliente Git está disponível como parte da instalação do Visual Studio 2017. Leia a postagem no blog Gerenciamento de Ciclo de Vida do Aplicativo da Microsoft sobre como usar o cliente Git interno.
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.10
deste 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_PATH
variáveis , CNTK_PY35_PATH
ou 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 selecione
Properties
- Na janela aberta, selecione
Configuration Properties
e pressione oConfiguration 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 subpastaPython
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 issoPYTHONPATH
inclui obindings\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çãoPYTHONPATH
.
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 sejadeviceId=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.