点击下方 卡片 ,关注“ 慢慢学AIGC ”
(上图由 Stable Diffusion 3 生成)
缘起
续上篇《Stable Diffusion 3 来了!快速体验》。
在 RTX 3060 本地机器上试跑了下 SD3,显存 12 GB 被耗尽,内存被拉来充数,速度不忍直视,生成一张 1024x1024 图片需要 超过 20 分钟 。生命的意义在于探索新的事物而非等待,因此我需要一张 4090。
GPU 算力云
一个偶然的机会,从朋友那得知厚德云有大量 4090 可以用,于是马上注册体验。官方链接是这个:
https://www.houdeyun.cn/?from=kemanze
厚德云简介:专业的 AI 算力云平台,为用户提供稳定、可靠、易用、省钱的 GPU 算力解决方案。下面是 GPU 算力产品页面:
其中第二个选项即免费体验版,注册并实名认证后,充值 1 元即可领取 6 元体验金,相当于 2 小时免费使用,此外每个账号每天可以领 30 元体验金,可累积使用,总共可领取 7 次,算下来相当于 6+30*7=216 元体验券,免费使用时长 72 小时!可以说相当有诚意了。 整个注册流程相当简洁,使用手机号和验证码即可登录,实名认证可通过支付宝扫码快速验证,大概 5 分钟搞定。
创建体验版 4090 实例
注册成功并充值 1 元后,在首页右上角点击“控制台”
在 GPU 云主机页面,点击第二个卡片“免费体验 ”创建 NVIDIA 4090 免费版实例。
进入配置页面:
前面保持默认,镜像使用这个 app-sd_webui_20240525,内置了 SD WebUI 的基础环境,可以省去自己搭建环境的麻烦:
创建后需要稍等几分钟,成功后如图所示:
点击右侧“一键连接”,进入 Jupyter 页面。
为了方便操作我们直接选“Terminal”,类似一个 ssh 终端。
开启 venv 环境:
cd ~
tar xf sd_webui_data.tar
cd stable-diffusion-webui/
source ./venv/bin/activate
pip install torch==2.1.2 torchvision==0.16.2 --extra-index-url https://download.pytorch.org/whl/cu121
pip install --upgrade diffusers transformers gradio
pip 安装速度非常快,已经默认配置过代理加速,详见后面“学术资源加速”一节。
SD3 简略 WebUI 代码 sd3.py 如下(只支持正向提示词,其他参数均默认):
import torch
from diffusers import StableDiffusion3Pipeline
import gradio as gr
pipe = StableDiffusion3Pipeline.from_pretrained("stabilityai/stable-diffusion-3-medium-diffusers", torch_dtype=torch.float16)
pipe = pipe.to("cuda")
def text2img(text):
image = pipe(
text, #"A cat holding a sign that says hello world",
negative_prompt="",
num_inference_steps=28,
guidance_scale=7.0,
).images[0]
return image
demo = gr.Interface(
fn=text2img,
inputs="textbox",
outputs=gr.Image()
)
demo.launch(server_name="0.0.0.0", server_port=8099)
获取 SD3 权重需要登录 huggingface,使用如下命令:
huggingface-cli login
关注公众号,后台回复“SD3” 获取只读 token,复制粘贴到这里即可。厚德云可以自动实现 HuggingFace 权重下载加速,详见后面“学术资源加速”一节。
执行 python sd3.py,首次运行会下载 SD3 权重,速度还可以。
程序正常运行后,日志会显示:
Loading pipeline components...: 11%|█████████████████▏ | 1/9 [00:01<00:09, 1.17s/it]You set `add_prefix_space`. The tokenizer needs to be converted from the slow tokenizers
Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:00<00:00, 3.47it/s]
Loading pipeline components...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 9/9 [00:02<00:00, 3.54it/s]
Running on local URL: http://0.0.0.0:8099
此时需要将端口映射到公网才能通过网页访问。
回到控制台 GPU 主机页面,在“更多操作”菜单里选择“自定义端口”,如下图所示
在添加完成后,再次点击“更多操作”菜单里选择“自定义端口”,查看当前映射情况。如下图所示
此时可以通过 hgh1.dc.houdeyun.cn:58716(这里只是一个示例,实际端口要看你的控制台真实端口号) 访问云主机上的 WebUI 服务,界面如下:
其中 prompt 内容为:
Snow Princess, smooth soft skin, symmetrical, soft lighting, detailed face, concept art, digital painting, looking into camera.
生成的图片为:
可见 SD3 生成图像的细节处理相当不错,和 DALL·E 3 接近。文章开头图片也是基于 SD3 生成的。
SD3 在生成带文字的内容时效果也出奇的好。这点已经超过 DALL·E 3。
不过,让 SD3 生成躺在沙滩上的人时,会有很诡异的事情发生。图片会引起人不适,暂不放这里,好奇心强的同学可以亲手实验下。 官方解释是训练数据中躺着的人太稀缺导致。
SD3 在 4090 上的生成速度差不多 4~5 秒一张图(1024x1024 分辨率),相比我本地 3060 快了两个数量级,节省了大量时间。
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 28/28 [00:04<00:00, 6.29it/s]
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 28/28 [00:04<00:00, 6.30it/s]
学术资源加速
为方便用户使用学术资源,厚德云提供了加速代理(这个功能对国内用户而言太有必要了!!!)。如下学术资源地址可以通过本文档中方法配置加速代理拉取,包含如下域名的主域名以及所有二级域名:
- github.com
- huggingface.co
- storage.googleapis.com
- cloudflarestorage.com
目前实例已默认开启学术加速,无需额外配置。 如果遇到网络问题,使用如下命令关闭代理。
临时关闭代理
source network-turbo && proxy\_unset
完全清除代理配置
# 重置代理配置
network-turbo reset
# 关闭代理
source network-turbo && proxy_unset
检查代理是否已配置
您可以使用如下命令检查代理是否配置,如有输出则表示已配置代理。
echo $http\_proxy $https\_proxy
最佳实践
当不用的时候记得关机、释放资源,这样可以将体验券省下来,需要的时候再开。为了避免每次都从头配置环境,还可以对实例打镜像,下次创建时直接从镜像创建。实测一次镜像时间 20 分钟,而且镜像需要收费,尽量避免把大文件放到镜像里,比如模型权重,可以每次运行时下载,速度也还不错。
以上就是薅 4090 羊毛的步骤。手头缺 GPU 的你马上行动起来吧!
入口:https://www.houdeyun.cn/?from=kemanze
除了 4090,他们家也有 A100, A800, H800 等高端 GPU,适合大规模分布式训练任务,要联系商务开通。这里就不多介绍了。