当前位置: 首页 > news >正文

又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先

AIGC(AI Generated Content),即通过人工智能方法生成内容,是当前深度学习最热门的方向之一。其在绘画、写作等场景的应用也一直层出不穷,其中,AI绘画是大家关注和体验较多的方向。

Diffusion系列文生图模型可以实现AI绘画应用,其一经推出就受到广泛关注,开启了一波“全民调教AI作画”的潮流,激起了大量的应用需求。与此同时,百度推出的知识增强跨模态大模型——文心ERNIE-ViLG 2.0在 AI 作画领域取得新突破。该模型在文本生成图像公开权威评测集MS-COCO和人工盲评上均超越了Stable Diffusion、DALL-E 2等模型,当前在该领域取得了最好的效果,在语义可控性、图像清晰度、中国文化理解等方面均展现出了显著的优势。

开发者和科技爱好者可以将文心 ERNIE-ViLG 2.0 API (wenxin.baidu.com/ernie-vilg)灵活方便地集成到产品中。同时,基于文心ERNIE-ViLG 2.0大模型,百度也推出AI艺术与创意辅助平台——文心一格(yige.baidu.com),以满足更多的人在AI作画方面的需求。

 文心一格模型效果图~

AI绘画模型推理算力及显存需求随图像分辨率增大而指数级增加,同时图像生成需要循环采样数十次,产业落地动辄需要高昂成本的部署集群,严重阻碍了AIGC模型大规模商业化落地。为此,百度飞桨一直致力于大模型的训练、压缩、推理端到端优化,实现低成本的模型部署上线,助力AIGC模型快速产业落地。

飞桨深度优化的Stable Diffusion模型,在单卡NVIDIA A100(80G) 上推理速度和显存利用率全面超越同类产品,取得业界第一的领先优势。百度自研中文AI绘画ERNIE-ViLG模型,在昆仑芯 R200(32GB) 卡上推理,全面超越同系列主流推理卡,并已成功批量部署于文心一格创意平台。

GPU推理性能数据

下图展示了分别使用PaddlePaddle、TensorRT、AITemplate和Diffusers(PyTorch)4种深度学习框架或推理引擎对Stable Diffusion进行推理时的性能表现。可以看出,基于PaddlePaddle对Stable Diffusion进行推理时,512*512图像生成速度68.2 iters/s,实现 0.76s 出图。其推理速度是 Diffusers(PyTorch)的4倍,比TensorRT最优速度快7.9%,同时显存占用仅为TensorRT的43%。

昆仑芯 R200 性能数据

昆仑芯 R200 性能数据在dpm-25steps算法下,生成1024*1024图像时的推理速度相比同能力的主流推理卡快20%。同时,R200拥有32G显存,能够生成更高分辨率的图片,可以推理更大的模型,为用户带了高性价比的选择。

不同硬件跑ERNIE-ViLG的推理速度及显存占用对比

向左滑动查看飞桨Stable Diffusion 模型效果图~ 

快速体验

Stable Diffusion训练推理全流程已在飞桨扩散模型工具箱中开源

  • 参考链接

https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers

同时,对于飞桨Stable Diffusion在GPU和 昆仑芯上的高性能部署,FastDeploy部署工具已经提供了开箱即用的部署体验

  • 参考链接

https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/multimodal/stable_diffusion

与此同时,随着大模型应用的不断出圈,AIGC相关的应用落地需求也不断激增,因此,百度百舸联合飞桨团队将飞桨训推大模型的能力优势与AI加速组件AIAK(AI Accelerate Kit)完美融合,形成全新产品“飞桨云原生大模型开发工具”,显著提升了云用户大模型任务的开发和部署效率,并加速了生成式AI的工程化落地。作为业界首个经过全流程验证的大模型开发工具,飞桨云原生大模型开发工具不仅拥有更极致的性能,还可以让开发者体验到千亿大模型的的分布式训练和推理功能。

备注说明

  • 百度百舸

AI异构计算平台,包含AI计算、AI存储、AI加速、AI容器四大核心套件,具有高性能、高弹性、高速互联、高性价比等特性。充分汲取了百度异构计算平台多年的技术积累,深度融合推荐、无人驾驶、生命科学、NLP等场景的实践经验,能为AI场景提供软硬一体解决方案,加速AI工程化落地。

  • AIAK

结合飞桨与百度云百舸整体方案优势联合推出的AI加速套件,用来加速基于飞桨等深度学习框架开发的AI应用,能极大提升分布式训练和推理的性能,大幅增加异构资源使用效率。

  • 飞桨云原生大模型开发工具

业界首个经过全流程完整验证的大模型开发工具,支撑GPT-3、Bloom、Stable Diffusion等多个大模型训练、微调、压缩、推理的流畅开发体验。

01 性能优化核心解读

