一个用于机器学习及其工程的JavaScript应用框架。
构建
为什么选择Pipcook
Pipcook的使命是让JavaScript工程师无需任何先决条件即可利用机器学习的强大功能,并以引领前端技术领域走向智能化为愿景。Pipcook旨在成为跨越机器学习和前端互动领域的JavaScript应用框架。
我们致力于为前端和机器学习应用设计Pipcook的API,并专注于前端领域,从JavaScript工程师的角度出发。我们秉持对JavaScript友好的原则,将整个领域与机器学习工程共同推进。为此,我们开启了一个关于机器学习应用API的问题,期待您的参与。
什么是Pipcook
该项目提供包括机器学习管道框架、管理工具、JavaScript运行环境在内的子项目,这些也可以作为与其他项目相结合的构建模块。
原则
Pipcook 是一个由强大原则指导的开源项目,旨在用户体验上的模块化和灵活性。它向社区开放,以帮助制定其方向。
- 模块化 项目包含一些功能和API清晰定义的子项目,并能一起协同工作。
- 可交换 项目包含足够的模块来构建Pipcook已有的功能,但其模块化架构确保大部分模块可以由不同的实现替换。
受众
Pipcook 旨在面向希望:
- 了解什么是机器学习的Web工程师。
- 训练他们的模型并提供服务。
- 优化自己的模型以获得更好的评估结果,比如提高图像分类的准确率。
如果您符合上述条件,请通过安装指南尝试它。
子项目
Pipcook Pipeline
用于表示由Pipcook脚本组成的机器学习管道。该层确保整个系统的稳定性和可扩展性,并使用插件机制支持包括数据集、训练、验证和部署在内的丰富功能。
一个Pipcook Pipeline通常由许多脚本组成。通过不同的脚本和配置,最终输出给我们的是一个NPM包,其中包含训练好的模型和可直接使用的JavaScript函数。
注意:在Pipcook中,每个管道只有一个角色,那就是输出您所需的训练好的模型。也就是说,每个管道的最后一个阶段必须是输出训练好的模型,否则该管道无效。
Pipcook Bridge to Python
对于JavaScript工程师来说,最困难的部分是生态系统中缺乏成熟的机器学习工具集。在Pipcook中,有一个名为[Boa][https://github.com/imgcook/boa]的模块,通过使用N-API桥接CPython的接口来提供对Python包的访问。
借助它,开发人员可以在Node.js运行时通过JavaScript使用numpy
、scikit-learn
、jieba
、tensorflow
或其他任何Python生态系统中的包。
快速开始
设置
在您的机器上准备以下内容:
安装用于管理Pipcook项目的命令行工具:
$ npm install -g @pipcook/cli
然后从这些管道中的任何一个开始训练,我们以图像分类为例:
$ pipcook train https://cdn.jsdelivr.net/gh/alibaba/pipcook@main/example/pipelines/image-classification-mobilenet.json -o ./output
管道指定的数据集包括两类图像:头像和模糊背景。训练后,我们可以预测图像的类别:
$ pipcook predict ./output/image-classification-mobilenet.json -s ./output/data/validation/blurBackground/71197_223__30.7_36.jpg
✔ 原始结果:[{"id":1,"category":"blurBackground","score":0.9998120665550232}]
输入是验证数据集中的一张blurBackground
图像。模型确定其类别是blurBackground
.
想要部署吗?
$ pipcook serve ./output
ℹ 准备框架
ℹ 准备脚本
ℹ 准备工件插件
ℹ 初始化框架包
Pipcook服务已启动于:http://localhost:9091
然后您可以打开浏览器并尝试您的图像分类服务器。
游乐场
如果您想知道在Pipcook中可以做什么,以及在哪里可以查看您的训练日志和模型,您可以从Pipboard开始:
open https://pipboard.imgcook.com
您将在浏览器中看到一个网页提示,并且主页上有一个MNIST展示可以供您玩转。
管道
如果您想自己训练一个模型来识别MNIST手写数字,您可以尝试以下示例。
名称 | 描述 | 在Colab中打开 |
---|---|---|
mnist-image-classification | 用于MNIST图像分类问题的管道。 | N/A |
databinding-image-classification | 用于训练图像分类任务的管道示例, 用于分类imgcook数据绑定图像。 | |
object-detection | 用于训练对象检测任务的管道示例, 用于imgcook组件识别。 | |
text-bayes-classification | 使用贝叶斯训练文本分类任务的管道示例 | N/A |
完整列表请参见此处,运行这些示例非常简单快速。例如,要进行MNIST图像分类,只需运行以下命令即可启动管道:
$ pipcook run https://cdn.jsdelivr.net/gh/alibaba/pipcook@main/example/pipelines/image-classification-mobilenet.json -o output
上面的管道完成后,您已经在当前output/model
目录下训练了一个模型,它是一个tensorflow.js模型。
开发者
克隆这个仓库:
$ git clone git@github.com:alibaba/pipcook.git
安装依赖项,例如通过npm:
$ npm install
完成上述操作后,开始构建项目:
$ npm run build
社区
钉钉
也可以通过群号搜索:30624012。