深度学习框架

2022-12-09 20:41:07 浏览数 (2)

深度学习(deep learning)是机器学习的分支,已经在工业生产、科学研究等领域有广泛应用。图 1-1-1 显示了深度学习、机器学习和人工智能之间的相对关系。

图 1-1-1

在日常生活中,能够遇到诸多基于深度学习的产品和服务,比如进入高铁站或者检票时,过闸机的人脸识别;做核酸检测时对身份证拍照后自动识别(即 OCR 技术);能够将大段的外文翻译为中文的机器翻译;对老照片、老电影的修复;各类电动汽车的自动驾驶系统;电商平台向用途推荐商品的推荐系统;媒体连篇累牍报道的战胜人类棋手的 AlphaGo;还有被不断“玩坏”的 AI 绘画;等等。这些“高科技”的背后,都有深度学习的影子。

如果考察人工智能的发展,通常会以图 1-1-2 所示的三个阶段给予说明,即推理期、知识期和学习期。深度学习就肇始于“学习期”的 2006 年,由多伦多大学 Geoffrey Hinton 教授首先使用此术语。到如今,时间并不很长,但发展迅猛,业已称为人工智能中炽手可热的研究方向了,而且前途不可限量。

图 1-1-2

之所以深度学习能蓬勃发展,可以用“时势造英雄”解释:

  • 互联网和物联网的发展,提供了海量的数据,为深度学习奠定了数据基础和先决条件。如果用烹饪打比方,数据之于深度学习就相当于“肉、菜”之于烹饪。
  • 计算机硬件特别是 GPU 等为深度学习提供了强大的运算能力,这就如同为烹饪提供了好锅和火力十足的灶。
  • 万事俱备只欠东风,供烹饪的物质准备就绪,就烹饪方法了。于是 Google 的 Tensorflow、Facebook 的 PyTorch、百度的飞桨(PaddlePaddle)应运而生,这些深度学习框架为众多开发者提供了生产力工具,使得开发、训练、部署深度学习模型成为了“照方抓药”的规范操作。

在软件开发中,框架(framework)是对某种开发业务的抽象,提取了相关领域的软件的共性,它为开发者提供了一种构建和部署程序的标准方法,它是一种通用的、可重用的应用程序和软件环境。因此在做相应业务的开发时,开发者不必从头开始编写代码,而是在框架的基础上进行开发,这样不仅可以降低成本、缩短开发时间,还能提高软件程序的质量。与此类似,深度学习框架也有这样的作用,只是针对深度学习领域而言。

目前,已有多家机构推出了深度学习框架,有的是通用型的,有的是专注某个领域的。本书讲解的飞桨,是一款既具有通用性,也包含各专门领域模型和工具组件的深度学习框架。

飞桨提供了通用的开发和训练框架,开发者可以基于这些框架进行深度学习任务的开发和训练,并生成相应模型。到本书编写之时,除了有“Paddle 核心框架”之外,飞桨还为开发者提供了:

  • FleetAPI:用于分布式训练的高阶 API。
  • PALM:实现快速开发 NLP 模型多任务学习框架
  • Paddlee Quantum:支持量子神经网络的框架
  • PaddleCloud:云上编排和部署工具

