在互联网信息爆炸的时代,百度搜索作为信息检索的巨擘,面临着前所未有的挑战——如何高效、准确地处理并理解全网万亿级规模的内容。本文将从成本优化、效率提升及技术创新三个维度,为您揭秘百度搜索背后的万亿规模特征计算系统实践。
一、挑战概览
1.1 数据规模与复杂度
百度搜索收录了互联网上的海量内容,数据量高达万亿级别,且内容形式日益多样化,包括文本、图片、视频等。这种庞大的数据规模与复杂度,对计算能力和存储资源提出了极高的要求。
1.2 计算压力
随着深度学习技术的广泛应用,特别是大模型的兴起,对算力的需求急剧增加。同时,互联网内容的图文化、视频化趋势也加剧了计算压力,因为图片和视频的计算量远大于文本。
二、成本优化
面对如此庞大的算力需求,百度搜索采取了“开源节流”的策略。
2.1 开源:扩大计算资源池
- 资源挖潜:通过采购新资源满足需求,但更重要的是挖潜现有资源。百度内部存在大量波峰波谷现象和空闲资源,通过建设弹性计算调度系统,实现资源的灵活调度和高效利用。
- 自研硬件:使用百度自研的昆仑芯片等硬件,降低单位计算成本,提升整体性能。
2.2 节流:优化服务性能
- 模型优化:结合模型结构和GPU硬件特点进行优化,大幅提升模型服务单卡吞吐。
- CPU与GPU协同:采用多进程+异步协程+CPU/GPU计算分离的并发方案,充分利用多核CPU和GPU的并行计算能力。
三、效率提升
提升业务迭代效率是所有工程系统的核心目标之一,百度搜索通过以下方式实现效率提升。
3.1 模型服务框架与平台
- 全生命周期管理:通过统一的模型服务框架和平台,支持从构建、测试到上线的全生命周期管理。
- 算子管理:以“算子”作为管理粒度,每个算子代表一种完整功能,如视频分类等。算法同学在平台注册算子,并提供服务拓扑和性能报告,便于后续调度和优化。
- 离线计算优化:建设统一的批量计算平台,深度优化离线任务开发到计算过程中的各环节,提升整体效率。
- HTAP存储方案:采用基于HTAP的存储方案,解决Scan吞吐瓶颈问题,支持大规模离线计算。
3.3 计算调度系统
- 流量与资源调度:所有对模型服务的请求都经过计算调度系统的网关,执行流控和路由等流量策略。系统调度百度多个PaaS的空闲异构资源,自动化部署合适的算子,提升离线计算吞吐。
四、技术创新
4.1 业务编程模型
- DAG表达:将业务逻辑描述成DAG(有向无环图),通过DAG能清晰地呈现整体处理流程,提升代码可读性和可维护性。
- 通用Op库:建设通用Op库,整合模型推理、视频抽帧等通用逻辑,支持业务复用。
4.2 Python服务性能优化
- 多进程+异步协程:采用多进程+异步协程的并发方案,解决Python GIL问题,充分利用CPU多核。
- 共享内存/显存:DAG进程和模型进程之间通过共享内存/显存进行数据交互,避免不必要的内存拷贝。
4.3 推理性能优化
- 动态批量处理与多Stream执行:通过动态批量处理和多Stream执行,提升GPU计算效率。
- 自研Poros:团队自研Poros,结合多种技术实现推理性能的大幅提升,并支持昆仑等异构硬件。
五、总结
百度搜索通过成本优化、效率提升及技术创新,成功应对了万亿级规模内容的处理挑战。未来,随着技术的不断进步和数据的持续增长,百度搜索将继续探索更高效、更智能的计算系统,为用户提供更加精准、全面的信息检索服务。
希望本文能为您揭开百度搜索背后的技术面纱,让您对大规模特征计算系统有更深入的了解。如果您对本文内容有任何疑问或建议,欢迎在评论区留言