Chat with Milvus #7 回顾:网站升级、Milvus 加入基金会 & Milvus 分布式的一些想法

Chat with Milvus #7 视频

 

谢谢各 Milvuser 的参与,Milvus 线上问答来到了第7期!每次会议都会有小伙伴为我们带来不一样的想法和视角,或是让我们知道我们有哪里可以做的更好。

如果你想来和大家分享你对 Milvus 或是近似检索的一些想法,下周二晚上8点-9点欢迎你来畅所欲言! 我们现在也在对活动时间做一个调研,点这里帮我们填个问卷喔-> Chat with Milvus 线上问答活动时间&内容

 

| 部分Q&A文字实录

* 以下文字部分由语音转文字,已经过一些调整。

⏳影片时间戳看这里:

0:00 - 08:31 Milvus 新版网页介绍

09:00 - 13:40User A

13:40 - 23:36User B

User C 的声音不是很清楚,这里文字未收录

26:17-35:55 User D37:42-47:40User B


顾老师 @Milvus:

您这边的机器视觉场景的话,你的图片库相对来说是一个固定的图片库吗?因为我们现在在机器视觉当中有两类用户,一类是可能它的图片库没有那么大,可能在千万级,但是它的并发要求比较高一点。然后另外一类用户他的图片库的量比较大,基本在上10亿,可能在上亿到上10亿之间,但是它的查询的频率可能却没有那么高。所以就是说像您这边的话,机器视觉主要会更靠近哪个场景?

User A:

我应该是更靠近第二个,因为我们的视频那个图片是通过视频来,它的视频量很大,而且视频经常他是按每天来算的,经常可能会舍弃,但是他在用的频率不是很高。

顾老师 @Milvus:

所以像在你们现有的场景下的话,其实你们是已经有一些方式去做这样的检索吗?还是说是从头想要构建一个视频检索的一个东西。

User A:

因为我们现在需求量其实我们查的并不多,所以说我们查的速度可能比较慢。有自己的一种方法,但是可能很没有你们的这种好,比你们的差很多的感觉。

顾老师 @Milvus:

所以像在你们的这种场景下的话,你们会有多硬件资源去做这样一个这种支撑查询的场景?你们一般都会是通过单节点的机器吗?还是说会组建一个集群?

User A:

因为我看到你们可以做分布式的,但是你们的分布式我想目前还不是很完善。其实我个人想的话可能会想做一个分布式的。

顾老师 @Milvus:

明白了,所以你是希望通过分布式去扩展它的集群支撑的这个数据量是吗?因为现在我们的分布式当中可能会依赖于一些这种共享存储,然后也是因为..像你的环境是私有部署的环境吗?还是一个在云端的环境,一般来说?

User A:

应该是一种私有的云。可以这么说,它网是内网的结构,那么它的云可以是自动存储,也可以是单机的。

顾老师 @Milvus:

所以在你们的私有云的部署下,一般会有这种分布式的共享存储这样的一个基础设施的架构吗?

User A:

这方面我也不是很了解,因为我们只是用他们的东西,用他们这些搭好的环境。


User B:

在做 index 的时候,它不是会达到 index_file_size 然后就会去做一次嘛,然后Milvus 最近的发布的话也提供了像delete的这种 API 嘛,然后你可以手动的去 compact,compact 之后,它感觉应该是全量的重新建索引。

顾老师 @Milvus:

我们现在 compact 它只是物理的把它删掉,但是它还不会重新的去建索引。因为每一个向量集它是一个文件,然后一个文件去索引,所以其实就是说你删的这个东西也是在某一个文件里,然后可能在这个文件里删掉的东西太多了之后,可以做一次compact去做一次压缩,让它这个文件变得小一点,但是我们暂时还不会去重新构建文件的索引。

User B:

好的,那么的话我现在可以这么理解到,就是说达到 index_file_size 以后,他已经就是说对于这个文件建了索引后,后面其实基本上就是一个比较稳定的,当你再来数据的话,它会重新在另外的一些文件里面达到size会在重新去建索引。所以像这两个文件之间,他们其实是没有太大的关联到的索引之间对吧?

