使用GPU实例部署AI生图Stable Diffusion WebUI服务
应用场景
StableDiffusion提供完整的文本生成图像能力,适用于生成创意海报、广告图生成、产品概念图、包装设计草稿、游戏角色、场景概念图和影视分镜草图等,适合企业内部创意团队和设计团队快速迭代产品原型。此外StableDiffusion还提供图生图能力,无需专业设计师即可完成复杂的图像编辑,降低成本,提高图片处理效率。
华为云为用户提供使用GPU实例来部署Stable Diffusion WebUI的操作指导,帮助客户在ECS上快速部署AI生图服务。
方案架构

方案优势
使用ECS GPU实例在conda虚拟环境上从0开始部署StableDiffusion WebUI服务,为企业提供高度可控、稳定可靠、可持续扩展的专属算力环境,确保AI生产力在隐私、安全的前提下高效落地。
资源和成本规划
| 资源 | 资源说明 | 成本说明 |
|---|---|---|
| 安全组 | 入方向规则:
| 免费 |
| 弹性云服务器 |
| ECS涉及以下几项费用:
具体的计费方式及标准请参考计费模式概述。 |
| miniconda | Miniconda 是一个精简版的Conda环境管理工具,用于管理Python环境和安装第三方库。 获取地址:https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh | 免费 |
| Stable Diffusion WebUI | Stable Diffusion WebUI是Stable Diffusion(SD)模型的可视化网页界面,支持文生图(Text-to-image)、图生图(Image-to-image)等操作。 获取地址:https://github.com/AUTOMATIC1111/stable-diffusion-webui.git | 免费 |
| 模型名称 | 最小所需规格 | GPU卡 |
|---|---|---|
| clip-vit-large-patch14 stable-diffusion-v1-5 | pi2.2xlarge.4 | T4(16G)*1 |
| p2s.4xlarge.8 | V100(32G)*1 | |
| g6.4xlarge.4 | T4(16G)*1 |
请联系华为云技术支持选择最适合您部署的GPU卡资源服务器。
前提条件
- 弹性云服务器所在安全组添加了如表3所示的安全组规则,具体步骤参见为安全组添加安全组规则。
使用GPU实例部署AI生图Stable Diffusion WebUI服务的主要步骤
GPU实例部署AI生图Stable Diffusion WebUI操作步骤如下:
实施步骤
- 创建GPU弹性云服务器。
本操作以安装了Ubuntu操作系统的pi2.2xlarge.4实例为例。实例配置请注意如下参数,其他参数说明,请参见自定义购买ECS。
- 实例:pi2.2xlarge.4。更多规格推荐,请参见表2 Stable Diffusion WebUI运行可选的GPU弹性云服务规格。
- 镜像:Ubuntu 22.04 server 64bit with NO Driver(40GiB),勾选“自动安装GPU驱动”,GPU驱动为535.161.08,CUDA为12.2.0。
建议选择Huawei Cloud EulerOS 2.0或Ubuntu 22.04中未安装驱动的公共镜像,自动安装GPU驱动。建议驱动版本:Driver-535.161.08,CUDA-12.2.0。
图2 GPU实例镜像选择和自动安装GPU驱动选择
- 弹性公网IP:选择“现在购买”,支持公网访问,用于依赖环境下载和Stable Diffusion WebUI服务的访问。
- 安全组:入方向放通TCP: 8000端口,用于访问WebUI服务。具体步骤请参见为安全组添加安全组规则。
- 存储与备份:为保证服务稳定运行与数据安全,建议采用系统盘与数据盘分离部署的架构。
- 系统盘:100GiB,用于安装操作系统、驱动及运行环境。
- 数据盘:100GiB,用于独立存储模型文件、生成图片及相关业务数据等。
- 驱动和CUDA的前置条件检查。
执行以下命令,查看显卡基本信息。
nvidia-smi
如果使用的不是推荐的镜像和驱动版本,请参考手动安装GPU加速型ECS的Tesla驱动方法更新驱动到535版本,CUDA更新到12.2。
- 初始化数据盘,用于存放模型文件及相关资源。
GPU弹性云服务器创建完成后,请参见初始化Linux数据盘进行数据盘初始化。本实践将数据盘挂载至/mnt/model目录,您可以根据业务需要自行定义目录。

