rubicon-ml é uma ferramenta de ciência de dados que captura e armazena informações de treinamento e execução de modelos, como parâmetros e resultados, de forma repetível e pesquisável. Sua integração git
associa essas entradas e saídas diretamente ao código do modelo que as produziu para garantir total auditabilidade e reprodutibilidade tanto para desenvolvedores quanto para partes interessadas. Durante a experiência, o painel facilita a exploração, a filtragem, a visualização e o compartilhamento do trabalho gravado.
ps Se você está procurando Rubicon, a ponte Java/ObjC Python, visite isto.
rubicon-ml é composto de três partes:
fsspec
dash
intake
Use rubicon_ml
para capturar entradas e saídas do modelo ao longo do tempo. Ele pode ser facilmente integrado a modelos ou pipelines Python existentes e suporta registro simultâneo (para que vários experimentos possam ser registrados em paralelo) e comunicação assíncrona com S3 (para que leituras e gravações de rede não sejam bloqueadas).
Enquanto isso, revise periodicamente os dados registrados no painel Rubicon para orientar o processo de ajuste do modelo na direção certa. O painel permite identificar tendências rapidamente explorando e filtrando os resultados registrados e visualiza como as entradas do modelo impactaram as saídas do modelo.
Quando o modelo está pronto para revisão, o Rubicon facilita o compartilhamento de subconjuntos específicos de dados com revisores do modelo e partes interessadas, fornecendo-lhes o contexto necessário para uma revisão e aprovação completa do modelo.
Confira os cadernos interativos neste fichário para experimentar rubicon_ml
você mesmo.
Aqui está um exemplo simples:
from rubicon_ml import Rubicon
rubicon = Rubicon (
persistence = "filesystem" , root_dir = "/rubicon-root" , auto_git_enabled = True
)
project = rubicon . create_project (
"Hello World" , description = "Using rubicon to track model results over time."
)
experiment = project . log_experiment (
training_metadata = [ SklearnTrainingMetadata ( "sklearn.datasets" , "my-data-set" )],
model_name = "My Model Name" ,
tags = [ "my_model_name" ],
)
experiment . log_parameter ( "n_estimators" , n_estimators )
experiment . log_parameter ( "n_features" , n_features )
experiment . log_parameter ( "random_state" , random_state )
accuracy = rfc . score ( X_test , y_test )
experiment . log_metric ( "accuracy" , accuracy )
Em seguida, explore o projeto executando o painel:
rubicon_ml ui --root-dir /rubicon-root
Para uma visão geral completa, visite a documentação. Se você tiver sugestões ou encontrar um bug, abra um problema.
A biblioteca Python está disponível no Conda Forge via conda
e PyPi via pip
.
conda config --add channels conda-forge
conda install rubicon-ml
ou
pip install rubicon-ml
O projeto usa conda para gerenciar ambientes. Primeiro, instale o conda. Em seguida, use conda para configurar um ambiente de desenvolvimento:
conda env create -f environment.yml
conda activate rubicon-ml-dev
Finalmente, instale rubicon_ml
localmente no ambiente recém-criado.
pip install -e " .[all] "
Os testes são separados em testes unitários e de integração. Eles podem ser executados diretamente no ambiente de desenvolvimento ativado por meio de pytest tests/unit
ou pytest tests/integration
. Ou simplesmente executando pytest
para executar todos eles.
Nota : alguns testes de integração são marked
intencionalmente para controlar quando são executados (ou seja, não durante o CICD). Esses testes incluem:
Testes de integração que gravam em sistemas de arquivos físicos – locais e S3. Os arquivos locais serão gravados em ./test-rubicon
em relação ao local onde os testes são executados. Um caminho S3 também deve ser fornecido para executar esses testes. Por padrão, esses testes estão desabilitados. Para habilitá-los, execute:
pytest -m "write_files" --s3-path "s3://my-bucket/my-key"
Testes de integração que executam notebooks Jupyter. Esses testes são um pouco mais lentos do que o restante dos testes do conjunto, pois precisam iniciar servidores Jupyter. Por padrão, eles estão habilitados. Para desativá-los, execute:
pytest -m "not run_notebooks and not write_files"
Nota : Ao simplesmente executar pytest
, -m "not write_files"
é o padrão. Portanto, precisamos aplicá-lo também ao desabilitar os testes do notebook.
Instale e configure o pré-commit para executar automaticamente black
, flake8
e isort
durante os commits:
pre-commit install
para configurar os scripts do git hook Agora pre-commit
será executado automaticamente no git commit e garantirá um formato de código consistente em todo o projeto. Você pode formatar sem confirmar por meio pre-commit run
ou pular essas verificações com git commit --no-verify
.