SO | Teste de CI no master |
---|---|
Datmo é uma ferramenta de gerenciamento de modelo de produção de código aberto para cientistas de dados. Use datmo init
para transformar qualquer repositório em um registro de experimento rastreável. Sincronize usando sua própria nuvem.
Nota : A versão atual do Datmo é uma versão alfa. Isso significa que os comandos estão sujeitos a alterações e mais recursos serão adicionados. Se você encontrar algum bug, sinta-se à vontade para contribuir adicionando problemas para que os contribuidores possam resolvê-los.
Configuração de ambiente de um comando (linguagens, estruturas, pacotes, etc.)
Rastreamento e registro para configuração e resultados do modelo
Controle de versão do projeto (rastreamento do estado do modelo)
Reprodutibilidade do experimento (tarefas repetidas)
Visualizar + exportar histórico de experimentos
(em breve) Painéis para visualizar experimentos
Recurso | Comandos |
---|---|
Inicializando um Projeto | $ datmo init |
Configure um novo ambiente | $ datmo environment setup |
Execute um experimento | $ datmo run "python filename.py" |
Reproduzir um experimento anterior | $ datmo ls (Encontre o ID desejado)$ datmo rerun EXPERIMENT_ID |
Abra um espaço de trabalho | $ datmo notebook (caderno Jupyter)$ datmo jupyterlab (JupyterLab)$ datmo rstudio (RStudio)$ datmo terminal (Terminal) |
Registre o estado do seu projeto (Arquivos, código, ambiente, configuração, estatísticas) | $ datmo snapshot create -m "My first snapshot!" |
Mudar para um estado de projeto anterior | $ datmo snapshot ls (Encontre o ID desejado)$ datmo snapshot checkout SNAPSHOT_ID |
Visualizar entidades do projeto | $ datmo ls (Experiências)$ datmo snapshot ls (instantâneos)$ datmo environment ls (Ambientes) |
Requisitos
Instalação
Olá mundo
Exemplos
Documentação
Transforme um projeto atual
Compartilhamento
Contribuindo para o Datmo
docker (instalado e executado antes de iniciar): Instruções para Ubuntu, MacOS, Windows
$ pip install datmo
Nosso guia hello world inclui a exibição de configurações e alterações do ambiente, bem como a reprodutibilidade do experimento. Está disponível em nossos documentos aqui.
Na pasta /examples
temos alguns scripts que você pode executar para ter uma ideia do datmo. Você pode navegar até Exemplos para saber mais sobre como executar os exemplos e começar seus próprios projetos.
Para tutoriais mais avançados, confira nosso repositório de tutoriais dedicado aqui.
Configurar um ambiente é extremamente fácil no datmo. Basta responder com y
quando questionado sobre a configuração do ambiente durante a inicialização ou usar datmo environment setup
a qualquer momento. Em seguida, siga as instruções resultantes.
Um exemplo é mostrado abaixo, para configurar um TensorFlow Python 2.7 com requisitos/drivers de CPU.
Para obter o guia completo sobre como configurar seu ambiente com datmo, consulte esta página em nossa documentação aqui.
Depois de configurar o ambiente, a maioria dos cientistas de dados deseja abrir o que chamamos de espaço de trabalho (IDE ou ambiente de programação Notebook)
Um exemplo é mostrado abaixo, para abrir rapidamente um Jupyter Notebook e mostrar a importação do TensorFlow funcionando conforme esperado.
Aqui está uma comparação de um modelo típico de regressão logística com um que utiliza Datmo.
Roteiro normal | Com Datmo |
---|---|
# train.py#from sklearn importar conjuntos de dadosdo sklearn importar linear_model como lmfrom sklearn importar model_selection como msfrom sklearn importar externos como ex######iris_dataset = datasets.load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split (X, y)X_trem, X_teste, y_train, y_test = dados#model = lm.LogisticRegression(solver="newton-cg")model.fit(X_train, y_train)ex.joblib.dump(model, 'model.pkl')#train_acc = model.score(X_train , y_train)test_acc = model.score(X_test, y_test)#print(train_acc)print(test_acc)######### | # train.py#from sklearn importar conjuntos de dados do sklearn importar linear_model as lmfrom sklearn importar model_selection as msfrom sklearn importar externos como eximport datmo # linha extra#config = {"solver": "newton-cg"} # linha extra#iris_dataset = conjuntos de dados. load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split(X, y)X_train, X_test, y_train, y_test = dados#model = lm.LogisticRegression(**config)model.fit(X_train, y_train)ex.joblib.dump(model, "model.pkl") #train_acc = model.score(X_train, y_train)test_acc = model.score(X_test, y_test)#stats = {"train_accuracy": train_acc,"test_accuracy": test_acc} # linha extra#datmo.snapshot.create(message="my first snapshot",filepaths=["model.pkl"],config=config, stats=stats) # linha extra |
Para executar o código acima, você pode fazer o seguinte.
Navegue até um diretório com um projeto
$ mkdir MY_PROJECT $ cd MY_PROJECT
Inicialize um projeto datmo
$ datmo init
Copie o código datmo acima em um arquivo train.py
em seu diretório MY_PROJECT
Execute o script como faria normalmente em python
$ python train.py
Parabéns! Você acabou de criar seu primeiro instantâneo :) Agora execute um comando ls para instantâneos para ver seu primeiro instantâneo.
$ datmo snapshot ls
Ao executar datmo init
, o Datmo adiciona um diretório .datmo
oculto que rastreia todas as diversas entidades em jogo. Isso é necessário para renderizar um repositório habilitado para datmo.
Consulte nossa página de conceitos na documentação para ver como as partes móveis funcionam juntas no datmo.
Os documentos completos estão hospedados aqui. Se você deseja contribuir com a documentação (código fonte localizado aqui em /docs
), siga o procedimento descrito em CONTRIBUTING.md
.
Você pode transformar seu repositório existente em um repositório habilitado para datmo com o seguinte comando
$ datmo init
Se a qualquer momento você quiser remover o datmo, basta remover o diretório .datmo
do seu repositório ou executar o seguinte comando
$ datmo cleanup
AVISO LEGAL: Esta não é atualmente uma opção com suporte oficial e funciona apenas para camadas de armazenamento baseadas em arquivo (conforme definido na configuração) como uma solução alternativa para compartilhar projetos datmo.
Embora o datmo seja feito para rastrear alterações localmente, você pode compartilhar um projeto enviando para um servidor remoto fazendo o seguinte (isso é mostrado apenas para git, se você estiver usando outra ferramenta de rastreamento SCM, provavelmente poderá fazer algo semelhante). Se seus arquivos forem muito grandes ou não puderem ser adicionados ao SCM, isso pode não funcionar para você.
O abaixo foi testado apenas em terminais BASH. Se você estiver usando outro terminal, poderá encontrar alguns erros.
$ git add -f .datmo/* # add in .datmo to your scm $ git commit -m "adding .datmo to tracking" # commit it to your scm $ git push # push to remote $ git push origin +refs/datmo/*:refs/datmo/* # push datmo refs to remote
O acima permitirá que você compartilhe resultados e entidades do datmo com você ou outras pessoas em outras máquinas. NOTA: você terá que remover .datmo/ do rastreamento para começar a usar o datmo na outra máquina ou em outro local. Veja as instruções abaixo para ver como replicá-lo em outro local
$ git clone YOUR_REMOTE_URL $ cd YOUR_REPO $ echo '.datmo/*' > .git/info/exclude # include .datmo into your .git exclude $ git rm -r --cached .datmo # remove cached versions of .datmo from scm $ git commit -m "removed .datmo from tracking" # clean up your scm so datmo can work $ git pull origin +refs/datmo/*:refs/datmo/* # pull datmo refs from remote $ datmo init # This enables datmo in the new location. If you enter blanks, no project information will be updated
Se você estiver interessado em compartilhar usando o protocolo datmo, você pode visitar o site da Datmo
P: O que devo fazer se datmo stop --all
não funcionar e eu não conseguir iniciar um novo contêiner devido à realocação de porta?
R: Isso pode ser causado por um contêiner fantasma em execução em outro projeto datmo ou em outro contêiner. Você pode criar uma imagem do docker com uma alocação de porta específica (diferente de 8888), encontrar a imagem do docker, interrompê-la e removê-la usando docker ps --all
e docker conntainer stop <ID>
e docker container rm <ID>
. Ou você pode parar e remover todas as imagens em execução na máquina [NOTA: Isso pode afetar outros processos docker em sua máquina, portanto, PROCEDA COM CUIDADO] docker container stop $(docker ps -a -q)
e docker container rm $(docker ps -a -q)