基于docker快速搭建facechain环境
前言
最近facechain比较火,之前在huggingface试过,在SD的落地场景上提供了思路。 这两天刚拿到一台RTX3090的服务器,在本地部署也遇到了两个问题,给大家分享一下。
一、facechain是什么?
官方是这样说的:FaceChain是一个可以用来打造个人数字形象的深度学习模型工具。用户仅需要提供最低一张照片即可获得独属于自己的个人形象数字替身。FaceChain支持在gradio的界面中使用模型训练和推理能力,也支持资深开发者使用python脚本进行训练推理。
二、使用步骤
注:基本都是参考官方的README。
1.环境准备
1.1 兼容性验证
FaceChain是一个组合模型,使用了包括PyTorch和TensorFlow在内的机器学习框架,以下是已经验证过的主要环境依赖:
- python环境: py3.8, py3.10
- pytorch版本: torch2.0.0, torch2.0.1
- tensorflow版本: 2.8.0, tensorflow-cpu
- CUDA版本: 11.7
- CUDNN版本: 8+
- 操作系统版本: Ubuntu 20.04, CentOS 7.9
- GPU型号: Nvidia-A10 24G
1.2 资源要求
- GPU: 显存占用约19G
- 磁盘: 推荐预留50GB以上的存储空间
2.安装
官方提供了三种安装方式,本文只介绍docker方式。
# Step1: 机器资源
您可以使用本地或云端带有GPU资源的运行环境。
如需使用阿里云ECS,可访问: https://www.aliyun.com/product/ecs,推荐使用”镜像市场“中的CentOS 7.9 64位(预装NVIDIA GPU驱动)
# Step2: 将镜像下载到本地 (前提是已经安装了docker engine并启动服务,具体可参考: https://docs.docker.com/engine/install/)
docker pull registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0
# Step3: 拉起镜像运行
docker run -it --name facechain -p 7860:7860 --gpus all registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.7.1-py38-torch2.0.1-tf1.15.5-1.8.0 /bin/bash
# (注意: 如果提示无法使用宿主机GPU的错误,可能需要安装nvidia-container-runtime, 参考:https://github.com/NVIDIA/nvidia-container-runtime)
# Step4: 在容器中安装gradio
pip3 install gradio
pip3 install controlnet_aux==0.0.6
# Step5: 获取facechain源代码
GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/modelscope/facechain.git --depth 1
cd facechain
python3 app.py
# Note: FaceChain目前支持单卡GPU,如果您的环境有多卡,请使用如下命令
# CUDA_VISIBLE_DEVICES=0 python3 app.py
# Step6: 点击 "public URL", 形式为 https://xxx.gradio.live
注:如果运气好,顺利的话,直接点击:https://xxx.gradio.live,就可以操作了。
3. 安装问题
3.1 docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]]报错.
1、未安装nvidia-container-runtime导致。在官方安装的step3已经提示。可以试着安装nvidia-container-runtime.
2、已经安装nvidia-container-runtime但发现还是报这问题。卸载重新安装。
3、安装nvidia-container-runtime之后,一定要记着重启机器(我按网上安了好几遍,继续报
错,最后重启就OK了,大写尴尬)
3.2 Could not create share link. Missing file: /xxxx/frpc_linux_amd64_v0.2.
解决办法:根据提示下载该文件即可。
wget https://cdn-media.huggingface.co/frpc-gradio-0.2/frpc_linux_amd64
mv frpc_linux_amd64 frpc_linux_amd64_v0.2
mv frpc_linux_amd64_v0.2 /home/miniconda3/envs/llm/lib/python3.11/site-packages/gradio
chmod +x frpc_linux_amd64_v0.2 // 注:要给该文件执行权限,否则会报3.3错误
3.3 Could not create share link. Please check your internet connection or our status page: https://status.gradio.app
该错误是因frpc_linux_amd64_v0.2文件没有执行权限。
chmod +x frpc_linux_amd64_v0.2
注:网上还有解决方法(没试过):默认服务器只监听127.0.0.1这个地址,无法共享访问,需要把app.py最后一行做如下修改:
demo.queue(status_update_rate=1).launch(server_name="0.0.0.0",server_port=7860,share=True)
3.4 style_ list not defined
出现此问题,是因为你没有按照顺序执行facechain。
形象体验(Inference) 和 艺术照(Inpaint) 都是基于形象定制(Train)的训练的结果来的,所以在尝试facechain功能时,先进行“形象定制(Train)”,然后在进行后两个功能的体验。