Stable Diffusion v1.5 部署指南:GPU 加速与 Web 服务启动
Stable Diffusion v1.5 Archive(简称 SD1.5)作为文生图领域的常青树,凭借稳定的表现和广泛的社区支持,依然是许多创作者和开发者的首选。今天我们来聊聊如何在几分钟内完成这个经典模型的部署,并立即通过浏览器开始你的 AI 绘画创作。
环境准备与快速部署
部署过程其实很简单,几乎不需要复杂的配置。你只需要一个支持 GPU 的云服务器实例,然后按照以下步骤操作即可。
系统要求与准备工作
在开始之前,请确保你的环境满足以下基本要求:
- 操作系统:推荐使用 Ubuntu 20.04 或更高版本,其他 Linux 发行版也可。
- GPU 支持:需要 NVIDIA GPU,并已安装好相应的 CUDA 驱动(建议 CUDA 11.8 及以上)。
- 网络:能够正常访问互联网,用于下载模型文件。
- 存储空间:至少预留 10GB 的可用磁盘空间。
如果你使用的是云服务商提供的 GPU 实例,通常这些环境都已经预配置好了,可以直接进入下一步。
一键部署脚本
为了简化部署流程,这里提供一个整合的部署脚本。你只需要复制、粘贴、执行,就能完成大部分工作。
首先,登录到你的服务器,创建一个部署目录并进入:
mkdir -p ~/sd15-archive && cd ~/sd15-archive
然后,创建并编辑部署脚本 deploy.sh:
#!/bin/bash
echo "开始部署 Stable Diffusion v1.5 Archive..."
# 1. 更新系统包并安装基础依赖
echo "步骤 1: 安装系统依赖..."
sudo apt-get update
sudo apt-get install -y wget git python3 python3-pip python3-venv
# 2. 创建 Python 虚拟环境
echo "步骤 2: 创建 Python 虚拟环境..."
python3 -m venv venv
source venv/bin/activate
# 3. 安装 PyTorch 及相关库 (根据 CUDA 版本选择)
echo "步骤 3: 安装 PyTorch 和基础 AI 库..."
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install --upgrade pip
# 4. 克隆 WebUI 仓库 (这里以 Gradio 为例,轻量且易用)
echo "步骤 4: 克隆并设置 Web 界面..."
git clone https://github.com/gradio-app/gradio.git
cd gradio
pip install -e .
..
wget -O v1-5-pruned-emaonly.safetensors https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors?download=
> app.py <<
import gradio as gr
import torch
from diffusers import StableDiffusionPipeline
()
pipe = StableDiffusionPipeline.from_single_file(
,
torch_dtype=torch.float16
).to()
def generate_image(prompt, negative_prompt, steps, guidance_scale, width, height, seed):
seed == -1:
generator = None
:
generator = torch.Generator().manual_seed(seed)
with torch.autocast():
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=steps,
guidance_scale=guidance_scale,
width=width,
height=height,
generator=generator
).images[0]
params = {
: prompt,
: negative_prompt,
: steps,
: guidance_scale,
: width,
: height,
: seed
}
image, params
with gr.Blocks(title=) as demo:
gr.Markdown()
gr.Markdown()
with gr.Row():
with gr.Column():
prompt = gr.Textbox(label=, placeholder=, lines=3)
negative_prompt = gr.Textbox(label=, placeholder=, value=)
with gr.Row():
steps = gr.Slider(minimum=1, maximum=50, value=20, step=1, label=)
guidance_scale = gr.Slider(minimum=1.0, maximum=20.0, value=7.5, step=0.5, label=)
with gr.Row():
width = gr.Slider(minimum=256, maximum=1024, value=512, step=64, label=)
height = gr.Slider(minimum=256, maximum=1024, value=512, step=64, label=)
seed = gr.Number(label=, value=-1, precision=0)
generate_btn = gr.Button(, variant=)
with gr.Column():
output_image = gr.Image(label=, =)
output_json = gr.JSON(label=)
generate_btn.click(
fn=generate_image,
inputs=[prompt, negative_prompt, steps, guidance_scale, width, height, seed],
outputs=[output_image, output_json]
)
__name__ == :
demo.launch(server_name=, server_port=7860, share=False)
EOF

