1. 项目概述:为什么要在趋动云上部署Stable Diffusion整合包?
最近不少朋友在问,有没有一种方法,能让自己随时随地、不受本地硬件限制地玩转Stable Diffusion?特别是秋葉aaaki大佬的整合包,功能齐全、开箱即用,但很多人的电脑要么显卡不行,要么内存不够,跑起来卡顿甚至直接报错。这时候,云服务就成了一个绝佳的解决方案。而“趋动云”作为国内一个专注于AI算力租赁的平台,以其相对清晰的计费方式和预置的AI环境,进入了我们的视野。
这个项目的核心,就是把原本运行在Windows系统上的“秋葉Stable Diffusion整合包v4”,移植并部署到趋动云的Linux服务器环境中。听起来像是把Windows软件装到Linux上?没错,但远不止于此。这背后解决的,是个人创作者、小型团队乃至学生群体面临的几个核心痛点:高昂的本地硬件成本、复杂的本地环境配置、以及算力资源的灵活性与可及性。通过云端部署,你只需要一台能上网的普通电脑,甚至是一台平板,就能调用云端强大的GPU(比如RTX 3090, A100等)来流畅地进行AI绘画、模型训练等任务。
我自己实测下来,在趋动云上部署成功后,不仅生成图片的速度远超我本地老旧的GTX 1060,更重要的是环境纯净、独立,再也不用担心因为本地安装各种Python包导致环境冲突,或者把C盘塞满了。整个过程,相当于在云端拥有了一台专属于你的、高性能的“AI绘画工作站”,按需使用,按量付费,对于想深入体验SD但又不想一次性投入上万块升级设备的朋友来说,性价比极高。
2. 核心思路与方案选型:为什么是趋动云+Linux整合包?
在决定动手之前,我仔细对比了几种常见的云端部署方案。市面上有Google Colab、Kaggle Notebooks等免费选项,也有AWS、阿里云等大型云厂商。最终选择趋动云部署秋葉整合包的Linux版,是基于以下几个核心考量:
2.1 为什么选择趋动云?
首先,网络访问的稳定性和速度是国内用户必须考虑的第一要素。趋动云作为国内服务,在镜像拉取、数据上传下载、WebUI访问等环节的延迟和成功率上,通常比直接访问海外服务有显著优势。其次,它的计费模式对AI实验相对友好,提供了多种按小时计费的GPU机型,从性价比高的RTX 3090到高端的A100,选择灵活。你可以跑完任务就关机,只支付实际使用的时长,避免了包月或包年带来的闲置成本。最后,趋动云平台预置了PyTorch、CUDA等深度学习基础环境,省去了大量底层驱动和框架安装的麻烦,让我们可以更专注于应用本身的部署。
2.2 为什么是秋葉整合包的Linux版?
秋葉aaaki的整合包在Windows社区享有盛誉,因为它集成了Stable Diffusion WebUI、常用的插件、模型管理以及一系列优化脚本,真正做到了一键安装。然而,其官方版本是针对Windows设计的。幸运的是,社区有爱好者基于原版整合包的核心,制作了适用于Linux系统的版本。这个Linux版通常以Docker镜像或脚本化安装包的形式存在,它剥离了Windows特有的依赖(如某些DirectX库),并适配了Linux下的路径和权限管理。
选择这个版本,意味着我们不需要从零开始编译WebUI、配置Python环境、一个个安装插件。它提供了一个相对完整的、经过验证的“软件包”,极大地降低了在Linux服务器上部署SD的复杂度。我们的工作,就变成了如何将这个“软件包”正确地安装和运行在趋动云的服务器实例中。
2.3 整体技术路径规划
我们的部署路径可以概括为:“创建云端实例 -> 传输整合包 -> 安装依赖 -> 启动服务 -> 远程访问”。
- 环境准备:在趋动云上创建一台带有GPU的云服务器实例,选择预装了NVIDIA驱动和Docker的镜像,这是最省事的起点。
- 文件传输:将秋葉整合包Linux版的安装文件(通常是一个压缩包或Git仓库)上传到云服务器。这里会用到
scp或sftp命令,或者利用趋动云自带的数据盘功能。 - 解压与安装:在服务器上解压文件,并运行其提供的安装脚本。这个脚本会自动处理大部分依赖安装和环境配置。
- 配置与启动:根据Linux环境的特点,可能需要修改一些配置文件,例如监听地址(改为
0.0.0.0以允许远程访问)、端口号等,然后启动Stable Diffusion WebUI服务。 - 远程访问:趋动云实例会提供一个公网IP或访问域名。我们通过浏览器访问
http://<云服务器IP>:<端口号>,就能看到熟悉的WebUI界面了。
注意:不同版本的整合包具体步骤可能有细微差异,但整体逻辑是相通的。关键在于理解每一步在做什么,这样遇到问题才能自己排查。
3. 详细部署实操全流程记录
下面,我将以一次完整的部署过程为例,拆解每一个步骤的操作细节和背后的原理。
3.1 趋动云实例创建与环境准备
首先登录趋动云控制台。在创建实例时,有几个关键选择点:
- 镜像选择:这是最重要的一步。不要选择纯净的Ubuntu或CentOS镜像,那样你需要自己安装NVIDIA驱动、CUDA、Docker,非常耗时且易出错。直接在趋动云的“社区镜像”或“官方镜像”中,搜索包含“PyTorch”、“GPU”、“Docker”等关键词的镜像。例如,选择类似
PyTorch 2.0.1 + CUDA 11.8 + Docker这样的镜像。这相当于拿到了一个已经装好显卡驱动和容器引擎的“毛坯房”,我们后续的安装工作会轻松很多。 - GPU机型选择:对于Stable Diffusion生成图片,显存是关键。RTX 3090(24GB显存)是目前性价比很高的选择,可以运行大多数基础模型和LoRA。如果只是体验和测试,RTX 3080(10GB/12GB)或更低的型号也可以,但可能会在生成高分辨率图片或使用某些大型模型时遇到显存不足。根据你的预算和需求选择。
- 存储配置:系统盘(比如50GB)通常只装系统和基础环境。强烈建议额外挂载一个数据盘(例如100GB或更大)。因为Stable Diffusion的模型文件(checkpoint、LoRA、VAE)体积巨大,动辄几个GB一个。把整合包和所有模型都放在数据盘上,一是避免撑爆系统盘导致实例无法启动,二是下次创建新实例时,可以复用这块数据盘,模型无需重复下载。
- 网络与安全组:实例创建后,记下分配的公网IP。同时,务必在安全组(或防火墙规则)中开放你计划使用的端口,比如默认的
7860端口。否则,后续你将无法从本地浏览器访问WebUI。
创建成功后,通过SSH连接到你的云服务器。你会看到一个干净的Linux终端,但nvidia-smi命令应该能正常输出GPU信息,docker --version也能看到Docker已安装。
3.2 获取与上传秋葉整合包Linux版
秋葉整合包的Linux版本通常不会在官方渠道高调发布,需要我们在GitHub、论坛或网盘上寻找社区维护的版本。搜索关键词如“sd-webui-aki-linux”或“stable-diffusion-webui-linux-portable”。找到一个可靠的发布地址后,我们将其下载并上传到服务器。
这里提供两种主流方法:
方法一:使用scp命令从本地上传(适合文件在本地电脑)假设你本地下载的整合包叫sd-webui-linux.tar.gz,服务器IP是123.123.123.123,你想放到服务器的/data目录下(假设数据盘已挂载在此)。
# 在本地电脑的终端(或PowerShell/Git Bash)中执行 scp -P 22 /path/to/your/sd-webui-linux.tar.gz root@123.123.123.123:/data/输入服务器密码后,文件就开始传输了。
方法二:在服务器上直接使用wget或git下载(适合有直接下载链接)如果整合包提供了直接的下载链接或Git仓库地址,直接在服务器上操作更快捷。
# 连接到服务器后 cd /data # 进入数据盘目录 # 使用wget下载压缩包 wget https://example.com/path/to/sd-webui-linux.tar.gz # 或者使用git克隆仓库 git clone https://github.com/someuser/sd-webui-linux.git实操心得:我推荐使用
git clone的方式,如果项目活跃,后续更新和修复问题会比较方便。使用前,先用ls -la命令查看一下下载的文件,确认文件完整且大小合理。
3.3 解压整合包与安装依赖
上传或下载完成后,进入文件所在目录进行解压。
cd /data tar -zxvf sd-webui-linux.tar.gz # 如果是zip包,则使用:unzip sd-webui-linux.zip解压后会得到一个目录,例如sd-webui。进入该目录,通常里面会有一个主要的安装脚本,比如webui.sh或launch.py。
关键一步:运行安装脚本
cd sd-webui # 首先,给脚本添加执行权限 chmod +x webui.sh # 然后运行它。注意,这里通常不需要sudo,在用户目录下运行即可。 ./webui.sh这个脚本首次运行时,会自动执行一系列操作:
- 创建Python虚拟环境:在项目目录下创建一个
venv文件夹,隔离项目依赖,避免污染系统环境。 - 安装PyTorch等核心依赖:根据脚本配置,安装指定版本的PyTorch及CUDA支持。因为我们的镜像已经预装了CUDA,所以这一步通常会比较顺利。
- 安装Stable Diffusion WebUI及其插件依赖:通过
pip安装gradio、xformers、accelerate等一大堆Python包。 - 下载必要的模型文件:有些整合包会尝试自动下载默认的Stable Diffusion模型(如v1.5)。由于网络原因,这一步在国内很可能失败或极慢。
注意事项:首次运行
./webui.sh时,可能会在终端停留很长时间,并滚动大量pip install的信息。这是正常的,请耐心等待。如果卡在某个包的安装上很久,可以按Ctrl+C中断,然后尝试修改pip源为国内镜像(如清华源)后重新运行。修改方法是在运行脚本前,设置环境变量:export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple。
3.4 关键配置调整与启动参数
安装脚本跑通后,理论上就可以启动了。但为了确保能远程访问并优化性能,我们需要了解并修改启动参数。这些参数通常在webui.sh脚本中,或者通过修改webui-user.sh(如果有)来设置。
最直接的方式是在启动命令后添加参数。例如,我们手动启动:
# 在项目目录下,激活虚拟环境后手动启动(如果webui.sh不能直接运行的话) source venv/bin/activate python launch.py --listen --port 7860 --xformers --medvram解释一下这几个常用参数:
--listen:这是实现远程访问的关键。默认WebUI只监听本地回环地址(127.0.0.1),添加此参数后,它会监听所有网络接口(0.0.0.0),这样外网才能访问到。--port 7860:指定服务运行的端口。你可以换成其他未被占用的端口,比如--port 8080。--xformers:启用xformers库,这是一个用于优化Transformer模型(SD的核心)内存和速度的库,能显著减少显存占用并提升生成速度,强烈建议开启。--medvram:中等显存优化模式。如果你的GPU显存小于8GB,这个参数很有用。它会采用一些策略让SD在显存不足时也能工作,但可能会轻微降低速度。对于24GB的RTX 3090,通常不需要这个。
如何持久化配置?每次手动输入参数很麻烦。更常见的做法是编辑webui-user.sh文件(如果没有就创建一个)。在这个文件里,你可以设置环境变量COMMANDLINE_ARGS:
# webui-user.sh export COMMANDLINE_ARGS="--listen --port 7860 --xformers --enable-insecure-extension-access"保存后,以后只需要运行./webui.sh,它就会自动读取这些参数。
3.5 启动服务与验证
配置好参数后,再次运行启动脚本:
./webui.sh如果一切顺利,终端会输出大量日志,最后会出现类似这样的信息:
Running on local URL: http://127.0.0.1:7860 Running on public URL: https://xxxxxx.gradio.app注意,这里虽然显示了127.0.0.1,但因为我们在参数中加了--listen,所以服务已经在0.0.0.0:7860上监听了。
现在,打开你本地电脑的浏览器,在地址栏输入:http://<你的趋动云服务器公网IP>:7860。 如果能看到Stable Diffusion WebUI的界面,恭喜你,部署成功了!
提示:第一次打开WebUI时,可能会加载一段时间,因为它需要初始化模型和组件。请耐心等待。
4. 模型管理与进阶配置
部署成功只是第一步,要让这个云端SD工作站真正好用,还需要进行一些管理和优化。
4.1 如何安装和管理模型?
WebUI界面上可以直接下载模型,但在云端服务器上,由于网络问题,成功率很低。最佳实践是在本地下载好模型,然后上传到服务器。
模型通常存放在项目目录下的models文件夹里,里面又有子文件夹:
Stable-diffusion/:存放核心的大模型(.ckpt或.safetensors文件)。Lora/:存放LoRA模型。VAE/:存放VAE模型。Embeddings/:存放文本嵌入模型。
操作步骤:
- 在本地用迅雷、IDM等工具从CivitAI等模型网站下载好你需要的模型文件。
- 使用
scp或SFTP工具(如FileZilla)将这些文件上传到服务器对应的目录,例如/data/sd-webui/models/Stable-diffusion/。 - 上传完成后,在WebUI界面左上角的模型下拉框旁边,点击刷新按钮,新上传的模型就会出现在列表里。
4.2 安装插件
秋葉整合包通常预装了一些常用插件,但你可能还需要其他插件。有两种方式:
- 通过WebUI界面安装:在“Extensions”标签页,点击“Available”,然后点击“Load from”。列表加载后,找到想要的插件点击“Install”。这种方式同样受网络影响。
- 手动安装(推荐):在GitHub上找到插件的仓库,使用
git clone命令将其克隆到extensions目录下。
克隆后,重启WebUI,插件就会自动加载。cd /data/sd-webui/extensions git clone https://github.com/some-plugin-repo.git
4.3 性能优化与持久化
- 使用数据盘:再次强调,所有模型、插件、输出图片都建议放在挂载的数据盘(如
/data)上,而不是系统盘。这样即使销毁了云服务器实例,数据依然保留,下次创建新实例时挂载上就能直接用。 - 开机自启动:如果你希望服务器重启后SD能自动运行,可以配置一个systemd服务。创建一个服务文件,如
/etc/systemd/system/sd-webui.service:
然后执行[Unit] Description=Stable Diffusion WebUI Service After=network.target [Service] Type=simple User=root WorkingDirectory=/data/sd-webui Environment="PATH=/data/sd-webui/venv/bin" ExecStart=/data/sd-webui/venv/bin/python /data/sd-webui/launch.py --listen --port 7860 --xformers Restart=on-failure [Install] WantedBy=multi-user.targetsystemctl enable sd-webui和systemctl start sd-webui即可。 - 使用Nginx反代(可选):如果你觉得带端口号的IP地址不好记,或者想启用HTTPS,可以安装和配置Nginx作为反向代理,将域名(或IP)直接指向7860端口的服务。
5. 常见问题与故障排查实录
在实际部署过程中,你几乎一定会遇到一些问题。下面是我踩过的一些坑和解决方法。
5.1 启动时卡在“Installing requirements”或某个包安装失败
问题原因:网络连接超时或pip源速度慢。解决方案:
- 中断进程 (
Ctrl+C)。 - 设置国内pip镜像源。在运行脚本前执行:
export PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple export PIP_TRUSTED_HOST=pypi.tuna.tsinghua.edu.cn - 或者,手动进入虚拟环境安装关键包:
source venv/bin/activate pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 # 根据CUDA版本调整 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
5.2 访问http://IP:7860连接被拒绝或无法访问
问题原因:
- 防火墙/安全组未放行端口:这是最常见的原因。登录趋动云控制台,找到你的实例,检查其安全组规则,确保入方向规则允许了你所使用的端口(如7860)。
- 启动参数未加
--listen:检查你的启动命令或webui-user.sh配置,必须包含--listen。 - 服务未成功启动:回到服务器终端,查看
./webui.sh运行的日志,看是否有红色错误信息。可能因为依赖缺失、端口被占用等原因启动失败。
排查步骤:
- 在服务器上运行
netstat -tlnp | grep 7860,查看7860端口是否被监听,以及监听地址是否是0.0.0.0。 - 在服务器本地用curl测试:
curl http://127.0.0.1:7860,如果本地能通,说明服务是好的,问题出在网络或防火墙上。
5.3 生成图片时提示“CUDA out of memory”(显存不足)
问题原因:图片分辨率太高、使用了高精度模型、同时生成的批次太大,超出了GPU显存容量。解决方案:
- 添加启动参数:在启动命令中加入显存优化参数,如
--medvram或--lowvram。对于RTX 3090,通常不需要,但如果跑极大模型或高分辨率图时遇到,可以尝试--medvram。 - 调整生成参数:在WebUI中,降低生成图片的宽度和高度(如从1024x1024降到768x768);减少“Batch count”或“Batch size”。
- 使用显存更友好的模型:有些模型(如SDXL)对显存要求极高。可以尝试使用经过优化的版本,或者使用
--xformers参数(这个应该已经加了)。 - 启用模型卸载:有些插件或设置可以将模型暂时从显存移到内存,需要时再加载,但这会降低生成速度。
5.4 如何更新WebUI或整合包?
秋葉整合包Linux版通常是一个独立的项目,更新可能不如原版WebUI频繁。
- 更新核心WebUI:进入项目目录,执行
git pull(如果是从Git克隆的)。然后重启服务。注意,这可能会与整合包自带的修改产生冲突。 - 更新整合包本身:关注你下载整合包的源(GitHub仓库或发布页),按照作者的说明进行更新。更稳妥的方式是,将整个
sd-webui目录备份后,重新下载新版并覆盖(注意备份你的models和outputs等个人数据目录)。
5.5 服务器关机后,下次如何快速恢复?
这是云部署的优势所在。
- 数据持久化:确保你的模型、配置、输出目录都在独立的数据盘上(如
/data)。 - 记录启动命令:将有效的启动命令或
webui-user.sh配置文件保存好。 - 恢复流程:当需要时,在趋动云上重新创建一个同配置的GPU实例,选择同样的预装环境镜像。将数据盘挂载到新实例上(例如仍然挂载到
/data)。然后SSH连接新实例,直接进入/data/sd-webui目录,运行./webui.sh即可。因为所有依赖在镜像中已经存在,模型和数据也在数据盘里,所以能很快恢复服务。
整个过程,从创建实例到服务恢复访问,熟练的话可以在10分钟内完成。这比维护一台物理服务器要灵活和轻松得多。