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

简介: 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用(上)

前言


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


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


那么我能不能自己实现一个以Stable Diffusion模型为基础的AIGC作画应用呢?答案是可以的!最近我恰好受邀参与了亚马逊云科技【云上探索实验室】活动,利用Amazon的SageMaker平台搭建了自己的 AIGC 应用,整个过程只用了不到20分钟。


33.png

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

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


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

34.jpeg

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


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


目录


1. 什么是Stable Diffusion?

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

1.2. Stable Diffusion原理解析

2. 什么是Amazon SageMaker?

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

3.1. 创建Notebook

3.2. 利用Hugging Face克隆模型

3.3. 了解模型的超参数

3.4. 配置和微调Stable Diffusion模型

3.5. 部署和使用训练好的模型

3.6. 清理资源

3.7. 整体流程的视频介绍

4. 对Stable Diffusion模型的评估

4.1. CPU和GPU对生成速度的影响

4.2. 超参数对模型性能的影响

5. 总结

5.1. 基于Amazon SageMaker搭建的AIGC应用的功能评价

5.2. 对开发过程有帮助的产品文档汇总


正文


1. 什么是Stable Diffusion?


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


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

1.jpeg


1.2. Stable Diffusion原理解析


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

2.png

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


(1) 图像感知压缩(Perceptual Image Compression)

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


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

具体来说,图像感知压缩模型的训练过程如下:给定图像xRH×W×3,我们先利用一个编码器ε 来将图像从原图编码到潜在表示空间(即提取图像的特征)z = ε ( x ) 其中zRh×w×c。然后,用解码器从潜在表示空间重建图片x ~ = D ( z ) = D ( ε ( x ) ) 训练的目标是使x = x ~


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

4.png

扩散模型(DM)从本质上来说,是一个基于马尔科夫过程的去噪器。其反向去噪过程的目标是根据输入的图像xt去预测一个对应去噪后的图像x t + 1,即  x t + 1 = ϵ t ( x t , t ) ,   t = 1 , . . . , T 。相应的目标函数可以写成如下形式:


5.png

这里默认噪声的分布是高斯分布N ( 0 , 1 ) ,这是因为高斯分布可以应用重参数化技巧简化计算;此处的x 指的是原图。

而在潜在扩散模型中(LDM),引入了预训练的感知压缩模型,它包括一个编码器 ε \varepsilonε 和一个解码器 D。这样在训练时就可以利用编码器得到z t = ε ( x t ) ,从而让模型在潜在表示空间中学习,相应的目标函数可以写成如下形式:


6.png

(3) 条件机制(Conditioning Mechanisms)

条件机制,指的是通过输入某些参数来控制图像的生成结果。这主要是通过拓展得到一个条件时序去噪自编码器(Conditional Denoising Autoencoder,CDA)ϵ θ ( z t , t , y ) 来实现的,这样一来我们就可通过输入参数y yy 来控制图像生成的过程。


具体来说,论文通过在UNet主干网络上增加cross-attention机制来实现CDA,选用UNet网络是因为实践中Diffusion在UNet网络上效果最好。为了能够从多个不同的模态预处理参数y yy,论文引入了一个领域专用编码器(Domain Specific Encoder) τ θ ,它将y 映射为一个中间表示 τ θ ( y ) ∈ R M × d r 这样我们就可以很方便的将y yy设置为各种模态的条件(文本、类别等等)。最终模型就可以通过一个cross-attention层映射将控制信息融入到UNet的中间层,cross-attention层的实现如下:

7.png

其中8.png是UNet的一个中间表征9.png分别是三个权重矩阵。此时,带有条件机制的隐扩散模型的目标函数可以写成如下形式:

10.png


2. 什么是Amazon SageMaker?


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

3.png


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


image.png

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


3.1. 创建Notebook


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


首先我们进入到自己的 控制台主页(AWS Management Console),在最上方的搜索栏中搜索“Amazon SageMaker”,点击进入即可。

12.png

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

13.png

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

14.png

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

15.png

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

16.png

这里已经为大家准备好了相关的代码,打开链接(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”,然后上传代码。

17.png

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


18.png

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

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

19.png


相关文章
|
1月前
|
机器学习/深度学习 人工智能 缓存
基于AIGC的自动化内容生成与应用
基于AIGC的自动化内容生成与应用
64 3
|
1月前
|
机器学习/深度学习 自然语言处理 Go
Python与Go在AIGC领域的应用:比较与分析
Python与Go在AIGC领域的应用:比较与分析
40 0
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
|
3月前
|
机器学习/深度学习 数据采集 人工智能
作为AIGC技术的一种应用-bard
8月更文挑战第22天
63 15
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
|
3月前
|
机器学习/深度学习 设计模式 人工智能
面向对象方法在AIGC和大数据集成项目中的应用
【8月更文第12天】随着人工智能生成内容(AIGC)和大数据技术的快速发展,企业面临着前所未有的挑战和机遇。AIGC技术能够自动产生高质量的内容,而大数据技术则能提供海量数据的支持,两者的结合为企业提供了强大的竞争优势。然而,要充分利用这些技术,就需要构建一个既能处理大规模数据又能高效集成机器学习模型的集成框架。面向对象编程(OOP)以其封装性、继承性和多态性等特点,在构建这样的复杂系统中扮演着至关重要的角色。
66 3
|
3月前
|
机器学习/深度学习 自然语言处理 监控
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
AIGC在创意产业的应用与影响
【7月更文第27天】近年来,人工智能生成内容(AI-Generated Content, AIGC)的发展为创意产业带来了前所未有的机遇。从艺术创作到音乐制作,再到游戏设计和广告营销,AIGC正在以惊人的速度改变着这些领域的面貌。本文将探讨AIGC在创意产业中的应用,并通过具体的代码示例来展示如何利用Python等工具创建一些基本的生成模型。
103 6
|
4月前
|
存储 Serverless Linux
函数计算产品使用问题之如何设置两个SD AIGC应用搭载同一个NAS
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
设计模式 数据采集 人工智能
面向对象设计在AIGC项目中的应用
【8月更文第12天】面向对象编程(Object-Oriented Programming, OOP)是一种软件开发方法,它通过将数据和行为封装到一起形成对象来组织代码。OOP提供了几个核心概念,包括封装、继承和多态性,这些概念有助于构建灵活、可维护和可扩展的软件系统。在人工智能生成内容(Artificial Intelligence Generated Content, AIGC)项目中,OOP的设计原则尤其重要,因为这类项目往往涉及复杂的算法和大量的数据处理。
45 0