20分钟搞定 Stable Diffusion 模型在线服务部署

news2024/11/7 7:52:26

文章目录

  • AIGC之 AI 绘画
  • 20分钟搞定 Stable Diffusion 模型在线服务部署
    • 认识 Amazon SageMaker
    • 借助 Amazon SageMaker 进行环境搭建和模型推理
      • 1. 创建 jupyter notebook 运行环境
      • 2. 一键运行所有代码
    • 关键代码分析如下
      • 1. 环境准备,代码模型下载
      • 2. 在Notebook中配置并使用模型
      • 3. 部署模型至Sagemaker 推理终端节点
    • 在 Amazon Cloud9 创建前后端 Web 应用
      • 1. 创建云服务实例,并进行web环境安装
      • 2. 运行启动web服务,输入想要生成的图像参数和提示词,调用推理服务
      • 3. 文本图像生成示例
  • 亚马逊云服务使用体验总结
  • 更多前沿技术实践有待大家一起去探索

AIGC之 AI 绘画

随着人工智能技术的发展与完善,AI Generated Content (AIGC,人工智能自动生成内容) 在内容的创作上为人们的工作和生活带来前所未有的帮助,具体表现在能够帮助人类提高内容生产的效率,丰富内容生产的多样性、提供更加动态且可交互的内容。

AIGC 相关技术可以在创意、表现力、迭代、传播、个性化等方面,充分发挥技术优势,打造新的数字内容生成与交互形态。在这两年AIGC在AI作画、AI 作曲、AI 作诗、AI写作、AI视频生成、 AI语音合成等领域持续大放异彩;尤其是近段时间火遍全网的AI绘画,作为用户的我们只要简单输入几个关键词几秒钟之内一幅画作就能诞生。

0-1
AI 绘画为产业界带来了巨大的生产力提升:文本生成图像(AI 绘画)是根据文本生成图像的的新型生产方式,相比于人类创作者,文本生成图像展现出了创作成本低、速度快且易于批量化生产的优势。

近期各个大厂的AI绘画产品也相继出炉,而对于个人使用者和喜欢尝鲜的开发者而言,最值得体验的两款AI绘画产品莫过于 Midjourney 和 Stable Diffusion;Midjourney 是一款商业AI绘画工具,借助于 Discord 服务平台快速普及,受到众多用户的追捧和喜爱;而 Stable Diffusion 则选择了走开源之路,并且在一些方面的出图潜力和Midjourney相比不相伯仲,受到广大开源爱好者的青睐。

目前,stable-diffusion-webui 成为GitHub上最为火热的一个 Stable Diffusion 部署代码,只要有一个带显卡(显存越大出图越快)的主机或者服务器就能完美运行这个代码,并且可以根据自己的喜好来组合各种有趣的视觉模型。

但是对于更多的个人用户而言,一个带显卡的服务器电脑成为阻碍他们部署个人 Stable Diffusion 的一大瓶颈,我们普通的创业者和开发者,有没有机会去训练和部署我们所看好领域的AIGC模型呢,答案是肯定的,在当下这个云服务时代,人人都有机会成为前沿的技术探索者。 最近受亚马逊云科技邀请在 Amazon SageMaker 平台进行技术实践,之前也一直苦于缺少合适的GPU服务器而难以快速部署属于自己的 Stable Diffusion这一困扰在遇到 Amazon SageMaker 之后烟消云散。

前几天,有上海的老同学告诉我说,亚马逊云科技中国峰会将于2023年6月27-28日上海世博中心举办,问我是否有兴趣一起参加。可惜我的年假不太够了,各位小伙伴们有兴趣、有条件的可以考虑参加哈,机会来之不易:面对纷繁多样的全球数字科技创新,在这个最好的时代,也是最具挑战的时代,多参加一些国际大厂的活动,能够直接感受全面爆发的新技术、新趋势、新机遇带给我们非凡的云科技体验。社牛的小伙伴,还可以把握机会,适当结交圈内大佬,实习工作选择空间可就扩大了哈。

  • 传送门直达:2023年6月27日-28日 亚马逊云科技中国峰会

