飞桨大模型套件:一站式体验,性能极致,生态兼容

在Wave Summit 2023深度学习开发者大会上,来自百度的资深研发工程师贺思俊和王冠中带来的分享主题是:飞桨大模型套件,一站式体验,性能极致,生态兼容。

图片

大语言模型套件PaddleNLP

众所周知PaddleNLP并不是一个全新的模型库,自2021年以来PaddleNLP一直是国内头部的开源NLP库,在GitHub上拥有超过一万的Star。大模型时代,PaddleNLP升级成为飞桨大语言模型套件,同时秉承了一站式体验、性能极致、生态兼容的设计理念。

下面是飞桨大语言模型套件的全景图。中间是飞桨的核心深度学习框架,在其之上是飞桨针对大模型场景专门打造的全流程工具链。工具链里面主要分为五环,预训练、精调、压缩、推理、部署。从模型和工具链的角度,飞桨希望能够打造一个统一的全流程工具链,去覆盖尽可能多的模型。不管是百度自研的文心大模型,还是社区的第三方大语言模型,都尽可能去支持并沿用这套统一的方案。硬件方面,飞桨也希望能够发挥百度既有的硬件生态,让大模型在不同的平台上都跑起来。

图片

一站式体验

不论工程优化或者前沿算法多么复杂,都可以在飞桨解决端到端的问题,不需要用户到处去找开源库,去攒自己的方案。百度飞桨在2021年就发布了业界首创的4D混合并行技术,并且依赖这套技术数次在国际权威的Benchmark MLPerf Training上做到了世界范围的性能第一。

因为大模型对于极致性能的要求,飞桨也将这套分布式的技术加入了PaddleNLP的全场景Trainer。让用户可以通过简单的参数化配置,控制复杂的并行策略。

如下图右边的代码片段。导入飞桨框架和PaddleNLP套件,简单定义一个4D混合并行配置,初始分布式环境,最后通过Auto API来加载这个模型。加载回来的模型会根据用户所提供的分布式配置调整结构,后续就可以直接开始训练或者推理。

图片

关于精调部分,飞桨大模型内置了业界主流的两种高效精调算法,LoRA和Prefix Tuning。再搭配上面说到的分布式策略,单机就可以做到微调千亿以上的模型。同样,飞桨也提供了一套统一的使用方法。虽然LoRA和Prefix各有优劣,但他们使用的方法是基本一致的。用户只用定义一个Config,就可以把Auto API加载回来的模型自动转为LoRA模型或者Prefix模型,然后便可直接开始训练。高效精调策略的核心优势之一是大大降低了大模型训练的门槛,一般情况下,它跟普通的精调SFT相比,硬件门槛只有之前的1/4左右。

图片

量化压缩方面,飞桨也内置了业界两种比较主流的量化算法,GPTQ和SmoothQuant。同时飞桨还开源了PaddleSlim团队自研的自适应Shift-SmoothQuant算法,这个算法能够解决一些SmoothQuant无法解决的量化Case。比如当一个模型的权重和激活的异常值发生在同一个通道的时候,一般SmoothQuant算法没有很好的方法去得到一个Scale,从而导致量化的损失。而PaddleSlim提出的分段搜索是一个很好的解决方案。

图片

依托PaddleSlim全面实现了主流大模型的无损量化,从下图可以看到,不论是百度自研的ERNIE Bot Turbo,还是开源的ChatGLM、Bloomz、LLaMA等模型,不论是直接量化大模型或者先精调大模型再量化,都可以把量化的损失控制在一个点以内。

图片

性能极致

预训练阶段,在飞桨框架以及大模型的Transformers结构上都做了全环节的算子融合。比如每个大模型都有一个不可或缺的Self-Attention层,将它的MultiHeadAttention层,还有FFN分层,甚至最后的Optimizer都做了算子融合,这让飞桨和业界主流的预训练库Megatron LM比起来有了一定的性能优势。

图片

到了精调阶段,在算子融合的基础上,进一步对变长数据流做了比较极致的优化,大大提高了Token的有效率,其方法就是降低Pad Token的占比。通过上图可以看到飞桨和Hugging Face的Transformers比,在各个不同的模型结构上,都有一倍左右的性能优势。

图片

