插件规范

Pipcook 使用插件来完成特定机器学习任务的任务,它使得框架足够简单、稳定和高效。

同时,通过定义了不同的插件规范,使得我们可以允许任何人开发插件来拓展 Pipcook,理论上,我们可以通过插件来完成任何的机器学习任务。

包结构

Pipcook 使用 NPM 作为插件包的基础。另外,我们在 NPM 的 package.json 中拓展了属于 Pipcook Plugin 的协议。

  1. {
  2. "name": "my-own-pipcook-plugin",
  3. "version": "1.0.0",
  4. "description": "my own pipcook plugin",
  5. "dependencies": {
  6. "@pipcook/pipcook-core": "^0.5.0"
  7. },
  8. "pipcook": {
  9. "category": "dataCollect",
  10. "datatype": "image"
  11. },
  12. "conda": {
  13. "python": "3.7",
  14. "dependencies": {
  15. "tensorflow": "2.2.0"
  16. }
  17. }
  18. }

通过上面的 package.json 定义,有一些 Pipcook 的要求:

  • 插件包必须使用 TypeScript,并且需要在发布前编译成 JavaScript。
  • 需要添加依赖 @pipcook/pipcook-core,它包含了创建插件所需的类型定义和工具类。
  • 需要添加一个根节点 pipcook
    • pipcook.category 用于描述插件类型,所有的类型可以看这里
    • pipcook.datatype 用于描述插件所处理的数据类型,目前支持:commonimagetext
  • 可选的节点 conda,用于配置 Python 相关的依赖,
    • conda.python 用于声明 Python 版本,目前必须是 3.7。
    • conda.dependencies 用于声明插件会使用到的 Python 包,Pipcook 会在初始化插件时进行安装,它支持以下的版本声明方式:
      • x.y.z PyPI 的确定版本。
      • * PyPI 的最新版本。
      • git+https://github.com/foobar/project@master 从 GitHub 仓库安装,参考 pip-install(1)

分类

下面是所有在 Pipcook 中支持的插件分类。

开发

查看贡献者文档来学习如何开发一个新的插件。