5

BERT-as-service 时隔三年突然更新,这次连名儿都改了

 2 years ago
source link: https://blog.csdn.net/Jina_AI/article/details/123851324
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

BERT-as-service 时隔三年突然更新,这次连名儿都改了

无需担心复杂的实现细节,只需简单调用 API,就可以为文本和图像创建 SOTA 表征向量。

从 BERT 到 BERT-as-service

2018 年 9 月,Google 一篇 BERT 模型相关论文引爆全网:该自然语言模型,在机器阅读理解顶级水平测试 SQuAD1.1 中,连破 11 项 NLP 测试记录,两个衡量指标全面超越人类。

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

这不仅开启了 NLP 的全新时代,也标志着迁移学习和预训练+微调的模式,开始进入人们的视野。

2018 年 10 月,BERT 发布仅一个月后,BERT-as-service 横空出世。用户可以使用一行代码,通过 C/S 架构的方式,连接到服务端,快速获得句向量。

BERT-as-service 2018 年发布时的架构

作为基于 BERT 的第一个微服务框架,BERT-as-service 通过对 BERT 的高度封装和深度优化,以方便易用的网络微服务 API 接口,赢得了 NLP 及机器学习技术社区的广泛关注。

它简洁的 API 交互方式、文档写作风格,甚至连 README 排版,都成为之后众多开源项目的模板。

BERT-as-service 可以通过几行代码轻松获得句向量

如果说 BERT 是迁移学习的里程碑,那么 BERT-as-service 的出现,可以称得上是迁移学习,在工程服务化的里程碑。

GitHub 上 BERT 模型的不少贡献者,也积极参与了 BERT-as-service 的代码贡献。火遍全球的 Hugging Face 在 2018 年 11 月推出的 Pytorch-transformers 初版,也受到了 BERT-as-service 的启发。

尽管 BERT-as-service 在 2019 年 2 月后的更新逐渐暂停,但 3 年来该项目在 GitHub 上积累了 10,000 个 Star, 2,000 多个 Fork 和堆积成山的 Issue,都显示出社区对 BERT-as-service 的极大兴趣和热情。

其中很多开发人员 Fork 了 BERT-as-service 并结合自身业务,开发出了一套自己的微服务系统。

BERT-as-service 升级版重磅来袭

时隔三年,BERT-as-service 再度更新,升级为全新的 CLIP-as-service,不仅保留了原有的高并发、微服务、简单易用等特性,更可以同时生成文本和图像的表征向量。

CLIP-as-service 的背后是由 OpenAI 在 2021 年 1 月发布的 CLIP (Contrastive Language-Image Pre-training) 模型,它可以基于文本对图像进行分类,打破了自然语言处理和计算机视觉两大门派「泾渭分明」的界限,实现了多模态 AI 系统。

CLIP-as-service具有以下特点:

* 开箱即用:无需额外学习,只需调用客户端或服务端的 API,即可实时生成图像和文本的向量输出。

* 速度快:为大型数据集和长耗时任务量身定制,同时支持 ONNX 和 PyTorch 模型引擎,以提供快速推理服务。

* 高扩展:支持多核、单核 GPU 上并行扩展多个 CLIP 模型,并自动进行负载均衡。服务器端可以选择通过 gRPC、Websocket 或 HTTP 三种方式对外提供服务。

* 神经搜索全家桶:开发者可以短时间内,快速融合 CLIP-as-service 及 Jina、DocArray,搭建跨模态和多模态搜索行业解决方案。

CLIP-as-service 实操指南

安装 CLIP-as-service

同 BERT-as-service 的 C/S 架构一样,CLIP-as-service 也分为服务器端和客户端两个安装包。

开发者可通过 pip 在不同的机器上选择性地安装 CLIP 客户端或服务端。

注意:请确保使用 Python 3.7+

1、安装 CLIP 服务端(通常是 GPU 服务器)

pip install clip-server

2、安装 CLIP 客户端(比如在本地笔记本电脑上)

pip install clip-client

启动 CLIP 服务器

启动服务器意味着下载预训练模型,启动微服务框架,对外开放接口等一系列操作。所有这些操作都可以通过一句简单的命令完成。

启动服务器:

python -m clip_server

服务器启动后,将显示以下输出:

这表示服务器已准备就绪,并以 gRPC 方式对外提供接口。

从客户端连接

服务端就绪后,即可通过 GRPC 客户端与之连接并发送请求。根据客户端和服务端的位置,可使用不同的 IP 地址。

更多详情,请查看 CLIP-as-service 文档

运行 Python 脚本,验证客户端和服务端之间的连接状况:

如果连接正常,你会看到如下所示的耗时树状图:

搭建一个跨模态搜索系统:文本到图片

在这个示例中,我们将使用 CLIP-as-service 搭建立一个简单的 text-to-image 搜索案例,用户只需输入文本,即可输出相匹配的图像。

本示例将借助 Totally-Looks-Like 数据集及 Jina AI 的 DocArray 来实现数据下载。

注意:DocArray 作为上游依赖,已包含在 clip-client 中,无需单独安装。

1、加载图像

Totally-Looks-Like 数据集包含 12,032 张图像,可能需要一段时间下载。

2、加载完成后,使用 DocArray 内置功能 da.plot_image_sprites() 将其可视化,效果如下图所示:

3、通过命令 python -m clip_server启动 CLIP 服务端,并对图像进行编码 (encode)

4、输入 "a happy potato",查看搜索结果

输出结果如下:

查询 "A happy potato" 后的输出结果

尝试输入 "professor cat is very serious",输出结果如下:

更多详细文档,请访问 CLIP-as-service

搭建一个跨模态搜索系统:图片到文本

我们也可以将两个模态对调,实现图片到文字的搜索。

在下面这个例子中,我们使用《傲慢与偏见》整部小说的英文文本作为匹配目标。然后输入一张图片,就可以得到这张图片在《傲慢与偏见》中对应的文本。

开始之前,先运行本地托管且支持客户端访问的 CLIP-as-service 服务端。

运行 CLIP-as-service 服务端 👉

服务端启动并运行后,即可使用客户端向其发送请求并获得结果。

使用 CLIP-as-service 客户端,建立多模态搜索实例

以上就是本期关于 CLIP-as-service 的全部内容,更多精彩内容,敬请持续关注 Jina AI 公众号!


本文相关学习资料:

CLIP-as-service 文档

CLIP-as-service GitHub Repo

参与 Jina 学习,成为神经搜索专家

DocArray 文档

Jina 文档


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK