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

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

本文所有代码以及原始notebook都是公开共享的,大家可以去原文获取链接和代码:https://www.datalearner.com/blog/1051692274915130

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

picture.image

  • Google Colab简介
  • 用Google Colab部署Stable Diffusion XL做文本生成图片
  • 1、新建Colab的notebook
  • 2、创建GPU运行环境
  • 3、StableDiffusion XL代码部署——安装依赖的库
  • 4、StableDiffusion XL代码部署——从HuggingFace下载SD XL模型并加载到内存中
  • 5、StableDiffusion XL代码部署——用SD XL来做文本生成图片的推理
  • 用Google Colab部署Stable Diffusion XL做图片生成图片
  • 加载stable-diffusion-xl-refiner-1.0模型
  • 使用SD XL做Image-to-Image推理
  • 总结

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,如下图所示:

picture.image

2、创建GPU运行环境

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

picture.image

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

picture.image

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

picture.image

picture.image

可以看到,我们就有了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 左侧的那个播放按钮点击一下就开始安装了。

picture.image

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

picture.image

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

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

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


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


    

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

picture.image

如上图所示,直接下载和加载模型仅需要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. 
3. `from datetime import datetime`
4. `start = datetime.now()`
5. `image = pipe(prompt=prompt).images[0]`
6. `print((datetime.now()- start).seconds)`
7. 
8. `display(image)`


    

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

picture.image

可以看到,我们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 importStableDiffusionXLImg2ImgPipeline`
4. `from diffusers.utils import load_image`
5. 
6. `pipe =StableDiffusionXLImg2ImgPipeline.from_pretrained(`
7. `"stabilityai/stable-diffusion-xl-refiner-1.0", torch_dtype=torch.float16, variant="fp16", use_safetensors=True`
8. `)`
9. `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的文本生成图像部署实例和 StableDiffsuion XL的图像生成图像部署实例的Colab代码链接见原文末尾:

https://www.datalearner.com/blog/1051692274915130

号外!

我们建立了一个AI技术交流讨论群,目前1-4群已满,请大家加入5群交流,大家可以在群里讨论AI相关的技术问题和进展由于群满200无法自动加入,需要邀请,大家可以加我的微信,然后邀请进群(微信号:datalearner_ai,微信群仅限AI相关技术交流)微信账号二维码如下

picture.image

0
0
0
0
评论
未登录
暂无评论