通过Amazon SageMaker 平台快速完成 AIGC模型推理服务在线web部署,带给我很多启发和惊喜,原来在云端进行AI模型推理部署可以如此简洁,优雅、流畅。在这次AIGC技术实践过程中,我也学到了很多有益的知识和技能, 接下来的博文就会以我的一次AIGC模型(Stable Diffusion 2.0 )web服务部署之旅带大家一起体验如何在云端去落地AI模型服务。

20分钟搞定 Stable Diffusion 模型在线服务部署

认识 Amazon SageMaker

Amazon SageMaker 是一项完全托管的机器学习服务:借助SageMaker的多种功能,数据科学家和开发人员可以快速轻松地构建和训练机器学习模型,然后直接部署至生产环境就绪的托管环境。SageMaker涵盖了ML 的整个工作流,可以标记和准备数据、选择算法、训练模型、调整和优化模型以便部署、预测和执行操作。

经过过去一周多的学习和实践体验,我发现这个平台简直就是为我们这些创业者和个人开发者量身打造的AI服务落地利器。许多AI工程项目,我们只需去构造好自己的训练集和测试集,其余的模型训练、推理、部署,Amazon SageMaker 都能够帮我们轻松完成。

本次博文所分享的 Stable Diffusion 2.0,通过参考官方提供的技术文档,只用了 20分钟左右的时间,我就在Amazon SageMaker 上成功搭建了一套流畅的AI绘画在线服务,接下来,让我们一起揭秘。

借助 Amazon SageMaker 进行环境搭建和模型推理

1. 创建 jupyter notebook 运行环境

  • 点击链接登录至亚马逊云科技管理控制台

在搜索框中搜索 SageMaker ,如下图所示

1-0

这里我们创建一个笔记本编程实例

1-1

我这里选择的配置如下:

1-2

选择角色,其他的默认即可

1-4

大概5分钟左右,实例就创建成功啦

1-5

  • 点击链接,下载代码

上传刚刚下载的代码

1-5

直接打开这个代码

1-6

选择合适的conda环境

1-7

2. 一键运行所有代码

这里我们直接一键运行运行所有代码即可,代码执行过程中会依次完成 Stable Diffusion 模型相关类和函数的代码定义、推理测试,并打包代码和模型,然后部署模型至Sagemaker 推理终端节点 (PS:这里的所有代码运行完毕大概需要5到10分钟左右)

1-8

关键代码分析如下

1. 环境准备,代码模型下载

检查当前 pyTorch 版本

!nvcc --version
!pip list | grep torch

安装 Stable Diffusion 代码运行额外需要的依赖库,这网速飞快

!sudo yum -y install pigz
!pip install -U pip
!pip install -U transformers==4.26.1 diffusers==0.13.1 ftfy accelerate
!pip install -U torch==1.13.1+cu117 -f https://download.pytorch.org/whl/torch_stable.html
!pip install -U sagemaker
!pip list | grep torch

下载代码和模型文件,这里直接下载Hugging Face提供的代码和模型即可

1-10

2. 在Notebook中配置并使用模型

直接调用 函数进行模型加载

import torch
import datetime
from diffusers import StableDiffusionPipeline
# Load stable diffusion 
pipe = StableDiffusionPipeline.from_pretrained(SD_MODEL, torch_dtype=torch.float16)

在 Cuda 上进行模型的推理,这里 Stable Diffusion V2 能够支持生成的最大图像尺寸为 768 * 768

# 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 =[
    "Eiffel tower landing on the Mars",
    "a photograph of an astronaut riding a horse,van Gogh style",
]
generated_images = pipe(
    prompt=prompts,
    height=512,
    width=512,
    num_images_per_prompt=1
).images  # image here is in [PIL format](https://pillow.readthedocs.io/en/stable/)

