前言
LLM推理优化系统工程概述
截止到目前市面上比较主流的基于文字生成影像的模型都是基于了3大部分组成的。
Encoder Model , Generation Model ,Decoder Model。并且这三个部分是分开训练,然后组合在一起从而构成了文生图大模型。
图片来源于B站李宏毅教授讲问生图原理,侵删。
下面我们可以看一下Stable Diffusion, DAll -E ,以及Imagen的架构示意图。它们基本上也都是基于这三大部分构成的。
一、关键的前置认知:
1.1 基础概念:
FID分数:是一种衡量生成图像质量的指标,较低的FID分数表示更好的图像质量。
-
“red points: real images” 表示红色点代表真实图像的特征向量。
-
“blue points: generated images” 表示蓝色点代表生成图像的特征向量。
-
“FID = Frechet distance between the two Gaussians” 表示FID是两个高斯分布之间的弗雷歇距离。
-
“Smaller is better” 表示FID值越小,表示生成图像的质量越好。
CLIP Score:是一个用于评估文本到图像生成任务中生成图像与输入文本相关性的指标。
即文本进变向量,图像进变向量。然后比较两个向量在高斯分布上的距离。分值越高越好。
1.2 重要结论:
(a)显示了不同大小(Small, Large, XL, XXL)的T5编码器对最终图像生成质量的影响。随着T5模型大小的增加,其在低CLIP Score范围内的表现有所改善,但超过某个阈值后,较大的模型不再显著提升图像质量,甚至可能导致过拟合,从而影响性能。
(b)展示了不同大小(300M, 500M, 1B, 2B参数量)的U-Net模型对图像生成质量的影响。随着模型复杂度(即参数量)的增加,U-Net在提高图像质量方面表现出了一定的优势,但在高CLIP Score区域,较大的模型可能会导致过拟合,从而影响生成图像的质量。
综上,在生成图像模型中,编码器(如T5)的重要性超过了生成模型(如U-Net)。具体表现为,随着编码器规模的增加,生成图像的质量显著提高,而生成模型规模的增加对生成图像质量的提升相对较小。因此,编码器在生成图像模型中的作用更为关键。
即,一个好的文生图模型,Encoder是关键的核心,并且其关键程度要大于Generation Model!!!
二、文生图模型的工作原理
2.1 文生图模型的基本原理
- 其核心的逻辑是,
- 正向(加噪过程):一张图像 —> 加噪 —> 加噪 —>加噪… 直至变成纯噪声
- 反向(去噪过程):纯噪声 —> 去噪 —> 去噪 —>去噪… 直至还原成一张图片
- 这是一个AE(Auto Encoder)模型的变体,即自编码模型
- 学习的过程就是,将一段向量转换成一张图片的过程(加噪,去噪的过程)。
- 实际推理的过程,就是“噪声”变向量的过程。
2.2 正向(Forward Process)&反向(Backward Process)过程逻辑说明:
上图就是一个典型加噪过程。在Encoder对图像进行编码后,开始分步骤加躁。直至加至纯噪声。不过这时的“纯噪声”实际上是指图像已经无法辨认出其原始内容,但严格来说,它并不是一个完全随机的噪声向量。它的像素值仍然遵循某种概率分布,但不再保留任何关于原始图像的信息。
上图就是一个典型降噪的过程。我们会看到一系列重复的去噪模块(Denoise Block),每个模块都试图从当前的噪声图像中移除一部分噪声。每次去噪操作后,图像的某些部分变得更加清晰,显示出更多的结构信息。例如,我们可以观察到一些颜色块逐渐形成图案,暗示着图像内容的逐步恢复。
去噪过程是循环进行的,每次迭代都会使图像更加接近原始状态。图片中展示了多轮迭代的效果,可以看到图像从最初的混乱状态逐渐转变为具有更多可识别特征的状态。
2.3 解码器(Decoder)的原理
在最后一轮去噪之后,图像被传递给一个解码器(Decoder)。解码器的任务是将去噪后的特征重新组合成完整的图像。
其实核心本质,就是把所谓的中间产物(Latent Representation) 还原为一张图片。让生成图片与原始图片向量,在高斯分布上,越接近越好。
通过大量的数据进行训练,使整个模型学习文本和图像之间的对应关系。
2.4 推理过程说明
-
首选输入文档,例如:“一只雪地里的猫”;
-
使用预训练的文本编码器(如BERT、T5)将文本描述转换为固定长度的向量表示;
-
将文本编码的向量作为条件输入到图像生成模型中;–Vtext
-
生成模型从一个随机噪声向量开始; – Z
-
通过一系列生成步骤,逐步减少噪声,恢复图像的结构信息。逐步将噪声向量转换为与文本描述匹配的图像。 – Vtext和Z生成中间特征向量f
-
生成模型输出一张图像,该图像应与输入的文本描述相匹配。-- f转换为生成的图像Xgen
以下是,训练过程与推理过程在架构上的区别示意图:
推理过程的核心本质是,首先进行多模态抽特征,生成一个向量。由这个向量去干扰去噪的过程。由此可以实现控制生成的结果。
三、Stable Diffusion 部署体验
模型名称:iic/multi-modal_chinese_stable_diffusion_v1.0 即阿里云中文微调过的stable_diffusion模型
环境:魔搭的NoteBook
下载模型:git clone https://www.modelscope.cn/iic/multi-modal_chinese_stable_diffusion_v1.0.git
安装版本低于0.21.0的diffusers库。diffusers是一个用于实现扩散模型的库,通常用于图像生成等任务。这里使用特定版本是为了确保与代码中其他部分的兼容性。
pip install 'diffusers<0.21.0'
导出相关依赖
import torch
import cv2
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from IPython.display import display, Image as IPImage
from PIL import Image
设定任务,并指定模型
task = Tasks.text_to_image_synthesis
model_id = 'damo/multi-modal_chinese_stable_diffusion_v1.0'
魔搭社区的基础调用示例
pipe = pipeline(task=task, model=model_id)
output = pipe({'text': '中国山水画'})
cv2.imwrite('result.png', output['output_imgs'][0])
输出为opencv numpy格式,转为PIL.Image
from PIL import Image
img = output['output_imgs'][0]
img = Image.fromarray(img[:,:,::-1])
img.save('result.png')
展示结果图片
display(IPImage(filename='result.png'))
结果如下:
当然Prompt如果不是很符合训练的数据习惯时,大概率会有翻车的可能,例如:
最后说一下,这个推理的过程还是非常吃资源的。例如使用纯CPU的NoteBook环境,在8核24G的配置下,生成一张图片大概需要将近30分钟。然后同样的配置,如果使用的是24G的GPU,则生成一张图片的速度在1.5分钟 - 3分钟之间。
可以使用:
nvidia-smi
命令来查看GPU的使用率。这里我之前忘记截图了,但是推理过程中,基本上快把24G的内存吃满了。
好了,以上就是本篇的全部内容了。希望对各位有一点帮助。
这里直接将该软件分享出来给大家吧~
1.stable diffusion安装包
随着技术的迭代,目前 Stable Diffusion 已经能够生成非常艺术化的图片了,完全有赶超人类的架势,已经有不少工作被这类服务替代,比如制作一个 logo 图片,画一张虚拟老婆照片,画质堪比相机。
最新 Stable Diffusion 除了有win多个版本,就算说底端的显卡也能玩了哦!此外还带来了Mac版本,仅支持macOS 12.3或更高版本。
2.stable diffusion视频合集
我们在学习的时候,往往书籍源码难以理解,阅读困难,这时候视频教程教程是就很适合了,生动形象加上案例实战,一步步带你入坑stable diffusion,科学有趣才能更方便的学习下去。
3.stable diffusion模型下载
stable diffusion往往一开始使用时图片等无法达到理想的生成效果,这时则需要通过使用大量训练数据,调整模型的超参数(如学习率、训练轮数、模型大小等),可以使得模型更好地适应数据集,并生成更加真实、准确、高质量的图像。
4.stable diffusion提示词
提示词是构建由文本到图像模型解释和理解的单词的过程。可以把它理解为你告诉 AI 模型要画什么而需要说的语言,整个SD学习过程中都离不开这本提示词手册。
5.SD从0到落地实战演练
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名SD大神的正确特征了。
这份完整版的stable diffusion资料我已经打包好,需要的点击下方插件,即可前往免费领取!