本文翻译自 survivejs 对 Pipcook 核心团队成员文赫(@WenheLi)的采访,原文地址请看:survivejs#pipcook-interview
SurviveJS是一个推广和连接前端社区的平台。它通过采访/邀请前端开源框架贡献者来向更多人展示目前前端的开原生态。
关于机器学习及其应用有很多令人兴奋的事情。 问题是,您可以做什么以及在哪里应用该技术以及如何使用。要了解更多信息,我们采访了 Pipcook 核心成员李文赫。
介绍一下自己吗?
大家好,我是李文赫(Eric),我目前是阿里巴巴公司的工程师。我的工作涉及前端开发,前端开发者和人工智能(AI)的结合。 我在这里的任务之一就是参与开发 Pipcook,这是一种为前端开发人员设计的开源机器学习(ML)和深度学习(DL)框架。
如何将 Pipcook 描述给从未听说过的人?
Pipcook 是一个工具集,可帮助您在没有太多先验知识的情况下开发、训练和部署机器学习模型, 整个工作流是高度抽象的,同时也不会丢失可拓展性。它使您可以通过 API 轻松使用基于 Python 的流行机器学习解决方案,例如 NumPy、scipy-learn、jieba 和 TensorFlow。
Pipcook如何工作?
**使用 **Boa** 提供 Python**
由于此框架是针对前端而开发的,并且是面向 Node.js 开发人员的,然而大多数机器学习库都使用 Python 编写,因此我们创建了 Boa 让你能轻松在 JavaScript 中使用他们。Boa 允许我们在 JavaScript 中直接导入和调用 Python 的模块和方法。 这样,我们就可以在 Python 中利用机器学习生态系统,而不必担心学习新语言。
机器学习工作流(Pipelines)
我们引入了一个 Pipeline 概念,它包含 DataCollect(数据搜集),DataProcess(数据个体处理),DataAccess(数据访问方法),DatasetProcess(数据集预处理),ModelDefine(模型定义),ModelTrain(模型训练) 和 ModelEvaluate(模型评估)。 它提供了典型机器学习模型生命周期的抽象。Pipcook 开发者(包括社区)提供了这些部分的最常见实现(我们称其为插件),想要训练模型的人可以使用现有的 Pipeline,也可以结合使用插件来建立 Pipeline,就像玩乐高积木一样。
Pipcook 与其他解决方案有何不同?
Pipcook 让您同时使用 JavaScript 和 Python
由于 Pipcook 允许您使用带有 Python 模块的 JavaScript 编写模型,因此我们可以从这两个生态系统中强大的库和包中受益。令人难以置信的是,您可以决定将一些面向 IO 的工作放到 Node.js 中,并将更多与 DL / ML 训练相关的工作放到 Python 下,这样做可以让您充分利用两者的优势。
Pipcook 使用工作流和插件
Pipcook 向机器学习工作流中引入了 Pipeline 和插件,这样做可以消除开发模型的复杂性,并使插件具有高度的复用性。
Pipcook 使用前沿技术
由于 Pipcook 是一个实验性项目,因此我们可以使用最新技术和语言来开发我们的项目,这意味着我们使用了 Rust,WASM,WASI,WebGPU 等。
您为什么而开发 Pipcook?
我喜欢 JavaScript 及其“神奇”的语法。 但是,由于丰富的 Python 模块和生态系统,我必须使用 Python 开发机器学习模型。 Pipcook 为我提供了一种在 JavaScript 中建立机器学习模型而不丢失 Python 生态系统的新方法。
到目前为止,我们已经看到了一种明确的趋势,那就是 AI 进入了世界的每个角落。在前端领域,我们仍然没有工业级别的框架。大多数机器学习框架仍在为具有相关知识的人员提供服务。我希望提供一个可以被JavaScript(Node.js 和浏览器)领域广泛使用的框架,而不必担心模型背后的复杂理论,我相信这是将 AI 的价值传递给世界的正确方法。
接下来的计划是什么?
我们刚刚在几个月前正式发布了 Pipcook。 在第一个发布中,它为用户提供了开箱即用的功能,无需太多的先验知识即可训练模型进行图像分类,样式转换和文本分析等。因此,在当前阶段,我们正在努力争取用户体验和开发体验,我们正在尝试优化训练效率并减轻开发插件的难度。除此之外,我们正在构建一个多合一的工具包,其中包括查看训练日志,检查和可视化模型结构以及模型修剪和压缩。
总体而言,Pipcook 和 Web 开发的未来会如何? 您能看到任何特定趋势吗?
在未来,机器学习必须与 Web 具有更强的绑定关系。分布式训练,联邦学习(Federated Learning)和端上推理引擎都将在 Web 上发展起来,因为它们都非常符合互联网的本质。引自蒂姆·伯纳斯·李(Tim Berners-Lee)的一句话:“Let's redistribute power to individuals!” ,我们正在尝试建立一个下一代的编程范式,它让 Web 开发者可以充分使用 Python 和 Javascript 一体化的开发环境并将机器学习的能力及其带来的便利带给每一个个体。
您会为程序员进行 Web 开发提供什么建议?
Web 本质上是一个基于共享,连接和开源思想的社区。 因此,尝试连接,加入和使用您正在使用的开源社区!
接下来我应该采访谁?
您可以采访那些刚开始从事开源贡献的开发者们。
最后有什么想说的吗?
感谢您的采访,并有机会与 Pipcook 一起分享我们的故事。
总结
谢谢,文赫! 我发现您对 Pipcook 所做的一切都如此令人钦佩。我相信它可以作为 JavaScript 开发人员通向机器学习的桥梁,而不必深入研究基于 Python 的解决方案。