print(f"Prompts: {prompts}\n")
print(datetime.datetime.now())

for image in generated_images:
    display(image)

友情提示 :如果报错,遇到推理时 GPU 内存不够,则可以尝试以下三种方式进行解决

  1. 试一试生成分辨率小一点的图片
  2. 减少生成图片的数量
  3. 升级机型,选择更强的GPU服务器

3. 部署模型至Sagemaker 推理终端节点

我们这里直接使用 AWS 的 SageMaker Python 开发工具包部署模型刚刚已经验证能够运行成功的模型和打包好的代码。

  • 编写初始化的Sagemaker代码用于部署推理终端节点
import sagemaker
import boto3

'''
# 创建 Session
'''
sess = sagemaker.Session()
# sagemaker session bucket -> used for uploading data, models and logs
# sagemaker will automatically create this bucket if it not exists
sagemaker_session_bucket=None

if sagemaker_session_bucket is None and sess is not None:
    # set to default bucket if a bucket name is not given
    sagemaker_session_bucket = sess.default_bucket()

try:
    role = sagemaker.get_execution_role()
except ValueError:
    iam = boto3.client('iam')
    role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']

sess = sagemaker.Session(default_bucket=sagemaker_session_bucket)

print(f"sagemaker role arn: {role}")
print(f"sagemaker bucket: {sess.default_bucket()}")
print(f"sagemaker session region: {sess.boto_region_name}")
  • 创建 inference.py 脚本,进行模型的加载和推理
%%writefile ./$SD_MODEL/code/inference.py
import base64
import torch
from io import BytesIO
from diffusers import StableDiffusionPipeline

'''
# 加载模型到CUDA
'''
def model_fn(model_dir):
    # Load stable diffusion and move it to the GPU
    pipe = StableDiffusionPipeline.from_pretrained(model_dir, torch_dtype=torch.float16)
    pipe = pipe.to("cuda")

    return pipe

'''
# 推理方法
'''
def predict_fn(data, pipe):

    # 解析参数 get prompt & parameters
    prompt = data.pop("prompt", "")
    # set valid HP for stable diffusion
    height = data.pop("height", 512)
    width = data.pop("width", 512)
    num_inference_steps = data.pop("num_inference_steps", 50)
    guidance_scale = data.pop("guidance_scale", 7.5)
    num_images_per_prompt = data.pop("num_images_per_prompt", 1)
    # 传入参数,调用推理 run generation with parameters
    generated_images = pipe(
        prompt=prompt,
        height=height,
        width=width,
        num_inference_steps=num_inference_steps,
        guidance_scale=guidance_scale,
        num_images_per_prompt=num_images_per_prompt,
    )["images"]

    # create response
    encoded_images = []
    for image in generated_images:
        buffered = BytesIO()
        image.save(buffered, format="JPEG")
        encoded_images.append(base64.b64encode(buffered.getvalue()).decode())

    # create response
    return {"generated_images": encoded_images}

在 Amazon Cloud9 创建前后端 Web 应用

AWS Cloud9 是一种基于云的集成开发环境 (IDE),只需要一个浏览器,即可编写、运行和调试代码。包括一个代码编辑器、调试程序和终端,并且预封装了适用于 JavaScript、Python、PHP 等常见编程语言的基本工具,无需安装文件或配置开发计算机,即可开始新的项目。

  • 这里我直接参考官方提供的手册,跟着操作即可完成 Web 服务的部署

1. 创建云服务实例,并进行web环境安装

这里我试用了 Cloud9 云服务,在查找服务处搜索 Cloud9,并点击进入Cloud9服务面板即可

2-1

点击创建环境

2-2

我这里的设置如下

2-3

其他部分配置保持默认,在页面底部点击橙色的 Create 按钮创建环境。 环境的创建将花费1-2分钟的时间。

2-4

创建成功之后,点击 open 进入服务控制台

2-5

粘贴左侧的代码,复制到控制台bash窗口进行运行,会自动下载和解压代码

