基于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)”,然后在进行后两个功能的体验。

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(九)mmdetection源码解读:训练过程中训练数据的调用DataLoader

目录 一、DataLoader创建过程中二、利用实例化data_loaders进行训练 一、DataLoader创建过程中 在训练过程train_detector函数中调用build_dataloader函数 train_detector(model, datasets, cfg, distributedFalse, validateTrue) #train_detector函数中 data_loaders [buil…

# 磁盘引导方式相关知识之BIOS、msdos、MBR、UEFI、gpt、esp、csm

磁盘引导方式相关知识之BIOS、msdos、MBR、UEFI、gpt、esp、csm 磁盘、分区、引导等知识经常似懂非懂,不能完全说清楚,梳理下: 序号主板芯片引导方式支持的磁盘分区表类型支持的磁盘分区表格式对应引导位置备注1BIOS传统方式(俗…

我的区块链笔记

区块链 中心化的账本,个人节点和中心节点的地位不对等,中心节点说了算。去中心化,个人节点就是公平的,根据一套规则,叫做公比机制。 区块链的本质,就是数据存储方式 区块链使用密码学算法产生的区块&…

利用AI技术提升乳腺癌诊断准确率

背景: 乳腺癌是全球女性最常见的癌症之一,早期诊断和治疗对提高治愈率和生存率至关重要。传统的乳腺X光检查和病理学诊断方法存在一定的误诊和漏诊率。近年来,人工智能技术在医学领域得到了广泛应用,为提升乳腺癌诊断准确率提供了…

企微SCRM营销平台MarketGo-ChatGPT助力私域运营

一、前言 ChatGPT是由OpenAI(开放人工智能)研发的自然语言处理模型,其全称为"Conversational Generative Pre-trained Transformer",即对话式预训练转换器。它是GPT系列模型的最新版本,GPT全称为"Gene…

指针进阶(一)

指针进阶 1. 字符指针面试题 2. 指针数组3. 数组指针3.1 数组指针的定义3.2 &数组名VS数组名 3.3 数组指针的使用4. 数组传参和指针传参4.1 一维数组传参4.2 二维数组传参4.3 一级指针传参4.4 二级指针传参 前言 指针的主题,我们在初级阶段的《指针》章节已经接…

在Windows下设置将EXE开机自启动

在Windows下设置将EXE开机自启动,有多种方法。以下是两种常用的方法: 方法一:通过注册表 打开“运行”(快捷键:Win R),输入:reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windo…

NLP(2)--Transformer

目录 一、Transformer概述 二、输入和输出 三、Encoder 四、Decoder 五、正则化处理 六、对于结构的改进? 七、AT vs NAT 八、Cross-attention 一、Transformer概述 Transformer模型发表于2017年Google团队的Attention is All you need这篇论文,…

蓝桥杯打卡Day1

文章目录 全排列八皇后 一、全排列IO链接 本题思路:本题是一道经典的全排列问题&#xff0c;深度优先搜索即可解决。 #include <bits/stdc.h>constexpr int N10;std::string s; std::string ans; int n; bool st[N];void dfs(int u) {if(un){std::cout<<ans<…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 29 日论文合集)

文章目录 一、分割|语义相关(20篇)1.1 VideoCutLER: Surprisingly Simple Unsupervised Video Instance Segmentation1.2 Compositional Semantic Mix for Domain Adaptation in Point Cloud Segmentation1.3 Referring Image Segmentation Using Text Supervision1.4 Semi-Sup…

kafka知识小结

1.为什么分区数只能增加,不能减少? 按照Kafka现有的代码逻辑而言,此功能完全可以实现,不过也会使得代码的复杂度急剧增大。 另外实现此功能需要考虑的因素很多,比如删除掉的分区中的消息该作何处理? 如果随着分区一起消失则消息的可靠性得不到保障; 如果需要保留则又需…

前后端数据加密传输基于AES+RSA实现

前后端数据加密传输基于AESRSA实现 什么是AES和RSA AES AES&#xff08;Advanced Encryption Standard&#xff09;是一种对称加密算法&#xff0c;它的加密速度快&#xff0c;安全性也比较高&#xff0c;是目前广泛使用的加密算法之一。AES的密钥长度可以选择128位、192位和…

NetSuite海鲜书 - 知识会汇编 用户篇 2023

NetSuite2021年初夏&#xff0c;NetSuite知识会成立。它由本人&#xff0c;上海德之匠信息技术有限公司的毛岩喆&#xff08;江湖人称Rick&#xff09;发起建立。建立的初衷秉承Rick个人博客“学问思辨&#xff0c;企业信息化路上的行者”的理念&#xff0c;期望能够在NetSuite…

Flink基础

Flink architecture job manager is master task managers are workers task slot is a unit of resource in cluster, number of slot is equal to number of cores(超线程则slot2*cores), slot一组内存一些线程共享CPU when starting a cluster,job manager will allocate a …

docker快速安装-docker一键安装脚本

1.下载/配置安装脚本 touch install-docker.sh #!/bin/bash #mail:ratelcloudqq.com #system:centos7 #integration: docker-latestclear echo "######################################################" echo "# Auto Install Docker …

使用 skopeo 批量同步 helm chart 依赖镜像

skopeo 是什么&#xff1f; skepeo 是一个开源的容器镜像搬运工具&#xff0c;比较通用&#xff0c;各种镜像仓库都支持。 安装 skopeo 参考官方的 安装指引。 导出当前 helm 配置依赖哪些镜像 $ helm template -n monitoring -f kube-prometheus-stack.yaml ./kube-prome…

大数据组件-Flume集群环境搭建

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

Mybatis对数据加密解密(AES加解密)操作

1&#xff1a;使用mybatis的BaseTypeHandler类&#xff0c;编写需要加密解密处理的类型 package com.example.poi.typeHandlers;import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.symmetric.AES; import org.apache.ibatis.type.BaseTypeHandler; import org.apa…

vue3+vite+ts项目适配各种分辨率解决方案

现在的电脑屏幕和尺寸越来越多样化&#xff0c;对于前端开发来说&#xff0c;适配各种屏幕成了大难题&#xff0c;开发中一个实际例子&#xff1a;开发一个导航栏&#xff0c;ui给的是1920*60的尺寸&#xff0c;前端开发的时候&#xff0c;在自己电脑缩放比例中开发的&#xff…

AOP到底是啥

AOP到底是啥 前言面向切面编程到底是啥意思那么要怎么实现面向切面编程呢&#xff1f;成果 前言 回忆起来&#xff0c;第一次听到这三字母是博主在上大二的时候&#xff0c;那时候看的一脸懵逼&#xff0c;现在马上研二了才想起来回顾下。 只记得当时面向对象编程还没整明白&…