顾老师 @Milvus:

对的,是的,现在是这样子的。

User B:

其实我在想一个问题,假如说我是同一批数据进来,就是同样的数据,但是我进来的顺序不太一样,会不会对搜索的结果会产生影响?因为假如说我现在的数据进来之后,其实我要搜索的目标向量也在第1批数据里面,它可能就分在第1个桶里面。后面再来的话,它如果是到其他的文件里面去了,虽然说它中心向量它最中心,虽然说它也经过聚类,但它的中心向量的话,可能跟我最终要去搜索的,可能在nprobe以外了。我同样的数据,同样的nprobe但是我这个数据进来的顺序不太一样,实际上最后的搜索的结果会有一些不太一样。

你像刚才的情况,我后面又来了一个数据,实际上它是跟第1批数据分在第1个桶里面的是很相近的,但是由于它是很后面进来的,他被挪到了后面的一些桶里面去了。这样子的话其实你去搜的话,可能就搜不到它了。

顾老师 @Milvus:

是这样的,因为每个文件的向量都是每个索引文件,都是重新建的索引,所以它的分类情况是会不一样的,所以当你去搜索的时候,会在每个索引文件上都去进行一次搜索的过程。可能你在第1个文件上取得分得nlist是这一些分类,nlist10个,然后在另外一个文件当中你取的就会是另外10个,所以其实它并不会影响到最终的结果。

但是这个过程当中确实也存在一些可会有权衡的部分,因为每一个文件都重新训练一次索引的话,其实他会在建索引的时候花费的时间会比较长,所以我们也是在想有没有一种可能说,比如说我第1个文件建完索引了,那么我按照第1个文件的分类情况,当有第2个文件的数据进来的时候,我就按照前一个文件的分类情况,去把那些数据就直接插入到每一个nlist里面,然后再最后到达上限的时候,这个文件要切分到他上线的时候,我们如果有一些状态信息可以去判断说,这个文件当中的索引的nlist的分布都还是可以接受的,那么也许我们就可以不建索引,我们不重新建索引,我们可以沿用上一个索引文件的分类信息。

当然这是一种考虑,因为它这个过程也是一个比较复杂的过程,它其实和你分类的数量也会影响到它搜索的时间嘛,所以这可能会是一个我们在考虑能不能有没有可能去做这样的一个东西,但是目前的话我们还都是每个文件都会去建新的索引,在每个新的索引的每个索引文件上都会去执行一遍新的搜索。从寻找合适的nlist开始,一直到在nlist里面进行距离的计算,最后做的排序等等。

User B:

对,因为我在想有一种情况,可能一开始是它大批量建好了数据,后面的话,其实源源不断的这种增量数据进来的相当于是一个全新的索引。有没有一种可能就是说像关系型数据库一样,做这种单量的左边这表示增量的聚类,像这种之类的。

顾老师 @Milvus:

是的,我们也是在考虑这个东西,要实现它的话,当然会有一些就是一些外围的工作需要去做,包括统计这些分类的信息,这些分类当中是否均衡等等,这部分可能在现在我们还没有,所以的话我们去评估一下,这个东西要做的话,还是怎么去把它做得比较好。

User B:

我看Milvus在存储这一块,就是说在数据可用性这一块的话,它比我以前我看过像splunk他们里面对数据进行储存储这一块的话,它还有就是说副本这个概念为了增加它的可用性,我看你们的文档里面好像说以后会继续对接S3,这样子的话,把它的可用性其实实际上是交给了第三方。从Milvus本身它的存储上面,因为我在文档里面没有看到有副本这样的一些概念了,它以后会去做这一块的支持吗?

顾老师 @Milvus:

