Prática DevOps com Docker para Machine Learning
  • Prática de DevOps com Docker para Machine Learning
  • Autores e Agradecimentos
  • Uso do Livro
  • Contribua com o Livro
  • Licença
  • Organização do Livro
  • 1. Introdução
    • 1.1 Máquinas Virtuais e Contêineres
    • 1.2 DevOps e Docker
    • 1.3 Configuração do Ambiente - Python
    • 1.4 Configuração do Ambiente - Docker
    • 1.5 Dockerfile, Imagem e Contêiner Docker
    • 1.6 Docker Hub e Comandos Adicionais
  • 2. Desenvolvimento
    • 2.1 Do notebook para aplicação - parte 1
    • 2.2 Do notebook para aplicação - parte 2
    • 2.3 Do notebook para aplicação - parte 3
  • 3. Produção
    • 3.1 Desenvolvimento vs Produção: o fim ou o início?
    • 3.2 Ambiente de Produção - parte 1
    • 3.3 Ambiente de Produção - parte 2
    • 3.4 Ambiente de Produção - parte 3
  • 4. Monitoramento
    • 4.1 Introdução
    • 4.2 Configurando o Servidor de Monitoramento
    • 4.3 Monitorando Servidores do Ambiente de Produção
    • 4.4 Comandos de Verificação do Nagios
    • 4.5 Criando Verificações Mais Específicas
    • 4.6 Criando Alertas
    • 4.7 Recuperando de Problemas
    • 4.8 Verificação de Contêineres via NRPE
  • 5. Infraestrutura como Código e Orquestração
    • 5.1 Introdução
    • 5.2 Orquestração com Docker Compose
    • 5.3 Orquestração com Kubernetes
  • 6. Integração Contínua
    • 6.1 Introdução
    • 6.2 Controle de Versão
    • 6.3 Configurando um repositório no GitLab
    • 6.4 Branch e merge
    • 6.5 Pipeline de Integração Contínua com GitLab CI/CD
  • 7. Entrega Contínua
    • 7.1 Introdução
    • 7.2 Implantação automática no Docker Hub
    • 7.3 Implantação automática no Heroku
    • 7.4 Implantação automática no Google Kubernetes Engine (GKE)
    • 7.5 Testando tudo junto
  • 8. Model serving
    • 8.1 Introdução
    • 8.2 Model serving com mlserver
    • 8.3 CI/CD com GitLab e mlserver
    • 8.4 Testando tudo junto
  • 9. Model serving batch
    • 9.1 Introdução
    • 9.2 Spark
    • 9.3 Airflow
    • 9.4 Testando tudo junto
  • 10. MLOps com mlflow
    • 10.1 Introdução
    • 10.2 Visão geral do MLflow
    • 10.3 Configuração do MLflow
    • 10.4 Testando MLflow
  • 11. MLOps com Kubeflow
    • 11.1 Visão geral do Kubeflow
    • 11.2 Configuracão
    • 11.3 Kubeflow Pipeline
    • 11.4 Kserve
    • 11.5 Testando tudo junto
  • 12. Conclusão
    • Conclusão
Powered by GitBook
On this page
  • Instalando o interpretador
  • Ambientes virtuais
  1. 1. Introdução

1.3 Configuração do Ambiente - Python

Previous1.2 DevOps e DockerNext1.4 Configuração do Ambiente - Docker

Last updated 3 months ago

Após uma época em que os computadores ocupavam salas enormes e eram compartilhados, o surgimento do computador pessoal trouxe uma característica que normalmente não pensamos muito, e que vai além da sua maior presença nos lares e negócios: a personalização.

Hoje é comum que cada indivíduo tenha seu próprio computador (às vezes mais do que um, se contarmos os smartphones e tablets), e com isso surge a necessidade - e o desejo - de acrescentarmos nosso toque pessoal, seja na escolha das cores e fundo de tela, até a opção por ferramentas e sistemas operacionais. Isso faz muito sentido se considerarmos que passamos cada vez mais horas em frente à tela do computador. Por que não deixar tudo com nosso toque pessoal?

Assim também vai acontecer no desenvolvimento de software. O ambiente de desenvolvimento é o local onde o programador passa a maior parte de seu tempo, realizando atividades de edição de código, documentação, teste, depuração e experimentação. Naturalmente, cada desenvolvedor terá sua própria escolha de sistema operacional, linguagem, configurações de cores, além das ferramentas de sua preferência. Assim, seria impossível ditar um conjunto de regras e escolhas que sirva para todo desenvolvedor. Isso para não mencionar algumas (e das quais não queremos tomar partido!)

Devemos portanto nos ater ao mínimo necessário para que as demais atividades deste livro possam ser realizadas sem conflitos ou dificuldades. Como este livro tem seu foco em Machine Learning, vamos configurar um ambiente de desenvolvimento que permita desenvolver sistemas baseados em Machine Learning, um mundo onde Python reina absoluta .

Instalando o interpretador

A maioria dos sistemas operacionais já vem com alguma (ou mais de uma) versão do Python instalada e pronta para usar. Porém, as chances de que essa versão seja antiga, incompatível com alguma biblioteca mais moderna, são grandes. Portanto, é uma boa ideia instalar uma nova versão.

O problema é que manter duas (ou mais) versões de um mesmo interpretador no mesmo ambiente pode gerar conflitos. Há inúmeras formas de se resolver isso, , mas aqui seguiremos um caminho mais simples: .

