Towhee

在这里插入图片描述

文章目录

    • 关于 Towhee
    • ✨ 项目特点
    • 🎓 快速入门
    • 流水线
      • 预定义流水线
      • 自定义流水线
    • 🚀 核心概念


关于 Towhee

Towhee 是一个开源的 embedding 框架,包含丰富的数据处理算法与神经网络模型。通过 Towhee,能够轻松地处理非结构化数据(如图片、视频、音频、长文本等),完成原始数据到向量的转换。

同时,Towhee 也是一个开放的算法与模型交流社区。


在这里插入图片描述


Towhee 可以让用户像搭积木一样,轻松地完成 AI 应用程序的构建和落地。通过使用大语言模型(LLM)以及其他SOTA深度学习模型,从各种未加工过的非结构化数据中(长文本、图像、音频和视频)提取信息,并将这些信息存储到合适的存储系统中,比如可以将提取出的向量数据存储到向量数据库中。开发人员能够通过Towhee提供的Pythonic API来完成各种 AI 流水线和 AI 应用的原型设计,享受自动代码优化,低成本实现生产环境的应用性能优化。


  • 官网:https://towhee.io
  • github : https://github.com/towhee-io
  • 中文文档:https://github.com/towhee-io/towhee/blob/main/README_CN.md
  • Slack: https://slack.towhee.io
  • Twitter: https://twitter.com/towheeio

相关文章

  • Towhee,开源的 embedding 框架与社区
    https://mp.weixin.qq.com/s/oRU19zT78LvilUmlwPS5OA

✨ 项目特点

🎨 多模态 Towhee 能够处理各种数据类型。无论是图像数据、视频片段、文本、音频文件还是分子结构,Towhee 都可以处理。

📃 LLM 管道编排 Towhee 具有灵活性,可以适应不同的大语言模型(LLM)。此外,它允许在本地托管开源大模型。此外,Towhee 提供了prompt管理和知识检索等功能,使与这些 LLM 的交互更加高效和有效。

🎓 丰富的算子 Towhee 提供了五个领域内众多最先进的现成模型:计算机视觉、自然语言处理、多模态、音频和医疗领域。拥有超过 140 个模型,如 BERT 和 CLIP,以及丰富的功能,如视频解码、音频切片、帧采样和降维,它有助于高效地搭建数据处理流水线。

🔌 预构建的 ETL 管道 Towhee 提供现成的 ETL(提取、转换、加载)管道用于常见任务,如增强生成检索、文本图像搜索和视频副本检测。这意味着您不需要成为 AI 专家即可使用这些功能构建应用程序。

⚡️ 高性能后端 利用 Triton 推理服务器的计算能力,Towhee 可以使用 TensorRT、Pytorch 和 ONNX 等平台加速 CPU 和 GPU 上的模型服务。此外,您可以用几行代码将 Python 管道转换为高性能的 Docker 容器,实现高效部署和扩展。

🐍 Python 风格的 API Towhee 包含一个 Python 风格的方法链 API,用于描述自定义数据处理流水线。我们还支持模式,这使得处理非结构化数据就像处理表格数据一样简单。


🎓 快速入门

Towhee 需要 Python 3.7 及以上的运行环境,可以通过 pip 来完成快速安装:

pip install towhee towhee.models

流水线

预定义流水线

Towhee 提供了一些预定义流水线,可以帮助用户快速实现一些功能。 目前已经实现的有:

  • 文本embedding
  • 图像embedding
  • 视频去重
  • 基于大语言模型的知识库问答

所有的流水线均能在Towhee Hub上找到,下面是sentence_embedding流水线的使用示例:

from towhee import AutoPipes, AutoConfig
# get the built-in sentence_similarity pipeline
config = AutoConfig.load_config('sentence_embedding')
config.model = 'paraphrase-albert-small-v2'
config.device = 0
sentence_embedding = AutoPipes.pipeline('sentence_embedding', config=config)# generate embedding for one sentence
embedding = sentence_embedding('how are you?').get()
# batch generate embeddings for multi-sentences
embeddings = sentence_embedding.batch(['how are you?', 'how old are you?'])
embeddings = [e.get() for e in embeddings]

自定义流水线

通过Towhee python API,可以实现自定义的流水线, 下面示例中,我们来创建一个基于 CLIP 的跨模态检索流水线。

from towhee import ops, pipe, DataCollection
# create image embeddings and build index
p = (pipe.input('file_name').map('file_name', 'img', ops.image_decode.cv2()).map('img', 'vec', ops.image_text_embedding.clip(model_name='clip_vit_base_patch32', modality='image')).map('vec', 'vec', ops.towhee.np_normalize()).map(('vec', 'file_name'), (), ops.ann_insert.faiss_index('./faiss', 512)).output()
)for f_name in ['https://raw.githubusercontent.com/towhee-io/towhee/main/assets/dog1.png','https://raw.githubusercontent.com/towhee-io/towhee/main/assets/dog2.png','https://raw.githubusercontent.com/towhee-io/towhee/main/assets/dog3.png']:p(f_name)# Flush faiss data into disk. 
p.flush()
# search image by text
decode = ops.image_decode.cv2('rgb')
p = (pipe.input('text').map('text', 'vec', ops.image_text_embedding.clip(model_name='clip_vit_base_patch32', modality='text')).map('vec', 'vec', ops.towhee.np_normalize())# faiss op result format:  [[id, score, [file_name], ...].map('vec', 'row', ops.ann_search.faiss_index('./faiss', 3)).map('row', 'images', lambda x: [decode(item[2][0]) for item in x]).output('text', 'images')
)DataCollection(p('puppy Corgi')).show()

