超强版干货投递!Milvus 的部署心得、运维秘籍都在这里了!

好奇 Milvus 读链路的演进?不知如何优化 Milvus?提到 Milvus 的业务场景只能靠想象?想获得其他人的部署经验?困惑于 Zilliz Cloud?

不藏了,摊牌了,对于上述的所有问题,你都可以在今天的文章中找到答案!

近期,Milvus 社区 2023 线下 Meetup 北京站圆满结束。本次活动,我们共邀请了 5 位来自内部和外部的社区大佬进行分享。

alt

前方干货值超标预警⚠️⚠️⚠️:

01:Milvus 读链路的演进与未来

02: 从背景到应用:汽车之家的完整调优实践

03: 智慧树:用 Milvus 进行试题查重是一种怎样的体验?

04: 震惊!BOSS 直聘的部署运维心得竟毫无保留

05: 复盘与展望——你必须要知道的 Milvus & Zilliz Cloud

目录在此,各位按需自行手动“跳转”。同时,现场完整版秘籍(PPT)可关注 Zilliz 微信公众号回复【0415】获取。

alt

01.Milvus 读链路的演进与未来

Zilliz 高级研发工程师夏琮祺主要从 Milvus 的读链路从 2.0 到 2.3 Beta 版本的演进路程进行分享。

从 Milvus 2.0 版本开始,读链路的定位便面向云原生架构,因此从架构开始就希望它是一个可扩展的、各个组件之间能够相互解耦合的设计。

2.0 版本的时候,Milvus 的读链路是经过 MQ 的,对于一个 Collection 的查询,需要获得全体 QueryNodes 的执行结果:

alt
  • Proxy 广播 Search/Query 请求

  • QueryNode 订阅 SQ Topic,处理读请求,Produce 到 SQ Result Topic

  • Proxy 订阅 SQ Result Topic,收到所有的结果后合并、返回

Milvus 2.1 版本的时候,Milvus 引入了通过 Grpc 发起读链路。Proxy 获取 Collection 所有 Channel 对应的 ShardDelegator 列表,通过 Grpc 访问服务:

alt
  • Proxy 通过 QueryCoord 访问获取可用 ShardDelegator 列表

  • Proxy 调用 ShardDelegator 的 Search/Query 接口

  • ShardDelegator 执行请求后返回

此外,Milvus 还进行了一些其他架构的调整,在 2.0 版本的时候,QueryCoord(v1) 所有的操作均进入一个调度器(scheduler)统一调度执行:

  • Load/Release 操作会进入队列排队

  • 对应的 Segment 分布会记录在元数据内,所有的 load/release/balance task 也会被记录

Milvus 2.2.3 版本时,QueryCoord V2 通过 Target Driven Load 的方式实时更新 Collection/Partition 的 segment、channel 列表,通过 Checker 来完成数据的正确加载和调整:

  • Load/Release 仅变更 collection/partition 级别的元数据状态

  • 通过 Checker 检查 query 集群的 segment 分布来生成 Load/Release task

  • 通过 Target 迭代完成“handoff”

目前,Milvus master 版本对 QueryNode 进行重构,移除了开销巨大的 Delta Channel。自从 Milvus 开始支持 Delete 操作后,部分 QueryNode 需要 delta channel 来获取 delete 数据,原因无外乎三点:需要额外的转发操作;MQ 的 topic 数量*2、代价昂贵;一致性等级受到 2 个 channel 的影响。

最后,夏琮祺分享了 Milvus 关于在读链路上相关的规划和展望:

首先是对于 Growing Segment 的优化。Growing segment 作为流式数据,在 2.2.x 版本内无法构建索引,作为木桶效应中较短的那块木板,如果系统中存在大量的 Growing Segments,会严重影响查询效率和吞吐。为此,Milvus 在 2.2.4 版本已经增加了 Ignore Growing 选项,未来会支持对 Growing segments 的索引。

其次是优化 Load。QueryNode 对于 segment 的查询目前为纯内存操作,硬件高昂。对于离线分析场景,颇有“杀鸡用牛刀”的意味。为此,Milvus 计划优化 Load 的内存使用;引入 mmap,能够自定义 buffer manager;实现 Auto Load。

02.从背景到应用:汽车之家的完整调优实践

汽车之家的高级数据工程师王刚进行了《向量检索平台实践》的主题分享。

他提到,汽车之家使用 Milvus 有这样一个背景:

在调研向量检索平台之前,汽车之家的平台用户在搜广推等业务方面,已经基于 Vearch 广泛地使用了向量检索方面的技术,包括推荐召回、视频图片去重、文本检索。不过,这也带来了一些问题,例如维护困难、性能问题、资源浪费、向量数据接入效率低等。

