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

news2024/9/28 13:21:14

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

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

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

相关文章

八股总结(一)C++语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C++11新特性

layout: post title: 八股总结(一)C语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C11新特性 description: 八股总结(一)C语言特性、基础语法、类与模板、内存管理、拷贝控制、STL及C11新特性 tag: 八股总结 总结的大部…

使用python求PLS-DA的方差贡献率

以鸢尾花数据集为例,实现PLS-DA降维,画出降维后数据的散点图并求其方差贡献率。 效果图 完整代码 # 导入所需库 import numpy as np from sklearn.cross_decomposition import PLSRegression from sklearn.datasets import load_iris from sklearn.pre…

synchronized原理mointor

Monitor对象头 在java中普通对象的对象头信息 Mark Word记录分代年龄、加锁的状态;Klass Word指向类对象的指针; 其中Mark Word结构 monitor执行原理 我们在加了重量级锁synchronize后,对象头的mark word会指向一个monitor,mon…

pandas库中的read_csv函数读取数据时候的路径问题详解(ValueError: embedded null character)

read_csv()函数不仅是R语言中的一个读取csv文件的函数,也是pandas库中的一个函数。pandas是一个用于数据分析和处理的python库。它的read_csv函数可以读取csv文件里的数据,并将其转化为pandas里面的DataFrame对象。它由很多参数可以设置,例如…

Express的详细教程

Express 文章目录Express初识ExpressExpress简介Express的基本使用安装创建基本的web服务器监听GET请求监听POST请求把内容响应给客户端获取URL中携带的查询参数获取URL中的动态参数托管静态资源express.static()托管多个静态资源挂载路径前缀nodemon为什么要使用nodemon安装no…

【专项训练】动态规划-1

动态规划 以上,并没有什么本质的不一样,很多时候,就是一些小的细节问题! 要循环,要递归,就是有重复性! 动态规划:动态递推 分治 + 最优子结构 会定义状态,把状态定义对 斐波那契数列 递归、记忆化搜索,比较符合人脑思维 递推:直接开始写for循环,开始递推 这里…

mysql无法启动服务及其他问题总结

文章目录1.安装后关于配置的问题显示【发生系统错误,拒绝访问】命令行Command Line Client闪退2.显示【MySQL服务无法启动】问题检查端口被占用删除data文件并初始化配置my.ini/.conf文件重新安装MySQL1.安装后关于配置的问题 显示【发生系统错误,拒绝访…

Apache Dubbo 存在反序列化漏洞(CVE-2023-23638)

漏洞描述 Apache Dubbo 是一款轻量级 Java RPC 框架 该项目受影响版本存在反序列化漏洞,由于Dubbo在序列化时检查不够全面,当攻击者可访问到dubbo服务时,可通过构造恶意请求绕过检查触发反序列化,执行恶意代码 漏洞名称Apache …

【Linux】 -- make/Makefile

目录 Linux项目自动化构建工具 – make/Makefile 背景 依赖关系和依赖方法 多文件编译 项目清理 make原理 Linux项目自动化构建工具 – make/Makefile 背景 一个工程的源文件不计其数 按照其类型、功能、模块分别放在若干个目录当中 Makefile定义了一系列的规则来指定&…

DJ1-3 计算机网络和因特网

目录 一、物理介质 1. 双绞线 2. 同轴电缆 3. 光纤线缆 4. 无线电磁波 二、端系统上的 Internet 服务 1. 面向连接的服务 TCP(Transmission Control Protocol) 2. 无连接的服务 UDP(User Datagram Protocol) TCP 和 UD…

TypeScript(四)接口

目录 前言 定义 用法 基本用法 约定规则 属性控制 任意属性 可选属性 只读属性 定义函数 冒号定义 箭头定义 接口类型 函数接口 索引接口 继承接口 类接口 总结 前言 在介绍TS对象类型中,为了让数组每一项更具体,我们使用 string [ ]…

C++面向对象编程之四:成员变量和成员函数分开存储、this指针、const修饰成员和对象

在C中&#xff0c;成员变量和成员函数是分开存储的&#xff0c;只有非静态成员变量才存储在类中或类的对象上。通过该类创建的所有对象都共享同一个函数#include <iostream> using namespace std;class Monster {public://成员函数不占对象空间&#xff0c;所有对象共享同…

数据库基本功之复杂查询的子查询

子查询返回的值可以被外部查询使用,这样的复合查询等效与执行两个连续的查询. 1. 单行单列子查询 (>,<,,<>,>,<)内部SELECT子句只返回一行结果 2.多行单列子查询 (all, any, in,not in) all (>大于最大的,<小于最小的) SQL> select ename, sal from…

Linux创建并挂载NAS

1 目标 在Linux服务器1上创建nas服务器&#xff0c;并指定可读写目录在Linux服务器2上挂载上述nas磁盘在Linux服务器2上设置开机自动挂载nas磁盘 2 搭建环境 两台Linux系统服务器&#xff0c;如下&#xff1a; 服务器1 IP为192.168.31.101 服务器2 IP为192.168.31.102 3 在服…

自动化测试——selenium多浏览器处理

这里写目录标题一、背景二、pytes hook函数1、conftest.py2、测试用例3、执行测试用例一、背景 用户使用的浏览器(frefox,chrome,IE 等) web应用应该能在任何浏览器上正常的工作&#xff0c;这样能吸引更多的用户来使用。 是跨不同浏览器组合验证网站或web应用程序功能的过程 …

Python高频面试题——生成器(最通俗的讲解)

生成器定义在 Python 中&#xff0c;使用了 yield 的函数被称为生成器&#xff08;generator&#xff09;。跟普通函数不同的是&#xff0c;生成器是一个返回迭代器的函数&#xff0c;只能用于迭代操作&#xff0c;更简单点理解生成器就是一个迭代器。 在调用生成器运行的过程中…

Ubuntu系统开机自动挂载NTFS硬盘【超实用】

由于跑深度学习实验(图像分割)f非常消耗内存&#xff0c;系统盘sda1内存小&#xff0c;配置了一个大容量得出NTFS机械盘&#xff0c;网上招了一些资料如何挂在&#xff0c;但是每次开机得手动挂载一遍才能使用硬盘&#xff0c;非常不方便&#xff0c;还容易造成数据丢失。 Step…

Elasticsearch使用系列-ES增删查改基本操作+ik分词

一、安装可视化工具KibanaES是一个NoSql数据库应用。和其他数据库一样&#xff0c;我们为了方便操作查看它&#xff0c;需要安装一个可视化工具 Kibana。官网&#xff1a;https://www.elastic.co/cn/downloads/kibana和前面安装ES一样&#xff0c;选中对应的环境下载&#xff0…

如何通过C++ 将数据写入 Excel 工作表

直观的界面、出色的计算功能和图表工具&#xff0c;使Excel成为了最流行的个人计算机数据处理软件。在独立的数据包含的信息量太少&#xff0c;而过多的数据又难以理清头绪时&#xff0c;制作成表格是数据管理的最有效手段之一。这样不仅可以方便整理数据&#xff0c;还可以方便…

【Python】tqdm 模块

import mathfrom tqdm import tqdm, trange# 计算阶乘 results_1 []for i in range(6666):results_1.append(math.factorial(i))这是一个循环计算阶乘的程序&#xff0c;我们不知道程序运行的具体情况&#xff0c;如果能加上一个程序运行过程的进度条&#xff0c;那可就太有趣…