cd ~/environment
wget https://static.us-east-1.prod.workshops.aws/public/73ea3a9f-37c8-4d01-ae4e-07cf6313adac/static/code/SampleWebApp.zip
unzip SampleWebApp.zip

#  在 AWS Cloud9 上安装 Flask 和 boto3
pip3 install Flask

pip3 install boto3

2-6

2. 运行启动web服务,输入想要生成的图像参数和提示词,调用推理服务

依赖的环境安装好之后,就可以运行这个服务代码

2-7

服务启动成功之后,访问 127.0.0.1:8080 即可访问本地服务;设定 width 和 Length 参数,以及想要生成的图片描述,然后点击提交

2-8

等待 几秒钟之后,就得到了上面输入的两个 提示词对应生成的图像,看得出来效果还是非常不错的;

  • 经测试发现,即使每次输入的提示词是同一个,模型生成得到的输出也是不固定的
  • 输入的提示词语越精准,生成的图像效果会容易越好
  • 基于亚马逊SageMaker服务平台,如此快速(熟练之后,不到半个小时)就能搭建好一套AI模型的web端在线推理调用,果然好的技术就是第一生产力

2-9

3. 文本图像生成示例

Stable Diffusion 对提示词有着非常高的要求,你输入的提示词越详细,能够让模型理解的越好,那么生成的图像内容就会越贴近预期,生成质量越好;


这里提供3组文本图像生成的示例,方便各位同学参考:

提示词生成图像示例1生成图像示例2
A rabbit is piloting a spaceship5-05-1
Driverless car speeds through the desert$12-----
A small cabin on top of a snowy mountain in the style of Disney, artstation$1-----

亚马逊云服务使用体验总结

通过快速查阅官方教程,20分钟即成功完成 Stable Diffusion 2.0 项目的云端服务部署,使我进一步认识到 AWS(Amazon Web Services)的强大所在:

  1. 可扩展性:AWS允许用户根据业务需要轻松扩展服务器资源,能够帮助客户节省成本、提高效率;
  2. 可靠性:AWS 拥有持续领先的云服务基础设施,具有高度可靠的分布式架构,能够在全球业务范围内提供稳定可靠的服务;
  3. 安全性:AWS 提供各种安全功能和工具,有效帮助用户保护数据和应用程序;
  4. 灵活性:AWS 提供各种可定制的服务和功能,以满足用户的特定需求;
  5. 可信赖:AWS 在业界树立良好的企业形象和服务口碑,早已成为全球数百万企业和个人客户的云转型首选。

AWS 相比其他云服务厂商,还具备以下优点:

  1. 亚马逊云科技为 AWS 提供全球覆盖广泛、服务深入的云平台,已有超过 200 项功能齐全的服务可供使用;
  2. 提供有一套构建于 AWS 之上的按需付费的生产效率应用程序,使得团队用户能够快速、安全、经济高效地检查项目状态、进行内容协作,并实现实时通信;
  3. 提供最广泛、最深入的机器学习服务及配套的云基础设施和广泛验证的算法模型,从而使每位开发人员、数据科学家和专家从业者都能利用机器学习技术高效切入AI服务的落地和部署;
  4. 提供全方位的在线开发工具,用户能够更快、更高效地托管代码以及构建、测试和部署应用程序;

更多前沿技术实践有待大家一起去探索

参考SageMaker平台提供的AI模型云上推理部署实战文档和视频教程一步步进行真实的云上服务部署操作,让我再次认识到AI在各个领域技术突破所带来的强大生产力,而通过借助 亚马逊 SageMaker 平台进行AI模型服务部署大大简化我们普通开发者进行AI模型部署服务的难度,使得对于中小企业和个人开发者而言,AI服务的快速落地也不再是一件难事。

通过使用 亚马逊 SageMaker 服务平台,我们只需要一个浏览器,即可编写、运行和调试各种代码,无需进行复杂的机器适配和环境搭建,能够快速完成AI模型的推理、测试、验证部署工作。