飞桨原生推理库Paddle Inference的领先效果、基于飞桨框架领先的架构设计和针对Stable Diffsuion模型的深度优化,主要体现在如下几个方面:

Flash Attention

飞桨一直致力于大模型推理优化,支持多种通用Transformer类结构的高性能推理优化。在Stable Diffusion模型推理中,飞桨集成的高性能的Flash Attention kernel,通过将attention中的softmax计算进行拆解、分片计算,大量减少推理过程中self-attention和cross-attention计算对显存的访问次数,同时实现了推理加速和显存优化。

Norm融合

Norm是Stable Diffusion中U-Net常用算子,主要分为LayerNorm和GroupNorm。LayerNorm和GroupNorm算子作为批规约运算,能够很好地和前后的elementwise类型、激活类型算子进行融合,消除算子间的显存访问。飞桨对LayerNorm和GroupNorm与前后算子的4种不同pattern进行了融合,共融合了93个Norm结构,提升了3%的推理性能。

混合Layout计算

通过对模型张量排布匹配优化,支持不同的Layout消除和合并U-Net中的转置操作,提高了推理速度同时也能降低了运行显存占用,共减少了32次转置操作,带来了3~4%的推理性能提升。

Scheduler优化

对PPDiffusers库中的scheduler运算逻辑进行了重新整合梳理,将scheduler.step中的GPU算子发射数量由约12个减小至7个,同时通过参数预计算的方法,消除了采样循环中scheduler运算的CPU计算以及GPU同步开销。

推理显存优化

经过飞桨框架的算子融合引擎处理,Stable Diffusion模型中U-Net模型的独立算子数量减少60%,显存占用下降27%。针对U-Net模型的Layout优化消除了转置变换带来的额外显存消耗,能够使整体显存占用降低约19%。同时,针对ERNIE-ViLG 2.0文心AI作画大模型,飞桨框架提供了推理workspace复用技术,使ERNIE-ViLG 2.0模型显存占用下降37%,极大降低了ERNIE-ViLG 2.0文心AI作画大模型的部署成本。

基于飞桨原生推理库Paddle Inference的高性能架构设计,结合上述优化点,飞桨Stable Diffusion模型能实现在单卡80G A100(SXM4)上,512*512分辨率生成图像(50 iters)推理时延0.76s,推理速度达到68.2 iters/s,显存占用4.6G,显存占用方面和速度方面均为当前业界最优效果。

02 后续工作

飞桨在持续推进AIGC模型、AI对话模型等大模型的优化,结合飞桨框架训推一体的核心能力,发布更多训练、压缩、推理端到端优化的高性能产业级大模型,并持续打磨部署端到端方案,助力大模型更全面产业化,欢迎各位开发者持续关注或反馈需求和建议。

相关文章:

又一个开源第一!飞桨联合百舸,Stable Diffusion推理速度遥遥领先

AIGC(AI Generated Content),即通过人工智能方法生成内容,是当前深度学习最热门的方向之一。其在绘画、写作等场景的应用也一直层出不穷,其中,AI绘画是大家关注和体验较多的方向。 Diffusion系列文生图模型可以实现AI绘画应用&…...

数据链路层及交换机工作原理

目录 一,帧格式 1.1 帧头类型字段的作用 1.2 MAC地址 1.3 MTU值 二,交换机工作原理 2.1 交换机的端口 2.2 端口状态 三,交换机基本工作模式及命令 3.1 交换机的工作模式: 3.2 命令 一,帧格式 其中类型是指&am…...

VSCode 开发配置,一文搞定(持续更新中...)

一、快速生成页面骨架 文件 > 首选项 > 配置用户代码片段 选择需要的代码片段或者创建一个新的,这里以 vue.json 举例: 下面为我配置的代码片段,仅供参考: {"Print to console": {"prefix": "…...

全网最详细的(CentOS7)MySQL安装

一、环境介绍 操作系统:CentOS 7 MySQL:5.7 二、MySQL卸载 查看软件 rpm -qa|grep mysql 卸载MySQL yum remove -y mysql mysql-libs mysql-common rm -rf /var/lib/mysql rm /etc/my.cnf 查看是否还有 MySQL 软件,有的话继续删除。 软件卸…...

基于LSTM的文本情感分析(Keras版)

一、前言 文本情感分析是自然语言处理中非常基本的任务,我们生活中有很多都是属于这一任务。比如购物网站的好评、差评,垃圾邮件过滤、垃圾短信过滤等。文本情感分析的实现方法也是多种多样的,可以使用传统的朴素贝叶斯、决策树,…...

2023年全国最新机动车签字授权人精选真题及答案17

百分百题库提供机动车签字授权人考试试题、机动车签字授权人考试预测题、机动车签字授权人考试真题、机动车签字授权人证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 三、多选题 1.注册登记安全检验时,送检乘用…...

PowerShell远程代码执行漏洞(CVE-2022-41076)分析与复现

漏洞概述PowerShell(包括Windows PowerShell和PowerShell Core)是微软公司开发的任务自动化和配置管理程序,最初只是一个 Windows 组件,由命令行 shell 和相关的脚本语言组成。后于2016年8月18日开源并提供跨平台支持。PowerShell…...

Mybatis中的一级缓存和二级缓存

Mybatis作为一款强大的ORM框架,其中也用到了缓存来加速查询,今天我们一起来探讨下。 Mybatis可以使用懒加载来提高查询的效率,并且可以通过缓存来提高查询的效率。其中包括有一级缓存和二级缓存。 一级缓存是sqlSession级别的缓存&#xff0c…...

【Java】SpringBoot中实现异步编程

前言 首先我们来看看在Spring中为什么要使用异步编程,它能解决什么问题? 什么是异步? 首先我们先来看看一个同步的用户注册例子,流程如下: 异步的方式如下: 在用户注册后将成功结果返回,…...

ASCII 文件与 TIFF 文件互转(Python 实现)(2023/03/09)

ASCII 文件与 TIFF 文件互转(Python 实现) 文章目录ASCII 文件与 TIFF 文件互转(Python 实现)1. 环境1.1 Linux1.2 Windows2. 代码1. 环境 1.1 Linux $ pip3 install --index-url https://mirrors.aliyun.com/pypi/simple --tru…...

思科模拟器 | 交换机与路由器的配置汇总【收藏备用】

文章目录一、vlan配置【实现同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、测试连接二、truck配置【实现连接在不同交换机上的同一vlan的主机通信】1、基本配置和接线2、vlan配置与端口连接3、打truck做连接3、测试连接三、静态路由配置1、自定义IP地址2、基本…...

电子台账:软件运行环境要求与功能特点

1 运行环境要求为满足大部分应用环境,软件开发时综合考虑各种各种不同因素影星,包括:操作系统、硬件、辅助软件、安装、运行、补丁、数据库、网络、人员等因素。目前台账软件需求为:操作系统:目前能运行的任意版本wind…...

计算机科学导论笔记(六)

目录 八、算法 8.1 概念 8.1.1 非正式定义 8.1.2 示例 8.1.3 定义动作 8.1.4 细化 8.1.5 泛化 8.2 三种结构 8.2.1 顺序 8.2.2 判断 8.2.3 循环 8.3 算法的表示 8.3.1 UML 8.3.2 伪代码 8.4 更正式的定义 8.5 基本算法 8.5.1 求和 8.5.2 求积 8.5.3 最大和最…...

嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 | 文末赠书4本

嵌入式从业10年,聊聊我对工业互联网和消费物联网的看法 工业互联网和消费物联网,有何异常点?本文,博主将结合自己的亲身经历,现身说法,聊聊博主对工业互联网和消费物联网的看法。 文章目录1 写在前面2 我眼…...

python的django框架从入门到熟练【保姆式教学】第一篇

当今,Python已成为最受欢迎的编程语言之一。而Django是一个基于Python的Web框架,它能够帮助你快速、高效地开发Web应用程序。如果你是一名初学者,学习Django框架可能会让你感到有些困惑。不过,不用担心,我们将为你提供…...

浏览记录或者购物车的去重处理

saveHistory(){// 获取缓存数据let historyArr uni.getStorageSync(historyArr) || []//需要添加的数据let item{id:this.detail.id,classid:this.detail.classid,title:this.detail.title,picurl:this.detail.picurl,looktime:parseTime(Date.now())};// forEach和findIndex的…...

Ubantu docker学习笔记(二)拉取构建,属于你的容器

文章目录一、拉取启动容器二、本地镜像初解三、构建镜像3.1使用docker commit构建镜像切换阿里镜像3.2使用dockerfile构建镜像四、总个结吧这里的话,就详细说说小唐对于容器的配置,对了!小唐参考的书籍是Linux容器云实战!&#xf…...

指针数组 数组指针 常量指针 指针常量 函数指针 指针函数

一、指针常量与常量指针 1、指针常量 本质上是一个常量,常量的类型是指针,表示该常量是一个指针类型的常量。在指针常量中,指针本身的值是一个常量,不可以改变,始终指向同一个地址。在定义的时候,必须要初…...

前端js学习

1. js入门 1.1 js是弱类型语言 1.2 js使用方式 1.2.1 在script中写 1.2.2 引入js文件 1.2.3 优先级 1.3 js查错方式 1.4 js变量定义 1.4 js数据类型 数据类型英文表示示例数值类型number1.1 1字符串类型string‘a’ ‘abc’ “abc”对象类型object布尔类型booleannumber函数…...

“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:食品卫生安全保障体系数学模型及改进模型(附获奖论文)

赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以至…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...

基础测试工具使用经验

背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键&#xff…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...