首页IT科技amazon prime视频(20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用)

amazon prime视频(20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用)

时间2025-05-05 07:11:39分类IT科技浏览4082
导读:真火!...

真火!

作为最近一段时间人工智能领域内的顶流之一           ,AIGC(AI-Generated Content)早已火爆出圈                 ,频登各大互联网平台热搜           。

cite: 微软亚洲研究院官方微博

这段时间以来      ,基于深度学习的内容生成在图像            、视频                 、语音     、音乐      、文本等生成领域都取得了令人瞩目的成果           ,也越来越多的身边人在讨论AIGC                 。但你知道AIGC背后的有哪些技术支持吗?

实际上                 ,最早引爆AIGC话题的是AI作图      ,它是以Stable Diffusion技术为基础实现的      。以前     ,AI 作图还只是简单的风格迁移                 、头像生成           、磨皮      、P图等功能应用                 ,直到Stable Diffusion模型的降临            ,AI 作图发生了质的变化     ,人们第一次见识到了生产力AI的力量:画家                 、设计师不用再绞尽脑汁思考色彩           、构图                ,只要告诉 Stable Diffusion 模型自己想要什么            ,就能言出法随般地生成高质量图片           。

那么我能不能自己实现一个以Stable Diffusion模型为基础的AIGC作画应用呢?

答案是可以的!最近我恰好受邀参与了亚马逊云科技【云上探索实验室】活动,利用Amazon的SageMaker平台搭建了自己的 AIGC 应用                ,整个过程只用了不到20分钟                 。

使用 Amazon SageMaker 基于Stable Diffusion模型搭建的AIGC应用

总体而言                 ,在Amazon SageMaker上搭建AIGC应用的体验十分出色,不仅仅是流程清晰           ,简单易实现      。使用者可以直接从Hugging Face上提取预训练的模型                 ,参考Amazon提供的简明教程      ,使得SageMaker可以很容易地将模型转化为Web应用     。

下面是一些图像生成的结果:

感觉还不错           ,现在我们就来复盘一些怎么利用亚马逊云服务使用Amazon SageMaker在20分钟内搭建一个属于自己的AIGC应用                 。

我将首先简单说明AIGC是什么以及讲解Stable Diffusion的技术原理            。然后介绍Amazon SageMaker是做什么的     。之后将基于Amazon SageMaker搭建AIGC应用的整体流程复盘一遍                。最后对该应用进行测试和功能评价            。

1. 什么是Stable Diffusion?

1.1. 人工智能自动生成内容:AIGC介绍

人工智能自动生成内容(AIGC)是一种基于人工智能(AI)技术的内容创作方法                 ,旨在快速、高效地生成高质量                 、有创意的文本                、图像、音频或视频等多种形式的内容。借助先进的深度学习和自然语言处理技术      ,AIGC能够理解和学习人类语言            、语境                、知识和创意     ,从而根据用户需求生成各种类型的内容                。这其中尤其以Stable Diffusion为代表性技术和应用                 ,它用于从自然语言描述生成数字图像                 。

1.2. Stable Diffusion原理解析

Stable Diffusion是一个基于Latent Diffusion Models(潜在扩散模型            ,LDMs)的文图生成(text-to-image)模型。

它包含三个模块:感知压缩     、扩散模型和条件机制           。

(1) 图像感知压缩(Perceptual Image Compression) 图像感知压缩通过VAE自编码模型对原图进行处理     ,忽略掉原图中的高频细节信息                ,只保留一些重要            、基础的特征                 。该模块并非必要            ,但是它的加入能够大幅降低训练和采样的计算成本,大大降低了图文生成任务的实现门槛      。

基于感知压缩的扩散模型的训练过程有两个阶段:(1)训练一个自编码器;(2)训练扩散模型           。在训练自编码器时                ,为了避免潜在表示空间出现高度的异化                 ,作者使用了两种正则化方法,一种是KL-reg           ,另一种是VQ-reg                 ,因此在官方发布的一阶段预训练模型中      ,会看到KL和VQ两种实现                 。在Stable Diffusion中主要采用AutoencoderKL这种正则化实现      。

具体来说           ,图像感知压缩模型的训练过程如下:给定图像

x

R

H

×

W

×

3

x\in \mathbb{R}^{H\times W\times 3}

