DEV Community

Lis Barreto
Lis Barreto

Posted on

Jovyans Just Wanna Have Fun: Trabalhando com Jupyter Notebooks, Optuna e MLFlow em Ambiente Conteinerizado

No melhor dos mundos, sempre estamos gerenciando nossos projetos pessoais em ambientes virtuais (salve o bom e velho venv rs), com gerenciadores como Poetry e UV. No entanto, de vez em quando, precisamos ir além.

Futurama

O Desafio

Quando queremos expor diferentes serviços em algumas portas, pode ficar difícil gerenciar tantas abas no terminal Linux. Como resolver essa situação? A resposta é simples e direta: com Docker!

Imagens Docker para Jupyter

Hoje é dia é possível encontrar imagens Docker oficiais para o Jupyter, que podem ser encontradas através desse link

Neste tutorial, usaremos a versão da imagem para SciPy, adicionando alguns ingredientes extras como Optuna e MLFlow.

Estrutura do Diretório

Antes de começarmos, vamos criar a estrutura de diretório necessária. Abaixo está como ficará a árvore de diretórios:

projeto/ ├── notebooks/ ├── requirements.txt ├── start.sh └── Dockerfile 
Enter fullscreen mode Exit fullscreen mode

Configurações Extra do Contêiner

Para temperar o contêiner ao seu gosto, você precisará dos seguintes arquivos:

1. requirements.txt

Este arquivo contém as bibliotecas que você deseja instalar:

xgboost lightgbm catboost optuna mlflow 
Enter fullscreen mode Exit fullscreen mode

2. start.sh

Um script para iniciar os serviços necessários:

#!/bin/bash mlflow ui --host 0.0.0.0 --port 5000 & jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root 
Enter fullscreen mode Exit fullscreen mode

3. Dockerfile

O arquivo Dockerfile que define como construir a imagem:

FROM jupyter/scipy-notebook:latest COPY start.sh /home/jovyan/start.sh COPY requirements.txt . COPY ./notebooks /home/jovyan/work/notebooks USER root RUN chmod +x /home/jovyan/start.sh USER jovyan RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r requirements.txt WORKDIR /home/jovyan/work EXPOSE 8888 EXPOSE 5000 CMD ["/home/jovyan/start.sh"] 
Enter fullscreen mode Exit fullscreen mode

Passo a Passo para Configuração

Agora que você tem todos os arquivos, siga os passos abaixo para configurar seu ambiente:

  1. Crie a pasta local notebooks/. Aqui você pode desenvolver seus notebooks no VS Code e já subí-los pro Jupyter ou criar no Jupyter mesmo e salvar.
  2. Construa a imagem Docker:
 docker build -t ml-jupyter . 
Enter fullscreen mode Exit fullscreen mode
  1. Rode o container montando a pasta:
 docker run -p 8888:8888 -p 5000:5000 -v "$(pwd)/notebooks":/home/jovyan/work ml-jupyter 
Enter fullscreen mode Exit fullscreen mode
  1. Acesse o Jupyter pelo navegador (link no terminal).

Lembre-se que tudo que for salvo no Jupyter estará disponível na sua pasta local, inclusive arquivos com os artefatos do modelo gerados pelo MLFlow.

Agora sim, podemos dar vida aos projetinhos pessoais sem perder nenhum detalhe!

Futurama

Referências

Imagens Docker Disponíveis no Jupyter

MLflow with Optuna: Hyperparameter Optimization and Tracking

Top comments (0)