使用 cli 或 REST API 以编程方式安排参数化笔记本
项目描述
:rocket: NB 工作流程
:books: 说明
NB Workflows 授权不同的数据角色将笔记本投入生产,从而简化了这样做所需的时间。它使人们能够使用由数据科学家、分析师或以迭代方式处理数据的任何角色制作的相同笔记本文件,从数据探索实例转变为部署在生产中的完整项目。
NB Workflows 是一个库和服务,允许您以分布式方式运行参数化笔记本。
Notebook 可以按需远程启动,也可以按时间间隔或使用 cron 语法进行调度。
在内部,它使用Sanic作为 Web 服务器,Papermill作为笔记本执行器,一个 用于任务分配和协调的RQ 。
:tada: 演示 :tada:
:floppy_disk:示例项目
:望远镜:哲学
注意工作流程它不是一个完整的 MLOps 解决方案,而且永远不会。我们努力简单地向用户公开正确的 API,以便在考虑可重复性的情况下调度笔记本。
我们也尝试为用户提供与乐高积木相同的自由,但我们在某些方面持有意见:我们理解为数据科学或/和数据分析编写代码的过程,作为一个需要解决的工程师问题
带着这个观点,那么:
- Git 是必要的 :wink:
- Docker 是环境可重现性所必需的。
- 尽管您可以推送未版本控制的代码,但版本控制几乎是强制执行的,并且始终是软件开发中的一个好习惯
这个想法来自Netflix 的一篇帖子,该帖子建议使用接口或某种 DSL 之类的笔记本来编排不同的工作负载,例如 Spark 等。但它也可以用来运行整个过程:比如训练模型、爬取站点、执行 etls 等等。
这种方法的好处是可以存储运行的笔记本并检查其好坏。如果出现故障,很容易以经典方式运行:逐个单元格。
最后一点要澄清,它可能会挑战常识或我们习惯于使用 Jupyter 笔记本的方式,每个笔记本更像是一个具有输入和输出的函数定义,因此笔记本可能用于不同的目的,因此工作流的名称,实际上这个想法在数据空间中很常见。然后,工作流将是一个笔记本,其参数定义为在用户想要的任何时候使用,可以更改或不更改发送的参数。
:nut_and_bolt: 特点
- 像函数一样定义笔记本,按需执行或调度
- 自动生成 Dockerfile。一个项目应该共享一个独特的环境,但可以使用同一环境的不同版本
- 执行历史、Slack 或 Discord 通知。
安装
服务器
码头工人组成
该项目提供了一个docker-compose.yaml文件作为示例。
:建设:注意:建设:
因为NB Workflows将为每个工作负载生成 docker 实例,所以在 docker 容器内安装可能会很棘手。最困难的部分是需要访问docker socket的 worker 的配置。
提供Dockerfile用于自定义 uid 和 guid 女巫应与本地环境匹配。第二种选择是通过 HTTP 公开 docker 守护进程,如果DOCKER_HOST可以使用 env,请参阅docker client sdk
git clone https://github.com/nuxion/nb_workflows
cd nb_workflows
下一步是初始化数据库并创建用户(请先查看脚本):
docker-compose postgres up -d
./scripts/initdb_docker.sh
现在你可以开始其他一切了:
docker-compose up -d
没有码头工人
pip install nb-workflows[server]==0.6.0
第一个终端:
export NB_SERVER=True
nb manager db upgrade
nb manager users create
nb web --apps workflows,history,projects,events,runtimes
第二终端:
nb rqworker -w 1 -q control,mch.default
在此之前,redis postgresql 和webdav 模式下的 nginx应该配置好
客户
客户:
pip install nb-workflows==0.6.0
nb startporject .
:earth_americas: 路线图
见路线图 草案
:post_office: 建筑
:bookmark_tabs: 参考和灵感
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
nb_workflows -0.7.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 44e944121a07a7cf1795b3f432c400636cf9899ceb4685d1ec799de3fc35467f |
|
| MD5 | 7f30a0c89796c51bf672ae45af2a95db |
|
| 布莱克2-256 | 9d6f98315e3938c536a8a6b6f556bb644c2ae20ddcd63bed6185829fce19a5bb |
nb_workflows -0.7.0-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 0f5f1121d93703fffa71532516d88a580d310498488104873cb5a9977145db8b |
|
| MD5 | cba8bb74891256e742f6a9d57127c0dc |
|
| 布莱克2-256 | d50c40466d1aa90ca66d5945010530adf04fa848cceb720694f8e3a4ef815b32 |