基于Tensorflow、Keras实现Stable Diffusion,开箱即用实现多GPU推理

简介: 基于Tensorflow、Keras实现Stable Diffusion,开箱即用实现多GPU推理

研究者对 Stable Diffusion 的探索,永无止境。


最近一段时间,文本转图像模型 Stable Diffusion 可谓是爆红 AI 圈,其是由慕尼黑大学和 Runway 的研究者基于 CVPR 2022 的论文《High-Resolution Image Synthesis with Latent Diffusion Models》实现的,它可以在消费级 GPU 上运行。


自推出以来,研究者纷纷对 Stable Diffusion 进行了更深入的研究。有研究者将其和 Web UI「拼在」一起,两者组合成绘画工具,让没有系统学习过 UI 知识的小伙伴,也可以上手操作。


为了帮助更多的人快速上手,还有研究者整理了一份在苹果 M1 芯片上运行 Stable Diffusion 的指南。


不过原有模型是基于 Torch 实现的,现在,来自 Meta 的研究者 Divam Gupta 表示:基于 Tensorflow/Keras 实现的 Stable Diffusion 已经来了。



项目地址:https://github.com/divamgupta/stable-diffusion-tensorflow


总结来说,该项目的特点有 3 个:转换预训练模型;代码易于理解;代码量少。


Divam Gupta 表示,在 8GB M1 MacBook Air 上运行 Stable Diffusion 时,与 Torch 实现相比,运行速度大约快 4 倍。



Keras 的创造者 François Chollet 表示:它在 M1 MacBooPros GPU 上实现开箱即用,它还可以开箱即用地进行多 GPU 推理。





Chollet 还表示,除了GPU外,它还可以开箱即用地进行 TPU 推理:只需获取一个 TPU VM 并将 TPU strategy scope 添加到代码中。在进行大批量处理时,这可以显着加快推理速度、降低成本。



最后,Chollet 表示「非常感谢 Divam Gupta 创建这个端口。这是一项高质量的工作,将使所有从事创造性人工智能的人受益。我总是惊讶于开源社区的发展速度。」


项目介绍


怎样运行这个项目呢?


先进入这个地址:https://colab.research.google.com/drive/1zVTa4mLeM_w44WaFwl7utTaa6JcaH1zK


运行命令行:



python text2image.py --prompt="An astronaut riding a horse"


使用 python 接口:



pip install git+https://github.com/fchollet/stable-diffusion-tensorflow


















from stable_diffusion_tf.stable_diffusion import Text2Imagefrom PIL import Image
generator = Text2Image(     img_height=512,    img_width=512,    jit_compile=False,)img = generator.generate(    "An astronaut riding a horse",    num_steps=50,    unconditional_guidance_scale=7.5,    temperature=1,  batch_size=1,)Image.fromarray(img[0]).save("output.png")


简单两步就能完成,输出结果如下:一位洛可可风格的狼人在燃烧的咖啡店里喝咖啡。



摩天大楼上粉白的蜘蛛侠:



天堂中的景象:



有兴趣的小伙伴,可以上手一试。


参考链接:

https://twitter.com/divamgupta/status/1571234504320208897?s=20&t=kpyjZ8LLSmgJFnUKqyepAw

https://twitter.com/fchollet/status/1571874757582389250


相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
机器学习/深度学习 TensorFlow 算法框架/工具
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
将Keras训练好的.hdf5模型转换为TensorFlow的.pb模型,然后再转换为TensorRT支持的.uff格式,并提供了转换代码和测试步骤。
412 3
深度学习之格式转换笔记(三):keras(.hdf5)模型转TensorFlow(.pb) 转TensorRT(.uff)格式
|
12月前
|
机器学习/深度学习 PyTorch TensorFlow
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
1087 0
|
机器学习/深度学习 TensorFlow API
使用 TensorFlow 和 Keras 构建图像分类器
【10月更文挑战第2天】使用 TensorFlow 和 Keras 构建图像分类器
|
机器学习/深度学习 API TensorFlow
深入解析TensorFlow 2.x中的Keras API:快速搭建深度学习模型的实战指南
【8月更文挑战第31天】本文通过搭建手写数字识别模型的实例,详细介绍了如何利用TensorFlow 2.x中的Keras API简化深度学习模型构建流程。从环境搭建到数据准备,再到模型训练与评估,展示了Keras API的强大功能与易用性,适合初学者快速上手。通过简单的代码,即可完成卷积神经网络的构建与训练,显著降低了深度学习的技术门槛。无论是新手还是专业人士,都能从中受益,高效实现模型开发。
443 1
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
使用Keras API构建神经网络的三种方法:使用Sequential模型、使用函数式API以及通过继承Model类来自定义模型,并提供了基于MNIST数据集的示例代码。
280 12
|
机器学习/深度学习 移动开发 TensorFlow
深度学习之格式转换笔记(四):Keras(.h5)模型转化为TensorFlow(.pb)模型
本文介绍了如何使用Python脚本将Keras模型转换为TensorFlow的.pb格式模型,包括加载模型、重命名输出节点和量化等步骤,以便在TensorFlow中进行部署和推理。
525 0
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API两种训练GAN网络的方式
使用Keras API以两种不同方式训练条件生成对抗网络(CGAN)的示例代码:一种是使用train_on_batch方法,另一种是使用tf.GradientTape进行自定义训练循环。
417 5
|
机器学习/深度学习 IDE API
【Tensorflow+keras】Keras 用Class类封装的模型如何调试call子函数的模型内部变量
该文章介绍了一种调试Keras中自定义Layer类的call方法的方法,通过直接调用call方法并传递输入参数来进行调试。
216 4
|
TensorFlow 算法框架/工具
【Tensorflow+Keras】用Tensorflow.keras的方法替代keras.layers.merge
在TensorFlow 2.0和Keras中替代旧版keras.layers.merge函数的方法,使用了新的层如add, multiply, concatenate, average, 和 dot来实现常见的层合并操作。
227 1
|
机器学习/深度学习 TensorFlow 算法框架/工具
【Tensorflow+keras】解决cuDNN launch failure : input shape ([32,2,8,8]) [[{{node sequential_1/batch_nor
在使用TensorFlow 2.0和Keras训练生成对抗网络(GAN)时,遇到了“cuDNN launch failure”错误,特别是在调用self.generator.predict方法时出现,输入形状为([32,2,8,8])。此问题可能源于输入数据形状与模型期望的形状不匹配或cuDNN版本不兼容。解决方案包括设置GPU内存增长、检查模型定义和输入数据形状、以及确保TensorFlow和cuDNN版本兼容。
274 1

热门文章

最新文章