快速实现工程化部署,亚马逊云科技为AIGC产品化提供可靠基础

news2024/9/22 17:20:23

本文将以Stable Diffusion Quick Kit在亚马逊云科技Amazon SageMaker上的部署来介绍Stable Diffusion模型基础知识,HuggingFace Diffusers接口,以及如何使用Quick Kit在SageMaker Endpoint上快速部署推理服务。

Stable Diffusion模型

2022年由StabilityAI、Runway、慕尼黑大学CompVis团队联合发布了Stable Diffusion模型,模型的代码和权重已经开源,目前主流的版本为v1.5(runwayml/stable-diffusion-v1-5)、v2、v2.1(stabilityai/stable-diffusion-2,stabilityai/stable-diffusion-2-1)。Stable Diffusion模型支持通过使用提示词来产生新的图像,描述要包含或省略的元素,以及重新绘制现有的图像,其中包含提示词中描述的新元素,该模型还允许通过提示词在现有的图中进行内补绘制和外补绘制来部分更改。

Stable Diffusion是一个基于Latent Diffusion Models(潜在扩散模型,LDMs)的文图生成(text-to-image)模型。Stable Diffusion由3个部分组成:变分自编码器(Variational Auto Encoder,VAE)、U-Net和一个文本编码器。Stable Diffusion在LAION-5B的一个子集上训练了一个Latent Diffusion Models,该模型专门用于文图生成。模型通过在一个潜在表示空间中迭代“去噪”数据来生成图像,然后将表示结果解码为完整的图像,能够在GPU上不超过10秒时间完成图片生成,大大降低了落地门槛,也带来了文图生成领域的大火。

 

Stable Diffusion模型

常见格式和存储方式

目前社区里的各类Stable Diffusion衍生模型有不同的文件格式和存储方式,这些不同的文件格式和存储方式需要用户使用不同的代码来进行加载、推理。Stable Diffusion模型的主流文件格式主要有2种,分别是ckpt和safetensors;存储方式上可以区分为单个文件和diffusers结构。

Stable Diffusion模型常见推理方式

Stable Diffusion模型常见的使用方式:

  1. 原生pytorch代码,CompVis在Stable Diffusion stable-diffusion-v1-4提供了txt2img.py和img2img.py,是通过pytorch进行模型加载完成图片生成的。
  2. GUI,包括Stable-Diffusion-WebUI、InvokAI、ComfyUI通常这些工具都是UI和推理服务一起工作,在本地显卡进行部署。
  3. HuggingFace Diffusers接口,通过StableDiffusionPipeline,StableDiffusionImg2ImgPipeline可以快速加载第三方模型或者本地模型,Stable Diffusion Quick Kit正是采用Diffusers方式进行调用。

在推理过程中可以选择对应的采样器(Sampler,Diffusers中称为Scheduler),常见的采样器有Euler Discrete、Euler Ancestral Discrete、DDIM、KDPM2 Discrete、LMSD等。

使用Quick Kit在SageMaker上

快速部署Stable Diffusion推理服务

由亚马逊云架构师团队专为在云上部署Stable Diffusion模型的推理、训练而打造的工程化代码,通过sagemaker-stablediffusion-quick-kit可以快速的将diffusers目录结构的模型部署到SageMaker中,并生成Http协议的API接口和前后端分离的界面。以便于亚马逊云科技用户可以快速将Stable Diffusion运用到业务和产品中。

结论

综上所述,Stable Diffusion的推理是一个相对比较耗时的服务,在面向用户端提供服务时,必须要考虑到多并发请求下服务的可用性和扩展性,然而相对于普通的应用服务,AI推理需要用到成本比较高的GPU资源,保障服务可靠前提下如何有效控制成本也是亚马逊云科技需要考虑的重要因素。

