查看精彩回放 https://developer.aliyun.com/live/245530
大纲
本文主要围绕实践做四部分的介绍 由浅入深层层递进 这四部分是
AppZoo实践ModelZoo实践分布式训练实践多模态Fashionbert实践?
一、AppZoo实践
AppZoo像苹果的应用商店一样简单易用 里面的应用丰富多样 有分类匹配、阅读理解、序列标注和文本生成。
文本分类实践
在操作文本分类前 首先可以先熟悉下Easy-Transfor文档 了解下文本分类的流程 基本可以在云端完成操作AppZoo的文本分类的组件。
?
如下图所示 文本分类由几部分组成
原始文本文本预处理 处理成Bert需要的表征格式 然后送入Bert分类器产生标签。?
如何在云端基于AppZoo操作文本分类 整个过程只需在本地起一个Job然后发送到云端 通过一些简单的配置就可以完成文本分类的应用了。
?
演示实践
基于本地的开发环境 首先上传所需的业务数据 如下图所示。
这是最简单的一句话的分类。左边是一句话 右边是这句话对应的label 比如第一句话“上课时老师手机响的不停”对应的是108。把这些实际的分类的标签映射成离散的值。
?
然后运行一下脚本 把业务数据的训练集和验证集上传到阿里云的ODPS的数据存储空间里。
然后在本地启动脚本 自动地运行文本分类。首先需要指定pi命令 这里叫做easy_transfer_app 然后指定训练模式和刚刚上传的训练集和验证机的名字。然后再告诉EasyTransfer AppZoo什么是标签及标签的类型。
当所有的都配置好后 只需要在本地运行app.run_sh 就能把任务提交到阿里云上的服务器集群上 由这个集群负责文本分类的应用。
?
一些常用的自然语言处理所需要的功能 高度抽象地封装成了一个个组件供大家调用 又简单又便捷 这就是AppZoo的好处。
?
任务启动后 如果想要检查日志状况可以通过Cloud View查看。
?
当初始化脚本完成后 Easy-Transfer AppZoo提供了强大的日志功能 用来记录化器以及warm up step等等 甚至是Bert里面用到的参数量等信息都会被详细的记录下来。
?
如下图所示 在云端PAI平台上已经成功启动了单机四卡 一个分布式的任务来做文本分类。
?
当操作完成后 系统会把Model Dir记录在阿里云上一个OSS对象存储空间里。
?
二、ModelZoo实践
?
自然语言处理的套路方法趋向于统一化 分为以下这么四个步骤 通用领域的预训练、垂直领域的预训练、垂直领域的Finetune和通用知识蒸馏。
?
现在启动云端的run tf summary 看一下选的这个预训练模型是否收敛了。
?
?
通过tensor board看一下是否真的收敛了。我们在EasyTransfer里面放了很多实践 这里面average loss就是最佳实践 它植入了一个滑动窗口 上面积累了loss 从而能从宏观上看到loss走向。
?
?
EasyTransfer设计了前后端分离的模式 用户仅仅需要聚焦在他修改的那一部分的前端代码 他可以很轻松地像搭积木的方式去尝试各种各样的chick。
?
下面演示一下如何调试。要做一个文本分类 我只需要做几个关键的步骤 第一是数据准备 第二是定义配置文件 第三个是定义分类应用 第四是启动训练 第五是启动预测。
?
接下来看下载的数据到底是什么样子。在这里 数据是农业的分类 内容就是一句话 训练集样本数有1万多条 训练样本1万多条。接下来为了完成一个训练任务 需要去简单配置一下 包括分类的label数。接下来看一些代码 了解我们前端的API是什么样子的 把APP Zoo的黑盒变白盒。
?
现在运行这个cell 运行后这个构图的loss就完成了 然后启动训练。这里的日志训练样本有5万多条 我们在浏览器中就能完成经典的文本分类任务。
?
?
接下来开始进行在线预测。在finetune环节 当PAI代码已经固化了之后 完全可以仅去调配置文件。基于PAI DSW 进一步调参前端代码。
?
三、分布式训练实践
?
在做大量业务数据的垂直领域的预训练模型时 需要我们具备全栈思维 它需要具备以下要素。
?
首先要了解集群的分布 机柜里每一片都是主机。显卡是4块一组 它们通过某种桥接的方式在主机内部进行高速的通信。其次是RDMA 它可以把机器内存直接连起来 让他们直接进行数据通信 它通信的是梯度。然后是数据并行 它可以通过增加机器来把不同的数据放到不同的GPU上 增加训练速度。
?
?
在PAI上进行多机多卡分布式预训练时 使用参数也非常简单。EasyTransfer已经将复杂的预训练过程抽象成了几个公共组件 在数据准备、特征生成和训练过程中都可以直接用。
?
?
实践演示
?
开始还是简单的配置 然后开启编译优化 打开RDMA 选择mlm loss等等 配置完之后输入命令run pretrain 启动一个8机8卡共64张卡的任务。
?
然后点击logview 可以看到8机8卡。并且 在云端做高性能、分布式、超大规模的训练非常简单 因为EasyTransfer已经将常规组件封装在了script里。
?
?
多模态Fashionbert实践
?
多模态本质上是将文本的模态和图像、视频、声音等各个模态的信息混合起来 学习出他们交互的表征 用到下游的视频分类、跨模态检索、VQA等等 它的目的是通过增加模态来提升下游任务的指标。那么如何通过EasyTransfer来从头开始构建变种版bert呢 我们研发了一种叫Fashionbert的概念。
?
二次开发实践
?
作为一个平台开发人员 当要增加新的功能的时候 需要run Fashionbert 比如run train。看一下左上角 这里唯一需要做的就是在ModelZoo里面定义一个多模态的bert 而里面各种各样的组件都封装好了 让搭建非常简单。
?
?
最后附上EasyTransfer的开源信息 大家可以通过这些渠道有进一步了解。
?
?
本次分享就到这里了 欢迎大家在GitHub上共建EasyTransfer社区。
?
1.背景目标 经过多年的积累,电脑里保存了很多电子书,保存在硬盘上非常不利于管...
一、什么是函数式编程 从FP函数式编程的眼中看来,世界的万事万物就是处理数据流...
这个问题总能见到一些朋友问。新人问,因为数据分析这个事儿听起来挺抽象又很高...
作者 | 毕玄 来源 | 阿里巴巴云原生公众号 导读:随着?5G/ 芯片 / 区块链等等新...
对于vlookup函数,很多人都有会这样的想法:vlookup函数的第三参数为什么就不能...
为活跃腾讯云+社区的技术氛围,同时鼓励广大程序员们更好的学习和分享腾讯云技术...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
1.A:你有《时间简史》吗?B:神经病,我有时间也不捡屎! 2.夏天,我洗澡的时...
就地过年,谁在助力大城小村的有序运行,谁来慰藉远方游子的一抹乡愁?除了各行各...
3月8日消息,据外媒报道,物联网研究机构IoTAnalytics称,三分之一的制造商正计...