AI 容器镜像部署 Stable Diffusion

本文涉及的产品
资源编排,不限时长
无影云电脑企业版,4核8GB 120小时 1个月
无影云电脑个人版,黄金款:40核时/1个月有效
简介: 本文将基于阿里云 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

相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
15天前
|
人工智能 C语言 Windows
Ollama部署在线ai聊天
本文介绍了如何在Windows系统上安装和部署AI聊天模型Ollama,包括安装步骤、模型安装、运行模型项目,以及使用Ollama生成C语言平衡二叉树的完整代码。
29 2
Ollama部署在线ai聊天
|
4天前
|
人工智能
添加一个Stable Difussion图像生成应用,通过向AI助手简单的提问,即可快速搭建Stable Diffusion应用至自己的网站中,大幅提升开发效率。
添加一个Stable Difussion图像生成应用,通过向AI助手简单的提问,即可快速搭建Stable Diffusion应用至自己的网站中,大幅提升开发效率。
|
4天前
|
数据采集 人工智能 算法
《AI大模型助力客户对话分析》部署心得
该方案详细介绍了AI客服对话分析的实践原理和实施方法,涵盖从数据预处理到模型训练、预测的关键步骤。但技术细节和实施步骤的具体性不足,如模型训练算法、参数调优方法、数据预处理步骤等需要补充。部署体验中,环境配置和参数设置的指导不够明确,建议提供详细的环境配置指南和参数说明。示例代码可作为模板使用,但在函数计算部署中可能存在环境配置不匹配、依赖库冲突等问题。方案基本满足对话分析需求,但在模型泛化能力、实时分析、可视化界面及数据安全等方面仍有提升空间。
|
4天前
|
人工智能 弹性计算 自然语言处理
《触手可及,函数计算玩转 AI 大模型》解决方案体验与部署评测
在AI技术快速发展的背景下,大模型正推动各行业的智能化转型。企业为抓住机遇,纷纷寻求部署AI大模型以满足特定业务需求。阿里云函数计算凭借按量付费、卓越弹性和快速交付等优势,为企业提供了高效、安全的AI大模型部署方案。本文将详细介绍阿里云函数计算的技术解决方案及其在文生文、图像生成和语音生成等领域的应用实例,展示其在降低成本、提高效率和增强灵活性方面的显著优势。
|
5天前
|
人工智能 自然语言处理 搜索推荐
【通义】AI视界|微软Copilot Studio推出新功能,帮助企业更便捷地构建和部署AI代理
本文介绍了近期科技领域的五大重要动态:马斯克旗下xAI发布首个API,苹果内部研究显示ChatGPT比Siri准确率高25%,微软Copilot Studio推出新功能,霍尼韦尔与谷歌合作引入Gemini AI,浑水创始人建议买入科技七巨头股票。更多资讯请访问【通义】。
|
6天前
|
人工智能 Docker 容器
一、轻松部署的大模型开发平台dify.ai
一、轻松部署的大模型开发平台dify.ai
20 0
|
6天前
|
人工智能 Serverless
AI助理精准匹配------助力快速搭建Stable Difussion图像生成应用
【10月更文挑战第7天】过去在阿里云社区搭建Stable Diffusion图像生成应用需查阅在线实验室或官方文档,耗时且不便。现阿里云AI助理提供精准匹配服务,直接在首页询问AI助理即可获取详细部署步骤,简化了操作流程,提高了效率。用户可按AI助理提供的步骤快速完成应用创建、参数设置、应用部署及资源释放等操作,轻松体验Stable Diffusion图像生成功能。
|
7天前
|
传感器 机器学习/深度学习 人工智能
AI在智能制造中的革新应用与未来展望
【10月更文挑战第10天】AI在智能制造中的革新应用与未来展望
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
探索未来:AI技术的发展与应用
【10月更文挑战第9天】探索未来:AI技术的发展与应用
32 2
|
1天前
|
机器学习/深度学习 人工智能 算法
介绍一下AI在药物研发中的应用。
【10月更文挑战第16天】介绍一下AI在药物研发中的应用。
7 0