gnes是一个基于深层神经网络的云原生语义搜索系统。
gnes的Python项目详细描述
突出显示•。 概述• 安装. 入门•。 集线器•。 文档• 教程• 贡献•。 发行说明• 博客
它是什么
gnes[jee-nes]是一个基于深层神经网络的云原生语义搜索系统,是一个通用的神经弹性搜索系统。
gnes支持对文本到文本、图像到图像、视频到视频和内容表单进行大规模索引和语义搜索。
亮点
<;居中>; <表>云本机和弹性
易于使用
最先进的技术
易于使用 最先进的技术
通用
作为插件的模型
最佳实践
作为插件的模型 最佳实践
概述
GNES集线器
<;居中>; <表>gnes hub将ai/ml模型作为docker容器发送,并使用docker容器作为插件。它提供了一种将外部算法(带有依赖项)移植到gnes框架中的干净和可持续的方法。
GNES集线器位于Docker集线器上。
安装GNES
获取gnes有两种方法,要么作为docker映像,要么作为pypi包。对于云用户,我们强烈建议通过Docker使用GNES
将gnes作为docker容器运行
docker run gnes/gnes:latest-alpine
此命令下载最新的gnes映像(基于alpine linux.org/" rel="nofollow">alpin linux)并在容器中运行。当容器运行时,它会打印一条信息性消息并退出。
选择正确的GNES图像
除了为空间优化的阿尔卑斯图像之外,我们还提供buster(debian 10.0)、ubuntu 18.04和ubuntu 16.04图像。下表总结了所有可用的gnes标签。可以用最新的
,稳定的
或v0..xx
来填写{ver}
。最新的
是指此存储库的最新主存储库,它可能不稳定。我们建议您使用官方版本,将最新的
更改为一个版本号,例如v0.0.24
,或者只在最后一个版本中使用稳定的
,例如gnes:stable ubuntu
{ver}-阿尔卑斯山
无深度学习库;
极为轻巧和便携,可在边缘设备上快速扩展。
{ver}-buster
没有深度学习库;
建议用于构建或扩展GNES中心图像。
{ver}-ubuntu18
没有深度学习库。
{ver}-已满
python-3.6.8、cuda-10.0、tf1.14、pytorch1.1、faiss、多个预训练模型;
重而独立,可用于端到端测试gnes。
我们还提供了腾讯云上的公共镜像,中国大陆用户可以更快地从中提取图像。
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
下表显示生成管道的状态。
<表>gnes/gnes:[标签]
ccr.ccs.tencentyun.com/gnes/gnes:[标签]
通过pip安装gnes
您还可以通过:
pip install gnes
请注意,这将只安装一个"赤裸裸"版本的gnes,由运行gnes的最小依赖项组成。不会安装第三方预培训模型、深入学习/nlp/cv包。我们将此设置作为默认安装行为,因为nlp工程师感兴趣的模型可能对cv工程师不感兴趣。在GNE中,模型充当Docker插件。
< Buff行情>Tensorflow、Pythorch和TorchVision不属于GNES安装的一部分。根据您的型号,可能需要提前安装。
虽然不推荐,但您可以通过:
pip install gnes[all]<细节>
选择依赖项的一个好方法是按照gnes hub中的示例创建自己的gnes映像。
不管怎样,如果您在$gnes
或$docker run gnes/gnes
之后阅读以下消息,那么您就可以开始了!
开始
- "128035;初步
- 在本地计算机上构建您的第一个gnes应用程序
- 将您的gnes应用缩放到云
- 根据您的需要定制gnes
- 带回家留言
-
下一个是什么?下一个是什么?
128035;准备工作
在开始之前,让我先介绍两个作为gnes主干的重要概念:微服务和运行时。
微服务
对于不熟悉"云计算原生"和"微服务"概念的机器学习工程师和数据科学家,可以将微服务想象为P P(在智能手机上)。每个应用程序独立运行,一个应用程序可以与其他应用程序协作完成一项任务。在gnes中,我们有四个基本的应用,aka。微服务,它们是:
在gnes中,我们实现了几十个预处理器、编码器、索引器来处理图像、文本、视频等不同的内容形式。插入您自己的实现也非常容易,我们将在续集中看到一个示例。
运行时
好吧,现在我们有了一堆应用程序,我们希望它们做什么?在典型的搜索系统中,有两项基本任务:索引和查询。索引是存储文档,查询是搜索文档,非常简单。在神经搜索系统中,还可能面临另一个任务:训练,根据数据分布对编码器/预处理器进行微调,以获得更好的搜索相关性。这三个任务:索引、查询和训练,我们称之为gnes中的三个运行时。
了解GNES的关键是了解哪个运行时需要哪些微服务,每个微服务都做什么
在本地计算机上构建您的第一个GNES应用程序
让我们从一个典型的索引过程开始,编写一个yaml配置(请参见表的左列):
<表>docker run gnes/gnes:latest-alpine9
现在让我们看看yaml配置说明了什么。第一印象,很直观。它定义了一个由预处理、编码和索引组成的流水线工作流,其中前一个组件的输出是下一个组件的输入。此管道是索引或查询运行时的典型工作流。在每个组件下,我们还将其与指定其工作方式的yaml配置相关联。现在它们对于理解全局并不重要,但是好奇的读者可以通过展开下面的条目来查看每个yaml的外观。
<细节>docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine0 <详细内容><细节>
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine1 <详细内容><细节>
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine2 <详细内容>
在上表的右侧,您可以看到实际数据流的样子。工作流中自动添加了一个附加组件grpcfrontend,它允许您通过端口5566
现在是时候逃跑了!gnes board可以根据您提供的yaml配置自动生成启动脚本/配置,省去了自己编写脚本的麻烦。
< Buff行情>您也可以在本地启动GNES板。只需运行 作为云本机应用程序,gnes需要一个编排引擎来协调所有微服务。我们支持kubernetes、docker swarm和基于shell的多进程。让我们看看在这种情况下生成的脚本是什么样子的。 为了简单起见,我们将只使用生成的shell sc启动GNES。创建一个新文件,比如 这表明gnes应用程序已经准备就绪,正在等待输入的数据。现在您可以通过 要停止运行gnes,只需执行控制+c 现在让我们把它加点汁。老实说,建立一个基于单机器流程的管道并不令人印象深刻。gnes的真正威力在于,您可以随时缩放任何组件。编码速度慢?增加更多的机器。预处理时间太长?更多的机器。索引文件太大?添加碎片,又名。更多的机器! 在这个例子中,我们为图像组成了一个更复杂的gnes工作流。此工作流由多个预处理器、编码器和两种类型的索引器组成。特别地,我们介绍了两种类型的索引器:一种用于存储编码的二进制向量,另一种用于存储原始图像,即全文索引。这两种索引器并行工作。查看表左侧的yaml文件了解更多详细信息,请注意如何为每个组件定义 请注意 一般来说,一个完整而成功的Docker Swarm启动过程应该如下所示: 当gnes堆栈准备好并等待i编码数据,现在可以通过 要停止正在运行的GNES堆栈,可以使用 借助于gnes board,您可以轻松地编写一个用于不同目的的gnes应用程序。下表总结了一些常见的组合以及相应的工作流可视化。注意,为了清楚起见,我们隐藏了组件级yaml配置(即 既然您已经知道如何编写和运行gnes应用程序,让我们简要回顾一下我们所学到的知识。 下一步是将数据馈送给gnes进行训练、索引和查询。有关更多详细信息,请查看教程和文档。 gnes的官方文档位于doc.gnes.ai上。. 它在每一个新版本中都会自动生成、更新和存档。 教程仍在建设中。敬请期待!同时,我们真诚地欢迎您为我们提供您自己的学习经验/案例学习! 如何编写gnes-yaml配置
如何编写基于组件的yaml配置 使用GNES索引和查询文本数据 用gnes索引和查询图像数据 使用GNES索引和查询视频数据 将gnes与kubernetes结合使用 在其他语言中使用gnes(除了python之外) 以端到端的方式向gnes提供http请求 感谢您对贡献的兴趣!gnes始终欢迎开源社区、个人提交者和其他合作伙伴的贡献。没有你,gnes就不会成功。 目前有三大贡献方向: 确保在第一次提交之前阅读参与者指南。 对于希望深入了解api的贡献者,我们建议克隆存储库并查看单元测试,以获取如何调用方法的示例。 如果你在学术论文中使用gnes,那么你非常欢迎引用。以下是引用gnes的两种方法: 如果您下载了GNES二进制文件或源代码的副本,请注意,GNES二进制文件和源代码都是根据2.0版的Apache许可证获得许可的。
docker run-d-p 0.0.0:80:8080/tcp gnes/gnes compose--serve
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
3
<详细内容><细节>docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
4
<详细内容>run.sh
,将内容复制到其中并通过$bash./run.sh
运行它。您应该看到如下输出:grpcfrontend
将数据馈送给它。根据您的语言(Python、C、Java、GO、HTTP、Shell等)和内容窗体(图像、视频、文本等),数据馈送部分可能略有不同。将您的GNES应用程序扩展到云端
副本
。
yaml config gnes工作流(由gnes board生成)
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
5
=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
6
gnes-531
是您的gnes堆栈名称,请记住该名称。如果你忘记了这个名字,你可以一直使用docker stack ls来查找。要判断整个堆栈是否成功运行,可以使用docker服务ls-f name=gnes-531
。副本的数量1/1
或4/4
表明一切正常。grpcfrontend
将数据馈送给它。根据您的语言(Python、C、Java、GO、HTTP、Shell等)和内容窗体(图像、视频、文本等),数据馈送部分可能略有不同。Docker Stack RM GNES-531
根据您的需要定制GNE
yaml路径
)。yaml config gnes工作流(由gnes board生成)
仅并行预处理
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
7
训练编码器
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
8
带3个向量索引碎片的索引时间
docker login --username=xxx ccr.ccs.tencentyun.com # login to Tencent Cloud so that we can pull from it
docker run ccr.ccs.tencentyun.com/gnes/gnes:latest-alpine
9
<表>
包含2个矢量索引碎片和3个全文索引碎片的查询时间
pip install gnes
0
带回家信息
接下来是什么?文档
教程
< Buff行情>贡献
引用gnes
pip install gnes
1
pip install gnes
2
许可证
版权所有(c)2019 THL A29有限公司,腾讯公司。保留所有权利。推荐PyPI第三方库