AI 容器镜像部署 Stable Diffusion

简介: 本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出个人版文生图服务

背景介绍

Stable Diffusion 是于 2022 年发布的文本到图像的潜在扩散模型,它可以根据文本提示词产生对应的图像。Stable Diffusion 模型是扩散模型的变种,可以通过逐步对随机高斯噪声进行去噪以获得感兴趣的样本。与传统生成模型相比,Stable Diffusion 可以在不需要复杂训练过程或大量数据集的情况下生成出真实感强、细节丰富的图像。目前该项目已经应用于多种场景,包括计算机视觉、数字艺术、视频游戏等领域。

本文将基于阿里云 AMD 服务器和龙蜥 AI 容器服务,快速搭建出个人版文生图服务。

创建 ECS 实例

创建 ECS 实例时需要根据模型的大小对实例规格进行选择。由于整个模型的推理过程需要耗费大量的计算资源,运行时内存占用大量内存,为了保证模型运行的稳定,实例规格选择 ecs.g8a.16xlarge。同时,Stable Diffusion 的运行需要下载多个模型文件,会占用大量存储空间,在创建实例时,存储盘至少分配 100 GB。最后,为了保证环境安装以及模型下载的速度,实例带宽分配 100 Mbps。

实例操作系统选择 Alibaba Cloud Linux 3.2104 LTS 64 位。

创建 Docker 运行环境

安装 Docker

在 Alibaba Cloud Linux 3 上安装 Docker 可以参考 安装Docker并使用(Linux)。安装完成后请确保 Docker 守护进程已经启用。

systemctl status docker

创建并运行 PyTorch AI 容器

龙蜥社区提供了丰富的基于 Anolis OS 的容器镜像,其中就包括针对 AMD 优化的 PyTorch 镜像,可以使用该镜像直接创建一个 PyTorch 运行环境。

docker pull registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1
docker run -d -it --name pytorch-amd --net host -v $HOME:/root registry.openanolis.cn/openanolis/pytorch-amd:1.13.1-23-zendnn4.1

以上命令首先拉取容器镜像,随后使用该镜像创建一个以分离模式运行的,名为pytorch-amd的容器,并将用户的家目录映射到容器中,以保留开发内容。

手动部署流程

进入容器环境

PyTorch 容器创建运行后,使用以下命令进入容器环境。

docker exec -it -w /root pytorch-amd /bin/bash

后续命令需在容器环境中执行,如意外退出,请使用以上命令重新进入容器环境。如需查看当前环境是否为容器,可以使用以下命令查询。

cat /proc/1/cgroup | grep docker
# 有回显信息则为容器环境

软件安装配置

在部署 Stable Diffusion 之前,需要安装一些必备软件。

yum install -y git git-lfs wget mesa-libGL gperftools-libs

后续下载预训练模型需要启用 Git LFS 的支持。

git lfs install

下载源码与预训练模型

下载 Stable Diffusion web UI 的源码。

git clone -b v1.5.2 https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

Stable Diffusion web UI 在部署过程中需要克隆多个代码仓库,由于克隆过程受到网络波动,可能会出现失败。

mkdir stable-diffusion-webui/repositories && cd $_
git clone https://github.com/Stability-AI/stablediffusion.git stable-diffusion-stability-ai
git clone https://github.com/Stability-AI/generative-models.git generative-models
git clone https://github.com/crowsonkb/k-diffusion.git k-diffusion
git clone https://github.com/sczhou/CodeFormer.git CodeFormer
git clone https://github.com/salesforce/BLIP.git BLIP

所有代码仓库克隆成功后,需要将各代码仓库切换到指定分支,以保证生成结果的稳定。

git -C stable-diffusion-stability-ai checkout cf1d67a6fd5ea1aa600c4df58e5b47da45f6bdbf
git -C generative-models checkout 5c10deee76adad0032b412294130090932317a87
git -C k-diffusion checkout c9fe758757e022f05ca5a53fa8fac28889e4f1cf
git -C CodeFormer checkout c5b4593074ba6214284d6acd5f1719b6c5d739af
git -C BLIP checkout 48211a1594f1321b00f14c9f7a5b4813144b2fb9

在 Stable Diffusion 运行时,需要使用到预训练模型,由于模型文件较大(约 11G),这里将手动下载预训练模型。

cd ~ && mkdir -p stable-diffusion-webui/models/Stable-diffusion
wget "https://www.modelscope.cn/api/v1/models/AI-ModelScope/stable-diffusion-v1-5/repo?Revision=master&FilePath=v1-5-pruned-emaonly.safetensors" -O stable-diffusion-webui/models/Stable-diffusion/v1-5-pruned-emaonly.safetensors
mkdir -p ~/stable-diffusion-webui/models/clip
git clone --depth=1 https://gitee.com/modelee/clip-vit-large-patch14.git ~/stable-diffusion-webui/models/clip/clip-vit-large-patch14

由于 Stable Diffusion 运行时需要从 HuggingFace 下载 ViT 多模态模型,由于该模型已经使用国内镜像下载,需要修改脚本文件直接从本地调用该模型。