自文心一言上线以来,推理部署性能达原先30多倍,这也是负责飞桨推理的同学的功劳。飞桨大模型套件也整合了一部分在文心一言上使用过的优化点。比如推理算子融合,它让飞桨在对齐Transformers生成API和使用体验的情况下,提升三倍以上的性能优势。同时,得益于自研的动态插入技术,静态图推理部署也是业界领先。和几个主流的开源部署代码库比,不管吞吐还是实验都是业界最好的。

图片

生态兼容

一直以来,不管是飞桨还是PaddleNLP,都有生态兼容的理念。现在也有非常多优秀的开源大模型,大家都能够在自己发布的大模型上顺畅的走通训压推流程。而目前,应该只有飞桨大模型套件可以做到使用同样一套工具去覆盖业界主流模型。此外,飞桨还基本对齐Hugging Face Transformers的API,也支持比较方便的去加载Hugging Face社区上的模型权重。

图片

硬件生态是生态建设的重要一环。迄今为止,飞桨已经适配了超过40家的芯片/IP厂商,也成功发布了硬件共创计划。大模型时代的到来,给硬件带来新的挑战,飞桨大模型套件在国产硬件适配的道路上进行了很多优化,实现了芯片层、框架层和模型层的联动。比如基于飞桨和昆仑芯 ,实现了一套高性价比的国产大模型推理方案。能够在ERNIE Bot Turbo上使用更大的Batch Size,承载更高的QPS,以及产出更低的数据延迟。

图片

跨模态大模型套件PaddleMIX

跨模态大模型技术发展趋势

跨模态的大模型被认为是从限定领域的弱人工智能,通向通用人工智能的一条探索路径,它更符合人类通过视觉、听觉等不同的感官去认知世界的过程。比如下图展现的这只狗,我们可以通过图片、文字、视频、音频的形式去描述它。目前跨模态大模型前沿的进展就包括了像以图生文为首的理解类任务,也包括以文生图为首的生成类任务。近期也出现了大量融合其他模态的跨模态大模型,这是必然的趋势之一。这些不同模态的增多也在促进创新应用的增多,另一个趋势是模型体量的增大。从下图右边部分可以看到,随着模型体量的增大,视觉问答的效果是不断提升的。

图片

结合前沿的发展趋势可以总结出,核心的技术要素主要分为开发、性能以及应用。目前跨模态大模型的开发主要是以大语言模型为基础,开发的一个核心是高效地融合大语言模型。而极致的性能优化可以为大模型带来成本的大幅降低。社区当中已经涌现了大量的跨模态应用,不同模态的融合也为更多的创新应用提供了空间。

跨模态大模型套件PaddleMIX

下面是PaddleMIX的全景图。依托飞桨的核心框架,PaddleMIX推出了一套完整的大模型开发工具链。从开发,训练,精调到推理部署,上层的模型也覆盖了像图片、文本、音频、视频等不同的模态。模型库划分为多模态预训练和扩散模型两部分,其中包含了一些主流的的跨模态算法,结合这些不同的跨模态模型,PaddleMIX也推出了大模型的应用工具集,其中包括了文生图的应用pipeline,以及跨模态任务流水线AppFlow。

图片

PaddleMIX的特点跟PaddleNLP大语言模型套件保持一致,它也具备一站式模型的开发体验,以及极致的训练、推理性能,同时保持生态的兼容。

在一站式开发上,PaddleMIX针对图文预训练提供了一套完整的预训练开发流程,从CLIP系列的图文特征对齐,到以BLIP-2为代表的通过衔接模块连接大语言模型,同时冻结视觉语言模块来实现低成本、高效的跨模态预训练。最后是以MiniGPT4为代表的指令微调任务,去实现像VQA/Caption这种跨模态的下游任务。这里,不同阶段涉及的模型代码权重在PaddleMIX当中有做充分的打通,以提高跨模态预训练的开发效率。

对于模型解耦、兼容PaddleNLP的各类大语言模型,举了两个典型的结构,BLIP-2分为视觉、衔接以及语言模块,这些不同的模块都可以独立地进行配置,语言模型也可以灵活地进行替换。扩散模型更多的以pipeline的形式来实现不同的生图功能,这里会通过像unet,还有VAE这样独立的子模型,以及不同策略来实现循环采样。

图片

