20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用

Posted 白水baishui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用相关的知识,希望对你有一定的参考价值。

真火!

作为最近一段时间人工智能领域内的顶流之一,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 \\mathbbR^H\\times W\\times 3 xRH×W×3,我们先利用一个编码器 ε \\varepsilon ε来将图像从原图编码到潜在表示空间(即提取图像的特征) z = ε ( x ) z=\\varepsilon(x) z=ε(x),其中 z ∈ R h × w × c z\\in \\mathbbR^h\\times w\\times c zRh×w×c。然后,用解码器从潜在表示空间重建图片 x ~ = D ( z ) = D ( ε ( x ) ) \\widetildex=\\mathcalD(z)=\\mathcalD(\\varepsilon(x)) x =D(z)=D(ε(x))。训练的目标是使 x = x ~ x=\\widetildex 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 ( 0 , 1 ) , t = [ ∣ ∣ ϵ − ϵ θ ( x t , t ) ∣ ∣ 2 2 ] L_DM=\\mathbbE_x,\\epsilon\\sim\\mathcalN(0,1),t=[||\\epsilon-\\epsilon_\\theta(x_t,t)||_2^2] LDM=Ex,ϵN(0,1),t=[∣∣ϵϵθ(xt,t)22]这里默认噪声的分布是高斯分布 N ( 0 , 1 ) \\mathcalN(0,1) N(0,1),这是因为高斯分布可以应用重参数化技巧简化计算;此处的 x x x指的是原图。

