- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Milvus实战第一期:vivo短视频基于Milvus的内容去重实践
展开查看详情
1 .vivo短视频基于Milvus的内容去重实践
2 .⾃我介绍 姓名:⻢运杰 公司:vivo互联⽹领域 坐标:南京 职位: vivo短视频后端架构师 主要职责:负责vivo短视频服务端以及vivo视频 处理平台系统架构设计 2
3 . 1 业务背景 2 算法流程设计 ⽬录 3 去重系统设计 CONTENTS 4 问题与建议 5 总结 3
4 .01 业务背景 4
5 .业务背景—vivo视频业务 19年5月~21年5月短视频APP日活跃用户数量/万 抖音 快⼿极速版 好看视频 快⼿ 抖音极速版 微视 26,686 17,813 12,473 10,209 10,261 8,988 1,734 1,924 456 1,959 19年5月 20年5月 21年5月 vivo短视频 i视频 数据来源:QuestMobile 5
6 .业务背景—业务问题 亿级样本数据 百万级⽇吞吐 兼顾精度召回 去重难点 6
7 .02 算法流程设计 7
8 .算法流程设计—特征提取 1 0 … 1 0 0 0 … 1 1 场景检测 局部特征 全局特征 hash 1 1 … 1 1 1 1 … 1 0 0 1 … 1 0 视频特征向量 ⾳频提取 深度模型 11.02 22.21 … 98.11 55.123 ⾳频特征向量 8
9 .算法流程设计—特征匹配 帧向量 汉明 TopK 帧向量 向量检索 汉明 帧结果合并 TopK 帧向量 汉明 TopK 其他特征过 ⾳频向量 ⾳频⽐对 滤 9
10 .03 去重系统设计 10
11 .去重系统设计—系统架构 ➢ 特征提取服务——提供视⾳频特 视 去 ⾳ 头 频 重 征的提取以及⽂件管理能⼒ 帧 频 像 特 视频⽐较 ⾳频⽐较 相似性判定 分组策略 策 向 向 向 征 略 量 量 量 ⽂ 视 输⼊视频队列 频 件 提 去 取 特 重 征 分区策略 索引管理 主备集群切换 ➢ 视频去重服务——提供视⾳频特 召 回 征的⽐较策略以及Miluvs特征召 回能⼒ Milvus实例 Milvus实例 Milvus实例 检 ⽂件存储 索 Milvus实例 共享存储 ➢ Milvus检索集群——提供视频 集 共享存储 群 特征向量的相似度计算能⼒ 主集群 备集群 11
12 .去重系统设计—压测结果 压测环境: (1)压测机器为32核CPU物理机 (2)向量为16384维或者8192维⼆值型向量,向量距离为汉明距离 (3)索引采⽤IVF_FLAT类型 (4)nq=100 12
13 .去重系统设计—mishards集群化部署 集群1 Mishards Milvus 集群2 集群3 Milvus Milvus Milvus 单机 集群 多集群 ◆ 单机部署适合百万级别之下的数据量 Tips:集群化部署后,需要注意index_file_size的设 ◆ 利⽤Mishards,可以快速地进⾏横向扩容,提⾼系统查询的吞吐量 置,如果设置的太⼤,集群的计算资源会得不到充分 利⽤ ◆ 多集群部署可以提升整个系统的并发能⼒,进⽽提升吞吐量
14 .去重系统设计—索引管理 ◆ ⼆值型索引只可以选择IVF_FLAT 对于百万级别的向量数据,向量维度=16384 ◆ ⼆值型IVF_FLAT索引构建时没有充分利⽤CPU资源,构建时间 ✓ nlist=512:索引构建需5~15分钟 ⻓。随着nlist的增⼤,构建时间急剧的增⻓ ✓ nlist=1024:索引构建30~60分钟 ◆ 在索引构建期间,⽆法正常的写⼊数据,等待索引构建完成后才 能正常的插⼊
15 .去重系统设计—索引管理 去重服务 去重服务 去重服务 查 查 写 查 查 写 查 询 询 ⼊ 询 询 ⼊ 询 写 ⼊ 主集群 备⽤集群 主集群 备⽤集群 主集群 备⽤集群 迁移 正常状态 索引构建 构建结束 ! 正常状态:只对主集群进⾏读写 ! 索引构建时:增量数据写⼊备⽤集群,同时对主备集群同时进⾏查询召回 ! 构建结束后:增量数据写⼊主集群,对主备集群同时进⾏查询召回,同时开启备集群数据迁移主集群任务
16 .去重系统设计—partition分区 插⼊ 召回 计算partitionTag 计算partitionTagList partition1 partition2 partition3 partition4 …… partition1 partition2 partition3 2021.1 2021.2 2021.3 Milvus ● 插⼊—根据视频的发布时间,以周为单位,进⾏分区 ● 召回—根据视频发布时间,计算当前所属分区,选取 当前分区前后的N个分区进⾏查询
17 .04 问题与建议 17
18 .问题与建议 已解决的问题 ● Milvus服务启动时需要mysql建表权限 issue:6651 未解决的问题 ● ⼆值索引构建时间过⻓,⽆法构建⾼维度的索引 issue:7594 ● ⼆值索引构建期间⽆法正常插⼊数据 issue:12270 ● Mishards集群只能⼿动扩缩容 期待的功能 ● ⾃定义id建议可以定义为字符串类型 ● 能够⽀持更多维度的标签查询,⽀持向量元数据的存储 18
19 .04 总结 19
20 .总结 ◆ 在识别效果⽅⾯,通过视⾳频特征的结合,采⽤ 宽视频阈值,严⾳频阈值的⽅式,⽬前我们去重 ✓ 匹配分级:对匹配结果进⾏分级,对于低于 识别的精度与召回都达到了双0.9以上 阈值之下的视频通过视频处理、采集更细致 的视频特征,进⾏⼆次匹配 ◆ 在系统性能⽅⾯,Milvus集群的吞吐量和每台机 器检索的数据量强相关。我们通过集群化部署、 ✓ 索引构建效率提升:与社区合作,针对⼆值 数据分区的⽅式,限制每台机器检索的向量数 优化⽅向 索引的构建性能进⾏优化 量,以此达到我们系统吞吐量100W/天的⽬标。 ✓ 集群⾃动扩缩容:通过Milvus服务的⾃动注册 ◆ 在索引构建⽅⾯,我们遇到了⽐较多的问题,我 与⾃动⽅向,解决集群静态扩缩容的问题 们暂时以主备集群的⽅式满⾜系统可⽤性的条 ✓ 系统⾼可⽤:通过多集群部署等⽅式,解决 件,接下来我们会和社区持续沟通,解决⼆值索 Mishards以及Milvus写节点单点问题 引的相关问题 20
21 .Thank You https://milvus.io https://github.com/milvus-io/milvus 添加企业微信 发送 “直播” 加⼊交流群 领取直播PPT + 回放链接 🔗 https://twitter.com/milvusio