从零开始部署AI项目,cuda环境到stable-diffusion
部署深度学习AI项目
以stable-diffusion项目为例。 stable-diffusion是目前非常热门的,可本地部署的图片生成AI模型项目。 网上各种一键包满天飞。黑箱式的一键使用,只适合尝鲜,不利于学习。 本文将从零开始,以stable-diffusion项目为例(后称sd),介绍目前(2023年5月),一个深度学习的人工智能项目应该如何部署。
核心问题
对部署项目应该做什么没有概念 访问github缓慢
安装python
需要win10以上系统。 建议安装python-3.10后的版本
安装显卡驱动
nvidia的驱动分为GameReady驱动与Studio驱动。前者主要是针对游戏做了种种性能优化。跑cuda建议使用Studio驱动。
根据cuda版本安装cuda runtime
runtime用白话就是cuda的lib和so库。最好让驱动里的cuda版本与runtime版本相同。 请去寻找安装教程。并不难。下载cuda runtime很慢。毕竟越洋线路,NV也不肯多设服务器。 别忘了还要有cuDNN。
pip安装torch,使用pip清华源
许多人会推荐conda安装,我则不建议使用。anaconda是一个公司。最好不要形成对它的依赖。 pip安装并没有什么困难。同样是一键式的。安装的命令可以去pytorch的官方发布页上找到。 安装torch时会遇到官方仓库数据源比较慢的情况,使用清华源绕行。
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
然后再安装
pip install torch ...
安装git程序
下载安装 https://gitforwindows.org/
安装stable-diffusion-webui项目
其实现在许多程序,都是以项目的形式发布到了github (一个微软运营的开源代码发布站),如下图。 关于git项目结构,以及git常用命令的使用,更多内容请参阅介绍其他科普类文章,此处仅作按需介绍。 在项目主页中,显示了master分支中的文件,下方有项目介绍,建议好好阅读一下。右方红框处是git文件地址,用它就可以获取到项目。 在项目顶层主目录中,执行以下命令,结果如后图所示(图中以d:/test/为主目录示例)
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
git就会自动创建一个项目目录stable-diffusion-webui,并将各个文件置于其中。
问题1,怎么知道git clone哪个项目呢?
首先你要对该AI项目有了解。 AI项目分为模型和WEB界面。模型是从数据中训练出来的,使用模型进行生成的过程则叫做推理。 WEB界面是使用模型操作界面,通常使用gradio这个简易的python WEB框架开发的,它的主入口是webui.py。 所以在github中查询stable-diffusion时,会有有以下结果。 所以看项目名称,大概就能猜到,叫xxx webui的,大概就是这项目的ui界面。而第二个,大概就是模型相关的了(其实第二个那个模型才是项目的核心) 但是我们这里只选择下载web-ui,而不下载模型。因为现在模型大多发布在huggingface这个网站上。
问题2,我git clone非常慢,还会报错。
仔细看报错内容,是不是connection reset,或者443这类与网络连接有关的错误。 如果是,通常有以下办法。
- 反复重试
- 使用ghproxy.com等代理进行github加速
- 使用一些方法进行加速,但你要知道github本就是可以访问的
- 外部下载后同步到本地,我使用这个方法
预部署stable-diffusion-webui
git获取到项目后。经阅读项目介绍,了解了windows下只需要配置webui-user.bat,再运行即可。 其实阅读一下相应代码,了解到它调用webui.bat,安装一系列依赖包,并一键启动。可以说已经非常地“一键式”了。 执行以下命令。 这里我创建一个名为venv的运行环境。
cd d:\test\stable-diffusion-webui
python -m venv venv
右键编辑webui-user.bat,内容如下。保后运行。
@echo off
set PYTHON=python
set GIT=git
set VENV_DIR=D:\test\stable-diffusion-webui\venv
set COMMANDLINE_ARGS=
call webui.bat
启动项目,遇到卡安装包的问题
到这里,你已经离成功非常近了。 同样,你遇到了python安装依赖包,和git clone依赖项目时的网络连接问题。
卡安装gfpgan
例如首先是卡在了安装gfpgan上。 先查查gfpgan是什么,无非要么是python包,要么是github项目。 首先去项目的requirements.txt中查,一查就有了。再一步去./venv/Lib/site-packages/下看看,果然没有gfpgan这个目录。由于我们已经设置了清华源,没道理下载不动。不如试试手工下载。 请记的要在对应的python环境下操作。
.\venv\Scripts\activate
pip install gfpgan
然后再试webui-user.bat,果然过了。 现在是卡clip,该怎么做不用我说了吧。
.\venv\Scripts\activate
pip install clip
卡安装open_clip
按上面方法尝试,得到以下报错。 说找不到open_clip这个模块。怪了。搜一下。首先是github上有它,难道它是一个github项目吗。 可是在项目主页里看到它其实也是一个python模块,版本2.19。 猜测大概它的模块名不叫open_clip,去pypi上搜一搜,图中的标记就可以直达。 好么,叫open-clip-torch。安装,通过。
卡sd-webui插件
继续安装 log上写着cloning,大概是一个github项目了。上面也写了项目名称,该项目应该放置的路径。 所以依前面的方法
- 在github上查到对应项目,进而查到项目git文件URL
- 根据log上的路径提示,去对应文件夹下,执行git clone
- 如果遇到卡慢,则参考前面提过的方法 于是,全部完成!
完成sd-webui的安装
看到web ui的URL地址,过程中没有报错,应该就算完成了启动。 图中我使用了其他的文件路径地址,不是前述的test。
下载模型
去huggingface.co上下载模型文件,放置在以下目录
.\stable-diffusion-webui\models\Stable-diffusion\
安装control net插件
应该首先阅读sd-webui的使用大致说明,并探索一下主要功能。 其中注意到可以直接按git文件URL地址直接安装git项目作为插件。 但还是很慢。。试着安装,失败。 命令行窗口处会有错误提示,主要是从错误提示中找到插件的文件夹路径,其实我们前面安装时也已经处理过类似问题了。 自己找到插件的git项目地址,然后自己git clone,之后就刷新UI即可。
安装control net插件的模型
模型仍然是去huggingface上自己寻找 模型放在以下路径。
.\stable-diffusion-webui-1.1.0\extensions\sd-webui-controlnet\models
但我发现需要对模型做重命名,否则会找不到模型。 如下图。yaml文件是在插件项目中有的,pth文件是从huggingface下载后自己重命名的。
完成
通过以上,完成了sd-webui项目在本地的部署。
总结
本文介绍了sd-webui在本地从零开始的部署过程。主要是给出了一个部署AI项目要做哪些工作这么一个感性概念。大体来讲,包括以下环节
- 搭建系统级的python与cuda环境
- 获取主项目,并在主项目中构建项目python环境
- 展开主项目依赖包部署,主项目插件部署
- 下载模型
- 探索项目