Partilhar via


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":

im1

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:

im1

Por último, adicione 'Windows 10 SDK (10.0.16299.0) para desktop C++ [x86 e x64]":

im1

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:

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

    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.10deste 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 (ymlficheiros) 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_PATHvariáveis , CNTK_PY35_PATHou 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 selecioneProperties
  • Na janela aberta selecione Configuration Properties e pressione Configuration 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-dobragem Python 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 isso PYTHONPATH inclui o bindings\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ção PYTHONPATH.

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 seja deviceId=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.