SageMaker的异步推理可以轻松地达成以上目标,其内部队列可以将前端请求和后端推理进行解耦合,在流量高峰时可以实现缓冲,保障服务的可用性,通过SageMaker异步推理的AutoScaling,可以自动的扩展推理节点,在流量低峰期实现资源回收,节省成本。相对于v100专用显卡和3090等民用显卡,利用SageMaker提供的ml.g4dn和ml.g5等更具性价比的机型实现推理,在保障性能的前提下可以进一步控制资源成本。SageMaker和Stable Diffusion Quick Kit的结合可以帮助快速完成扩散模型在亚马逊云上的工程化部署,为用户的AIGC产品化上提供了坚实可靠的基础。

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

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

相关文章

自己拍摄的视频剪辑时如何消音?

由于录制环境的影响,有时制作出来的视频原始声音可能无法达到令人满意的效果,可能有噪声存在。这个时候,就应该先消除视频原始声音,然后后期再去给视频添加配音。有哪些适合给自己拍摄的视频调为静音的方法,来看看有哪…

详解 Windows 10 安装 CUDA 和 CUDNN

目录 查看本机 Window 10 系统已经安装 NIVIDIA 的驱动版本说在前面查看驱动版本 CUDA下载直接下载最新的 CUDA下载历史版本的 CUDA 安装测试 CUDNN下载 下载最新版本的 cuDNN下载历史版本的 cuDNN, 如: cuDNN 12.0安装 关于添加系统环境变量的问题 ⭐️⭐️说在前面!!! 建议 先…

平均年薪20W,自动化测试工程师这么吃香?

自动化测试工程师,平均年薪20w绝对不是空穴来凤,甚至我还说少了,加上年终奖和奖金等等年薪可能还不止20w这个水平,让我们看看下方截图,【来自于职友集】 本篇文章将由以下4个部分来展开: 1. 什么是自动化测…

PaddleClas初体验

PaddleClas初体验 该包是由百度PaddlePaddle组织下开源的项目,主要用于图像分类,图像搜索等相关任务。 项目地址: https://github.com/PaddlePaddle/PaddleClashttps://pypi.org/project/paddleclas 主要构件: PP-ShiTu&…

企业的数据信息值钱吗?如何提升数据信息的价值?

越来越多的企业也将数据视为转型发展、重塑竞争优势和提升组织治理能力的重要战略资产,并对这一重要资产进行系统性、体系化的管理,以便充分挖掘数据的战略、战术价值。鉴于此,对数据资产进行体全面盘点、构建企业级的数据资产目录成为了数据…

aigc分享

AIGC技术分享 AIGC概述 AIGC的概念、应用场景和发展历程 机器学习基础 机器学习的基本概念、分类和常用算法,如线性回归、决策树、支持向量机、神经网络等。 深度学习基础 深度学习的基本概念、分类和常用算法,如卷积神经网络、循环神经网络、自编…

面试专题:java多线程(2)-- 线程池

1.为什么要用线程池? 线程池提供了一种限制和管理资源(包括执行一个任务)。 每个线程池还维护一些基本统计信息,例如已完成任务的数量。 这里借用《Java并发编程的艺术》提到的来说一下使用线程池的好处: 降低资源消…

【嵌入式烧录/刷写文件】-1.6-剪切/保留Motorola S-record(S19/SREC/mot/SX)文件中指定地址范围内的数据

案例背景: 有如下一段S19文件,保留地址范围0x9140-0x91BF内的数据,删除地址范围0x9140-0x91BF外的数据。 S0110000486578766965772056312E30352EA6 S123910058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775B S12391207…

如何判断一个点是否在凸多边形内 - golang

判断一个点是否在凸多边形内的方法很多,此处仅给出使用向量叉积法判断点是否在凸多边形内的方法。 以下图为例说明问题: 原理: 1. 将多边形的第 i 条边的第一个顶点指向点 P 得到向量 v1,然后将从第一个顶点指向第二个顶点得到向…

Java 多线程实现1到1千万的求和操作