此外,为了便于开发使用,飞桨向开发者提供了预训练模型 PaddleHub,其中包含了针对某些专门领域模型,例如:

  • PaddleCV:视觉模型库,支持图像分类、目标检测、图像分割、图像生成、文字识别、3D 视觉和视频等任务类型。其中包括多种开发套件,例如:
    • PaddleClas:专门用于图像识别和图像分类的工具集。
    • PaddleDetection:专门用于目标检测的开发套件,包括目标检测、实例分割、跟踪、关键点检测等。
    • PaddleSeg:实现端到端的图像分割,能实现语义分割、交互式分割、Matting和全景分割。
    • PaddleGAN:生成对抗网络开发套件,提供图像生成、风格迁移、超分辨率、影像上色、人脸属性编辑、人脸融合、动作迁移等算法,覆盖影像修复、图像生成、动作迁移等多种应用场景。
    • PaddleOCR:实现 OCR(Optical Character Recognition,光学字符识别)的工具库,包含诸如表单识别、票据识别、电表度数识别、公式识别、化验单识别等多种场景的识别工具,并支持数据生产、模型训练、压缩和预测部署。
    • PaddleVideo:视频模型工具库,支持多种视频场景应用,比如视频质量评估、异常行为检测、花样滑冰动作识别等。
    • Paddle3D:端到端深度学习 3D 感知套件,涵盖了许多前沿和经典的3D感知模型,支持多种模态和多种任务。
  • PaddleNLP:自然语言处理核心开发库,其中包含多种模型,可用于情感分析、文本分类、词法分析、信息抽取、问答系统、机器翻译等多种场景。其中的开发套件包括:
    • PaddleSpeech:语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,例如语音识别、语音翻译、语音合成、声纹提取、声音分类等。
    • ERNIE:飞桨语义理解套件,能实现中英文的情感分析、命名实体识别、自动问答、自然语言推断等任务。
  • PaddleRec:推荐系统,其中包括常用的经典模型,也包括工业界验证过的使用模型,并且跟踪学术前言研究,及时在 PaddleRec 中实现对理论研究的支持。
  • 文心大模型:大模型(Foundation Model)通常指参数的数量突破 1 亿的深度学习模型,这类模型旨在提高其通用性。飞桨推出的文习大模型亦志在于此,目前已经有 NLP 大模型、CV 大模型、跨模态大模型、生物计算大模型,并且致力于通过各个行业的协作,发展行业大模型。
  • ElasticCTR:点击率(click-through rate, CTR)预估套件,能实现分布式训练 CTR 预估任务,以及二次开发。
  • PLSC:飞桨海量类别分类套件(Paddle Large Scale Classification Tools,),实现大规模分类任务的训练和部署,并有简单易用的高层 API 。
  • PGL:基于飞桨的图学习框架(Paddle Graph Learning ,PGL)。
  • PARL:飞桨强化学习框架。
  • PaddleHelix:基于飞桨深度学习框架开发的生物计算工具和平台。
  • PaddleSpatial:基于飞桨深度学习框架开发的时空大数据计算工具和平台。
  • PaddleTS:深度时序算法库。
  • PaddleSlim:模型压缩工具库。

以上这些开发套件中的模型,既可以通过配置文件直接使用,也可以通过修改模型源码实现二次开发,从而加快了深度学习项目的开发进度。

任何深度学习模型,最终的目标都是在学得模型之后,将模型部署到相应的设备上,为此飞桨针对不同的部署环境和硬件设备,提供了多种部署方案。

  • Paddle Inference:飞桨的原生推理库,作用于服务器端和云端,提供高性能的推理能力。支持所有用飞桨训练所得的模型。
  • Paddle Serving:飞桨的服务化部署框架,提供在线推理服务,支持 RESTful、gRPC、bRPC 等多种协议,能部署到多种硬件和各类常用操作系统。
  • Paddle Lite:飞桨基于 Paddle Mobile 推出的端侧推理引擎。
  • Paddle.js:以 JavaScript 实现 Web 端推理引擎,并提供深度学习开发工具,能在浏览器、小程序等环境实现深度学习应用。
  • FastDeploy:推理部署开发套件。

飞桨所包含的各类开发工具,会随着研发的进展不断增加,特别是针对各个行业和产业的模型。此外,也有可能会对已有的工具进行重新组合或升级,以利于开发者使用。关于这方面的最新内容,请读者参考官方网站的最新内容:https://www.paddlepaddle.org.cn/ 。

飞桨除了提供模型之外,还针对某些专门任务提供了一些辅助工具,例如全流程开发工具 PaddleX、自动化深度学习框架 AutoDL、可视化分析工具 VisualDL、弹性计算框架 EDL、联邦学习框架 PaddleFL 等。

总之,飞桨不仅仅是一个开发框架,它还是一个“大家族”,不断地结合实际问题,推出更适合于开发者需要的各种好用的工具。

0 人点赞