在此情况下,汽车之家选择了 Milvus。原因在于,Milvus 拥有先进的架构思路,例如读、写、建索引不会互相影响;其次,Milvus 社区非常活跃,社区用户提出的问题会有专门的人去跟进、解决,能够及时得到反馈。

在基础建设方面,汽车之家结合 Milvus 的优势与汽车之家向量检索平台本身的需求进行适配和调整,最终搭建出一套流畅、好用的基础设施:

alt

王刚表示,平台的基础设施为 s3 云存储、etcd、kafka,平台支持多个 Milvus 集群,并建了一些管理功能(集合管理、索引管理、权限管理)。再者,汽车之家统一了数据接入的入口,可以通过配置的方式直接把数据接入到 Milvus 中。同时还配置了统一的查询入口,适配了 vearch 的查询语法。在部署层面,汽车之家改造了 Milvus 的原生镜像,使其支持汽车之家流水线。此外,还将 Milvus 部署汽车之家的云 K8S 上。

后续,汽车之家根据自身需求做出的相应调整:

在接入效率方面,规范了接入方式,平台支持通过配置将数据从 Hive 直接导入 Milvus;支持 AB 表的接入模式,思路很简单,每次更新的时候都会建一张新的表,之后会通知平台的查询接口,让其切换到新的表进行查询。

在性能方面,针对网络抖动,汽车之家进行了相应的优化,避免其带来的影响。首先是弱一致性查询的时候不会再请求全局时间戳;其次,将同一副本的 segment 分配在相同的 Query Node 上。

在稳定性方面,在使用 Milvus 2.1 版本时遇到 Datacoord 合并 Segment 卡住、Proxy 偶发性重启、DML Channel 记录位点错误等问题在升级至 Milvus 2.2 版本便得到解决。

03.智慧树:用 Milvus 进行试题查重是一种怎样的体验?

智慧树 AI 能力平台负责人张宇则从偏工程化方面分享了 Milvus 如何在智慧树进行应用落地的过程。

智慧树的定位是全球大型的学分课程运营服务平台,平台的题库拥有亿万级别的海量试题。每学期开学都有很多老师需要将不同课程不同题型的试题导入到题库中去,

由于之前没有做试题去重以及去重的方式效率比较低,题库中存在大量的重复试题,导致数据库中存在大量的冗余数据。

随着数据量的不断增加,平台急需一个试题查重的服务,可以离线处理现有的冗余数据,还能够提供实时服务来能够在导入试题的时候就可以提升给老师有哪些题是重复的,在数据来源就解决重复试题的问题。

但试题查重谈何容易,其中涉及准确率、复杂度和效率问题。首先是准确率的问题,能否尽可能有效地找到重复的题目,不单单是字面意思的相似,还要有题目语义的相似判断。复杂度问题,不同学科课程,需要针对各自的特点采取不同的相似度查重判断的规则。效率问题,批量导入题目的时候,不但需要跟题库里的海量试题比较,还需要跟本次导入的题目做比较,还要保证查重的效率性能足够高,不影响用户体验。

在此情况下,智慧树选用了基于 AI 算法向量+ Milvus 的方案进行题库试题去重:工程服务处理业务逻辑将题目的文本信息调用 AI 算法服务将题目文本转换成向量,然后在 Milvus 中通过向量去搜索相似度大于阈值的向量,将对应向量的题目 id 返回。

alt

有了题库试题去重的成功业务落地之后,智慧树对向量数据的使用量也是与日俱增。随着其 AI 业务的不断增加,更多的业务需求也随之而来,例如视频、教材、知识图谱等资源的搜索推荐,都会大量使用到向量化的数据来检索相似度,且需要通过使用的不同的模型训练和不同的业务匹配规则。为了更好地支持业务和提升效率,一个通用向量生产平台就变得非常重要。

张宇提到,智慧树通过不同的实时推理集群产生的实时向量和离线训练集群结合数据平台产生的离线向量数据,存储到 Milvus 的集群里,并且利用配置好的规则引擎,来处理向量的生产和相似度检索工作,大大提升了公司的向量生产性能和效率,更好地支持了业务的使用。

04.震惊!BOSS 直聘的部署运维心得竟毫无保留

BOSS 直聘的 AI 研发工程师马秉政分享主要从 Milvus 的部署运维方面进行了经验分享。

BOSS 直聘 Arsenal 算法平台,是面向 BOSS 直聘全厂数据/算法工作者的一站式 AI 开发平台,包括数据处理、模型训练、推理服务、MLOps、运行监控、平台管理和产品体验。平台在向量检索的主要使用场景是相似图片召回、相似文本召回和推荐召回。

马秉政表示,在目前公司的众多算法部分中,实现向量检索的手段各不相同,包括:在内存中暴力计算;基于 Faiss 实现索引,自建服务;使用平台提供的向量检索系统。不过,这也带来一些存在计算瓶颈、资源浪费、服务稳定性不足的问题。

选择 Milvus 的原因也很简单,包括云原生特性、存算分离、有多样索引支持、简单易用。

随后,马秉政又从集群部署、业务指标调优以及稳定性建设方面进行了分享。

首先是集群部署。在进行部署方案的选择时,BOSS 结合 Docker compose 、Helm chart 进行部署、拆解。

那么,有没有好的部署经验?马秉政表示,让一套 Milvus 集群成功运行的原则就是组件配置统一、正常通信。解释一下这句话的意思,Milvus 的内部无状态组件共 8 个,依赖 3 个外部服务/中间件,以经验来看,Milvus 的部署原则只有一个,即只要能保证各个组件的配置统一,且能够正常通信,就能使一套 Milvus 集群运行。

alt

其次是业务指标调优。通常对于业务来讲,最关注的就是 QPS 与 TP99,根据不同的业务场景的调优方案也不同。

例如 TP99,首先直接影响查询延迟的变量就是数据量了。在不考虑索引的情况下,1000w 128 维的检索耗时一般在 100ms 以下,更高的数据量可以通过数据分区来降低耗时。

又如 QPS,增加 querynode 的 CPU 资源是提升 QPS 的直接手段。另一个手段是增加副本数,Milvus 最多支持等同于 querynode 数量的副本数,用内存换 QPS,需要进行取舍。在部署 querynode 时,BOSS 通过 cpuset 绑核 + single numa 限制 CPU 在单一的 numa node 上,保证 querynode 的资源可用性,提升内存的访问效率,达到提升性能 + 查询耗时的稳定性的效果。

在稳定性建设方面,Milvus 的 backup 工具提供了 collection 的跨集群备份恢复能力。此外,团队会为每一个集群分别创建读写两个域名,这样增加了一层操作空间,当一个集群出现写入问题时,可以先将写域名切到新集群以供数据更新,待所有数据恢复后切换读域名,这样可以让查询端无感知。而对于稳定性要求高的业务,会采取主备集群的方法,来确保出现问题时,有一定的缓冲空间。

此外,马秉政也提示,Birdwatcher 是运维管理 Milvus 集群非常重要的工具。

05.复盘与展望——你必须要知道的 Milvus & Zilliz Cloud

Zilliz 合伙人、产品总监郭人通从 Zilliz 最近的重要进展、Milvus 关键的功能特性以及 Zilliz Cloud 的产品蓝图三个方面进行了分享。

郭人通表示,过去 3 个月的时间,Zilliz 成果颇丰,包括:

  • 和英伟达 GPU 的索引算法库进行深度集成,与 CPU 相比,HNWS 的性能大幅提升;

  • Milvus 从 2.0 版本升级至 2.2.3 后,性能提升 4.5 倍;

  • 扩展性方面,Milvus 能够处理 10 亿级别的 768 维向量;

  • Milvus 关键功能方面新增支持 Range Search、Upsert 和 Bulk Insert;

  • 目前 Milvus 已经能够支持 Resource Group、Rolling Upgrade、Quota protection、Dynamic config update;

  • -针对今年来大火的 AIGC,Zilliz 在生态上做了集成,包括 OpenAI、 Hugging Face、 Langchain、LLaMA-Index、Nvidia Merlin。

随后,郭人通介绍了 Milvus 最近的关键功能特性。除了最近新增的特性(包括加速混合过滤的速度、新增磁盘索引)外,他着重介绍了未来 Milvus 2.3 和 2.4 版本的重要变化。

首先是 Milvus 2.3 将支持 Json 数据类型,在此基础上亦会支持 Schemaless。此前,用户在使用 Milvus 的过程中会先定一个静态 Schema,此时,如果在实际业务层面如果多了几个 feature 或者 Metadata,就意味着数据需要重新来过。经此变化后,Milvus 2.3 便可实现动态部分通过 Json 列支持。

alt

其次,Milvus 2.3 也会支持 vector list。在实践过程中,团队发现很多用户的业务并不非以一个向量为单位,例如视频或者长页文档,可能每段都会对应一个向量,然而进行查询业务时却需要将整篇文档或整个视频作为查询对象。以视频为例,有了 vector list 以后,一个数据实例可以拥有一个属性列。在这个属性列中,一个视频对应一个主键,视频连续关键帧的 vector list 对应该行的一个属性。由此便可支持这一组向量的近似查询。

