没有显卡也没关系!基于Google Colab免费GPU额度部署Stable Diffusion XL模型,可以生成4K的图!

标签:#StableDiffusionXL##StableDiffusion教程##免费GPU资源# 时间:2023/08/17 23:30:44 作者:小木

Stable Diffusion XL是StabilityAI最新的开源模型。是目前业界流行的免费开源图像生成大模型。2023年4月份StabilityAI就宣布了SD XL的存在并在2023年7月26日开源。SD XL相比较此前的模型速度更快、提示词更短、生成的图像更加真实。但是,大多数人可能并没有实际运行过,感受过这个模型的魅力。在这篇博客中,我们给大家展示如何利用Google Colab的免费GPU资源,部署一个SD XL模型,并通过prompt生成一些图片。

下图就是一个例子~(Prompt: Astronaut on Mars During sunset, 4k)


Google Colab简介

Google Colab是一个基于Jupyter notebook的免费云服务,提供GPU和TPU来加速机器学习任务。

每个免费用户都可以获得一个显存约15GB的GPU、内存为12GB左右的CPU和78G硬盘空间。并且可以与Google的云硬盘相连。因此,我们可以直接利用这个notebook运行那些显存要求不高的模型。

简单来说,这个平台最大的特点如下:

  • 提供免费的GPU资源
  • 只能通过Jupyter Notebook方式访问使用
  • 可以通过云端的Jupyter Notebook连接本地硬件运行
  • 网络速度非常快!按照第三方python库和加载HuggingFace的模型可以达到300MB/s!

从这些描述我们可以看到,这是一个值得新手练习和验证大模型使用的平台。

用Google Colab部署Stable Diffusion XL做文本生成图片

话不多说,我们直接开始按照如下步骤部署Stable Diffusion XL到Google Colab上,然后运行。

1、新建Colab的notebook

首先,我们新建一个notebook,如下图所示:


2、创建GPU运行环境

接下来,我们需要创建(连接)Google提供的GPU资源。点击上面界面右上角的Connect边上的小三角形,然后选择Change runtime type


默认Google会让你连接CPU环境,这肯定不是我们需要的,所以点击Change runtime type之后会出现如下的资源选择,免费用户直接选择T4 GPU即可,这也是Google为大家提供的一个免费GPU资源了。


保存之后,再次点击右上角的Connect按钮就可以连接GPU资源了,当右上角变成如下图所示的样子,说明GPU资源环境已经连接。继续点击那个T4按钮之后就会出现下图所示的环境资源情况了:



可以看到,我们就有了12.7GB的内存,GPU没有显示(实际上是15GB,后面使用了GPU资源就会显示),硬盘资源78.2GB。

3、StableDiffusion XL代码部署——安装依赖的库

在实际运行代码之前需要先安装相关的库。这里我们用HuggingFace官方提供的diffusers库来运行SD XL。所以需要安装依赖的库代码如下:

  1. !pip install transformers
  2. !pip install accelerate
  3. !pip install safetensors
  4. !pip install diffusers

上述代码需要在notebook中运行,需要点击左上角的+ Code就能出现一个Cell,然后在Cell里面输入上述代码即可,输入完毕之后Cell左侧的那个播放按钮点击一下就开始安装了。


点击完播放按钮之后就看到下方快速刷新的安装日志了~


看到左上角的绿色的勾勾就说明运行很成功,上图里面的左侧就是了。可以看到下方的日志,安装速度很快,下载速度最快都到了84MB/S,比国内的网络好多了。

4、StableDiffusion XL代码部署——从HuggingFace下载SD XL模型并加载到内存中

接下来就是加载模型了,我们需要继续在notebook的左上方+ Code点击,新建一个代码块,然后输入如下代码:

  1. from diffusers import StableDiffusionXLPipeline
  2. import torch
  3. # 确认cuda环境是否OK,这里的输出必须是True才说明你的GPU环境没有问题
  4. print(torch.cuda.is_available())
  5. pipe = StableDiffusionXLPipeline.from_pretrained(
  6. "stabilityai/stable-diffusion-xl-base-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
  7. )
  8. pipe.to("cuda")

上述代码输入完毕之后点击左侧的播放按钮,就会从官方的HuggingFace上下载Stable Diffusion XL Base 1.0这个模型了。


如上图所示,直接下载和加载模型仅需要1分钟左右就行了,这里可以看到模型大小5GB多,下载速度最高接近300MB/S,所以模型就算大,直接运行下载也很快,这里的一分钟包含了从HuggingFace下载模型以及加载的GPU显存里面的时间。同时,右侧的GPU显存也出现了7.7/15.0GB,说明给我们分配了15GB显存的GPU,加载SD XL模型用了7.7GB。

5、StableDiffusion XL代码部署——用SD XL来做文本生成图片的推理

经过上述步骤,我们的模型其实就已经完成了,接下来我们要做几个SD XL模型的推理应用。第一个测试的是文本生成图片。代码如下:

  1. prompt = "Astronaut on Mars During sunset, 4k"
  2. from datetime import datetime
  3. start = datetime.now()
  4. image = pipe(prompt=prompt).images[0]
  5. print((datetime.now() - start).seconds)
  6. display(image)

注意,这里的datetime部分主要是我用来计算我们推理的时间的,大家也可以删除。上述代码运行完毕之后得到如下结果:


可以看到,我们52秒运行完毕出了一张图,然后GPU的显存也从7.7GB涨到了13.9GB,刚刚好足够!如果想继续测试其它图片,直接更改上面的prompt内容就可以,前面的代码也不用再运行了。

用Google Colab部署Stable Diffusion XL做图片生成图片

Image to Image的应用与前面类似,其中1-3步骤不变,主要是加载的模型和使用的方法差别。代码如下:

加载stable-diffusion-xl-refiner-1.0模型
  1. # 加载stable-diffusion-xl-refiner-1.0模型
  2. import torch
  3. from diffusers import StableDiffusionXLImg2ImgPipeline
  4. from diffusers.utils import load_image
  5. pipe = StableDiffusionXLImg2ImgPipeline.from_pretrained(
  6. "stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True
  7. )
  8. pipe = pipe.to("cuda")
使用SD XL做Image-to-Image推理
  1. url = "https://www.datalearner.com/resources/blog_images/15268655-0429-4c40-aa57-a70839873b16.png"
  2. init_image = load_image(url).convert("RGB")
  3. prompt = "Change the this photograph to an anime-style illustration"
  4. image = pipe(prompt, image=init_image).images[0]
  5. display(image)

这里,我们将前面生成的宇航员照片转成动画风格。结果不多说了。

总结

这篇博客主要给大家介绍了如何使用Google Colab的免费GPU资源来搭建Stable Diffusion XL应用。其实,SD XL能做的事情很多,包括Inpainting、Refining the image output等。这里大家直接看原文档即可,我们也分享一下本文的两个例子,大家直接在自己的Google Colab打开即可运行。

StableDiffusion XL的文本生成图像部署实例:https://colab.research.google.com/drive/18ZwvrW6uOcJchFwEnOMIBCiTwmkPBMvG?usp=sharing

StableDiffsuion XL的图像生成图像部署实例:https://colab.research.google.com/drive/1S3Xd1nOFUkraOGTV_1cBzt8C0_LkGNW_?usp=sharing

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
Back to Top