一、使用多线程的背景 提高程序速度和响应性:许多应用程序需要同时执行多个任务,例如网络服务器,图形图像处理,模拟程序等。使用多线程可以让程序同时执行多个部分,从而显著提高程序的执行速度、响应速度。 充分利用 …

CompletableFuture 线程编排

一、前言 Java8 新特性之一&#xff0c;其实现了Future<T>, CompletionStage<T>两接口&#xff0c;后者是对前者的一个扩展&#xff0c;增加了异步回调、流式处理、多个Future组合处理的能力&#xff0c;使 Java 在处理多任务的协同工作时更加顺畅便利。 二、Compl…

POST请求与GET请求的区别

POST请求 &#xff08;提交数据&#xff0c;一般用于将数据发给服务器&#xff0c;用于修改和写入数据&#xff09; 1、传参方式&#xff1a;相对安全&#xff0c;入参在request body中&#xff0c;可通过各种抓包工具获取 2、缓存&#xff1a;不会被缓存&#xff0c;保存在服…

基于Qt的嵌入式GUI开发指南(一)

Qt 是一个跨平台的应用程序开发框架&#xff0c;用于创建高性能、可扩展和用户友好的图形用户界面&#xff08;GUI&#xff09;应用程序。它提供了丰富的工具、库和功能&#xff0c;使开发者能够轻松地构建各种类型的应用程序&#xff0c;包括桌面应用程序、移动应用程序和嵌入…

Bellhop 从入门到上手

文章目录 前言一、Bellhop 简介二、Bellhop 结构1、输入文件2、输出文件 三、Bellhop 环境文件1、OPTIONS12、OPTIONS23、OPTIONS34、OPTIONS45、其他参数 四、BELLHOP&#xff08;Matlab_GUI&#xff09;实例1、bellhop 工具箱自取2、解压缩工具箱3、设置路径4、添加并包含子文…

高频面试八股文原理篇(六) mysql数据库的左连接,右连接,内链接有何区别

目录 内连接与外连接的区别 在sql中l外连接包括左连接&#xff08;left join &#xff09;和右连接&#xff08;right join&#xff09;&#xff0c;全外连接&#xff08;full join&#xff09;&#xff0c;内连接(inner join) 内连接与外连接的区别 自连接 一个表与它自身进…

Redis(一)常见命令使用

常见文件名Redis-cli使用命令1、启动Redis2、连接Redis3、停止Redis4、发送命令1、redis-cli带参数运行&#xff0c;如&#xff1a;2、redis-cli不带参数运行&#xff0c;如&#xff1a; 5、测试连通性 key操作命令获取所有键查询键是否存在删除键查询键类型移动键查询key的生命…

第二十章行为性模式—迭代器模式

文章目录 迭代器模式解决的问题结构实例存在的问题适用场景 JDK 源码 - Iterator 行为型模式用于描述程序在运行时复杂的流程控制&#xff0c;即描述多个类或对象之间怎样相互协作共同完成单个对象无法单独完成的任务&#xff0c;它涉及算法与对象间职责的分配。行为型模式分为…

“30分钟”带你走进线性回归的世界,轻松学习互联网营销推荐算法!

前言 本章主要介绍用于推荐系统的算法-线性回归算法的推导介绍&#xff0c;文章思路如下&#xff1a;由机器学习介绍&#xff0c;到监督学习&#xff0c;并重点介绍监督学习中回归问题里面的线性回归问题及推导。 可能需要大家具备一定的统计学、高数相关知识。 一、由机器学…

k8s入门(一)之pod创建、label使用、污点、亲和性、RS

一、创建一个pod [rootmaster01 ~]# kubectl create ns prod [rootmaster01 ~]# cat pod.yaml apiVersion: v1 kind: Pod metadata:name: pod-demonamespace: prodlabels:app: myapp spec:containers:- name: test1image: busybox:latestcommand:- "/bin/sh"- "…