性能方面,结合飞桨核心框架做了一系列极致优化。训练侧,基于Flash Attention以及Fuse Linear的模块实现了BLIP-2在单机4卡的性能超越了Pytorch 25%。Stable Diffusion的训练性能超越了Pytorch 40%。推理侧,通过不同粒度的算子融合以及组网逻辑的一系列优化,在SD方面实现了出图速度达到Pytorch的四倍,它的显存占用也仅为TensorRT的43%。像MiniGPT-4的推力达到了加速1.6倍的效果,Grounded SAM较Pytorch的性能也提升了22%。

图片

生态方面,PaddleMIX也提供了一套独立的PPDiffusers扩散模型工具箱,通过兼容Web UI和Civital以支撑这些复杂的Prompt,还能和万余种权重在众多场景中完成生成任务。权重生态方面,PPDiffusers也支持了Civital,提供超过3万余个LORA权重,来实现各类的个性化文生图模型。

图片

工具方面,兼容了WebUI来实现丰富的功能,比如可控生成、图像编辑。除此之外,PaddleMIX还提供了AppFlow跨模态任务流水线,它的目的是为了串联文生图、图生文这样的一些基础任务,来实现更加复杂的跨模态应用。比如基于对话的图像编辑系统,还有自动数据标注系统等等。同时,AppFlow也具备简单易用的特点,开发者们可以很方便的调用代码实现一键预测。

PaddleMIX应用体验

目前基于PaddleMIX所实现的这些特色应用已经上线到飞桨AI Studio星河社区,包括艺术风格二维码的生成,生成属于自己的特色二维码,这里推荐大家把链接复制到PC端,会有更好的使用体验。下图右下角是一个叠图应用,可以基于输入的两张图片和特定的提示词,自定义融合生成一张全新的图片。当然,后续PaddleMIX也会陆续上新更多的特色应用,也期待更多开发者们集思广益,来AI Studio上创建属于自己的大模型应用。

图片

本篇文章根据WAVE SUMMIT 2023深度学习开发者大会讲稿整理而成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/120076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务-Ribbon负载均衡

文章目录 负载均衡原理流程原理源码分析负载均衡流程 负载均衡策略饥饿加载总结 负载均衡原理 流程 原理 LoadBalanced 标记RestTemplate发起的http请求要被Ribbon进行拦截和处理 源码分析 ctrlshiftN搜索LoadBalancerInterceptor,进入。发现实现了ClientHttpRequ…

电脑扬声器未插入?4个方法帮你恢复声音!

“太奇怪了吧,我的电脑扬声器一直显示未插入,我使用电脑的时候也是一直都没有声音。这是为什么呢?我应该怎么解决这个问题呀?” 我们使用电脑播放音频或视频时,都需要用到电脑扬声器。如果扬声器无法播放声音&#xff…

导入Embassy库进行爬虫

Embassy是一个基于Lua的轻量级爬虫框架,可以方便地进行网页抓取和数据提取。它提供了简单易用的接口和丰富的功能,可以帮助开发者快速构建爬虫应用。 要使用Embassy进行爬虫,首先需要安装Embassy库。可以通过Lua的包管理工具luarocks来安装E…

LabVIEW应用开发——控件的使用(四)

接上文,这篇介绍时间控件。 LabVIEW应用开发——控件的使用(三) 1、时间控件Time Stamp control 在日常软件开发场景中,时间也是一种常用的控件,用于表达当前时间的显示、对下设置时间、时间同步等等场景。LabVIEW专门…

『C语言进阶』文件操作

🔥博客主页: 小羊失眠啦. 🔖系列专栏: C语言、Linux、Cpolar ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 前言一、什么是文件1.1 程序文件1.2 数据文件1.3 文件名 二、文件的打开和关闭2.1 文件指针2.2 文件的打开和关…

[计算机提升] Windows文件系统类型介绍

1.13 文件系统 在Windows系统中,文件系统是一种用于组织和管理计算机上存储的文件和目录的方法。它提供了一种结构化的方式来访问、存储和检索数据。 以下是Windows系统中常见的文件系统: FAT(FAT16、FAT32):FAT&…

超简洁ubuntu linux 安装 cp2k

文章目录 打开下载网址解压接下来的步骤讲解 将解压的包移到对应路径下最后运行 打开下载网址 需要从github下载:下载网址 两个都可以从windows下先下载,再复制到linux中, 如果不能复制,右键这两个,复制链接&#xf…