对,我们现在确实把副本是交给S3,因为在0.7.0当中其实都已经有对接的S3的存储。然后自己自身要不要去做这个问题,确实我们还在考虑当中。因为在一个云环境下,分布式存储现在看起来都是一个比较标准的组件,是不是还有必要自己去做一套,确实我们也是在考虑这个问题。


User D:

最近也是在有关注到咱们开源项目,我这边主要比较关注性能这一方面,以及一些公共的案例,目前也属于调研阶段。之前遇到的问题也有根咱们工作人员及时的沟通,工作人员很热情,希望咱们这边继续努力。然后想了解一下新加入的基金会的这些方面。

顾老师 @Milvus:

Milvus 在1月份的时候,其实就已经做了 Linux 的 AI基金会的一个进入孵化的申请答辩。当然因为最近的一系列的事情,然后基金会的律师也比较忙,我们是到上周才最后把所有的流程走完,包括所有的注册商标转让的合同协议的签署。所以上周是正式的宣布说Milvus加入到 Linux下面的 AI 专项基金会去作为一个孵化项目。

这部分其实我们现在也是可以在这个LF AI foundation的网站上看到我们这个项目,他会把我们的一些整体的情况和一些基本链接都放在上面。对,包括在我们的GitHub的 repo当中,现在增加了一个新的叫Artwork的一个repo,它就是Milvus的logo。大家都可以去使用,因为 logo的所有权现在是在基金会下面,所以可以比较安全的去使用这些logo,如果你需要使用的话。

然后其实如果你关心的案例的话,我们现在也是会逐步的去把我们更多的案例能够形成一些文章能够发公众号上面,包括在我们的微信群当中,也有一些人会经常问这个东西的用法。当然他们每个用户可能在不同的阶段,有的可能是在一个相对早期技术了解的过程,然后有的可能是在做POC,但有的可能就已经准备上预生产,甚至到上生产的状态。所以我们其实都是希望最后大家如果上了生产的话,可以给我们做一些技术文章的输入,然后能够帮助我们去更多的推广这个项目。

像之前两周有一些互联网用户在我们的交流群当中也提到了,因为他们其实也是某云的用户,他们也使用某云的GPU的服务器。那么他们也提到说,似乎在他们的测试场景当中,似乎在某云的GPU服务器上的性能和他们的本地的GPU服务器还是有些差异的。我不知道之前你在测试的过程当中,有没有发现类似的问题?

User D:

是的。这个好像是我测的。之前有测试的时候就会发现性能好像表现的不是那么好。可能是因为咱们这边,因为它是需要有很多lO的一个输出, lO的一个消耗,所以说性能可能会稍微的差那么一点点。但是在咱们提升的方面的话,也是很不错的。

顾老师 @Milvus:

就像类似于这种云的环境, GPU 做的虚拟的就是比如说我现在云环境下申请一个GPU实例的话,它背后是有一个物理的机器吗?是一个规格的机器吗?还是说它是在物理规格的机器上切了一小份,分配到我的名下?

User D:

它相当于一个云上有一个统一的后台调度,然后供到咱们前台创建的这些机器进行使用这个样子。这个具体的话可以到官网上面仔细的看一下,应该也有详细的介绍的。

顾老师 @Milvus:

好的。所以你们的 GPU 的云服务器用的也是英伟达的那一套虚拟化的方式吗?

User D:

对的。另外咱们今天的会议,我看还有介绍到就是说0.7.1的发布,就是说从0.7.0相比的话0.7.1这个版本..

顾老师 @Milvus:

主要是做一些性能上的提升,以及一些这种汉明距离、杰克尔的这种相似度的一个新的近似 matrix的一个支持,但主要是对性能做了一些提升。在我们的自己单机测试的环境下,包括多客户端并发的测试情况下,它的吞吐量还是有一个比较显着的提高。

我们是测的一个是单连接的性能的提升, 然后还有一个应该是20个客户端并发的客户端的一个并发情况下的吞吐量的提升。在我们的这个技术文章当中都有,但是后续我们也会给大家去更多的解释,说我们究竟做了一些什么样的工作,去提升了这样的一个性能。