如果你也想亲身感受最新、最热门的亚马逊云科技开发者工具与服务,那么只需点击下方链接,即可跟着亚马逊云科技团队工程师一起对更多有趣的AI技术进行探索与实践,出击吧,AI 追梦人

  • 教程链接,小伙伴们有兴趣的话,也可以参考SageMaker平台提供的AIGC模型部署官方文档和我这里的博客进行尝试,部署自己的AIGC模型

亚马逊云科技中国峰会即将举办,有兴趣的同学可以尽早关注,报名参加,和 Amazon 一起探索前沿科技

9-6

  • 点击报名:2023年6月27日-28日 亚马逊云科技中国峰会
  • Stable Diffusion 模型 Mac 本地部署 教程正在撰写,喜欢 AI 绘画的同学记得关注博主 AI 绘画专栏哈,不定时更新 AI 绘画干货

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

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

相关文章

Next 主题配置

当前用得最多的是next主题,那为什么用得多呢?当然是符合大多数人的审美。我使用的是next(v7.8.0),下载地址:theme-next/hexo-theme-next 1 基本设置 1.1 主题设置 打开博客根目录 Blog 文件夹,右键 Git Bash&#xf…

制作投票链接怎么做微信上投票连接怎么样做投票链接

关于微信投票,我们现在用的最多的就是小程序投票,今天的网络投票,在这里会教大家如何用“活动星投票”小程序来进行投票。 我们现在要以“小手绘盛夏”为主题进行一次投票活动,我们可以在在微信小程序搜索,“活动星投票…

RuoYi-Cloud本地运行

启动nacos bin目录打开cmd,输入startup.cmd -m standalone,单机模式启动 http://localhost:8848/nacos/ 用户名密码都是nacos 启动redis 在 D:\Redis-x64-3.2.100 目录下 按shift鼠标右键,打开powerShell,输入 .\redis-server…

2023最新版本Activiti7系列-流程变量

流程变量 流程变量可以用将数据添加到流程的运行时状态中,或者更具体地说,变量作用域中。改变实体的各种API可以用来更新这些附加的变量。一般来说,一个变量由一个名称和一个值组成。名称用于在整个流程中识别变量。例如,如果一个…

在 Android 上恢复已删除的通话记录 - 安卓手机通话记录恢复技巧

有时,Android 用户会在内存空间用完时删除他们的通话记录。他们认为那些电话通话记录将不再需要了,但突然出于某些原因他们需要恢复那些已删除的通话记录。 恢复已删除的照片、视频、音乐、短信和通话记录等数据在以前是一件很难的事情。但是现在如果你…

# 蓝牙音频相关知识

蓝牙音频相关知识 文章目录 蓝牙音频相关知识1 音频源2 蓝牙音频编解码器3 一些标准4 蓝牙音频其他相关知识4.1 蓝牙版本4.2 ANC(主动降噪)4.3 音响相关参数4.4 音质评价4.5 HI-Fi声音特点4.6 耳机线材4.7 耳机分类4.8 IP防尘防水等级4.9 噪音与量化噪音…

如何用Python语言调取百度翻译的API

诸神缄默不语-个人CSDN博文目录 本文介绍如何用Python语言调用百度翻译的API服务。 理论上类似的写法也可以应用于其他语言。 http://api.fanyi.baidu.com/manage/developer可以注册开发者,或者APP ID和秘钥;然后还可以进行开发者认证,获得…

ajax-1--XML、AJAX简介、express框架使用、AJAX操作的基本步骤

一、XML(可扩展标记语言) XML与HTML类似,不同的是HTML中都是预定义标签,而XML中没有预定义标签,全都是自定义标签,用来表示一些数据。 比如有一个学生数据:name“孙悟空”;age18;gender“男”&a…

【Python实战】Python采集大学教务系统成绩单

前言 在现代教育中,教务系统已经成为了学校管理和教学工作的重要组成部分。然而,由于各种原因,教务系统的成绩单并不能下载的,这给我们带来了很多不必要的麻烦和困扰。因此,采集教务系统成绩单的项目具有非常重要的意义…

