背景
人工智能领域在近年发展迅速,不论是在图像识别,目标检测,机器翻译,还是语音识别等多个领域,人工智能的表现均已超过人类水平,尤其是在AlphaGo战胜了李世石之后,人们对人工智能可达到的成就有了新的认识。机器学习(Machine Learning,ML)是人工智能的子领域,也是人工智能的核心,就是要设计让机器可以进行自动学习的算法。而深度学习(Deep Learning,DL)是机器学习的一个子类,是一种包含多个隐含层的神经网络结构,人们定义了神经网络中各种神经元的连接方法,以及神经元的激活函数,并利用反向传播技术完成神经网络的训练过程。深度学习技术在众多AI领域取得很多成果,解决了很多复杂的模式识别难题,所以也成为最近几年人工智能领域研究和应用上人气最火热的技术。
深度学习模型当前有多种训练框架,如常见的TensorFlow,PyTorch,MxNet,Caffe,PaddlePaddle等等,训练时大多是使用GPU,采用容器云方式,进行大规模并发计算,减少模型训练收敛时间。而在模型的应用上,则要使用深度神经网络的推理能力,完成网络前向计算,并将此计算部署为应用服务,产生商业价值。
Adlik做了什么?
各种算法在训练框架训练后得到各种模型,其服务应用可能要部署在不同的硬件平台,可能使用不同的推理框架,对应用场景有着不同的要求,如低时延。所以在训练中达到很好的收敛效果的深度学习模型,距离真正的投入应用,还有很多工作要做:
针对不同设备的推理框架有很多,对用户难以选择,要付出较多的学习成本
不用应用场景的部署条件不同,有基于容器化部署场景,也有基于嵌入式硬件部署的场景,同样的模型服务,不同部署方案要掌握不同的技术
根据性能需求有很多的模型调优工作
推理服务应用于不同硬件,需要多类异构计算引擎的支持
推理引擎 | Tensorflow | Tf Lite | OpenVino | TensorRT |
---|---|---|---|---|
硬件 | CPU/GPU | CPU(ARM)/GPU | CPU | GPU |
Adlik就是一种可以将深度学习模型从训练完成,到部署到特定硬件并提供应用服务的端到端工具链,其应用目的就是为了将模型从研发状态快速部署到生产应用环境。Adlik可以和多种推理引擎协作,支持多款硬件,提供统一对外推理接口,并提供多种灵活的部署方案,以及工程化的自适应参数优化方案,为用户提供快速,高性能的应用服务提供助力。Adlik的架构如下图: