操作系统 | master 上的 CI 测试 |
---|---|
Datmo是一款面向数据科学家的开源生产模型管理工具。使用datmo init
将任何存储库转变为可跟踪的实验记录。使用您自己的云同步。
注意:Datmo 的当前版本是 alpha 版本。这意味着命令可能会发生变化并且将添加更多功能。如果您发现任何错误,请随时通过添加问题来贡献,以便贡献者可以解决它们。
一套命令环境设置(语言、框架、包等)
跟踪和记录模型配置和结果
项目版本控制(模型状态跟踪)
实验重现性(重新运行任务)
可视化+导出实验历史记录
(即将推出)可视化实验的仪表板
特征 | 命令 |
---|---|
初始化项目 | $ datmo init |
设置新环境 | $ datmo environment setup |
进行实验 | $ datmo run "python filename.py" |
重现之前的实验 | $ datmo ls (查找所需的 ID)$ datmo rerun EXPERIMENT_ID |
打开工作区 | $ datmo notebook (Jupyter 笔记本)$ datmo jupyterlab (JupyterLab)$ datmo rstudio (RStudio)$ datmo terminal (终端) |
记录您的项目状态 (文件、代码、环境、配置、统计信息) | $ datmo snapshot create -m "My first snapshot!" |
切换到以前的项目状态 | $ datmo snapshot ls (查找所需的 ID)$ datmo snapshot checkout SNAPSHOT_ID |
可视化项目实体 | $ datmo ls (实验)$ datmo snapshot ls (快照)$ datmo environment ls (环境) |
要求
安装
你好世界
示例
文档
改造当前项目
分享
为 Datmo 做出贡献
docker(启动前安装并运行):Ubuntu、MacOS、Windows 的说明
$ pip install datmo
我们的 hello world 指南包括显示环境设置和更改,以及实验的再现性。它可以在我们的文档中找到。
在/examples
文件夹中,我们有一些脚本,您可以运行来感受 datmo。您可以导航到示例以了解有关如何运行示例并开始使用您自己的项目的更多信息。
有关更高级的教程,请在此处查看我们的专用教程存储库。
在 datmo 中设置环境非常容易。当初始化期间询问环境设置时,只需用y
进行响应,或者随时使用datmo environment setup
。然后按照出现的提示进行操作。
下面显示了一个示例,用于设置带有 CPU 请求/驱动程序的 Python 2.7 TensorFlow。
有关使用 datmo 设置环境的完整指南,请参阅我们文档中的此页面。
设置环境后,大多数数据科学家想要打开我们所说的工作区(IDE 或笔记本编程环境)
下面显示了一个示例,用于快速打开 Jupyter Notebook 并显示 TensorFlow 的导入按预期工作。
以下是典型逻辑回归模型与利用 Datmo 的模型的比较。
普通脚本 | 与达特莫 |
---|---|
# train.py#from sklearn import datasetsfrom sklearn import Linear_model as lmfrom sklearn import model_selection as msfrom sklearn import externals as ex######iris_dataset = datasets.load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split (X, y)X_train, X_test, y_train, y_test = data#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 import datasetsfrom sklearn import Linear_model as lmfrom sklearn import model_selection as msfrom sklearn import externals as eximport datmo # 额外行#config = {"solver": "newton-cg"} # 额外行#iris_dataset = 数据集。 load_iris()X = iris_dataset.datay = iris_dataset.targetdata = ms.train_test_split(X, y)X_train, X_test, y_train, y_test = data#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} # 额外行#datmo.snapshot.create(message="我的第一个快照",filepaths=["model.pkl"],config=config,stats=stats) # 额外的行 |
为了运行上面的代码,您可以执行以下操作。
导航到包含项目的目录
$ mkdir MY_PROJECT $ cd MY_PROJECT
初始化 datmo 项目
$ datmo init
将上面的 datmo 代码复制到MY_PROJECT
目录中的train.py
文件中
像平常在 python 中一样运行脚本
$ python train.py
恭喜!您刚刚创建了第一个快照:) 现在运行 ls 命令来查看您的第一个快照。
$ datmo snapshot ls
运行datmo init
时,Datmo 添加一个隐藏的.datmo
目录,用于跟踪所有正在运行的各种实体。这是渲染支持 datmo 的存储库所必需的。
请参阅文档中的概念页面,了解移动部件如何在 datmo 中协同工作。
完整的文档托管在此处。如果您希望为文档做出贡献(源代码位于/docs
中),请按照CONTRIBUTING.md
中概述的过程进行操作。
您可以使用以下命令将现有存储库转换为启用 datmo 的存储库
$ datmo init
如果您想删除 datmo,您可以从存储库中删除.datmo
目录,也可以运行以下命令
$ datmo cleanup
免责声明:目前这不是官方支持的选项,仅适用于基于文件的存储层(如配置中设置)作为共享 datmo 项目的解决方法。
尽管 datmo 是为了在本地跟踪更改,您可以通过执行以下操作,通过推送到远程服务器来共享项目(这仅针对 git 显示,如果您使用其他 SCM 跟踪工具,您可能可以执行类似的操作)。如果您的文件太大或无法添加到 SCM,那么这可能不适合您。
以下内容仅在 BASH 终端上进行了测试。如果您使用其他终端,可能会遇到一些错误。
$ 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
上述内容将允许您与自己或其他计算机上的其他人共享 datmo 结果和实体。注意:您必须从跟踪中删除 .datmo/ 才能开始在另一台计算机或其他位置上使用 datmo。请参阅下面的说明,了解如何将其复制到其他位置
$ 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
如果您有兴趣使用 datmo 协议进行共享,可以访问 Datmo 的网站
问:如果datmo stop --all
不起作用并且由于端口重新分配而无法启动新容器,我该怎么办?
答:这可能是由从另一个 datmo 项目或另一个容器运行的幽灵容器引起的。 您可以创建具有特定端口分配(8888 除外)的 docker 映像,找到 docker 映像,停止它,然后使用docker ps --all
和docker conntainer stop <ID>
和docker container rm <ID>
将其删除。或者,您可以停止并删除计算机上运行的所有映像 [注意:这可能会影响计算机上的其他 docker 进程,因此请谨慎操作] docker container stop $(docker ps -a -q)
和docker container rm $(docker ps -a -q)