User D:

好的,因为我在用的时候发现有一些文档好像还不是那么仔细。

顾老师 @Milvus:

对的,文档还有些欠缺。

User D:

不过我后来有问到你们工作人员,工作人员都很耐心,有讲解的。

刚才有说到就是说一些案例的比如说发号、公众号上面的这些,我想了解一下最近期咱们有没有新加案例或者是怎么了?

顾老师 @Milvus:

对,最近也有一些互联网的用户把我们的东西上线。具体的呢,因为我们和他们也还在沟通过程当中,希望能够得到对方的一个批准去介绍他们的案例。

User D:

案例慢慢来没关系。比如说真实用户场景下,就是一些关于这方面的案例或者是一些更贴近真实的场景的一个应用,这样可以更有那种主观的感受,可能会更强一点。然后同时的话也算是一种推广。


User B:

在这个产品方向上面,因为现在Milvus是开源的,然后Mishards在文档上面也特地说明了,还不适合生产部署。我作为一个用户来说的话,从我的感觉上面,就是说会不会这种集成的部署更有吸引力?从公司这个角度来说,他以后会主推Mishards还是会继续去更多的优化在Milvus 这块?

顾老师 @Milvus:

确实我觉得可能很多人会关心这个东西,其实是这样的就是说我们对于Milvus的一个定义,它是一个从单机到分布式都可以支持的一个方案,所以不会说单机的它是开源的,然后分布式的它又是另外的一个东西,然后又是可能不开源,或者说它又不是在基金会下面的,并不是这样的情况。

Milvus它会覆盖从单机到分布式的全场景,那只是说在这部分当中是因为很多人可能会把Milvus去和这种Elastic去做比较,会觉得说为什么像Elastic可能它所有的分布式都是自成一体的,自己都搞定了。

Milvus的话,我们的分布式可能更像是一个分布式部署的指导意见。我建议你这样做,用S3的分布式存储,然后用Nginx做一个负载均衡等等的这样一系列的东西。我觉得也是因为我们Milvus诞生的时代,它就是一个云原生越来越流行的时代,因为很多的组件,像分布式存储已经有现成的了,然后分布式环境下的原数据管理也有现成的东西。对Milvus这一类型的系统,它在云上它其实没有一个分布式的原数据,有一个分布式的存储,

然后再有前端的这种负载均衡的Nginx这样的东西,其实我们是在分布式环境下是有大量的现成的东西可以去利用的。所以我们也一直在想,在这个时代真的有必要自己把所有东西都重做一遍吗?因为毕竟Milvus的情况和传统的数据库不太一样,因为传统的数据库的话,他所依赖的这种分布式存储,他可能是需要为数据库做大量优化的一个东西,一个绑定很高的一个东西,所以你可能得必须自己去做,但是在Milvus当中索引都是一个的文件,这个文件它其实放在对象存储上也挺好的,也看不出什么问题来,唯一我们可能要在一些日志或者说其他的角度去做一些优化。

所以可能有的时候会让大家造成一个误解,就是说觉得Milvus是一个单机的东西,但其实从我们对它的定位来说,并不是这样,就是说他应该是在现在的这种原生的环境下,它也可以去做分布式的部署,我们也会给大家更多的去建议一些分布式的部署最好的方式。

因为我们K8S上来之后,分布式云原生的环境下,其实它太多现成的组件了,我觉得我们去重写的话,感觉不是那么的有必要。

User B:

我看公司就是说另外还有一套产品,是不是?我不知道是不是这么念-MegaWise,就是一套时空分析平台。然后给我的感觉,整个公司现在在做的这些事情,实际上是跟医药或者是像是Splunk这些,其实是从他的产品的角度确实非常的类似,还提供一套搜索引擎,然后从前端也提供这样的一些分析平台,对结构化数据分析、非结构化数据的一些分析。就是说在这两个产品,就是说Megawise和Milvus这一块的话,以后就是时空数据分析平台和现在的Milvus这一块的数据会做一个对接吗?

