PaddleHub 1.0正式发布:一键模型加载,十行代码完成迁移学习

国内新闻 阅读(576)

引言

PaddlePad核心框架Paddle Fluid v1.5已经发布,PaddleHub用作迁移学习的关键工具,也已经完全更新并正式发布1.0版。新的PaddleHub模型和任务更加丰富,为用户提供了40多种预训练模型,涵盖了文本,图像和视频的前八项任务。与此同时,PaddleHub的网页也在飞桨官方网站上开通。本文将对PaddleHub及其更新进行更全面的介绍。

什么是PaddleHub

在AI时代,深度学习模型的价值已经增长。要获得高质量的深度学习模型,您不能没有四个元素,优秀的算法,足够的计算能力,丰富的数据和专业知识。每个人在深度学习中经常遇到以下问题:

1.一些研究领域只有少量数据,数据标记成本高,不足以培养健壮的神经网络

2.大规模神经网络的训练依赖于大量的计算资源,一般用户难以实现

3.广义需求模型在特定应用中的表现不能令人满意

PaddleHub是一种用于满足深度学习模型需求的工具。它基于飞桨的领先核心框架,并选择优秀的算法来提供数百亿大数据训练的预训练模型,以便用户可以从头开始训练模型而无需花费大量精力。 PaddleHub可以轻松访问这些预训练模型,完成模型管理和一键预测。与Fine-tune API一起,可以基于大规模预训练模型快速完成迁移学习,从而使预训练模型能够更好地服务于特定于用户的场景的应用。

PaddleHub有什么功能

1.通过PaddleHub,开发人员可以轻松获得飞桨生态学下的所有预训练模型,包括图像分类,目标检测,词法分析,语义模型,情感分析,语言模型,视频分类和图像生成。 40多个,如图1所示.Patdle还发布了PaddleHub的官方网站,其中详细介绍了每个预训练模型的应用。

图1 PaddleHub提供了40多种官方预训练模型

2,PaddleHub引入模型的概念,软件,通过Python API或命令行工具,一键完成预训练模型的预测。此外,还设计了一组命令行界面,其中包括Anaconda和pip包管理的概念。

在深度学习的时代,模型开发的趋势将逐渐向软件工程靠拢;未来的模型可以作为可执行程序,一键预测;或者它可以是第三方库,通过模型插入和删除来提高开发人员的开发效率。同时,该模型将具有版本的概念,并通过连续迭代升级来增强我们模型的效果。通过命令行工具,您可以快速轻松地完成模型的搜索,下载,安装,预测等功能。相应的关键命令是搜索,下载,安装,运行等。

如下例所示,在安装飞桨和PaddleHub(参见下面的具体安装方法示例)后,使用词法分析模型LAC,只需单击即可实现分词。

如以下示例所示,它是目标检测的示例。通过集线器运行调用不同的目标检测模型,可以在一行中完成预测,并且还可以快速体验哪个模型更符合开发要求。

图2 PaddleHub只需点击一下即可完成预训练模型的预测

3,通过PaddleHub微调API,结合少量代码完成大规模预训练模型的迁移。在下一节中,我们还将介绍PaddleHub API。

PaddleHub API Panorama

PaddleHub API的全景视图如图3所示。

为了更好地帮助用户更好地应用预训练模型,PaddleHub在微调上进行了6级抽象

图3 PaddleHub微调API全景

数据集数据集:PaddleHub提供各种NLP任务和CV任务数据集,用户还可以完成对自定义数据集的微调。

数据预处理读取器:PaddleHub的数据预处理模块Reader抽象常见的NLP和CV任务。

预训练模型模块:模块代表预训练模型。

优化策略策略:在PaddleHub中,Strategy类封装了一系列用于迁移学习的微调策略。策略包括学习速率变化策略用于预训练参数,使用哪种类型的优化器,使用何种类型的正则化等等。

运行配置RunConfig:在PaddleHub中,RunConfig表示在任务上执行微调时的运行配置。包括运行的纪元数,批量的大小,是否使用GPU培训等。

