Pipcook 4月开源报告

avatar
阿里巴巴 前端委员会智能化小组 @阿里巴巴

Pipcook 是淘系技术部 D2C 团队研发的一款面向前端开发者的机器学习应用框架,我们希望 Pipcook 能成为前端人员学习和实践机器学习的一个平台,从而推进前端智能化的进程。

文/Yorkie


大家好,今天是 4 月的最后一天,因此也是 Pipcook 团队总结自己,以及向社区汇报结果的时刻。

4月工作简报


首先,我们完成了以下的设计,包括:MLApp API 设计、Pipboard UI 原型设计以及全新的 Pipcook Daemon 设计。接着,我们正式将 Boa 迁移到 Pipcook 的源代码中供开发者正式使用,也基于一些内部使用者的反馈修复了一些使用建立,以及为国内用户使用 tuna 作为 Python 的镜像站。

社区方面,除了一些基础工作外,主要是针对引导贡献者引入了 GitHub 的 good first issue 机制,通过该机制,也吸纳了一些开发者向 Pipcook 贡献代码:

  1. Txiaozhe,为我们 CLI 部分贡献了许多,帮助我们使用 TypeScript 重写了 CLI,也帮助我们使用 Boa 迁移了其他还遗留的 Python 模型。
  2. lingzr,帮助我们优化了 core 中的 any 类型,也对我们整个类型系统的部分代码做了优化。
  3. JihangGuo,帮助我们修复了一些 Lint 问题。

在此,特别感谢以上贡献者的付出。


最后,为了支持 Pipcook 能够部署 JavaScript 代码在 PAI EAS 上运行,我们也对 EAS 的 Node.js Integration 做了支持。

全新的 Pipcook Daemon 设计


我们在 4 月决定将现有的基于库来使用 Pipcook 的方式,转换为基于命令行工具的方式迁移。我们主要参考了 Docker 的设计,希望 Pipcook 之后无论对于开发者,还是使用者,能表现得更像一个软件,通过它可以帮助用户管理机器学习的 Pipeline、插件以及任务,同时也能通过 Pipcook 的 CLI 来分享 Pipeline 和插件,而非一定要在 Node.js 项目中通过代码的方式来使用,因此在我们下一个版本中,CLI 会有以下变化:

  1. 在运行 Pipeline 之前,将不再需要 init,直接通过 pipcook run your-pipeline.json 就可以执行
  2. 每个 Pipeline 所依赖的插件会由 Pipcook Daemon 安装到用户目录,就像大家在使用 docker 管理不同的镜像时一样
  3. Pipcook CLI 也会提供对应的命令行工具用来查看、安装、移除和升级插件

为什么会移除部署插件?


如果你关注我们的 GitHub Pull Requests 列表,那么你会发现我们已经将部署类型从我们的插件类型中去掉,这是因为我们认为应该给予开发者最大的自由度和最一致的输出产物,因此现在每个 Pipeline 都只输出一个 JavaScript 库,用户需要做的便是将这个 JavaScript 集成到对应的环境中使用 require 就可以了,作为部署插件的替代品,我们会提供不同运行环境的模型预测逻辑的支持,以简化用户的使用流程。

5月的计划


Pipcook 团队,下月的工作重心将放在 Pipboard 的实现,以及核心用户体验的保证上,具体如下:

  1. 通过 Pipboard 结合 Pipcook Daemon 对 pipeline 以及插件有更直观的感受
  2. 设计 Pipboard Extension,并通过它集成 Facets 和 Tensorboard,来帮助 Pipcook 的用户更加了解样本和模型
  3. 集成 Imgcook 样本制造机,为内部用户提供更便捷的用户接口
  4. 通过完成 Pipcook Daemon 以及 CLI,简化用户执行 Pipeline 的成本,做到拿来即用
  5. 建立核心用户体验验收标准,并增加到 GitHub Workflow 中作为每次变更的检查项,保证每次变更后的版本不会有体验上的倒退


另一方面,由于 good first issue 效果显著,因此我们在社区上会继续新增一些有趣的玩法,比如:

  1. 增加更多的 good first issue,对每类问题进行分类,提供更详细的贡献引导。
  2. 增加 good first model,吸引开发者帮助我们对一些 tfjs、Python 的模型进行迁移。
  3. 增加 good first tests,吸引开发者帮助我们增加系统稳定性。