xRH×W×3                 ,我们先利用一个编码器

ε

\varepsilon

ε
来将图像从原图编码到潜在表示空间(即提取图像的特征)

z

=

ε

(

x

)

z=\varepsilon(x)

z=ε(x)
     ,其中

z

R

h

×

w

×

c

z\in \mathbb{R}^{h\times w\times c}

zRh×w×c
     。然后     ,用解码器从潜在表示空间重建图片

x

~

=

D

(

z

)

=

D

(

ε

(

x

)

)

\widetilde{x}=\mathcal{D}(z)=\mathcal{D}(\varepsilon(x))

x=D(z)=D(ε(x))
                 。训练的目标是使

x

=

x

~

x=\widetilde{x}

x=x
            。

(2) 隐扩散模型(Latent Diffusion Models)

扩散模型(DM)从本质上来说                 ,是一个基于马尔科夫过程的去噪器     。其反向去噪过程的目标是根据输入的图像

x

t

x_t

xt去预测一个对应去噪后的图像

x

t

+

1

x_{t+1}

xt+1
            ,即

x

t

+

1

=

ϵ

t

(

x

t

,

t

)

,

t

=

1

,

.

.

.

,

T

x_{t+1}=\epsilon_t(x_t,t),\ t=1,...,T

xt+1=ϵt(xt,t),t=1,...,T
                。相应的目标函数可以写成如下形式:

L

D

M

=

E

x

,

ϵ

N

(

,

1

)

,

t

=

[

ϵ

ϵ

θ

(

x

t

,

t

)

2

2

]

L_{DM}=\mathbb{E}_{x,\epsilon\sim\mathcal{N(0,1),t}}=[||\epsilon-\epsilon_\theta(x_t,t)||_{2}^{2}]

LDM=Ex,ϵN(0,1),t=[∣∣ϵϵθ(xt,t)22]
这里默认噪声的分布是高斯分布

N

(

,

1

)

\mathcal{N(0,1)}

N(0,1)
     ,这是因为高斯分布可以应用重参数化技巧简化计算;此处的

x

x

x
指的是原图            。

而在潜在扩散模型中(LDM)                ,引入了预训练的感知压缩模型            ,它包括一个编码器

ε

\varepsilon

ε 和一个解码器

D

\mathcal{D}

D
。这样在训练时就可以利用编码器得到

z

t

=

ε

(

x

t

)

z_t=\varepsilon(x_t)

zt=ε(xt)
,从而让模型在潜在表示空间中学习                ,相应的目标函数可以写成如下形式:

L

L

D

M

=

E

ε

(

x

)

,

ϵ

N

(

,

1

)

,

t

=

[

ϵ

ϵ

θ

(

z

t

,

t

)

2

2

]

L_{LDM}=\mathbb{E}_{\varepsilon(x),\epsilon\sim\mathcal{N(0,1),t}}=[||\epsilon-\epsilon_\theta(z_t,t)||_{2}^{2}]

LLDM=Eε(x),ϵN(0,1),t=[∣∣ϵϵθ(zt,t)22]

(3) 条件机制(Conditioning Mechanisms) 条件机制                 ,指的是通过输入某些参数来控制图像的生成结果                。这主要是通过拓展得到一个条件时序去噪自编码器(Conditional Denoising Autoencoder,CDA)

ϵ

θ

(

z

t

,

t

,

y

)

\epsilon_\theta(z_t,t,y)

ϵθ(zt,t,y)来实现的           ,这样一来我们就可通过输入参数

y

y

y
来控制图像生成的过程                 。

具体来说                 ,论文通过在UNet主干网络上增加cross-attention机制来实现CDA      ,选用UNet网络是因为实践中Diffusion在UNet网络上效果最好。为了能够从多个不同的模态预处理参数

y

y

y           ,论文引入了一个领域专用编码器(Domain Specific Encoder)

τ

θ

\tau_\theta

τθ
                 ,它将

y

y

y
映射为一个中间表示

τ

θ

(

y

)

R

M

×

d

r

\tau_\theta(y)\in\mathbb{R}^{M\times d_r}

τθ(y)RM×dr
     ,这样我们就可以很方便的将

y

y