而在潜在扩散模型中(LDM),引入了预训练的感知压缩模型,它包括一个编码器 ε \\varepsilon ε 和一个解码器 D \\mathcalD D。这样在训练时就可以利用编码器得到 z t = ε ( x t ) z_t=\\varepsilon(x_t) zt=ε(xt),从而让模型在潜在表示空间中学习,相应的目标函数可以写成如下形式: L L D M = E ε ( x ) , ϵ ∼ N ( 0 , 1 ) , t = [ ∣ ∣ ϵ − ϵ θ ( z t , t ) ∣ ∣ 2 2 ] L_LDM=\\mathbbE_\\varepsilon(x),\\epsilon\\sim\\mathcalN(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\\mathbbR^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(\\fracQK^\\top\\sqrtd)\\cdot V Attention(Q,K,V)=softmax(d QK)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 \\mathbbR^N\\times d_\\epsilon^i φ

SageMaker实操分享

SageMaker功能模块简介

技术图片

1Ground Truth

Ground Truth是一个给数据打标签的平台。可以选择纯人工打标签,如果工作量特别大,也可以选择人工和智能机器协作打标签。

技术图片

例如在Ground Truth平台上操作,框选出猫眼睛,会自动生成一个json文件如图中右上角,json描述了眼睛在图中的左上角、右下角坐标。

生成的json文件(即标签信息)可以作为对象检测训练的输入数据。

标记任务

创建一个打标签任务,主要包含待打标签图片所在路径、生成的标签信息文件json所在路径。

技术图片

输入任务名称、输出路径后,点击“创建清单文件==>输入图片路径==>创建==>use this manifest

技术图片

IAM角色下拉框==>create a new role
技术图片

这里以对象识别模型为例,任务类型选“边界框”

下一步把标签任务分配给相关工作人员:

技术图片

公有:aws庞大的人工团队,需要付费。

私有:贵公司自己的员工。

供应商:第三方专业打标签的供应商,需要付费。

选择“私有”需要先创建一个团队(后面讲)

红框“启用”代表人和机器共同劳作,系统自动将图片分发给人和机器,机器一开始并不知道怎么打标签,所以打出来的标签往往是错误的,

这时系统会自动将机器打完标签的图片又回传给人工复核,机器通过学习复核结果提升技能。

这个过程是来来回回、反反复复的直到机器掌握足够的水平。接下来机器开始自动打标签,对于一些机器不能确定的图片仍然会交由人工处理。

待识别的图片必须大于1250张才可启用机器标签,建议5000张图片以上,才选择启用。

技术图片

可以给图片添加多个标签,比如需要识别图片中的猫眼睛,猫耳朵等。

这里假如只希望识别眼睛,所以只添加一个eyes标签。
技术图片

提交后,看到任务状态为“正在进行”。这时贵公司工作人员可通过邮件提供的地址登录Ground Truth平台开始打标签工作。

任务结束后,生成一份output.manifest文件,即标签信息总文件。后续训练模型时作为输入文件(train通道)。

技术图片

类似的,选择另外一批图片,建立另外一个Ground Truth任务生成另外一个类似的manifest文件,并做为object detection模型训练时的另外一个输入文件(validation通道)

(训练模型通常需要training data和validation data)

标签任务还生成一些其他中间文件,详情参考

https://docs.aws.amazon.com/sagemaker/latest/dg/sms-data-output.html

标记随需人力

技术图片

1,邀请新工作人员 输入员工通过邮件,员工会收到邮件告知登录Ground Truth平台的URL、用户名、密码。

2,创建私人团队 创建团队后刷新一下页面,再向团队添加之前创建的工作人员。

2 笔记本
技术图片

创建一台EC2笔记本,jupyter已经搭建安装好各种语言及机器学习框架供科学家直接使用。

熟练的科学家可以在这个平台以编写代码调用sagemaker API的形式完成机器学习的整个流程,从一开始的构建自己的算法,验证算法,训练模型,调优,等等直到最后部署模型。

一个参考例子:

https://github.com/awslabs/amazon-sagemaker-examples/blob/master/ground_truth_labeling_jobs/ground_truth_object_detection_tutorial/object_detection_tutorial.ipynb

非专业人员,建议使用sagemaker图形界面来完成这些操作。

3 训练

算法

科学家在这创建自己的算法,后续通过“训练任务”生成算法模型。

训练任务

技术图片

训练任务将算法训练出一个实用的模型。

算法源:sagemaker内置了众多著名、经典成熟的算法,包括对象检测(object detection),当然也可以选择科学家自己设计的算法。

技术图片

输入模型:Pipe

资源配置:训练时建议选择P系列EC2,生产部署建议C系列。

运行时间:根据实际情况设置训练任务时长。

技术图片

超参:非专业人员建议使用默认值,科学家可自定义。

超参详情

https://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/object-detection-api-config.html

之前Ground Truth生成的manifest文件内容如下:

技术图片

source-ref栏位是图片路径

lzd-eye是自定义的标签名
技术图片

输入数据配置:

1,默认只有一个“train”通道接收training data。

按上图填好manifest路径及source-ref、lzd-eye(根据实际标签名填写)等信息

技术图片

2,添加validation通道接收validation data,除通道名称为validation外,其他信息与train通道类似。

技术图片

输出数据配置:即输出模型路径

最后创建训练任务并生成模型。

超级参数优化作业

与“训练任务”类似,科学家也可以在这里从零开始训练模型或在现有的模型基础上优化训练,这里可以更加自由地设定超参范围,让sagemaker通过并发训练任务等方式在指定范围内找到最佳超参。

4 推理

模型训练好之后,部署在AWS上,部署分为实时和批量。

实时:模型实时在线,用户随时可以调sagemaker API对图片进行实时的对象检测,并实时返回结果。

批量:模型按需启动,对用户提供的批量图片进行对象检测,并返回批量结果。
技术图片

training job==>create model

技术图片

输入model名称,其他保持默认。

技术图片

点击model名称

技术图片

这里才批量推断为例:create batch inference job

技术图片

按实际情况选择实例类型及数量。

技术图片

按实际情况填写待检测图片所在路径及检测结果输出路径。

batch job结束后在输出路径下为每个图片生成一个json文件,描述图片中检测到多少个物体,每个物体所在坐标及类别。

详情请参考:

https://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/object-detection-in-formats.html

以上是关于20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用的主要内容,如果未能解决你的问题,请参考以下文章

服务模型时出现 Amazon Sagemaker ModelError

AWS DeepRacer 参数调优 Amazon SageMaker 和 Amazon RoboMaker

10+位机器学习大神测评 Amazon SageMaker 全流程实战

Amazon SageMaker测评分享,效果超出预期

创建 SageMaker 模型时出现 ValidationError

开箱-10分钟学会使用 Amazon Aurora Serverless构建无服务器应用程序