Multi vector embeddings 是 Milvus 2.3 版本的另一个重要特性。同样以视频为例,视频帧的特性会有一个 embedding,而视频的标题可能还有另外的 embedding。这两套 embedding 各行其道,实际进行查询时不仅需要标题近似,内容部分也要相契合。当然,这一点与后续提及的混合查询也是强相关。

提及 Milvus 2.4 的重要特性,郭人通强调,该版本的重要特性之一便是混合查询。正如之前所言,在数据 Schema 中包含传统的静态 Schema 和动态 Schema,其中包含密集向量、稀疏向量、文本相关、标签数值等。各列可以进行混合查询及属性过滤,随后会进行融合的 ranking。这个过程有点类似推荐系统中的粗排精排。目前团队实现了一种比较简单的线性加权的方式做融合,后续会根据社区需求选择其他处理方案。

alt

最后一部分是 Zilliz Cloud。整体而言,Zilliz Cloud 的规划分为三个阶段,第一个阶段的主要任务是支持维护好基本的数据库操作。目前,Zilliz 已经完成了第一阶段的规划,在云上有超过 1000 位用户,支持两朵云(AWS GCP),使用 Cluster 的部署方式,性能方面与 Milvus 2.0-2.2.3 一致,吞吐为 4.5 倍,延时降低 2.5 倍。第二阶段是实现 Zilliz Cloud 与 Milvus 关键特性的持平及稳定,覆盖阿里云,提供 Serverless 支持;第三阶段将支持微软云,实现面向云服务的 GPU 版本的资源优化。

alt

此外,近期 AIGC 开发者的需求增长迅速,针对这部分用户对于上游大模型、模型服务提供商的生态对接需求,郭人通表示,团队正计划于 2023 年 7 月底前集成完毕,包括 OpenAI、Google、国内中文大模型等。

🌟相关链接🌟

1. OSSChat:艾瑞巴蒂看过来!OSSChat 上线:融合 CVP,试用通道已开放

  1. GPTCache: 我决定给 ChatGPT 做个缓存层 >>> Hello GPTCache

GPTCache:LLM 应用必备的【省省省】利器

  1. Zilliz Cloud: LLM 快人一步的秘籍 —— Zilliz Cloud,热门功能详解来啦!

本文由 mdnice 多平台发布

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

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

相关文章

科研办公学习的开源免费神器汇总

科研办公学习的开源免费神器汇总 一.公式: 1.Mathtype 是一款专业的数学公式编辑工具,理科生专用的工具。mathtype公式编辑器能够帮助用户在各种文档中插入复杂的数学公式和符号。 2.Mathpix Mathpix可以将图片、PDF 文档、网页中,甚至是手写的数学…

斯坦福大学团队提出AI生成文本检测器DetectGPT,通过文本对数概率的曲率进行可解释判断

原文链接:https://www.techbeat.net/article-info?id4583 作者:seven_ 随着以ChatGPT等大型语言模型(large language models,LLMs)的爆火,学界和工业界目前已经开始重视这些模型的安全性,由于C…

张勇发全员信:阿里云将分拆上市;ChatGPT官方iOS应用上线,支持中文语音;Bun 0.6发布|极客头条...

「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews) 一分钟速览新闻点&#…

搭建Gpt OpenAI 人工智能写作助手和内容创SaaS系统

该源码是一个SaaS平台,允许你的用户使用OpenAI人工智能技术来生成独特的内容和图像。它可以生成新的无抄袭内容,并以多种语言改进现有内容。用户还可以通过OpenAI DALL-E和稳定扩散,通过描述图像来生成图像。用户还可以通过OpenAi Whisper模型…

建议熟知:2023谷歌新搜索规则!

谷歌作为全球最大的搜索引擎之一,不断更新和调整其搜索算法和规则,以提供更精准、高质量的搜索结果。2023年,谷歌搜索将迎来一系列新的搜索规则,同时,AI工具的快速发展也为谷歌搜索带来了全新的应用场景和可能性。 这…

马云创办的「中国黄页」上线 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 5 月 9 日,在 1993 年的今天,第一届东亚运动会在上海隆重开幕,这是亚洲体育运动史上的新篇章。来自东亚地区的中国、日本、中…

迎战ChatGPT风口 | 冰山数据发布多轮对话标注系统

近期,科技领域最火爆的话题无疑是由OpenAI推出的ChatGPT,通过ChatGPT可以帮助个人用户和企业生成文章、撰写视频脚本、写小说、写诗歌、谱曲、解答各种专业问题、甚至可以解答数学问题和写代码。 谷歌、百度、苹果等科技和互联网巨头也在该领域进行跟进&…