【开源】基于SpringBoot的农村物流配送系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统登录、注册界面2.2 系统功能2.2.1 快递信息管理:2.2.2 位置信息管理:2.2.3 配送人员分配:2.2.4 路线规划:2.2.5 个人中心:2.2.6 退换快递处理:…

Redis快速上手篇(四)(Spring Cache,缓存配置)(注解方式)

Spring Cache 从3.1开始,Spring引入了对Cache的支持。其使用方法和原理都类似于Spring对事务管理的支持。Spring Cache是作用在方法上的 使用Spring Cache的时候我们要保证我们缓存的方法对于相同的方法参数要有相同的返回结果。 使用Spring Cache需要我们做两方面…

电子学会C/C++编程等级考试2023年05月(三级)真题解析

C/C等级考试&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;找和为K的两个元素 在一个长度为n(n < 1000)的整数序列中&#xff0c;判断是否存在某两个元素之和为k。 输入 第一行输入序列的长度n和k&#xff0c;用空格分开。 第二行输入序列中的n个整数&am…

绿米Aqara S1【妙控开关 S1E】的破解方法---续篇

概述 上接第一篇《绿米Aqara S1【妙控开关 S1E】的破解方法》。 链接地址如下: 绿米Aqara S1【妙控开关 S1E】的破解方法-CSDN博客 上篇主要讲述了,绿米S1E这款硬件的基本组成及TTL线的线序,并获取到了对应的串口打印信息。 此篇重点讲解,如何进入其系统,并开启访问权…

苍穹外卖-01

苍穹外卖-01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示&#xff1a; ​ 管理端-外卖商家使用 ​ 用户端-点餐用户使用 当我们完成该项目的学习&#xff0c;可以培养以下能力&#xff1a; 1. 软件开发整体介绍 作为一名…

Jenkins入门级安装部署

前言 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件项目可以进行持续集成。通常&#xff0c;项目中常用Jenkins作为编译打包项目的工具&#xff0…

【Proteus仿真】【STM32单片机】智能语音家居陪护机器人

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用OLED显示模块、红外传感器、蜂鸣器、DS18B20温度传感器&#xff0c;风扇LED、语音识别模块等。 主要功能&#xff1a; 系统运行后&#xff0c;…

Adversarial attacks and defenses on AI in medical imaging informatics: A survey

Adversarial attacks and defenses on AI in medical imaging informatics: A survey----《AI在医学影像信息学中的对抗性攻击与防御&#xff1a;综述》 背景&#xff1a; 之前的研究表明&#xff0c;人们对医疗DNN及其易受对抗性攻击的脆弱性一直存在疑虑。 摘要&#xff1a;…

实时高效获取目标窗口的可见区域

&#xff08;图一&#xff09; 以图一为例&#xff0c;假设窗口1的RECT为Rect1&#xff0c;窗口2的RECT为Rect2&#xff0c;窗口3的RECT为Rect3。那么窗口1的可见区域&#xff08;Region&#xff09;就是Rect1异或&#xff08;XOR&#xff09;Rect2后得到的区域&#xff0c;也…

RT-Thread 8. RT-Thread Studio arm-gcc使用10.2.1编译

1. gcc编译器下载 E:\RT-ThreadStudio\repo\Extract\ToolChain_Support_Packages\ARM\GNU_Tools_for_ARM_Embedded_Processors2. 把5.4.1 改为5.4.11 再“全部构建”&#xff0c;提示错误 3. 把工具链版本改为10.2.1&#xff0c;再“全部构建”

Nacos安装指南:windows版本、linux版本

Nacos安装指南 1.Windows安装 开发阶段采用单机安装即可。 1.1.下载安装包 在Nacos的GitHub页面&#xff0c;提供有下载链接&#xff0c;可以下载编译好的Nacos服务端或者源代码&#xff1a; GitHub主页&#xff1a;https://github.com/alibaba/nacos GitHub的Release下载…

【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P2433-小学数学 N 合一【入门2分支结构】&#x1f30f;题目描述&#x1f319;问题…

【蓝桥杯选拔赛真题01】C++参赛建议 青少年组蓝桥杯C++选拔赛真题 STEMA比赛真题解析

目录 C/C++参赛建议 一、题目要求 1、编程实现 2、输入输出 二、算法分析 <