"太复杂",恐怕是很多新手初次尝试安装SD等相关AI应用的第一反应,而且很可能折腾半天依然失败或者运行时出现一堆错误,很多人将其总结为版本适配问题(库的版本、CUDA的版本等),其实不然,版本适配仅仅是表象,根本在于Python虚拟环境配置与管理、不同虚拟环境间的隔离。安装Stable Diffusion WebUI失败的主要原因常见于网络连接、CUDA适配、环境配置错误/乱等多种原因,WebUI下Inpaint Anything等扩展的安装失败一般是由于网络连接和Git版本引起。本文主要介绍Stable Diffusion WebUI以及Inpaint Anything扩展的安装,对于常见的CUDA安装配置误区、建议环境配置重点说明。
1.Nvidia CUDA安装与误区
1.1 CUDA 及cuDNN安装
CUDA可打开以下链接,在其中选择对应的操作系统、架构平台、操作系统版本、安装包类型后即可点击下载,最新的12.2本地安装包为3.0g。
https://developer.nvidia.com/cuda-downloads
https://developer.nvidia.com/cuda-toolkit-archive
cuDNN版本与CUDA版本有匹配关系,但并不严格,下载链接如下:
https://developer.nvidia.com/rdp/cudnn-download
在cuDNN下载页面勾选“Agree...”后,选择11.x或12.x对应的cuDNN版本,在列表中默认可供下载的cuDNN为最新的匹配CUDA版本的cuDNN压缩包。
点开"Archived cuDNN,会列出Releases"后,会列出所有可供下载的匹配版本,cuDNN 8.2.0以上的版本均支持、适配CUDA 11.x。
cuDNN sdk压缩包下载后,将其解压并复制lib、bin、include到安装好的CUDA Toolkit的目录下,默认为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x(或v12.x、10.x,为安装的CUDA Toolkit版本)。
1.2 验证
安装完成后,使用nvidia-smi看到的CUDA版本号对于非科学计算卡而言仅仅标识了当前最高支持的CUDA版本,而非实际安装的预编译版本,在Nvidia控制面板中通过系统信息获取的CUDA DLL驱动版本同样如此(严格来说,CUDA DLL版本和CUDA版本没有必然的关联性)。
正确的姿势应该是使用nvcc -V,nvcc是CUDA的编译驱动程序(不是编译器),可以查询CUDA的二进制预编译版本信息。
1.3 误区
很多新手往往都是卡在CUDA的安装适配上,图形驱动、cuda、cuDNN、putorch、tensorflow等等,加上其版本号,直接懵逼,其实是很多“教程”人为复杂化、含糊化了。
- 通过驱动版本号确定、分析适配的CUDA版本是错误的,CUDA不是图形驱动程序,两者除了天然的迭代周期大致同步外没有什么必然的对应关系;
- cuDNN不是必装的,只有要用到DNN(Deep Neural Network library)时才需要安装;
- 不同版本的CUDA Toolkit是可以共存的,只需不超过nvidia-smi查询输出的支持版本号,同理,不同版本的cuDNN当然也是可以共存的;
- 向下兼容是软件(包括第三方库)的基本要求,除非有特定要求的,没有必要对CUDA进行刻意降级。
对于像tensorflow这样重要的仅支持到CUDA 11.2和cuDNN 8.10的库,我们没有必要委屈求全去降级CUDA和cuDNN,共存的同时,“请出”conda创建、管理虚拟环境即可。
2.安装miniconda
Python语言因其灵活性、易用性和强大的数据处理能力在科学计算和数据分析领域受到广泛欢迎。然而,Python的一大挑战是库的管理和环境的隔离。解决这个问题的一个方案是使用分布式管理系统,如Anaconda或Miniconda。Anaconda是一个包含了conda、Python和超过150个科学包及其依赖项的科学Python发行版,相较之下,Miniconda更加轻量级。它只包含了Python和Conda,但并没有预装其他的库。
Miniconda作为小巧、简约的python环境管理工具,最新版本安装包大约不到80M,仅包含conda软件包管理器和Python。一旦安装了Miniconda,就可以使用conda命令安装任何其他软件工具包并创建虚拟环境等。miniconda安装包下载链接如下:
https://docs.conda.io/projects/miniconda/en/latest/miniconda-other-installer-links.html
在官方下载页面,直接下载对应最新python版本的miniconda安装包即可,不必考虑计划安装配置的应用对Python具体版本的要求,后续conda创建虚拟环境时可一并指定。安装miniconda过程中,建议遵循官方指导,不必勾选“添加PATH”。
conda的功能本就是管理python虚拟环境,背景是多个python应用所需的虚拟环境,conda的path搜索优先级高于系统默认python,一旦指定,和系统python环境出现冲突的概率较高。
安装完成miniconda后,在Windows开始屏幕以及开始菜单会添加Prompt和Powershell Prompt两项快捷方式,通过miniconda配置、运行python应用可直接点击打开。老E所有的python应用安装、配置、运行均是在miniconda下完成的,如此更加方便管理且“绿色化”,不再使用的应用可以直接删除虚拟环境。
3.Stable Diffusion WebUI和Inpaint Anything扩展
Stable Diffusion WebUI(AUTOMATIC1111版本)和Inpaint Anything扩展的Github项目主页分别如下:
https://github.com/AUTOMATIC1111/stable-diffusion-webui
https://github.com/Uminosachi/sd-webui-inpaint-anything
3.1 安装Stable Diffusion WebUI
Stable Diffusion WebUI(AUTOMATIC1111版本)官方给出了两种安装方式,但并没有相应的conda下的安装配置指引,可参考以下内容/指令部署SD-WebUI:
conda create --name sd python=3.10.6 -y conda activate sd #conda install git=2.40.1 -y conda install git -y #此处%miniconda%为miniconda的安装目录 cd %miniconda% git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui cd stable-diffusion-webui webui-user.bat
执行webui-user.bat批处理脚本,进行安装,大致安装完毕进行自动配置之初,stable-diffusion-webui会自动打开浏览器并定位到SD-WebUI的默认网址http://127.0.0.1:7860/。需要提示的是,安装配置过程会下载模型、权重文件等,建议全程挂代理,整个安装过程大约需要20-30分钟。
至此,可以直接在Stable Diffusion WebUI进行文生图、图生图以及其他各项操作了。关闭安装脚本自动打开的浏览器后,后续可双击运行目录下的webui.bat打开,建议在首次启动时,通过miniconda控制台使用--xformers参数,WebUI会自动安装xformers模块,可以降低GPU负载并提升其效能。
webui --xformers
Stable Diffusion WebUI(AUTOMATIC1111)默认下载应用的主模型为 v1-5-pruned-emaonly.safetensors,如果不满意可至C站或Huggingface、rentry等下载其他预训练模型,相比较Midjourney,Stable Diffusion最大的优势就是开源,SD每时每刻都有人在世界各地训练自己的模型并免费公开共享给全世界的使用者。主模型常见文件类型为ckpt、safetensors,如果都有提供的话建议下载、使用safetensors。
不再使用SD WebUI的时候,可以运行以下指令直接删除虚拟环境并手动删除Stable Diffusion WebUI文件夹,不会有任何残留,也不会对其他python应用及其虚拟环境产生影响。
#sd是创建虚拟环境时通过-n或者--name指定的环境名 conda remove -n sd --all
3.2 安装SD Inpaint Anything扩展
在sd(为Stable Diffusion WebUI创建的python虚拟环境)下安装git时,如果因为没有指定git版本号导致参数识别错误,可使用如下命令排除错误:
conda remove git #conda uninstall git #最新版本的conda uninstall与remove等效 conda install git=2.40.1 -y
Inpaint Anything扩展也包含独立版本(standalone),有需要的可自行尝试。在Stable Diffusion WebUI界面,先后选择【Extensions】选项卡 ->【Install from URL】 -> 【URL for extension's git repository】。
其中输入“https://github.com/Uminosachi/sd-webui-inpaint-anything.git”或“https://ghproxy.com/https://github.com/Uminosachi/sd-webui-inpaint-anything.git”,点击【Install】安装即可,建议直接填写后者,保障连接的同时还可对Github下载进行适当加速。安装完成后,在【Install】下方会有文本提示说明,按照提示要求重启WebUI。
回到【Installed】选项卡应用安装并重启WebUI。
重启WebUI,首页会多出【Inpaint Anything】选项卡,点击打开Inpaint Anything,可使用该扩展进行图片的Segment/分片、创建掩膜、消除、填充、替换等一些列操作。Inpaint Anything基于SAM(Segment Anything Model),推理部分可使用LaMa或其他算法,图片修复效果很好。
文章评论
感谢分享