y
设置为各种模态的条件(文本                 、类别等等)           。最终模型就可以通过一个cross-attention层映射将控制信息融入到UNet的中间层     ,cross-attention层的实现如下:

A

t

t

e

n

t

i

o

n

(

Q

,

K

,

V

)

=

s

o

f

t

m

a

x

(

Q

K

d

)

V

Attention(Q,K,V)=softmax(\frac{QK^\top}{\sqrt{d}})\cdot V

Attention(Q,K,V)=softmax(dQK)V

Q

=

W

Q

(

i

)

φ

i

(

z

t

)

,

K

=

W

K

(

i

)

τ

θ

(

y

)

,

V

=

W

V

(

i

)

τ

θ

(

y

)

Q=W_{Q}^{(i)}\cdot \varphi_i(z_t),\quad K=W_{K}^{(i)}\cdot \tau_\theta(y),\quad V=W_{V}^{(i)}\cdot \tau_\theta(y)

Q=WQ(i)φi(zt),K=WK(i)τθ(y),V=WV(i)τθ(y)
其中

φ

i

(

z

t

)

R

N

×

d

ϵ

i

\varphi_i(z_t)\in \mathbb{R}^{N\times d_{\epsilon}^{i}}

φi(zt)RN×dϵi
是UNet的一个中间表征;

W

Q

(

i

)

W_{Q}^{(i)}

WQ(i)
     、

W

K

(

i

)

W_{K}^{(i)}

WK(i)

W

V

(

i

)

W_{V}^{(i)}

WV(i)

分别是三个权重矩阵                 。此时                 ,带有条件机制的隐扩散模型的目标函数可以写成如下形式:

L

L

D

M

=

E

ε

(

x

)

,

y

,

ϵ

N

(

,

1

)

,

t

=

[

ϵ

ϵ

θ

(

z

t

,

t

,

τ

θ

(

y

)

)

2

2

]

L_{LDM}=\mathbb{E}_{\varepsilon(x),\ y,\ \epsilon\sim\mathcal{N(0,1),\ t}}=[||\epsilon-\epsilon_\theta(z_t,\ t,\ \tau_\theta(y))||_{2}^{2}]

LLDM=Eε(x),y,ϵN(0,1),t=[∣∣ϵϵθ(zt,t,τθ(y))22]

2. 什么是Amazon SageMaker?

Amazon SageMaker 是一种完全托管式的机器学习服务            ,旨在帮助开发者和数据科学家快速      、轻松地构建                 、训练和部署机器学习模型      。Amazon SageMaker 提供了一个集成的开发环境     ,降低了创建机器学习解决方案的复杂性和成本           。Amazon云服务提供了三层架构                ,即框架和基础架构服务-机器学习服务-人工智能服务相结合的服务架构            ,其中Amazon SageMaker是中间层服务的支撑平台,为机器学习提供自定义训练和部署服务                 。

3. 通过Amazon SageMaker搭建基于Stable Diffusion模型的AIGC应用

在我们开始部署Stable Diffusion模型之前                ,先来了解一下整体的实验架构      。整体流程分为两大部分                 ,首先是在Amazon SageMaker Notebook中加载并准备AIGC模型,模型已经在机器学习开源社区Hugging Face中准备好了           ,我们需要把它加载到Notebook中     。然后将模型上传并部署该模型到Endpoint上                 ,创建属于自己的AIGC应用                 。

3.1. 创建Notebook

为了部署和使用我们的AIGC模型      ,我们采用Amazon SageMaker Notebook来编写代码和训练模型            。

首先我们进入到自己的 控制台主页(AWS Management Console)

           ,在最上方的搜索栏中搜索“Amazon SageMaker            ”                 ,点击进入即可     。

然后      ,我们在左侧的目录中选择“笔记本                 ”-“笔记本实例     ”     ,进入到笔记本实例控制页                。在这里                 ,我们点击“创建笔记本实例      ”来创建一个新的实例            。

之后在创建笔记本实例详情页中配置笔记本实例的基本信息。主要配置以下4部分信息:(1)笔记本实例名称;(2)笔记本实例类型;(3)平台标识符(操作系统及Jupyter Notebook版本);(4)实例存储大小(卷大小)                。

如果遇到无“IAM 角色                 ”的问题            ,那就采用默认配置创建一个新角色即可                 。