顾老师 @Milvus:

现在可能暂时还看不到这样的情况,因为其实我们已经有一个开源项目,叫做Arctern的一个开源项目,就是做海量的时空数据分析、预测以及可视化的一个场景,它其实更多主打的是一种时间信息加上空间信息的信息数据,但那种它不是一种高维向量的数据,它可能更像是一个传统的数据库当中的这种结构化数据,增加了时间属性,再增加了一个地理位置的属性这样的一种场景。虽然两边底层可能都会用到像GPU、高性能计算的一些技巧,但是从数据所针对的类型来讲还是不太一样的。

User B:

因为我在看的时候,我一直在管这两个产品,我以为他们以后会是做关联的。

顾老师 @Milvus:

对,我明白你的意思,其实在某一些场景下,可能真的是会有关联的,比如说一些智慧城市的场景下,那么你会有大量的传感器,它会传上这种时空信息,然后同时你又会有摄像头也好,或者各种各样的这种非结构化数据捕获的设备也好,那么可能在那个场景下,一整套东西你可能都会用到Milvus做非结构化数据的东西,用Arctern做结构化数据的东西。但是怎么讲,他们的交集可能在业务场景上的交集,我觉得是有潜在的是会有的,但是目前来讲,我们还没有把他们两个能够对接在一起。

User B:

就是说我这边是在想,比如说现在你们推出了很多这种案例,比如说以图以搜图,像其他的一些,有没有可能就是说在Arctern这一边,或者就是说在他那边以插件的方式去支持这样的场景?

比如说我们有些公司实际上它确实想要做这种以图搜图,像这样的一些解决方案的话,直接不是说以我们现在提供的这个案例或者是代码的这样一个方式来去搭建,而是在这种时空分析平台上面,以插件的方式,比如说支持,然后后面就是对接相应的Milvus,这样的一些提供整个场景的解决方案。

顾老师 @Milvus:

是的就是说我们对于Milvus,我们是想把它做成一AII时代的数据处理的一个平台,能够成为一个最流行的AI数据平台。

当然就像你说的说在上层其实会有一些更加垂直的场景,比如说搜视频、搜图片等等。当然搜图片有好多种不同的手法,那人脸的是一种场景,车的是一种场景,或者说overall就是图片整体的相似性又是一种场景。

其实我们也是在做这样的一个更加垂直的非结构化数据的搜索引擎,也是未来我们会逐步开源的一些东西。开源的项目,当然它底层的核心就是会用到Milvus,然后我们也会把一些内容就是一些功能会做一些切分,有的功能应该是归在Milvus当中的,那么会把它放在Milvus里面,下沉到Milvus里面。

有一些可能是更加垂直的东西,我们会放在那些项目当中,就像比如说一个视频过来,它可能会有图片,它会有声音,甚至它会有一些结构化的标签属性。像这些东西都会放在Milvus当中,我们会构建实体的模型,实体它可能会有多个维度的向量,去表示它的视频,去表示它的图片信息,去表示它的音频信息,去表示它的结构化的属性的信息,然后去做分析的时候,你可以去关联各个不同维度的向量去,然后最终打分。

像这样的一种模型,我们都会把它下沉到Milvus去完善。当然前端的,因为你整个图片搜索也好,视频搜索也好,它会有一个流程,这个流程他是去处理你这张图片,怎么样做转换,怎么样做缩放,怎么样去提取当中的对象,怎么样把对象拿到合适的模型,做进一步的向量化,那种流程化的东西,可能就放在这种更加垂直的项目当中去体现。

 

| 欢迎加入 Milvus 社区

http://github.com/milvus-io/milvus | 源码

http://milvus.io | 官网

http://milvusio.slack.com | Slack 社区

http://zhihu.com/org/zilliz-11/columns | 知乎

http://zilliz.blog.csdn.net | CSDN 博客

实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值