概述
Towhee是一个框架,利用先进的机器学习模型提供非结构化数据的ETL(抽取、转换、加载)服务。
什么是非结构化数据?
非结构化数据是指无法以表格或键值格式存储的数据。几乎所有人类生成的数据(图像、视频、文本等)都是非结构化的——一些市场分析师估计,到2024年,超过80%的数据将是非结构化数据。 Towhee是第一个旨在使用ETL管道处理各种非结构化数据的开源项目。
为了实现这一目标,我们在流行的机器学习和非结构化数据处理库(如torch、timm、transformers等)之上构建了Towhee。不同库中的模型或功能被包装为标准的Towhee运算符,并可以在使用Pythonic API的应用导向管道中自由集成。为了确保用户友好性,还可以通过一行代码调用预构建的管道,无需了解构建它们所使用的底层模型或模块。
欲了解更多信息,请查看我们的快速入门页面。
Towhee 解决的问题
现代机器学习应用程序需要的不仅仅是一个单一的神经网络。在生产中运行现代机器学习应用程序需要在线预处理、数据转换、模型本身以及其他与机器学习相关的工具的组合。例如,构建一个能够识别视频中对象的应用程序涉及解压缩、关键帧提取、图像去重、目标检测等。这需要一个提供快速且稳健的方法来开发端到端应用程序管道的平台,该管道使用ML模型并支持数据并行性和资源管理。
Towhee通过重新引入以应用为中心而不是以模型为中心的Pipeline概念来解决了这个问题。以模型为中心的管道由单一模型后跟辅助代码组成,而以应用为中心的管道将每个数据处理步骤都视为第一类公民。 Towhee还提供了一个Pythonic API,用于以仅需几行代码开发更复杂的应用程序。
存在太多没有任何接口标准的模型实现。机器学习模型(基于NN和传统的)是无处不在的。不同实现的机器学习模型需要不同的辅助代码来支持测试和微调,使模型评估和投产成为繁琐的任务。
Towhee 通过为数据集加载、基本数据转换、ML模型和其他杂项脚本提供通用Operator包装来解决了这个问题。运算符具有预定义的API和粘合逻辑,使Towhee能够与多个机器学习和数据处理库配合使用。运算符可以在DAG中链接在一起,形成整个ML应用程序。
非结构化数据的ETL管道几乎不存在。ETL,即抽取、转换和加载,是数据科学家、ML应用程序开发人员和其他工程师用于从各种来源提取数据、将数据转换为计算机可理解格式并将数据加载到下游平台进行推荐、分析和其他商业智能任务的框架。
Towhee通过提供一个开源的非结构化数据时代的ETL愿景来解决了这个问题。我们提供:
- 超过300个预构建的管道,涵盖各种不同的数据转换任务(包括但不限于图像嵌入、音频嵌入、文本摘要)
- 通过直观的Python API构建任意复杂管道的方法。
设计哲学
便利性:Towhee管道可以用来实现各种数据转换任务。任何管道的创建或嵌入任务都可以在不超过10行代码的情况下完成。我们在我们的中心提供了许多预构建的管道。
可扩展性:各个运算符都有标准接口,可以在不同的管道中重新配置/重用。管道可以部署在任何地方——在您的本地计算机上,在带有4个GPU的服务器上,甚至在云中。
应用导向:与其成为“又一个模型中心”,我们提供完整的端到端嵌入管道。每个管道可以利用任意数量的机器学习模型或Python函数,并以各种配置(集成、流程或两者的任意组合)进行使用。