keras-cv windows 下 cuda 配置教程及小专用内存显卡优化

分享讨论IT相关的内容
回复
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1187
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 338 次
被赞次数: 178 次
联系:

keras-cv windows 下 cuda 配置教程及小专用内存显卡优化

帖子 BobMaster »

笔者的笔记本显卡型号:NVIDIA GeForce GTX 1650
系统: windows 11 22H2

准备工作

下载安装 CUDA® 工具包:https://developer.nvidia.com/cuda-toolkit-archive
下载 cuDNN :https://developer.nvidia.com/cudnn
下载 zlib: http://www.winimage.com/zLibDll/zlib123dllx64.zip
CUDA® 工具包是交互式的安装方式,cuDNNzlib 只需要将压缩包解压即可
假设 cuDNN 解压后的目录放在:C:\cudnn-windows-x86_64-8.6.0.163_cuda11-archive
zlib 解压后的目录放在:C:\cudnn-windows-x86_64-8.6.0.163_cuda11-archive\zlib123dllx64
下面我们需要将 CUDA®CUPTIcuDNNzlib 安装目录添加到 %PATH% 系统环境变量中
图片
图片
新增下面的内容(请替换为你自己保存的实际路径)

代码: 全选

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\extras\CUPTI\lib64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include
C:\cudnn-windows-x86_64-8.6.0.163_cuda11-archive\bin
C:\cudnn-windows-x86_64-8.6.0.163_cuda11-archive\zlib123dllx64\dll_x64
图片

使用 cuda 跑 keras_cv 的模型

这里以 AI 画师 - 搭建 Stable Diffusion 本地运行环境 (通用篇) 中的例子来演示。
由于我的英伟达独立显卡 GTX 1650 过于普通,且显存过低(windows下占用也有问题),因此必须修改参数才能跑起来,代码如下。

代码: 全选

import keras_cv
import matplotlib.pyplot as plt
import tensorflow as tf


def plot_images(images):
    plt.figure(figsize=(10, 10))
    for i in range(len(images)):
        ax = plt.subplot(1, len(images), i+1)
        plt.imshow(images[i])
        plt.axis("off")


def main():
    tf.keras.backend.set_floatx("float16")
    model = keras_cv.models.StableDiffusion(img_width=512, img_height=512)

    # model.text_to_image("文本提示词", batch_size=生成图片的数量, num_steps模型训练步长,缺省默认为25)
    # 如 "photograph of an astronaut riding a horse"
    # 如 "Cluttered house in the woods, anime, oil painting"
    images = model.text_to_image("A Magic Moon + by Dustin Nguyen + Intricate --ar 100:235", batch_size=1, num_steps=20)
    plot_images(images)
    plt.show()


if __name__ == "__main__":
    main()


比原版教程多了 import tensorflow as tftf.keras.backend.set_floatx("float16")
此外还需要添加 TF_GPU_ALLOCATOR=cuda_malloc_async 环境变量
Pycharm -> Run -> Edit configuration -> Environment variables
图片

不出意外的话,你就可以正常用 cuda 跑起来了
效果相比于CPU的8分钟一张图,现在只需要1分钟就可以了😊

参考资料:
1. https://www.tensorflow.org/install/gpu#windows_setup
2. https://docs.nvidia.com/deeplearning/cu ... es-windows
上次由 BobMaster 在 2023年 7月 27日 09:10,总共编辑 2 次。
人生如音乐,欢乐且自由
夜咒
帖子: 1
注册时间: 2022年 12月 23日 00:33

Re: keras-cv windows 下 cuda 配置教程及小专用内存显卡优化

帖子 夜咒 »

你好,請問加了
tf.keras.backend.set_floatx("float16")
就可以在GPU上跑的原理是什麼?
是能夠限制模型在GPU記憶體的使用嗎?
float16 和 float32差在哪呢?
头像
BobMaster
锋芒初露
锋芒初露
帖子: 1187
注册时间: 2020年 12月 7日 08:05
来自: 神秘的东方
我的状态: 🎯
为圈友点赞: 338 次
被赞次数: 178 次
联系:

Re: keras-cv windows 下 cuda 配置教程及小专用内存显卡优化

帖子 BobMaster »

主要是 GTX 1650 的 VRAM 太小了,默認使用的是float32,會報錯CUDA out of memory
float16 占用的内存小一些,不過根據tensorflow的文檔,不推薦使用float16,因爲精度較低。
It is not recommended to set this to float16 for training, as this will likely cause numeric stability issues. Instead, mixed precision, which is using a mix of float16 and float32, can be used by calling tf.keras.mixed_precision.set_global_policy('mixed_float16')
https://www.tensorflow.org/api_docs/pyt ... set_floatx
但我爲啥還是使用float16呢?因爲AI作圖我覺得影響不大,而mixed_float16會影響16係顯卡的性能,詳細參見:mixed_float16 + example code = horrible performance on a GeForce GTX 1660 Ti
人生如音乐,欢乐且自由
回复
  • 猜你喜欢
    回复总数
    阅读次数
    最新帖子

在线用户

正浏览此版面之用户: 没有注册用户 和 0 访客