赞
踩
在活动中,参与者只需完成各个环节的任务,便有机会参与AIGC创作抽奖、优秀博文的评选,并获取相应的积分,进而参加最终的积分排行榜,赢取丰厚的活动礼品。
活动地址: https://marketing.csdn.net/p/b18dedb1166a0d94583db1877e49b039
爆火的Ai生图你体验到了吗?没有绘画能力、摄影能力也能随心所欲的创作出自己的作品!
但是很多人因为高昂的硬件和繁琐的安装对它望而却步。
现在腾讯云推出的高性能应用服务 HAI (Hyper Application Inventor)是一款专门为AI和科学计算设计的GPU应用服务产品。来看看如何利用HAI快速部署一个Stable Diffusion WebUI,实现AI绘画自由。以下是由Stable Diffusion WebUI 生成的游戏素材猴子
图片做了拼图小游戏
在体验和试用腾讯云高性能应用服务HAI之前,我们首先先认识一下高性能应用服务 HAI 和 Stable Diffusion(简称 SD)
腾讯云的高性能应用服务 HAI (Hyper Application Inventor)是一款专门为AI和科学计算设计的GPU应用服务产品。它提供了即插即用的澎湃算力和常见环境,旨在帮助中小企业和开发者快速部署LLM、AI作画、数据科学等高性能应用。
以下是HAI的主要特点:
智能选型:根据用户的应用需求,智能匹配并推选出最适合的GPU算力资源,确保在数据科学、LLM、AI作画等高性能应用中获得最佳性价比。
一键部署:用户可以在几分钟内自动构建如StableDiffusion、ChatGLM等热门模型的应用环境。
可视化界面:为开发者提供了一个直观的图形界面,大大降低了AI研究的调试复杂度。支持jupyterlab、webui等多种算力连接方式,使AI研究和创新变得更加轻松。
即开即用:无需复杂的配置,用户即可享受即开即用的GPU云服务体验。
应用场景丰富:除了上述的应用外,HAI还可以广泛应用于数据科学、机器学习等领域,为用户提供了一片无限可能的高性能应用领域。
Stable Diffusion是一个文本到图像的潜在扩散模型,它使用潜在空间采样来模拟图像生成的扩散过程。这种模型基于深度学习技术,经过训练可以逐步对随机高斯噪声进行去噪以获得感兴趣的样本,例如生成图像。
接下来通过这篇文章带大家一起了解这款来自 腾讯云的 GPU应用服务。除此之外,还可以通过博主的这篇文章了解CSDN 的 AI 创作助手,不一样的创作体验。
操作步骤大概以下几步:
点击 新建 选择 AI模型(Stable Diffusion),参照下图进行配置即可
等待创建完成 (预计等待3-8分钟,等待时间不计费)
创建完成,查看状态为
运行中
公网IP 后续会使用到进入 StableDiffusionWebUI
使用 高性能应用服务HAI 部署的 StableDiffusionWebUI 配置简体中文语言包
运行中
公网IP 后续会使用到启动 高性能应用服务HAI 配置的 StableDiffusionWebUI 进行文生图模型推理
(1) 进入 StableDiffusionWebUI
(2)此扩展可以在 **Extension** 选项卡里面通过加载官方插件列表直接安装
点击 Extension 选项卡,选择 Avaliable 子选项卡
取消勾选 localization ,再把其他勾上,然后点击 Load form,如下图,加载插件时,请耐心等待
(3)在输入框中查找插件关键字: zh_CN 点击install
进行安装
(4)确认插件安装完成后,重启服务(Reload UI)
(5)重启后,选择 Settings 中 User Interface 选项,下拉选择语言 zh_CN ,点击 Apply settings 保存设置 ,并 Reload UI 重启服务。
这里我虽然安装成功了,但重启服务 好像中文插件没起效果,可以忽略不计
使用 高性能应用服务HAI 部署的 StableDiffusionWebUI 快速进行AI绘画
注意:提示词(Prompt)越多,AI 绘图结果会更加精准。另外,目前中文提示词的效果不好,还得使用英文提示词。
接下来我们使用 StableDiffusionWebUI 生成一张猴子图片,配置以下参数后,点击 “生成” 即可
第一次生成虽然不是很美观。
调整一下相关参数,多生成几次就达到自己大致需求了,以下是生成的一些12生肖图片。
提示词
: 主要描述图像,包括内容风格等信息,原始的webui会对这个地方有字数的限制,可以安装一些插件突破字数的限制
反向提示词
: 为了提供给模型,我们不需要的风格
提示词相关性(CFG scale)
: 分类器自由引导尺度——图像与提示符的一致程度——越低的值产生的结果越有创意,数值越大成图越贴近描述文本。一般设置为7
采样方法(Sampling method)
: 采样模式,即扩散算法的去噪声采样模式会影响其效果,不同的采样模式的结果会有很大差异,一般是默认选择euler,具体效果我也在逐步尝试中。
采样迭代步数(Sampling steps
):在使用扩散模型生成图片时所进行的迭代步骤。每经过一次迭代,AI就有更多的机会去比对prompt和当前结果,并作出相应的调整。需要注意的是,更高的迭代步数会消耗更多的计算时间和成本,但并不意味着一定会得到更好的结果。然而,如果迭代步数过少,一般不少于50,则图像质量肯定会下降
随机种子(Seed)
: 随机数种子,生成每张图片时的随机种子,这个种子是用来作为确定扩散初始状态的基础。不懂的话,用随机的即可
Cloud Studio,详细使用教程可以看博主另一篇文章 腾讯云Cloud Studio实战训练营
完整代码可以看博主另一篇文章Python制作拼图小游戏
高性能应用服务HAI 快速为开发者提供 StableDiffusion API 服务
详见:官方操作说明文档
操作步骤大概以下几步:
- 进入 jupyter_lab 操作界面
- 选择使用 终端命令行 操作
- 添加 高性能应用服务HAI 的端口配置,使外部网络能够顺利地访问该服务器提供的API服务
- 使用 python 向 高性能应用服务HAI 提供的 StableDiffusion API 发送请求
以下演示使用 python 如何向 StableDiffusion API 发出请求。 我们希望向应用程序的 txt2img(即“文本到图像”)API 发送 POST 请求以简单地生成图像。
我们将使用 requests 包,所以如果你还没有安装它,请使用安装脚本:
pip install requests
我们可以发送一个包含提示的请求作为一个简单的字符串。 服务器将返回一个图像作为 base64 编码的 PNG 文件,我们需要对其进行解码。 要解码 base64 图像,我们只需使用base64.b64decode(b64_image)。 以下使用python作为脚本代码测试:
import json import base64 import requests your_ip = '0.0.0.0' # HAI服务器IP地址 your_port = 7862 # SD api 监听的端口 def submit_post(url: str,data: dict): """ Submit a POST request to the given URL with the given data. """ return requests.post(url,data=json.dumps(data)) def save_encoded_image(b64_image: str,output_path: str): """ Save the given image to the given output path. """ with open(output_path,"wb") as image_file: image_file.write(base64.b64decode(b64_image)) if __name__ == '__main__': # /sdapi/v1/txt2img txt2img_url = f'http://{your_ip}:{your_port}/sdapi/v1/txt2img' data = { 'prompt': 'a pretty cat,cyberpunk art,kerem beyit,very cute robot zen,Playful,Independent,beeple |', 'negative_prompt':'(deformed,distorted,disfigured:1.0),poorly drawn,bad anatomy,wrong anatomy,extra limb,missing limb,floating limbs,(mutated hands and fingers:1.5),disconnected limbs,mutation,mutated,ugly,disgusting,blurry,amputation,flowers,human,man,woman', 'Steps':50, 'Seed':1791574510 } response = submit_post(txt2img_url,data) save_encoded_image(response.json()['images'][0],'cat.png')
这里我使用Pycharm工具, python 向 StableDiffusion API 发出请求
请记住,你的结果会与我的不同。 如果遇到问题,请仔细检查运行 StableDiffusion API 应用程序的终端的输出。 可能是服务器尚未完成。 如果您遇到“404 Not Found”之类的问题,请仔细检查 URL 是否输入正确并指向正确的地址(例如 127.0.0.1)。
调用代码及图片生成截图:
返回 开发空间-点击应用停止按钮-再点击 删除 按钮,释放空间
销毁 高性能应用服务HAI 创建的 StableDiffusion 服务
进入算力管理页面,点击销毁,选择确认即可销毁,点击关机可以关机,再次使用就不用配置了
还可以体验一下基于HAI部署的 ChatGLM2-6B 快速进行AI对话实验,具体步骤可参考官方操作说明文档
实验的时候有个踩坑点
这个配置这个地方 要么去掉 要么就是像这样子 CODE=" "
模型使用的数据集和标签对于效果影响非常重要,在使用之前要先了解数据来源。
Stable Diffusion 模型适用于生成与照片、艺术品类似的图像。基于 LAION 数据集训练。
- Prompt(提示词):对你想要生成的东西进行文字描述。
- Negative prompt(反向提示词):用文字描述你不希望在图像中出现的东西。
- Sampling Steps(采样步数):扩散模型的工作方式是从随机高斯噪声向符合提示的图像迈出小步。这样的步骤应该有多少个。更多的步骤意味着从噪声到图像的更小、更精确的步骤。增加这一点直接增加了生成图像所需的时间。回报递减,取决于采样器。
- Sampling method(采样器):使用哪种采样器。Euler a(ancestral 的简称)以较少的步数产生很大的多样性,但很难做小的调整。随着步数的增加,非 ancestral 采样器都会产生基本相同的图像,如果你不确定的话,可以使用 LMS。
- Batch count/n_iter:每次生成图像的组数。一次运行生成图像的数量为 Batch count * Batch size。
- Batch size:同时生成多少个图像。增加这个值可以提高性能,但你也需要更多的 VRAM。图像总数是这个值乘以批次数。除 4090 等高级显卡以外通常保持为 1。
- CFG Scale(无分类指导规模):图像与你的提示的匹配程度。增加这个值将导致图像更接近你的提示(根据模型),但它也在一定程度上降低了图像质量。可以用更多的采样步骤来抵消。
- Width:图像的宽度,像素。要增加这个值,你需要更多的显存。大尺度的图像一致性会随着分辨率的提高而变差(模型是在 512x512 的基础上训练的)。非常小的值(例如 256 像素)也会降低图像质量。这个值必须是 8 的倍数。
- Height:图像高度。
- Seed:随机数的起点。保持这个值不变,可以多次生成相同(或几乎相同,如果启用了 xformers)的图像。没有什么种子天生就比其他的好,但如果你只是稍微改变你的输入参数,以前产生好结果的种子很可能仍然会产生好结果。
更多的迭代步数可能会有更好的生成效果,更多细节和锐化,但是会导致生成时间变长。而在实际应用中,30 步和 50 步之间的差异几乎无法区分。
太多的迭代步数也可能适得其反,几乎不会有提高。
进行图生图的时候,正常情况下更弱的降噪强度需要更少的迭代步数(这是工作原理决定的)。你可以在设置里更改设置,让程序确切执行滑块指定的迭代步数。
目前好用的有
Euler
,Euler a
(更细腻),和DDIM
。推荐
Euler a
和DDIM
,新手推荐使用Euler a
Euler a
富有创造力,不同步数可以生产出不同的图片。调太高步数 (>30) 效果不会更好。
DDIM
收敛快,但效率相对较低,因为需要很多 step 才能获得好的结果,适合在重绘时候使用
LMS
和PLMS
是Euler
的衍生,它们使用一种相关但稍有不同的方法(平均过去的几个步骤以提高准确性)。大概 30 step 可以得到稳定结果
PLMS
是一种有效的 LMS(经典方法),可以更好地处理神经网络结构中的奇异性
DPM2
是一种神奇的方法,它旨在改进 DDIM,减少步骤以获得良好的结果。它需要每一步运行两次去噪,它的速度大约是 DDIM 的两倍。但是如果你在进行调试提示词的实验,这个采样器效果不怎么样
Euler
是最简单的,因此也是最快的之一
cfg scale
是图像与提示词的契合度,该值越高,提示词对最终生成结果的影响越大,契合度越高。
过高的 CFG Scale 体现为粗犷的线条和过锐化的图像。
出图尺寸太宽时,图中可能会出现多个主体。
要匹配好姿势,镜头和人物才不畸形,有时候需要限定量词,多人物时要处理空间关系和 prompt 遮挡优先级。人数->人物样貌->环境样式->人物状态
1024 之上的尺寸可能会出现不理想的结果!推荐使用 小尺寸分辨率 + 高清修复(下方介绍)。
通过勾选 txt2img(文生图) 页面上的 “Highres. fix” 复选框来启用。
默认情况下,txt2img(文生图) 在高分辨率下会生成非常混沌的图像。该选项会使得模型首先生成一张小图片,然后通过 img2img 将图片分辨率扩大,以实现高清大图效果。
Batch Count(生成批次)
指定共生成几个批次。Batch Size(每批数量)
指定每个批次并行生产多少张图片。大的 Batch Size 需要消耗巨量显存。若您的显卡没有超过 12G 的显存,请不要调节 Batch Size。
对于显存极大的显卡而言,一次生成一张图片无法充分利用显卡计算容量,此时可将 Batch Size
提高以充分压榨算力。
理论上,种子决定模型在生成图片时涉及的所有随机性。
实际的种子数值并不重要。它只是初始化一个定义扩散起点的随机初始值。
在应用完全相同参数(如 Step、CFG、Seed、prompts)的情况下,生产的图片应当完全相同。(不使用 xformers
等会带来干扰的优化器)
不同显卡由于微架构不同,可能会造成预料之外的不同结果。主要体现在 GTX 10xx 系列显卡上。
Denoising strength
仅在 img2img(图生图)或 高清修复 时被应用,其表征最后生成图片对原始输入图像内容的变化程度。通过调整该值,可以降低对画风的影响,但也会弱化 img2img 能力。值越高 AI 对原图的参考程度就越低 (同时增加迭代次数)。
对于图生图来说,低 denoising
意味着修正原图,高 denoising
就和原图就没有大的相关性了。一般来讲阈值是 0.7 左右,超过 0.7 和原图基本上无关,0.3 以下就是稍微改一些。
实际执行中,具体的执行步骤为 Denoising strength * Sampling Steps。
优点:
建议及优化:
既然已实现精确计费(按小时),那么是否可以考虑推出包天或包月的服务?这样的举措可以进一步满足用户的需求,并增加收益。
对于新建的应用服务,目前只能销毁而不能停止,这导致了资源浪费,并可能使用户产生额外的费用。这个问题需要得到关注和解决,以提升服务的效率和用户满意度。(新升级的服务已经支持 关机了)
总结:
HAI作为一种高性能应用服务,具有高性能、高稳定性、高安全性和易用性等优点。它适用于需要处理大规模并发请求和高吞吐量数据处理的应用场景,如电子商务、在线游戏、在线支付等。使用HAI可以有效地提高应用程序的性能和稳定性,并降低运维成本和风险。同时,由于HAI的开放性和可扩展性,它也适用于各种不同的业务场景和需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。