本地部署 Stable Diffusion WebUI 和 Facebook 的 seamless_communication

关于本地部署 Stable Diffusion WebUI 和 Facebook 的 seamless_communication

这篇笔记记录 SD webUI 和 seamless_communication 的部署,SD 自不必说,seamless_communication 是 facebook 的一系列多模态翻译 AI,支持文字到文字,语音到语音,语音到文字,文字到语音的翻译

这 seamless_communication 有一说一部署起来太难了,单论文字到文字好像也没那么准……以前部署过另一个本地翻译 AI LibreTranslate https://github.com/LibreTranslate/LibreTranslate,这个部署起来简单,但效果似乎也不好。考虑还是继续研究这方面的 AI 或工具有啥好用的,OCR 也得研究一个。

前置需求:

  1. NVIDIA 显卡(显存得够,我是 4060,8G)
  2. 安装 Docker
  3. 网络够好,能够访问 github

这里使用 Docker 部署,使用 nvidia/cuda 容器,提前安装上大部分所需依赖并配置好国内镜像源,python 使用 pyenv 去部署。这里没有为每个 AI 写专门的 Dockerfile 去创建它的环境,而是创建一个基础的 Dockerfile 作为出发点去部署各种 AI 项目。

部署和管理 AI 容器

关于容器的部署,参照 https://www.github.com/v-YOP/yki-ai-starter-image

下面是关于容器相关的运维操作(均需要在 docker-compose.yml 所在文件夹下执行):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 进入容器
docker compose exec -it ai-container bash

# 重新部署容器(会导致需要重新下载 python)(也可用来启动,如果没有更改 Dockerfile 和 docker-compose.yml 的话)
docker compose up -d --build

# 启动容器
docker compose start

# 停止容器(不删除!)
docker compose stop

# 删除容器(删除容器会导致需要重新下载 python)
docker compose down

容器重新部署后,需要重新安装 python,但不需要重新拉取 AI 和下载依赖、模型等操作,因为它们存储在宿主机中。

同一个 AI 容器可以拉取多个 AI 项目,但同时启动的话需要修改其端口。以及,每次要启动和使用某 AI 项目时,注意当前是否使用该项目对应的虚拟环境!在容器里执行which python,检查路径是否在当前项目下。

Stable Diffusion WebUI

首先进入容器,安装 python 3.10.14 并设置其为全局环境:

1
2
pyenv install 3.10.14
pyenv global 3.10.14

进入 /opt 目录,拉取 webUI 镜像:

1
2
cd /opt
git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

拉取完毕后,进入相应文件夹,创建虚拟环境(保证后面不用反复安装依赖,以及保证不同 AI 项目环境隔离):

1
2
cd /opt/stable-diffusion-webui
python -m venv .venv

然后,激活虚拟环境,安装依赖:

1
2
source .venv/bin/activate
pip install -r requirements.txt

最后,启动 webUI:

1
2
3
4
5
# 每次重新启动时都需要指定虚拟环境!
source .venv/bin/activate

# 第一次执行时会从 hugging-face 下载模型,会非常慢,可观察进度条
python launch.py

待控制台中出现类似 Running on local URL: http://127.0.0.1:7860 的字样时,浏览器访问本地 7860 端口即可。

seamless_communication

部分参考了 https://zhuanlan.zhihu.com/p/680985470。这玩意儿对网络要求很高,要下** 30G(!)**的模型,中途失败还得整个重来,注意生活质量。

安装 python,拉取镜像和 SD 是一样的,但安装依赖不一样——seamless_communication 的依赖是使用setup.py来安装的,它的安装命令是 pip install .

1
2
3
4
5
6
7
8
9
10
11
12
13
# 不需要重复安装,如果上面已经安装过了
pyenv install 3.10.14
pyenv global 3.10.14

cd /opt
git clone https://github.com/facebookresearch/seamless_communication.git

cd /opt/seamless_communication
python -m venv .venv

source .venv/bin/activate

pip install .

然后再安装 demo 的依赖,然后启动 demo:

1
2
3
4
5
6
7
8
# 安装 demo 的依赖
pip install -r demo/m4tv2/requirements.txt

# 每次重新启动时都需要指定虚拟环境!
source .venv/bin/activate

# 启动,第一次会跑一年
python demo/m4tv2/app.py

待控制台中出现类似 Running on local URL: http://127.0.0.1:7860 的字样时,浏览器访问本地 7860 端口即可。


本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 协议 ,转载请注明出处!