A instalação é simples. Para Linux e Mac há instruções para isso na . Uma opção que simplifica a instalação é utilizar o . Utilizando o pyenv-installer no Linux, todo o ambiente já é configurado, inclusive a instalação do ambiente virtual descrito abaixo.

Para Windows há um porte da ferramenta, chamado . Há instruções de instalação na . No caso do Windows, para facilitar a execução dos comandos, recomenda-se o uso do PowerShell ou o . Verifique sempre as configurações das variáveis de ambiente necessárias para o correto funcionamento dos comandos.

Depois que a instalação tiver sido bem-sucedida, execute o seguinte comando (procure seguir sempre a mesma versão dos exemplos, pois os códigos deste livro estão todos testados nesta versão. Caso queira mudar, faça-o por sua própria conta e risco :-)

pyenv update
pyenv install 3.10.2

Se tudo der certo, ao término da instalação será possível verificar quais interpretadores estão instalados em sua máquina. Execute o seguinte comando:

pyenv versions

O resultado deve ser algo parecido com o seguinte:

* system (set by /Users/fulano/...)
  3.10.2
  3.8.0
  3.7.2

Neste caso, existem quatro versões listadas, a do sistema (marcada com asterisco como sendo a vigente), e outras três.

Vamos trocar para que o sistema comece a utilizar a versão mais recente. Execute o comando:

pyenv global 3.10.2

Teste, executando:

python -V

O resultado deve ser Python 3.10.2, indicando que a versão instalada é a que está sendo reconhecida pelo sistema operacional.

É possível utilizar essa ferramenta para manter múltiplas versões do Python instaladas, adicionar novas, remover, entre outras tarefas. Consulte a página do projeto para mais detalhes sobre como fazer tudo isso. Para este livro, já temos o necessário para seguir adiante.

Ambientes virtuais

Mas não iremos entrar no mérito desse assunto, e sim dizer que há um jeito simples de evitar alguns dos problemas das diferentes versões do interpretador/bibliotecas: o uso de ambientes virtuais. Em um resumo simplificado, um ambiente virtual isola versões do interpretador e das bibliotecas. Assim, se um projeto A utiliza uma determinada versão do Python e da biblioteca X, e um projeto B utiliza uma outra versão do Python e da biblioteca X, e essas versões não são compatíveis, basta criar um ambiente virtual distinto para cada uma.

Após a instalação, podemos criar novos ambientes à vontade. Vamos criar um para todos os exemplos deste curso, com o seguinte comando:

pyenv virtualenv 3.10.2 devopsml

Sem entrar em muitos detalhes sobre o comando, podemos identificar duas coisas importantes:

  • 3.10.2 é a versão do Python desse ambiente virtual

  • devopsml é o nome do nosso ambiente virtual

Se o comando for bem-sucedido, deve ter sido criado um novo ambiente. Para verificar, execute:

pyenv virtualenvs

O ambiente devopsml deve aparecer na lista que for exibida, sendo também possível identificar a versão do python associada.

Agora vamos ativar nosso ambiente virtual recém-criado. Execute o seguinte comando:

pyenv activate devopsml

Se tudo der certo, o prompt do terminal deve passar a mostrar o nome do ambiente entre parêntesis, mais ou menos assim:

(devopsml) daniel@MacBook-Pro ~ % _

Para sair do ambiente virtual, pasta executar

(devopsml) daniel@MacBook-Pro ~ % pyenv deactivate

O que esse comando faz é utilizar outro módulo, o venv, que também cria um ambiente virtual. O comando completo é o seguinte:

python -m venv <nome da pasta>

Normalmente, o nome da pasta é .venv, que ficará dentro do diretório do projeto. Portanto, se quiser construir o ambiente à mão ao invés de usar nosso script, rode o seguinte comando dentro do seu projeto:

python -m venv .venv

Para ativar esse ambiente, é só executar o seguinte:

.\.venv\Scripts\Activate.ps1

A partir desse momento, todos os módulos que instalar ficarão restritos a esse ambiente.

Parabéns, se chegou até aqui já tem o que precisa para começar a desenvolver os exemplos do livro.

IMPORTANTE: sempre que for trabalhar em um novo projeto, verifique se o ambiente virtual está ativado, caso contrário você pode estar trabalhando no ambiente real (interpretador e bibliotecas instaladas no sistema), no qual não queremos mexer para evitar conflitos.

Outra coisa que pode ser bastante útil é criar um ambiente separado para trabalhar. É comum que, em uma mesma máquina, você precise trabalhar em vários projetos Python. Também é comum que cada projeto tenha suas próprias características. Apesar de, em tese, ser possível que todo código Python seja executável pela versão mais recente do interpretador ou das bibliotecas, isso nem sempre é verdade, graças à , um sonho tão distante em muitos cenários.

Faremos isso com um plugin do pyenv, chamado pyenv-virtualenvwrapper. Instruções para instalação podem ser encontradas na .

Em máquinas Windows, até o momento da escrita deste capítulo, não existe uma forma simples de instalar o virtualenvwrapper como plugin do pyenv. Para facilitar, criamos um . Basta instalá-lo em sua máquina e utilizá-lo conforme as instruções que estão no próprio arquivo.

brigas que parecem eternas
em termos de popularidade
incluindo o uso do Docker
pyenv
página do projeto
pyenv-installer
pyenv-win
página do projeto
Git Bash
retrocompatibildade
página do projeto
comando customizado para o Powershell