迁移任务任务:PaddleHub为常见任务预设任务。任务代表微调任务。该任务包含与任务执行相关的程序,数据读取器,运行配置等。每个任务都有自己独特的应用场景,并提供相应的指标以满足用户的不同需求。预定义的任务类型包括图像分类,文本分类,序列分类和多标签分类。 PaddleHub还支持用户通过继承BasicTask来实现他们的任务。 PaddleHub封装了直观的基本界面,如finetune,eval,finetune_and_eval和predict,使开发人员可以更轻松地迁移和应用模型。

如何快速入门

图4 PaddleHub微调API使用

接下来,本文结合实际案例,讲述如何快速使用PaddleHub实现十行代码完成文本分类迁移。

现场是注释数据不是很多中文文本分类场景,如何提高模型的分类精度和泛化能力。

这里的解决方案是在ERNIE + PaddleHub Finetune API的帮助下删除安装。它只需要5个步骤,10行代码就可以解决问题。

让我介绍一下ERNIE,这是一个由百度发布的知识增强的预训练模型。它通过对海量数据中的单词,实体和实体关系建模来学习真实世界的语义知识。具体而言,ERNIE模型使模型能够通过屏蔽诸如单词和实体之类的语义单元来学习完整概念的语义表示。与BERT学习原始语言信号相比,ERNIE直接对先前的语义知识单元进行建模,增强了模型的语义表示。

ERNIE已经验证了对一些公开的中文数据集的影响,包括语言推理,语义相似性,命名实体识别,情感分析,问答匹配以及其他自然语言处理任务,所有这些都超越了语义表示的效果模型BERT。

下一步是练习PaddleHub。

以上命令是安装飞板的CPU或GPU版本。可以使用以下命令安装PaddleHub。

此外,PaddleHub内置了深度学习可视化工具VisualDL的依赖性。 Visual DL可用于可视化深度学习任务。

完成飞桨和PaddleHub的安装后,导入相应的模块,一行代码可以加载预训练模型。只需1分钟,您就可以获得10,000小时GPU小时训练的ERNIE模型。当然,也可以支持BERT模型调用,只需要替换不同的模型名称。

第二步是获取模型上下文,包括预训练模型的输入张量,输出张量和计算图。这里的一个关键参数是可训练的。如果trainable为True,那么这是一个微调任务。预训练模型的参数将进行微调,以更好地适应顶级应用程序。如果训练是False,则训练前模型参数保持不变。制作特征提取器。对于ERNIE模型,不建议使用特征提取,并且必须使用Finetune来获得更好的结果。

选择模型后,执行数据预处理,并为不同的迁移任务执行一系列数据处理包。

hub.dataset.ChnSentiCorp()将自动从网络下载数据集并将其解压缩到用户目录。

接下来,启动配置微调时使用的优化策略。对于ERNIE和BERT任务,PaddleHub为此任务封装了迁移学习优化策略AdamWeightDecayStrategy

5.创建迁移学习任务

设置班次学习任务也非常简单。第一种是选择预训练的模型输出作为句子的特征。在这里,我们选择pooled_output作为句子的特征输出。您还可以通过获取用于序列标记的sequence_output来获得单词粒度的特征。

Finetuning API非常智能,它可以自动进行评估,保存最佳模型并自动化可视化。 Finetune API将在培训过程中自动执行关键管理指标。启动程序后,执行以下命令

其中$ {HOST_IP}是本地IP地址。如果本地IP地址为192.168.0.1,请使用浏览器打开192.168.0.1: 8040,其中8040是端口号,您可以在培训过程中看到指标的变化。 p>

通过Finetune完成模型培训后,验证集上性能最佳的模型会自动保存在相应的ckpt_dir目录中。接下来,您可以按照以下示例进行预测。

除了上面的介绍,PaddleHub还在AI Studio和AIBook上提供了IPython NoteBook形式的演示。开发人员可以直接在平台上体验PaddleHub的便利性。

此外,AI工作室平台还发布了10亿元计算支持计划,提供“12小时日常运行”和“48小时连续运行5天”,提供通用服务,每天都可以轻松获得!该平台集成了计算能力,教程,样本模型,工程开发,在线部署功能,甚至是竞争平台,以满足从0基础学习到技术登陆的整个生命周期,帮助开发人员充分掌握深度学习技术的各个方面。

http://anzhuo.syycdy.net.cn