2020 Techo Park 开发者大会召开,作业帮分享拍搜系统架构演变历程

摘要

为了实现「随手一拍,秒出答案」的效果,作业帮视觉智能实验室工程架构团队从并行计算、调度策略、工程实现三方面做出了努力。

12 月 19 日至 20 日,由腾讯主办的 2020 Techo Park 开发者大会于北京召开。据悉,本次大会邀请了全球超 200 位顶级技术专家来到现场,与数千位参会者就云计算、大数据和人工智能等前沿技术话题展开深度交流,为中国及全球云计算爱好者、从业者、开发者提供最具参考价值的创新分享。

作业帮视觉智能实验室架构负责人程童受邀参加大会,并发表了题为《作业帮拍照搜题系统架构的演变》的主题演讲,系统地介绍了作业帮拍搜系统概况、不同阶段面临的问题和应对方法,以及 GPU 服务虚拟化的实践经历和取得的迁移效果。


底层技术加持,作业帮拍搜助力用户精准获取全面信息

作为中国最大的 K12 在线教育公司,作业帮致力于用科技助力教育普惠,解决教育领域痛点,旗下拥有作业帮、作业帮直播课、作业帮口算、鸭鸭 AI 课、智能硬件喵喵机等多款教育产品,总日活用户超 5000 万,月活用户超 1.7 亿,累计激活用户设备超 8 亿。其中,作业帮 APP 是进入中国应用市场 Top30 的唯一一款教育类 APP,作业帮直播课是中国在线教育领军品牌,累计服务学员已超 6500 万。

在作业帮的整套产品链条中,拍搜系统提供了底层的技术支持。据程童介绍,作业帮拍搜系统拥有多项 OCR、检索、系统专利,率先在业界实现「随手一拍,秒出答案」。与此同时,随着拍搜功能的不断拓展,作业帮完成了从单题到整页再到猜你想拍,从搜索到批改再到打分的全方位搜题场景设定,充分帮助学生提高学习效率。

据了解,作业帮拍搜算法架构主要分为 OCR 和检索两部分。其中,OCR 系统主要任务是将所拍内容识别成文本,由多个策略&预处理模块,以及大量使用 GPU 作为运算设备的深度学习在线推理服务组成;而检索系统的主要任务是通过识别出的文本检索答案,包含策略层、正排系统、倒排系统和离线建库四个主要部分,针对拍照搜题这个垂直领域进行了大量的策略优化。

程童表示:「针对用户在不同使用场景下可能出现的模糊、倾斜、低像素、干扰等各类拍照问题,作业帮在持续 5 年以上的自主研发和数据积累中,不断进行算法迭代和架构完善。」

在一次完整的文字识别流水线中,作业帮拍搜系统拥有超 30 种不同的神经网络各司其职,平均一次识别可运行 260 次以上的神经网络预测。此外,通过构建大规模的并行 GPU 集群,平均只需要 200 毫秒,便可完成一次完整的识别流程,且作业帮系统在一分钟可完成百万次这样的搜题请求。对于识别出的题目内容,系统可以在索引量超过 3 亿的题库搜索引擎中进行匹配,确保用户获取更全面和准确的信息。


从更快更准到快速应变,有限算力下的极限探索

程童在演讲中提到,在过去的六年里,作业帮拍搜系统以两年为进化周期,大致可分为三个发展阶段,每个阶段因业务场景和系统规模不同,面临的问题也有所不同。2015 年至 2016 年属于第一阶段,作业帮拍搜系统业务刚起步,需要解决的核心问题是更快和更准。更快是为了提供更好的用户体验,更准则容易形成口碑传播,吸引更多用户。

为了实现「随手一拍,秒出答案」的效果,作业帮视觉智能实验室工程架构团队从并行计算、调度策略、工程实现三方面做出了努力。团队率先将 GPU 用于在线推理服务:使用 CPU 做预处理,利用 GPU 强大的并行运算能力运行深度神经网络,上线后取得了 10 倍的加速效果,平均耗时从 3 秒以上缩短至 300 多毫秒,后续持续优化到平均 200 毫秒。团队还自研轻量级 RPC 框架,设计适合多 GPU 协同的线程池和调度策略,高峰期 GPU 利用率达到 90% 以上。

伴随业务流量的持续上涨,作业帮拍搜系统在 2017 年至 2018 年进入发展的第二阶段,不断扩张的业务引入了更多的算法模型,需要不断开发交付新的服务;算力需求的快速上涨又带来了成本上的压力。这两年,团队在开发和运维双线面临挑战。

团队迅速调整策略,制定应对方案。首先,优先满足业务发展需求,尽快交付服务,确保算法模型的快速上线;同时,尽力优化系统环境,减少技术债务。例如,针对环境异构的问题,团队通过升级接入层,优化自研 RPC 客户端,满足多机房、多机型负载均衡以及实验分流需求;通过迁移服务器的机会收敛异构机型和环境;不断根据业务情况调整优化系统部署,将日常操作自动化,提高管理效率。

经过技术团队不懈努力,在业务不断扩展、流量持续增加的情况下,系统有力支撑了作业帮拍照搜题类业务的发展,自身也成长到了一定规模。


虚拟化突破两大矛盾,显著迁移效果激发更多可能性

2019-2020 年系统进入到第三阶段,针对前期发展过程中的各种问题,程童和团队没有停留于表面,而是不断回顾、总结和深挖,认为之前出现的很多问题,表现出的形式是性能和稳定性相关,但实际上是因为系统灵活性不足。在人力有限的前提下,以物理机(baremetal,裸金属服务器)作为资源分配和系统管理的最小单位,无法突破两个矛盾,即日益频繁的变动与系统管理之间的矛盾,和日益增长的需求与资源管理之间的矛盾。为了突破这一瓶颈,团队选择了虚拟化,具体实现形式是 K8s 和容器。

对于为什么选择 K8s,程童解释道:「在最关键的资源分配环节,K8s 突破了机器的边界,将资源抽象整合为资源池,应用按需申请,由调度器分配,解决了资源管理的矛盾;而通过抽象出 pod、deployment、service 等概念,可低成本实现应用整个生命周期的自动化,解决了系统管理的矛盾。」

为了减小系统迁移的风险,团队制定了渐进式的迁移步骤,首先对环境进行标准化,对一些不适合容器环境使用的组件或功能进行改造;之后将整个系统容器化运行,了解和掌握相关数据;最后实现灰度环境验证和线上系统迁移。针对 K8s 原生不支持按显存调度的问题,团队也通过研发调度插件给出了解决方案。

从目前的迁移效果来看,通过更细颗粒度的资源分配和服务混部,部分集群迁移后节省了 50% 的机器资源,资源利用率也大大提升;而通过迁移获得的弹性伸缩能力,可以让系统在应对流量高峰时更游刃有余;相比于集群调整平均需要 2 小时的物理机时代,如今平均只需要 10 分钟即可完成;而在故障处理方面,也从原来的平均 20 分钟缩短至平均 5 分钟,对于简单故障,系统可以实现无人工介入。

在程童看来,迁移效果远不止如此,虚构化改造所带来的灵活性,让之前许多不方便的事情变得更加便捷,创造了许多可能性。未来,作业帮技术团队将持续搭建先进技术系统,不断突破在线教育发展所遇到的技术难题,真正实现以科技赋能在线教育创新发展。

最新文章

极客公园

用极客视角,追踪你不可错过的科技圈.

极客之选

新鲜、有趣的硬件产品,第一时间为你呈现。

张鹏科技商业观察

聊科技,谈商业。