在这里插入图片描述


🚀 核心概念

Towhee 由四个主要模块组成:“算子(Operators)”、“流水线(Pipelines)”、“数据处理 API(DataCollection API)”和“执行引擎(Engine)”。

  • 算子(Operator):算子是构成神经网络数据处理水流线(neural data processing pipeline)的“积木块”(基础组件)。这些基础组件按照任务类型进行组织,每种任务类型都具有标准的调用接口。一个算子可以是某种神经网络模型,某种数据处理方法,或是某个 Python 函数。
  • 流水线(Pipeline):流水线是由若干个算子组成的 DAG(有向无环图)。流水线可以实现比单个算子更复杂的功能,诸如特征向量提取、数据标记、跨模态数据理解等。
  • 数据处理 API(DataCollection): DataCollection API 是用于描述流水线的编程接口。提供多种数据转换接口:map, filter, flat_map, concat, window, time_window以及window_all,通过这些接口,可以快速构建复杂的数据处理管道,处理视频,音频,文本,图像等非结构化数据。
  • 执行引擎(Engine): 执行引擎负责实例化流水线、任务调度、资源管理,以及运行期性能优化。面向快速原型构建,Towhee 提供了轻量级的本地执行引擎;面向生产环境需求,Towhee 提供了基于 Nvidia Triton 的高性能执行引擎。

2024-03-27(三)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/585876.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从入门到实战:vue3路由知识点

本人在B站上关于vue3的尚硅谷的课程,以下是整理一些笔记。 1.两个知识点 1.路由组件通常存放在pages 或 views文件夹,一般组件通常存放在components文件夹。 组件可以分为: 1. 一般组件:亲手写标签出来的 2. 路由组件&#…

蓝桥杯练习笔记(十五)

蓝桥杯练习笔记(十五) 一、 首先要会欧拉函数去找到对应数字的所有互质的数的个数,然后要会快速幂去计算这种指数超级大的数字的幂积结果。 先学会第一个:欧拉函数。这个博主讲得不错,很清晰易懂。能够理解以下的公式…

ICLR 2024 | 鸡生蛋蛋生鸡?再论生成数据能否帮助模型训练

ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 随着生成模型(如 ChatGPT、扩散模型)飞速发展&#x…

【MATLAB源码-第21期】基于matlab的BCH码编码译码仿真,调制使用QPSK,对比编码与未编码的误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 QPSK调制解调:QPSK(Quadrature Phase Shift Keying)调制解调**是一种数字调制技术,通常用于数字通信系统。 调制: 1. 首先,将数字信号分成两路&#xff…

量化交易入门(三十八)CCI指标Python实现和回测

今天我们先单纯用CCI指标来完成策略的编写,后续我们会改进这个策略,将CCI指标和前面讲到的MACD和RSI相结合来优化,看看我们优化后的效果会不会更好。 一、量化策略 CCI指标在量化交易中的策略: 在以下情况下生成买入信号&#…

Qt元对象系统

第二章Qt元对象系统 文章目录 第二章Qt元对象系统1.什么是元对象?2.元对象系统组成3.信号与槽信号和槽的本质绑定信号与槽自定义槽定义槽函数必须遵循一下规则槽函数的类型自定义槽案例 自定义信号自定义信号需要遵循以下规则信号和槽重载二义性问题 4.内存管理1. 简…

C++ | Leetcode C++题解之第6题Z字形变换

题目&#xff1a; 题解&#xff1a; class Solution { public:string convert(string s, int numRows) {int n s.length(), r numRows;if (r 1 || r > n) {return s;}string ans;int t r * 2 - 2;for (int i 0; i < r; i) { // 枚举矩阵的行for (int j 0; j i &l…

GDC回顾与MAU前瞻丨Flat Ads开启开发者流量变现新篇章

3月18日-22日,全球游戏行业最具规模、最有影响力的盛会——GDC 2024 在美国旧金山 Moscone Convention Center 成功举办,Flat Ads作为参展商亮相GDC大会,向全球游戏开发者展示我们的最新技术与服务。此次Flat Ads团队不仅洞察了行业最前沿的技术和发展趋势,同时也与诸多一线开发…

GWO-CNN-BiLSTM多输入回归预测|灰狼群算法优化的卷积-双向长短期神经网络|Matlab

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、算法介绍&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&…

电梯四种事故检测YOLOV8

电梯四种事故检测&#xff0c;采用YOLOV8训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV调用&#xff0c;支持C/PYTHON/ANDORID开发 电梯四种事故检测YOLOV8

海康威视(老版本)录像机+(新版本)摄像头 不兼容的解决方案

一、适用场景 1、海康威视的硬盘录像机使用多年&#xff0c;增加新版本的摄像头&#xff0c;原投资沿用&#xff1b; 2、监控网络第一期工程与第二期工程相隔的时间长&#xff0c;摄像头更新换代快&#xff1b; 3、企业或单位自己动手建监控网络&#xff1b; 4、上级主管部门要…

高性能威廉希尔产品特点低代码开发平台

高性能低代码是唯一一种使您能够构建复杂的、战略性的、任务关键型的消费者和内部软件的低代码类别。 它在提供端到端应用程序开发和更新方面没有限制&#xff0c;没有额外的许可&#xff0c;没有可扩展性问题&#xff0c;也没有更新的数据“重做”&#xff0c;当你从部门应用程…