以上步骤完成之后点击“创建笔记本实例           ”就可以了     ,点击之后                ,需要等待一段时间(约5分钟)才能完成创建。

这里已经为大家准备好了相关的代码            ,打开链接(https://static.us-east-1.prod.workshops.aws/public/73ea3a9f-37c8-4d01-ae4e-07cf6313adac/static/code/notebook-stable-diffusion-ssh-inference.ipynb),下载保存Notebook代码文件           。

下载好代码(ipynb)文件之后                ,我们在笔记本实例页面点击“打开Jupyter      ”                 ,然后上传代码                 。

选择好文件后,点击蓝色的“Upload                 ”按键           ,即可完成上传      。然后我们打开刚刚上传的notebook                 ,可以看到该文件就是一个完整的Stable Diffusion训练代码      ,这里我们的run kernel选择conda_pytorch_38或conda_pytorch_39           ,因为机器学习代码是用pytorch写的           。

在这里                 ,我们首先使用Shift+Enter运行1.1安装及环境配置工作中的两段代码      ,为接下来的实验配置好环境                 。

以下是一些使用Jupyter Notebook的快捷键汇总      。

3.2. 利用Hugging Face克隆模型

Hugging Face是一个人工智能/机器学习的开源社区和平台     ,在Hugging Face上有Stable Diffusion V1.4和Stable Diffusion V2.1两个版本                 ,无论使用V1.4版本还是V2.1版本            ,我们都要把模型下载下来     。

# Clone the Stable Diffusion model from HuggingFace #### Stable Diffusion V1 SD_SPACE="CompVis/" SD_MODEL = "stable-diffusion-v1-4" #### Stable Diffusion V2 # SD_SPACE="stabilityai/" # SD_MODEL = "stable-diffusion-2-1"

之后克隆模型仓库     ,等待模型下载完毕                 。

3.3. 了解模型的超参数

在正式训练模型之前                ,我们来了解一下模型的超参数设置以及它们的含义            。

prompt

(str or List[str]):

引导图像生成的文本提示或文本列表 height

(int, optional, 默认为 V1模型可支持到512像素            ,V2模型可支持到768像素):

生成图像的高度(以像素为单位) width

(int, optional, 默认为 V1模型可支持到512像素,V2模型可支持到768像素):

生成图像的宽度(以像素为单位) num_inference_steps

(int, optional, defaults to 50):

降噪步数     。更多的去噪步骤通常会以较慢的推理为代价获得更高质量的图像 guidance_scale

(float, optional, defaults to 7.5):

较高的指导比例会导致图像与提示密切相关                ,但会牺牲图像质量                。 如果指定                 ,它必须是一个浮点数            。 guidance_scale<=1 被忽略。 negative_prompt

(str or List[str], optional):

不引导图像生成的文本或文本列表                。不使用时忽略,必须与prompt类型一致(不应小于等于1.0) num_images_per_prompt

(int, optional, defaults to 1):

每个提示生成的图像数量

在这其中           ,height           、width和num_images_per_prompt会直接影响到GPU的内存开销                 。height      、width和num_images_per_prompt越大                 ,所需要的GPU开销就越大。

以上是主要要考虑的超参数      ,如果想进行更精细的调整           ,可以参考 pipeline_stable_diffusion.py                 ,539-593行           。

3.4. 配置和微调Stable Diffusion模型

在确定好超参数之后      ,我们就可以配置并使用刚才微调的模型了                 。首先使用stableDiffusionPipeline加载stable-diffusion-v1-4(或stable-diffusion-v2-1)     ,即SD_MODEL=stable-diffusion-v1-4

接下来                 ,通过输入prompts和调整超参数            ,我们就可以用Stable Diffusion模型来生成图像了     ,例如:

# move Model to the GPU torch.cuda.empty_cache() pipe = pipe.to("cuda") # V1 Max-H:512,Max-W:512 # V2 Max-H:768,Max-W:768 print(datetime.datetime.now()) # 提示词                ,一句话或者多句话 prompts =[ "An eagle flying in the water", "A pig kite flying in the sky", ] generated_images = pipe( prompt=prompts, height=512, # 生成图像的高度 width=512, # 生成图像的宽度 num_images_per_prompt=

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
ontheroad怎么读([OnTheRoad]Linux C 的http服务器.)