sed -i "s?openai/clip-vit-large-patch14?${HOME}/stable-diffusion-webui/models/clip/clip-vit-large-patch14?g" ~/stable-diffusion-webui/repositories/stable-diffusion-stability-ai/ldm/modules/encoders/modules.py

部署运行环境

在部署 Python 环境之前,可以更换 pip 下载源,加快依赖包的下载速度。

mkdir -p ~/.config/pip && cat > ~/.config/pip/pip.conf <<EOF
[global]
index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/
[install]
trusted-host=mirrors.cloud.aliyuncs.com
EOF

安装 Python 运行依赖。

pip install cython gfpgan open-clip-torch==2.8.0 httpx==0.24.1
pip install git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1

为了保证 ZenDNN 可以完全释放 CPU 算力,需要设置两个环境变量:OMP_NUM_THREADSGOMP_CPU_AFFINITY

cat > /etc/profile.d/env.sh <<EOF
export OMP_NUM_THREADS=\$(nproc --all)
export GOMP_CPU_AFFINITY=0-\$(( \$(nproc --all) - 1 ))
EOF
source /etc/profile

最后运行脚本自动化部署 Stable Diffusion 的运行环境。

cd ~/stable-diffusion-webui
venv_dir="-" ./webui.sh -f --skip-torch-cuda-test --exit

运行网页版 Demo

在项目源码中提供了网页版 Demo,可以用来和 Stable Diffusion 进行实时交互。

export LD_PRELOAD=/usr/lib64/libtcmalloc.so.4
export venv_dir="-" 
python3 launch.py -f --skip-torch-cuda-test --skip-version-check --no-half --precision full --use-cpu all --listen

部署完成后可以通过 http://<ECS 公网 IP>:7860 来访问服务。

image.png

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 机器学习/深度学习 算法
​​LLM推理效率的范式转移:FlashAttention与PagedAttention正在重塑AI部署的未来​
本文深度解析FlashAttention与PagedAttention两大LLM推理优化技术:前者通过分块计算提升注意力效率,后者借助分页管理降低KV Cache内存开销。二者分别从计算与内存维度突破性能瓶颈,显著提升大模型推理速度与吞吐量,是当前高效LLM系统的核心基石。建议收藏细读。
1258 125
|
5月前
|
人工智能 物联网 调度
边缘大型AI模型:协作部署与物联网应用——论文阅读
论文《边缘大型AI模型:协作部署与物联网应用》系统探讨了将大模型(LAM)部署于边缘网络以赋能物联网的前沿框架。针对传统云端部署高延迟、隐私差的问题,提出“边缘LAM”新范式,通过联邦微调、专家混合与思维链推理等技术,实现低延迟、高隐私的分布式智能。
1010 6
边缘大型AI模型:协作部署与物联网应用——论文阅读
|
5月前
|
人工智能 测试技术 API
构建AI智能体:二、DeepSeek的Ollama部署FastAPI封装调用
本文介绍如何通过Ollama本地部署DeepSeek大模型,结合FastAPI实现API接口调用。涵盖Ollama安装、路径迁移、模型下载运行及REST API封装全过程,助力快速构建可扩展的AI应用服务。
1726 6
|
6月前
|
人工智能 运维 监控
AI加持下的容器运维:别再当“背锅侠”,让机器帮你干活!
AI加持下的容器运维:别再当“背锅侠”,让机器帮你干活!
301 8
|
5月前
|
机器学习/深度学习 人工智能 监控
Java与AI模型部署:构建企业级模型服务与生命周期管理平台
随着企业AI模型数量的快速增长,模型部署与生命周期管理成为确保AI应用稳定运行的关键。本文深入探讨如何使用Java生态构建一个企业级的模型服务平台,实现模型的版本控制、A/B测试、灰度发布、监控与回滚。通过集成Spring Boot、Kubernetes、MLflow和监控工具,我们将展示如何构建一个高可用、可扩展的模型服务架构,为大规模AI应用提供坚实的运维基础。
432 0
|
5月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
1396 57
|
6月前
|
人工智能 安全 中间件
阿里云 AI 中间件重磅发布,打通 AI 应用落地“最后一公里”
9 月 26 日,2025 云栖大会 AI 中间件:AI 时代的中间件技术演进与创新实践论坛上,阿里云智能集团资深技术专家林清山发表主题演讲《未来已来:下一代 AI 中间件重磅发布,解锁 AI 应用架构新范式》,重磅发布阿里云 AI 中间件,提供面向分布式多 Agent 架构的基座,包括:AgentScope-Java(兼容 Spring AI Alibaba 生态),AI MQ(基于Apache RocketMQ 的 AI 能力升级),AI 网关 Higress,AI 注册与配置中心 Nacos,以及覆盖模型与算力的 AI 可观测体系。
1321 62
|
5月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
667 30
|
5月前
|
设计模式 人工智能 自然语言处理
3个月圈粉百万,这个AI应用在海外火了
不知道大家还记不记得,我之前推荐过一个叫 Agnes 的 AI 应用,也是当时在 WAIC 了解到的。
677 2

热门文章

最新文章