当用户在百度搜索框中输入问题,如何快速、准确的在大数据中找到最相关的搜索结果?
第二届百度搜索创新大赛赛道二“基于向量交集的TopK搜索”考核的就是这一核心难题:搜索算法。
百度搜索创新大赛是由百度搜索发起,联合全国各大高校、社团、科研组织共同举办的一项全国性科技竞赛,第一届已于去年成功举办。和第一届相比,第二届百度搜索创新大赛以“新搜索·新奇点”为主题,共设置了五大赛道,同时还设置了产品赛道,分别倾向于不同的议题,包括搜索答案组织、基于向量交集的TopK搜索、设计一个解决搜索用户需求的AI原生应用、基于GPU的近似最近邻检索算法挑战、可控图片生成算法挑战等。
历经123天的角逐,赛道二“基于向量交集的TopK搜索”共有549人报名,其中组成的113支队伍上榜,经过激烈角逐,最终有9支队伍入围决赛,并进入颁奖现场。
01
“基于向量交集的TopK搜索”的优化与创新
据悉,第二届百度搜索创新大赛赛道二“基于向量交集的TopK搜索”赛题的具体任务为:给定850万条规模的数据文件,每条数据是最大128维度的整型id向量 (称为doc),id取值范围是0-50000,给定一个最大128维的整型id向量(称为query),求query与doc全集内各数据的交集个数TopK(k=100)。
从任务设定来看,显然是不容易的。那么,走上奖台的背后,有着怎样的精彩故事呢?作为赛道二冠军团队,也是一人组队的全职奶爸陈熙讲述了他的感受。
据陈熙介绍,他是一名全职奶爸。虽然暂时离开工作岗位,但是却始终都在关注着行业的发展。而之所以参加此次百度搜索创新大赛,也是一种机缘巧合。他表示,“赛道二TopK的问题是非常经典的优化问题,但一个经典问题可以做出很多创新。”
在本次比赛中,陈熙的方案之所以能够碾压多个团队,主要在于其基于赛道二要求,不仅实现了多线程多流并行和batch优化方案,同时还解决了GPU占用低的问题,提出了高效bitset求向量交集数的方案,进一步提升了GPU的计算效率。此外,他还创新性提出了基于阈值迭代式求TopK方案,通过缩小范围来减少计算量,最后获得了23倍的性能提升。
“最终的性能提升并不是一蹴而就的,而是通过一个个非常小的优化积累得到的。”陈熙指出,“在这次比赛过程中我也碰到了一些难题。比如说在构思迭代式求TopK方案时,最开始并没有一个非常好的思路,但通过阅读大量相关论文,最终一步步理清了自己的思路,并提出了最后的优化方案。”
02
参赛是一种经历,更是价值的体现
参赛只是一种经历,但其中所涉及的一系列问题以及所取得的成果,却是值得铭记的。
陈熙介绍,通过参加第二届百度搜索创新大赛,他收获了很多。“首先让我意识到,即便是一个看似很简单的问题,也是需要付出非常大努力才能做好的;第二是使用合适的工具能节省大量的开发时间。虽然我有8年cuda开发经验,但之前工作中使用英伟达Nsight 工具的机会比较少,在这次比赛中我深入地使用了该工具,确实对开发有很大的帮助;第三是这次比赛竞争氛围非常激烈,大家的成绩你追我赶,在这样压力下我坚持到了最后,做到了一个非常好的方案,所以我觉得坚持就是胜利。”
“能够获得冠军,是对我自身能力的一种鼓励和肯定。同时也在激励我努力试错,在认定的道路上继续前行。”陈熙坦承。
从业内来看,面向工程优化方向的比赛是很少的。“百度与英伟达能够为大家提供这样一个平台,真的非常难得,也希望通过这次比赛大家能关注到高性能优化的人才。”陈熙表示,“在 AI 大模型爆发的关键时刻,搜索技术也迎来了革新的转折点。赛题为我们描绘出了搜索技术的发展方向,让我们一起努力共同促进行业繁荣发展。”