ChatGPT Plus使用指南:解锁人工智能模型的强大功能

引言: 想要利用世界上最先进的AI语言模型优化您的工作任务吗?OpenAI的ChatGPT Plus正是您的理想选择。本篇博客将为您介绍ChatGPT Plus,并展示其友好的用户界面。 一、ChatGPT Plus的使用步骤 1、访问ChatGPT官方网站 登录ChatGPT&#xff0c…

基于深度学习股票预测系统

摘要 股票市场的发展对于市场经济具有重要的意义,许多研究者也对股票市场的走势进行预测研究。通过一些技术来预测股票未来的发展趋势,预测其后面涨跌。股票指数是预判经济的一个重要指标,股票指数表示的就是股票市场中总体的发展水平和走向…

如何借助现有股票量化交易平台编写策略和回测分析

每个交易日的股票都会上涨或者下跌,在这个过程中笔者们偶尔会想针对部分股票进行股价的涨跌幅进行监控,或者自动进行交易,在这个需求前提下,现有券商、股票分析软件都会带有机器人自动交易策略功能,大部分都需要收费或…

Tushare简单股票预测,仅用于交流学习

第一次做Tushare简单股票预测,仅用于交流学习,若有错误欢迎批评指正 下面是用Tushare进行中石化的股票预测 import tushare as ts import pandas as pd import keras from keras import layers from keras import models from keras import Sequential from keras.…

是涨是跌?用Python预测股票价格趋势

来源数据:STUDIO,作者:云朵君 导读:在本文中我们尝试研究白酒股票市场的数据。使用baostock来获取股票信息,可视化它们的不同,最后将使用一些方法来分析股票的风险。还将通过长期短期记忆(LSTM)方法来预测未…

股票分析,利用线性回归实时预测股价,只需要提供股票代码即可爬取相应股票数据并建模

这里参考了别人的代码,并引用了tushare模块中定义的接口自动获取了依据 股票代码来获取数据 此篇文章提供了 1.一个简单通过接口爬取csv数据的方法 2.一个处理csv数据的简单方法 3.依据数据进行特征提取建立简单的股价预测模型 如下: 使用的话只需要修改…

大幅提升预测性能,将NSTransformer用于股价预测

写在前面 NSTransformer模型来自NIPS 2022的一篇paper《Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting》。NSTransformer的目的主要是为了解决其他方法出现过平稳化处理的问题。其通过提出序列平稳化以及去平稳化注意力机制可以使得模型…

利用神经网络实现股票预测 | 附Pyhon代码

神经网络(NeuralNetworks)是一种用训练数据拟合目标函数的黑箱模型,只要数据量足够大,它可以拟合出输入到输出之间的任意函数关系。 本篇教程我们将使用神经网络进行股市的预测,利用数据样本学习,得到相关因…

基于LSTM进行股票趋势预测(tushare)

注: 本文章仅用于算法&工具学习与使用,不具有任何投资建议。 前言: 笔者最近在研究时序趋势预测,而股票天然具有时序性,故使用某一股票数据进行学习。下面将使用代码预测一只股票的每日最高价,当然也可…

Python预测股票走势

最新代码:股票预测配套代码(jupyter版)-机器学习文档类资源-CSDN下载 视频:基于python进行股票趋势预测_哔哩哔哩_bilibili Python的功能可谓相当强大,在很多行业具有相当的优势,这种优势很大程度上来源于各种第三方库。本文介绍…

使用python对股票数据分析预测

安装quandl 安装Pandas_Datareader 1、获取数据 import Pandas_Datareader.data as web import datetime startdatetime.datetime(2018,1,1) enddatetime.datetime.now() SZ000001web.DataReader(000001.SZ,yahoo,start,end) 可以获取最高价,最低价&#xf…

使用新闻预测股票走势-----Kaggle经典ph.D操作分析

General information Two Sigma金融新闻竞赛是一项独特的竞赛:不仅仅是内核竞争,而且我们不应该下载数据,在第二阶段,我们的解决方案将用于预测未来的真实数据。 我将尝试为本次比赛进行广泛的EDA,并尝试找到一些有关…

tushare单个股票过去五年的数据整理与预测

文章目录 前言:1. 导入相关包2. 数据预处理3. 构建模型3. 模型训练4. 检查数据6. 工作中其他常用包记录 前言: %md 在量化投资中,计算收益率是更常见的做法,而不是仅计算股价。计算收益率可以更好地反映投资的回报情况&#xff0c…