【轻量化网络系列(6)】EfficientNetV1论文超详细解读(翻译 +学习笔记+代码实现)

前言 EfficientNetV1是Google在2019年发布的文章,这篇论文最主要的创新点是Model Scaling。论文提出了compound scaling,混合缩放,把网络缩放的三种方式:深度、宽度、分辨率,组合起来按照一定规则缩放,从…

使用FPGA驱动GS2972(3G-SDI模式)外同步(HSYNC VSYNC DE)或内(BT1120)同步输出彩条调试

GS2972视频输出调试 一、外同步模式1.1 GS2972的硬件初始化1.2 GS2972的驱动时序1.3 GS2972的驱动RTL代码1.4 GS2972输出彩条1.5 GS2972驱动易出bug二、数据内嵌同步模式2.1 GS2972的硬件初始化2.2 GS2972的驱动时序2.3 GS2972的驱动RTL代码2.4 GS2972输出彩条2.5 GS2972驱动易…

IIC总线简介及IIC的通信过程与时序

1.IIC总线简介 IIC总线: IIC总线是Philips公司在八十年代初推出的一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线,一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟…

跳槽一次涨8k,5年跳了3次...

最近有人说,现在软件测试岗位初始工资太低了,有些刚刚入行的测试朋友说自己工资连5位数都没有…干了好几年也没怎么涨。 看看别人动辄月薪1-2万,其实我想说也没那么难。 说下如何高效地拿到3万的工资,总体来说,就靠跳…

墨天轮关系型分布式数据库榜单解读

分布式关系型数据库概述 作为数据库演进方向之一,分布式能力受到更多用户的关注。从技术架构演进来看,数据库正走过了从单机式、集中式到分布式的发展过程,目前是多种架构并存的阶段。分布式架构以其更好的存储与计算扩展能力,受…

四六位、不定长、计算题等验证码,一款工具全部搞定,简单方便还开箱即用,精度高达96%!!

四六位、不定长、计算题等验证码,第三方平台准确率低,自己不会神经网络训练,嫌麻烦,一款工具全部搞定,开箱即用!! 本文秉承着开箱即用的原则,真正做到一款工具识别秒杀所有单行文本验证码,这里的单行指的就是某张4位6位或者计算题或者文字的验证码,我是使用了4位+6位…

Vue2数据代理的理解

理解 最近在复习Vue2,对于数据代理有些模糊。查阅了一些资料。 这是官方解释https://v2.cn.vuejs.org/v2/api/#data数据代理:通过代理对象 操作(读/写)目标对象中的属性 这里出现了两个对象,一个叫代理对象&#xf…

VMware虚拟机安装Windows Server 2003

哈喽,各位小伙伴大家好,win server2003算是拖了比较久了,一直没发布,今天完成server2003的安装后server系列的安装教程就告一段落了。马上暑假了,想必新生开学之后,很多计算机网络专业的同学们要开始接触到…

全志V3S嵌入式驱动开发(sd卡驱动)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 之前开发过程中,整个linux的启动都是基于sd卡进行的。此外,我们有这么几点发现,首先,v3s本身是识别…

Python3+Selenium2完整的自动化测试实现之旅(五):自动化测试框架、Python面向对象以及POM设计模型简介

目录 前言 1 自动化测试框架概述 2 自动化测试框架需要的环境 3 自动化测试框架设计思想:Python面向对象 4 自动化测试框架设计思想:POM(Page Object Model)页面对象模型 【自动化测试工程师学习路线】 结语 前言 之前…

【AI数学】相机成像之外参数

在一个多视点计算机视觉系统里,系统输入除了多个视角的图像外,一般还需要输入对应视角下相机的内外参数。其中,相机内参数决定了图像坐标系和相机三维坐标系的映射关系,而相机外参数则决定了相机三维坐标系和世界坐标系的对应关系…