- 创建conda虚环境。
- 执行以下命令,下载miniconda安装包。
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
- 执行以下命令,并按照回显提示信息进行操作,安装miniconda。
bash Miniconda3-latest-Linux-x86_64.sh
- 执行以下命令,将conda环境变量添加到启动文件中。
echo 'export PATH="$HOME/miniconda3/bin:$PATH"' >> ~/.bashrc source ~/.bashrc
- 执行以下命令,并按照回显提示信息进行操作,创建基于python3.10.6的虚环境。
conda create -n sdwebui python=3.10.6 conda activate sdwebui
- 执行以下命令,下载miniconda安装包。
- 下载模型文件。
- 执行以下命令,创建下载模型脚本。
vim download_models.py
按"i"键进入编辑模式,插入以下内容:
from modelscope import snapshot_download model_dir = snapshot_download('AI-ModelScope/stable-diffusion-v1-5', cache_dir='/mnt/model', revision='master')模型名称为AI-ModelScope/stable-diffusion-v1-5,本实践中模型的存储路径为/mnt/model,可以根据业务需要更换目录。

添加完成后,按“Esc”键退出编辑模式,并输入“:wq”后按“Enter”键,保存并退出文件。
- 执行以下命令,下载stable-diffusion模型。
pip install modelscope python download_models.py
等待模型下载完成。回显中显示“Download model 'AI-ModelScope/stable-diffusion-v1-5' successfully.”,则表示模型下载完成。
- 执行以下命令,修改model名字为clip模型。
vim download_models.py
按"i"键进入编辑模式,修改model名字为clip-vit-large-patch14。
model_dir = snapshot_download('AI-ModelScope/clip-vit-large-patch14', cache_dir='/mnt/model', revision='master')
修改完成后,按“Esc”键退出编辑模式,并输入“:wq”后按“Enter”键,保存并退出文件。
- 执行以下命令,下载clip模型
python download_models.py
等待模型下载完成。回显中显示“Download model 'AI-ModelScope/clip-vit-large-patch14' successfully.”,则表示模型下载完成。
ModelScope是国内的开源模型社区,在中国地区访问速度更快;若在海外环境使用,建议通过Hugging Face获取相应模型。
- 执行以下命令,创建下载模型脚本。
- 安装Stable Diffusion WebUI及其依赖。
- 执行以下命令,下载stable-diffusion-webui项目。
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git
- 执行以下命令,进入项目目录,修改项目配置
cd stable-diffusion-webui sed -i 's|stable_diffusion_repo = .*|stable_diffusion_repo = os.environ.get('"'"'STABLE_DIFFUSION_REPO'"'"', "https://github.com/w-e-w/stablediffusion.git")|' ./modules/launch_utils.py - 移动模型到项目目录。
mv /mnt/model/AI-ModelScope/stable-diffusion-v1-5/v1-5-pruned-emaonly.safetensors /root/stable-diffusion-webui/models/Stable-diffusion/ mkdir /root/stable-diffusion-webui/openai/ mv /mnt/model/AI-ModelScope/clip-vit-large-patch14 /root/stable-diffusion-webui/openai/
- 执行以下命令,下载stable-diffusion-webui项目。
- 启动Stable Diffusion WebUI。
执行以下命令,运行项目。
bash webui.sh -f --listen --port 8000 --no-hashing --no-download-sd-model --api
如果上述命令执行失败,提示Command: "/root/stable-diffusion-webui/venv/bin/python" -m pip install https://github.com/openai/CLIP/archive/d50d76daa670286dd6cacf3bcd80b5e4823fc8e1.zip --prefer-binary,请执行如下命令:
source venv/bin/activate pip install git+https://github.com/openai/CLIP.git bash webui.sh -f --listen --port 8000 --no-hashing --no-download-sd-model --api
- 打开Stable Diffusion WebUI界面进行测试。
- 在ECS详情界面查看弹性公网ip地址
- 打开浏览器输入http://弹性公网IP:8000 访问Stable Diffusion WebUI服务。

- 打开浏览器输入http://弹性公网IP:8000/docs 访问Stable Diffusion WebUI服务的API文档。

至此StableDiffusion WebUI就部署完毕并验证正常。您可以在本地浏览器访问http://弹性公网IP:8000通过会话或使用API调用进行图片生成或进行API调用。
