导语:如果说算法和数据是跑车的发动机和汽油,那么系统则是变速箱,稳定而灵活的变速箱,是图像识别服务向前推进的基础。算法、数据、系统三位一体,随着算法的快速发展和数据的日益积累,系统也在高效而稳定地升级。
一、背景介绍
前面的系列文章分别介绍了算法和数据,如果说算法和数据是跑车的发动机和汽油,那么系统则是变速箱,稳定而灵活的变速箱,是图像识别服务向前推进的基础。算法、数据、系统三位一体,组合成完整的OCR在线服务。伴随着算法的升级和业务的持续接入,系统也经历了从单机版升级到分布式版本;从为了每个算法定制系统模块,到分离框架和算法逻辑,提高算法的运行效率和模块的可重用性;从单一的运行环境,升级到CPU/GPU异构并行。除了一般分布式系统所需要提供的功能,我们还结合算法和运维特性,增加了单点热更新和集群快照等特性。
二、我们面临的挑战
图像识别服务框架作为一个提供在线服务的系统,既面临一般的业务系统或平台所面临的挑战,也面临作为算法系统,需要支撑复杂算法和业务的挑战,主要表现在以下几点:
1.高性能与高可靠
任何在线系统都面临性能和可靠性的挑战。在我们系统中,图像识别服务作为在线服务,需要能够迅速响应并返回,并且不管在框架层还是算法层,都要保证高可用性。
2.系统解耦&高可扩展性
作为一个分布式的算法系统,算法模块与框架的解耦,可以使算法与后台人员更高效的同步开发,分别对算法与框架进行更新迭代。而高可扩展性,既要求框架在集群上支持资源可扩展,又要求做到单机算法的迅速接入与替换。
3.复杂业务与算法的支撑
随着业务的持续接入和算法的复杂化,需要在框架层灵活的支撑算法,高效的算法模块重用以及迅速适配新算法并接入新业务。
4.不同运行环境的支持
算法系统,尤其是图像识别算法系统,运行环境包括CPU与GPU,框架除了要支持不同环境的高效运行,也要支持不同环节运行在不同硬件环境,以保证资源合理高效的使用。