【Python】Windows 10 搭建本地 dall-e playground 人工智障绘图
简介DALL-E 人工智障绘图功能会根据你输入的文本句子进行绘图。它对中文的支持不是很好,输入一个英文的句子,生成出来的效果比较好。
不过实际上不管你输入什么、它效果都只能算是玩具级别。属于是恐怖谷玩具。因为这个 AI 在绘制人物,尤其是人脸、人体的时候,它并没有把人当人来绘制,所以很容易就缺胳膊少腿等。
根据群友 Kiemnagishra 的测试,发现使用 Unicode Emoji 颜文字来描述,可以达到较为准确的生成效果。
官方 repo:https://github.com/saharmor/dalle-playground
本教程教你如何在 Windows 上配置 DALL-E playground 后端。
准备工作
[*]DALL-E 源码。
[*]Windows 版 Python,推荐版本 3.8.10。
[*]NVIDIA 显卡,注意显存至少 6 GB,否则在绘图过程中会出现“资源耗尽”的报错。
我的 RTX 2070 有 8 GB 显存,在同时生成多张图片的时候偶尔也会出现“资源耗尽”的报错。平均生成一张图需要 30 秒。
[*]CUDA 11.0 驱动软件。如果你安装 CUDA 11.1 或者更高的版本,也行。
[*]cuDNN 8 工具。
[*]zlibwapi.dll。
[*]能够上外网的条件。此处所说的“外网”指的是你能访问 github,以及你能用 pip 安装 python 包的时候不至于下载速度太慢。
如果你没有 N 卡独显,却想要强行配环境运行 DALL-E playground,那么你可以不用配置 CUDA、cuDNN,也不用担心显存不足,但是生成的速度会变得极慢,一张图需要半小时才能生成。
安装 Windows 版 Python
下载:https://www.python.org/ftp/python/3.8.10/python-3.8.10-amd64.exe
下载后打开安装。
如图所示,不需要安装 Python launcher,但是需要添加到 PATH 以便之后的命令行操作。
装完退出即可。
安装 CUDA 11.0
打开这个链接:https://developer.nvidia.com/cuda-11.0-download-archive
根据下图逐步点开按钮进行下载。
下载后安装。
取得 cuDNN 8.4
不能直接点开下载直链来安装,而是要自己去老黄家官网找:
https://developer.nvidia.com/rdp/cudnn-archive
如果你找不到,你可以回帖后从百度云下载我上传的。
**** Hidden Message *****下载后备用。
取得 zlibwapi.dll
http://www.winimage.com/zLibDll/zlib123dllx64.zip
下载后备用。
下载 DALL-E 源码
从官方 repo 下载。
https://github.com/saharmor/dalle-playground/archive/refs/heads/main.zip
下载后解压到一个合理的位置,作为你的 DALL-E 环境的工作目录。
搭建后端
首先说明要点:
[*]需要在命令行使用 python -m pip install -r requirements.txt 来安装需要的包。
安装的包数量很多,而且有一个包(jaxlib)默认没有 Windows 版,需要你手动安装这个包。
手动安装方法:运行这个命令:
python -m pip install jax==0.3.13 https://whls.blob.core.windows.net/unstable/cuda111/jaxlib-0.3.7+cuda11.cudnn82-cp38-none-win_amd64.whl
安装后,这个 jaxlib 有个 bug,它的 cuda_prng.py 这个源码文件需要被删除,你需要手动删除。
[*]初次运行后端的时候,需要下载一堆东西。这个过程中,你需要以管理员身份运行,并且你必须确保运行的时候,环境变量 PATH 里面包含了你的 cuDNN 的 bin 目录(里面是 cuDNN 的 dll,但是这堆 dll 还不够,它们还要依赖 zlibwapi.dll)。
没有必要将 cuDNN 的文件夹加入到 Windows 系统的环境变量里。它只需要你用 cmd 脚本运行它的时候,环境变量有这些 dll 即可。
我在教程里会让你写一个 cmd 脚本,这个脚本设置它自己的 PATH 环境变量到 cuDNN 的目录里。每次双击这个脚本即可启动后端。
[*]后端运行起来后,你就可以用 POST 方法(使用 json 编码参数放到 POST 体里面)来使其绘图了。因此你需要写一个前端脚本,负责帮你生成 POST。
后端的 API 可以直接通过观察 app.py 源码来看到。非常简单,就一个 ping 和一个 dalle。json 的字段也在里面写好了。返回的内容是图像数据的 base64 编码,直接解码为 bin 数组然后存储为 jpg 文件就行。
具体内容请继续看下文。
安装依赖的包。
首先找到你解压好的 dall-e 目录:
在空白处按住 Shift 点右键,在菜单里找到“在此处打开 Powershell 窗口”
安装 jaxlib:
python -m pip install jax==0.3.13 https://whls.blob.core.windows.net/unstable/cuda111/jaxlib-0.3.7+cuda11.cudnn82-cp38-none-win_amd64.whl
删除 jaxlib 的 bug 源码:
打开 Windows 文件资源管理器,并进入这个目录:
%AppData%\..\Local\Programs\Python\Python38\Lib\site-packages\jaxlib
找到 cuda_prng.py,将其删除,或者将其改名为别的名字(比如 cuda_prng.pyunused)
安装其他依赖项:(此时应当确保你的网络能上 github,如果你有 socks5 代理,你可以在使用 pip 安装了 pysocks 之后,在下面的命令的 pip 的后面和 install 的前面插入 --proxy=socks5h://代理地址:端口 )
python -m pip install -r backend\requirements.txt
注意这一步比较慢。安装好了以后,回到之前的 dall-e 目录。然后把之前下载好了的 cudnn 丢进去:
把压缩包的内容直接解压到当前目录:
把解压出来的文件夹改名为 cudnn:(改好后,压缩包就不需要了,可以删了)
打开 cudnn 文件夹,然后找到 bin 文件夹,打开它:
找到你刚才下载好了的 zlib123dllx64.zip,进入 dll_x64 文件夹,找到 zlibwapi.dll,将 zlibwapi 解压到 cudnn 的 bin 文件夹:
此时我们已经把各种该配好的都配好了,但我们现在需要以管理员身份运行一下 dall-e 的后端,它下载它的东西后,才能建立后端,然后就不用再以管理员身份运行了。
运行的方法是先以管理员身份打开 CMD,然后切换当前工作目录为你的 dall-e 目录,并启动后端一次。
运行以下命令:
cd /d 你的dall-e目录
python backend\app.py --port 8000 --model_version Mega
后端开始自己下载安装数据。等着它下载完它自己的包就行。
它下载好了以后,此时我们要编写一个启动后端的启动脚本,方便以后可以双击脚本运行后端。
回到 dall-e 目录,新建文本文档:
用记事本打开文本文档,并添加以下内容,然后保存:
@echo off
set PATH=%~dp0\cudnn\bin;%PATH%
python backend\app.py --port 8000 --model_version Mega
pause
保存后,将新建的文本文档改名改后缀为 runback.cmd。
然后它这个后端就搭建好了。接下来是前端。其实 dalle-playground 的 repo 是提供了 frontend 的,但是它很大,需要你使用 npm 来安装。
俺寻思没必要。它的前后端协议非常简洁明了,直接查看 app.py 的源码就可以看到它后端吃一个路径为 /dalle 的一个 POST json,内容就是 { "text": 文本内容, "num_images": 生成图像个数 }
于是我瞎几把写了个前端。
前端代码下载:
双击打开 front.html,输入英文的文本,就可以进行瞎几把 AI 绘图了。注意不要输入中文的文本,否则绘图效果很烂;而输入 emoji 则效果准确很多。
绘图的时候注意用任务管理器看 GPU 占用。
看到狗吃IPHONE那个图,忽然想起李云龙的那句“wolves go thousands of miles to eat meat, dogs go thousands of miles to eat shit”。 Golden Blonde 发表于 2022-9-6 20:43
看到狗吃IPHONE那个图,忽然想起李云龙的那句“wolves go thousands of miles to eat meat, dogs go thousa ...
狼行万里路以食肉,狗行万里路以吃屎,人行万里路以赛博朋克。
页:
[1]