Configuração CNTK no Windows
Se pretender construir manualmente o CNTK a partir do código fonte do Windows utilizando o Visual Studio 2017, esta página é para si.
Se procura outro tipo de suporte para configurar um ambiente de construção CNTK ou instalar cNTK no seu sistema, deve ir aqui em vez disso.
Nota
Esta página assume que está a tentar construir o ramo principal da CNTK.
64 bits de SO
A CNTK requer uma instalação windows de 64 bits. Testámos o processo de construção em Windows 8.1, Windows 10, e Windows Server 2012 R2 e mais tarde. Outros ambientes não são oficialmente apoiados. Para problemas de compatibilidade, verifique a configuração de Construção e Teste de Produção da CNTK.
Variáveis e Componentes ambientais
A construção de CNTK no seu sistema requer a definição e configuração de várias variáveis ambientais. Uma visão geral das variáveis ambientais utilizadas pela construção do Windows da CNTK pode ser encontrada nesta página. Além disso, esta página fornece uma visão geral dos componentes necessários e opcionais para a construção da CNTK, bem como a sua localização 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 Comunitária do Visual Studio 2017 é suficiente para construir a CNTK.
Durante o processo de instalação, selecione "Plataforma Universal do Windows desenvolvimento", "desenvolvimento do ambiente de trabalho NET", "Desenvolvimento de ambientes de trabalho com C++" e cargas de trabalho de desenvolvimento de "Python":
Além disso, no ecrã de componentes individuais certifique-se de adicionar a versão 15.4 v14.11 e o 'Visual C++ para uWP' à sua instalação:
Por último, adicione 'Windows 10 SDK (10.0.16299.0) para desktop C++ [x86 e x64]":
Instalação do Estúdio Visual Pré-Existente 2017
É necessário ter a versão 'VC++ 2017 15.4 v14.11', 'Visual C++ para UWP' e 'Windows 10 SDK (10.0.16299.0) para Desktop C++ [x86 e x64]» instalado no seu sistema. Para verificar a abertura do Windows "Painel de Controlo -> Programas -> Programas e Funcionalidades" e selecione 'Visual Studio Community 2017' da lista de programas instalados. Isto irá recomeçar a configuração do Visual Studio e permite-lhe certificar-se de que os componentes acima referidos estão instalados no seu sistema (ver imagem acima).
Nota
Se VS2017INSTALLDIR
a variável ambiente não foi definida pelo instalador do Estúdio Visual, deite-a manualmente. O diretório de instalação exato depende tanto da versão (2017 neste caso) como da oferta (Comunidade, Empresa, etc) do Visual Studio, de acordo com o seguinte padrão: C:\Program Files (x86)\Microsoft Visual Studio\<version>\<offering>
.
Para visual Studio 2017 edição enterprise , corra:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
Para visual Studio 2017 Edição comunitária, corra:
setx VS2017INSTALLDIR "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community"
Git
Git é obrigado a trabalhar com a base de código CNTK. Pode utilizar as seguintes ferramentas:
Git para Windows. Este é o cliente padrão da linha de comando para Git, que usaremos nesta página para descrever o alistamento no repositório CNTK.
Um cliente Git está disponível como parte da instalação do Visual Studio 2017. Leia o blog post Microsoft Application Lifecycle Management sobre a utilização do cliente Git incorporado.
Alistar-se no repositório CNTK GitHub
Aqui assumimos que instalou Git para windows. Assumimos que instalou o Git utilizando as opções padrão no instalador Git (Especialmente 'Use Git a partir do Pedido de Comando do Windows' e com a opção "Checkout Windows-style, comprometa terminações de linha estilo UNIX" no pedido de "Configuração de terminações de linha" ativado.
Crie um clone do código fonte CNTK no c:\repos\cntk
diretório. Se preferir um local diferente, terá de ajustar os comandos em conformidade.
Abra uma concha de comando de janelas padrão, e execute estes comandos
c: && md \repos && cd \repos
git clone --recursive https://github.com/Microsoft/cntk
cd cntk
Isto coloca todo o código fonte necessário para uma construção padrão no seu sistema. Se planeia fazer modificações no código CNTK, deve ler as informações sobre Desenvolvimento e Teste.
O submodule Multiverso é utilizado para permitir a formação de DataParallelASGD . Se não precisar de suporte dataParallelASGD, adicione a variável ambiental CNTK_ENABLE_ASGD e desfaça o seu valor. Por exemplo, execute isto num pedido cmd e, em seguida, reabra as suas conchas CMD e Visual Studio para recolher a mudança:
setx CNTK_ENABLE_ASGD false
MKL
A biblioteca de matemática CNTK padrão é a Intel Math Kernel Library (Intel MKL). Siga esta página para instalá-lo
MKL-DNN
Baixe a fonte MKL-DNN e construa com MKL_PATH como caminho-alvo. Verifique as instruções de construção na Configuração MKL-DNN no Windows
Defina a variável
MKL_PATH
ambiental 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 Microsoft MPI (MS-MPI) desta página de descarregamento, marcada simplesmente como "Versão 7" no título da página. Clique no botão Descarregar e, em seguida, selecione ambos msmpisdk.msi
e MSMpiSetup.exe
.
Impulsionar
Siga estes passos para instalar a Biblioteca Boost no seu sistema:
- Descarregue e instale a versão 1.60 do Boost (precisa dos
msvc-14.0
binários) a partir deste local de descarregamento na Sourceforge. - Defina a variável
BOOST_INCLUDE_PATH
ambiental para a sua instalação Boost, por exemplo:
setx BOOST_INCLUDE_PATH c:\local\boost_1_60_0-msvc-14.0
- Definir a variável
BOOST_LIB_PATH
ambiental 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 Boost no Visual Studio, pode instalar um corredor para testes Boost em Visual Studio a partir da Visual Studio Gallery.
Protobuf
Precisa de uma versão do Protobuf 3.1.0 compilada para a CNTK. Pode compilar esta versão sozinho, ou utilizar uma versão já (pré-compilada) de Protobuf 3.1.0 (descrito nesta página). Se quiser construir a biblioteca Protobuf para a CNTK no seu sistema, pode encontrar os detalhes aqui
Descarregue o ficheiro ZIP contendo a versão pré-recompensada do Protobuf para CNTK a partir deste local
Extraia o arquivo para uma pasta no seu disco local, por exemplo, para C:\local\protobuf-3.1.0-vs15
e definir a variável PROTOBUF_PATH
ambiente que aponta para esse local, por exemplo:
setx PROTOBUF_PATH c:\local\protobuf-3.1.0-vs15
Pacotes Específicos da GPU
Esta secção descreve os pacotes que precisa de configurar para que a CNTK aproveite os GPUs da NVIDIA.
Se NÃO pretender utilizar quaisquer GPUs com CNTK e contar apenas com o CPU, poderá saltar diretamente para a secção geral seguinte. Caso contrário, dirija-se a esta página.
Defina a variável CUDNN_PATH
ambiental que aponta para esse local, por exemplo:
setx CUDNN_PATH C:\local\cudnn-9.0-v7.0\cuda
Defina a variável CUB_PATH
ambiental que aponta para esse local, por exemplo:
setx CUB_PATH c:\local\cub-1.7.4\
Opcional. O SWIG.
Se quiser aproveitar a CNTK da Python, terá de instalar o SWIG. SWIG é também um requisito para construir as bibliotecas de avaliação CNTK (para C#/.NET ou Java).
Por favor, descarregue a versão SWIG 3.0.10
deste site.
Extraia o arquivo para uma pasta no seu disco local, por exemplo, para C:\local\swigwin-3.0.10
e definir a variável SWIG_PATH
ambiente que aponta para esse local, por exemplo:
setx SWIG_PATH C:\local\swigwin-3.0.10
Verificação rápida da instalação: Se seguir as instruções acima e utilizar os mesmos caminhos, o comando dir C:\local\swigwin-3.0.10\swig.exe
terá sucesso e mostrará um ficheiro.
Opcional. OpenCV
CNTK 2.2 requer que o open source Imagem Digitalizada (OpenCV) seja instalado, mas é opcional para CNTK 2.3. Siga esta página para mais passos.
Defina a variável OPENCV_PATH_V31
ambiente que aponta para a pasta de construção OpenCV, por exemplo.
setx OPENCV_PATH_V31 c:\local\Opencv3.1.0\build
Verificação rápida da instalação: Se seguir as instruções acima e utilizar os mesmos caminhos, o comando dir C:\local\Opencv3.1.0\build
terá sucesso.
Opcional. zlib e libzip
Se planeia construir o Leitor de Imagem CNTK , necessita de bibliotecas de zlib e libzip .
zlib e libzip
O ZLib e o LibZip são distribuídos em código fonte, terá de recompiler estes pacotes, pode também utilizar uma versão pré-recompensada que criamos para sua conveniência (descrita nesta secção). Para construir as bibliotecas por si mesmo, você mesmo encontra instruções detalhadas aqui
Descarregue o ficheiro ZIP que contém a versão pré-recompensada da biblioteca de compressão libzip/zlib para cNTK a partir deste local
Extraia o arquivo para uma pasta no seu disco local, por exemplo, para C:\local\zlib-vs15
e definir a variável ZLIB_PATH
ambiente que aponta para esse local, por exemplo:
setx ZLIB_PATH c:\local\zlib-vs15
Verificação rápida da instalação: Se seguir as instruções acima e utilizar os mesmos caminhos, o comando dir C:\local\zlib-vs15\bin
terá sucesso e mostrará um par de DLLs.
Opcional. Instalação Anaconda Python
Se planeia construir cNTK com suporte Python, instale SWIG se ainda não o fez. Além disso, vai precisar de um ambiente Python. Usamos Anaconda Python para a nossa instalação python padrão.
Se não tiver uma instalação Anaconda: instale Anaconda Python para Windows.
Pode seguir a configuração padrão dada no programa de instalação (InstallationType=JustMe; AddToPath=Não; RegisterPython=N). No seguinte, assumimos que instalou Python Anaconda3 4.1.1
em C:\local\Anaconda3-4.1.1-Windows-x86_64
.
Opcional. CNTK UWP Build
Nota
Novo na versão 2.1 da CNTK.
Se pretender construir a Biblioteca de Avaliação CNTK para a UWP, tem de seguir os passos de instalação adicionais descritos aqui.
Ambientes CNTK Python
CNTK suporta Python 2.7, Python 3.5 e Python 3.6. Recomendamos que crie um ambiente dedicado na sua instalação Python para trabalhar com a CNTK. Desta forma, a CNTK e os pacotes de suporte instalados não terão impacto em nenhum outro projeto Python. Fornecemos vários ficheiros (yml
ficheiros) que contêm a descrição dos pacotes Python necessários. Os pacotes estão localizados no diretório dentro do scripts\install\windows
seu clone CNTK. Por favor, selecione o ficheiro correspondente à sua versão Python direcionada.
Versão de 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 num ambiente chamado cntk-py35
. Se quiser um nome ambiente diferente, ajuste os seguintes passos em conformidade. Se quiser criar um ambiente Python 2.7 ou Python 3.6, ajuste o nome do YML para combinar com a versão Python que pretende utilizar.
O seguinte pressupõe que clonou o código fonte CNTK do GitHub para o diretório c:\repos\cntk
.
- Para criar um novo ambiente conda (por exemplo
cntk-py35
) e ativá-lo, executar os seguintes comandos a partir do 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 tiver um ambiente (por exemplo cntk-py35
) pode atualizá-lo com os mais recentes pacotes necessários 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 ambientais da CNTK para Python
Antes de iniciar a construção da CNTK e construir as bibliotecas Python para a CNTK, precisa definir/definir variáveis ambientais CNTK_PY.._PATH
e PYTHONPATH
CNTK_PY. _PATH
Configurar variáveis ambientais para o 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 seguisse 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 para as CNTK_PY36_PATH
variáveis , CNTK_PY35_PATH
ou CNTK_PY27_PATH
ambiente pode ser determinado por correr em conda ..activate cmd.exe [name-or-path-of-your-environment]
PYTHONpath
PYTHONPATH
define os caminhos para os lugares python vai procurar módulos para importar. Se você construir CNTK, você precisa adicionar o caminho de saída do processo de construção a esta variável ambiente. Se clonou a CNTK nisto c:\repos\cntk
será
setx PYTHONPATH c:\repos\cntk\bindings\python;%PYTHONPATH%
Opcional. Java
Para construir as ligações Java para a biblioteca de avaliação CNTK, instale a ferramenta SWIG se ainda não o tiver feito. Além disso, é necessário um Kit de Desenvolvimento de Java (JDK). Atualmente utilizamos JDK 8 de 64 bits (Versão JDK 1.8.0_131).
Desaprote a variável ambiente JAVA_HOME apontar para o diretório da instalação java. A seguinte definição pressupõe que instalou JDK 1.8.0_131 a C:\local\jdk1.8.0_131:
setx JAVA_HOME "c:\local\jdk1.8.0_131"
Desinstalar versões CNTK anteriores
Se anteriormente instalou qualquer versão do pacote CNTK Python na sua máquina, desinstale-a removendo primeiro quaisquer caminhos relacionados com A CNTK na variável ambiente PYTHONPATH. Fazer: echo %PYTHONPATH%
ver o seu valor atual e, em seguida, usar o setx
comando para definir PYTHONPATH de modo a que os caminhos relacionados com a CNTK se foram. Se isso deixa o PYTHONPATH vazio, que assim seja.
Faça a desinstalação: pip uninstall cntk
Isto conclui a parte de instalação. Vamos continuar com a construção da CNTK
Edifício CNTK
Atualmente existe um problema de compatibilidade entre CUDA 9 e VCTools padrão no Visual Studio 2017. A CNTK requer VCTools 14.11 para construir com CUDA 9. Para fazê-lo:
- Alerta de comando aberto
- chamada "%VS2017INSTALLDIR%\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.11
Isto irá definir os VCTools para a versão compatível com CUDA 9. A partir do Pedido de Comando, inicie a CNTK.sln na raiz do projeto CNTK clonado do GitHub. Se a CNTK.sln funcionar com a versão padrão incompatível cuda9 de VCTools, haverá erros de construção como "1>c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt/host_config.h(133): erro fatal C1189: #error: -- versão não suportada do Microsoft Visual Studio! Apenas as versões 2012, 2013, 2015 e 2017 são apoiadas!"
Se apenas mudou e a variável ambiental, deverá fechar qualquer instância do Estúdio Visual já aberta, caso contrário o conteúdo de variáveis ambientais alteradas não será refletido dentro do Visual Studio.
- Clique com o botão direito na Solução CNTK em Explorador de Soluções e selecione
Properties
- Na janela aberta selecione
Configuration Properties
e pressioneConfiguration Manager...
o botão - Em Configuration Manager selecione a configuração desejada:
- Depuração ou Lançamento
- GPU ou CPU apenas. As configurações apenas do CPU são explicitamente nomeadas. Todas as outras configurações implicam a utilização da GPU (isto é,
Release
significa Libertação. Modo ativado pela GPU) - Deve sempre selecionar configurações apenas para CPU se NÃO tiver instalado os componentes necessários para as configurações da GPU
Construa a solução CNTK. Os componentes criados pelo processo de construção dependem dos pré-requisitos instalados, para mais detalhes que a página detalhando variáveis do Ambiente do Windows deve ser consultada.
Se construir módulos Python nota:
- Os módulos Python são criados apenas na configuração
Release
- Isto irá construir o módulo CNTK Python no seu interior
bindings\python\cntk
e também produzirá um pacote (.whl
) numa sub-dobragemPython
da sua pasta de saída de construção (por exemplo,x64\Release\Python
) - Certifique-se de que o seu percurso inclui a pasta de saída de construção (por exemplo,
x64\Release
), e issoPYTHONPATH
inclui obindings\python
diretório. Isto é contrário à configuração mostrada para a instalação do pacote Pip, aqui vamos carregar o módulo CNTK a partir do clone do repositório CNTK, não como um pacote instalado no seu ambiente Python, daí também a diferença na configuraçãoPYTHONPATH
.
Teste da funcionalidade de construção da CNTK
Para garantir que a CNTK está a funcionar corretamente no seu sistema, pode rapidamente executar um exemplo a partir do tutorial de Hello World - Regression Logística. Este exemplo treina uma rede simples e pode ser direcionado para a utilização de CPU ou GPU, o que ajuda a garantir rapidamente o bom funcionamento da CNTK.
Abaixo assumimos que o repositório CNTK é clonado c:\repos\cntk
e build\x64\release
foi usado como um sub-diretório para a construção (Lançamento).
- Alerta de comando aberto
- Fornecer o caminho para os binários CNTK (via Variável ambiente ou para a sessão de solicitação de comando usando o primeiro comando abaixo) e alterar 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 a amostra correr, ou seja, se não houver mensagens de erro, obterá uma saída relacionada primeiro com a leitura da configuração, seguida da saída do treino de rede real.
Experimentando cNTK com GPU
Se construiu o CNTK para utilização gpu, tente utilizar a GPU executando o seguinte comando:
cntk configFile=lr_bs.cntk makeMode=false deviceId=auto
Perto do início da saída deverá ver uma linha confirmando a utilização de uma GPU:
Model has 9 nodes. Using GPU 0.
Note que o ID da GPU pode ser diferente. O deviceId
parâmetro define o que o processador usar para a computação.
-
deviceId=-1
significa usar CPU. Valor predefinido -
deviceId=X
onde X é um inteiro >=0 significa utilização GPU X, ou sejadeviceId=0
, GPU 0, etc. -
deviceId=auto
significa usar GPU, selecione GPU automaticamente
Experimentando a CNTK Python API
Assumimos que criou um ambiente CNTK Python (através do script de instalação ou manualmente. Abra um pedido de comando e ative o seu ambiente CNTK Python, por exemplo, executando
activate cntk-py35
Como uma rápida mudança de teste na Tutorials\NumpyInterop
pasta e correr python FeedForwardNet.py
. Após o treino 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 em Estúdio Visual
- Se quiser usar Python Tools, CNTK e Visual Studio, consulte aqui
- Para depurar o BrainScript em CNTK com o Visual Studio, siga os passos aqui.
Contribuindo para o código CNTK
Se planeia modificações no código, deve ler as informações sobre Desenvolvimento e Teste.