deepfacelab中文网

 找回密码
 立即注册(仅限QQ邮箱)
查看: 200|回复: 16

劲爆!我算是首个在Macbook M4 Max上运行DFL的人了吧!

[复制链接]

1

主题

36

帖子

467

积分

初级丹师

Rank: 3Rank: 3

积分
467
 楼主| 发表于 昨天 19:53 | 显示全部楼层 |阅读模式
星级打分
  • 1
  • 2
  • 3
  • 4
  • 5
平均分:5  参与人数:1  我的评分:未评
本帖最后由 chicoluk 于 2024-11-22 19:53 编辑

首先说说背景

1. 半吊子程序员一个,为公司开发过信息管理系统,用的是php,对python不熟,对ai领域的编程更是一无所知。
2. 以前用intel的macbook,一直在bootcamp下使用dfl,显卡是radeon 20 vegas pro,可怜的4g显存。
3. 关于在mac上玩dfl的信息实在少得可怜(甚至几乎没有),于是决定折腾一下,并且成功后发出来给大家,供一个参考。


材料

1. macbook pro m4 max 128g+2t(稍低一点的配置应该也可以,当然效果没我的好,但也不是不行)
2. dfl的mac脚本(可在github搜索「DeepFaceLab_MacOS」下载)
3. dfl的win源码
4. chat gpt(对我来说是关键)


先上效果

1. bz为4、8、16时的效果(感觉已经和4090很接近了):

BS4的速度.png    BS8的速度.png    BS16的速度.png

2. 训练9个小时的效果(bs4):

9个小时的迭代次数(BS4).png

3. 工作温度、内存使用率、总功率等情况:

企业微信20241115-045128@2x.png    企业微信20241115-144639@2x.png    企业微信20241115-145221@2x.png    企业微信20241115-160024@2x.png

4. 训练过程中打开其他大型软件游刃有余,游戏除外,毕竟开启了GPU训练。理论上,想打游戏时转CPU训练(未实践)。


说说过程

1. 一波九折!适配mac m芯片的dfl源码在github中已关闭,只能用win源码自己魔改。
2. 对ai编程领域完全小白的我硬着头皮和chatgpt对话了近半个月!
3. 光搭建环境就搞到我头皮发麻!贯穿整个过程,插件之间不断出兼容性错误!
4. 修改的文件涉及很多,修改内容包括:
  • 启用视频编解码硬件加速(分解和合成视频部分)。
  • 启用m芯片的metal gpu加速。
  • gpu选择逻辑和调用适配(牵涉到整个工作流是否能成功调用gpu)。
  • 整个库代码调用适配。
  • 等等等等……
5. s3fd(切脸引擎)问题,死活不能切脸,当我准备放弃用虚拟机使用win来切脸时,同时正在对代码和环境做了一番其他适配之时,突然又行了……
6. 训练前开启预览历史选择问题,dfl调用的是OpenCV容器,但却死活弹不出窗口并报错,后来用了macOs自带的gui接口(使用「预览」打开图片)才解决,很奇怪的是训练窗口也是用OpenCV却没问题,这部分改了3、4天。
7. 弯路:选择gpu编号的代码部分需要修改,因为这牵涉到整个工作流中的调用逻辑。但无论我怎么改,一直调用的还是cpu,来到了第3天才想到,不会是选择gpu编号后没有正确返回给其他代码,导致训练时一直没正确调用gpu吧?结果还真是!


工作流适配情况(只说我用到的)

1. 分解视频帧——ok
2. 提取faceset——ok
3. 排序、加强、重命名、打包faceset——ok
4. faceset管理——可使用light room(win版中有内置的图片查看器)
5. 编辑landmark——landmark不能直观编辑,错误或漏提的还是需要使用win中的mve(听说mac也有landmark工具,但未开始研究
6. 遮罩训练——ok
7. facset训练——ok
8. 合成——ok
9. 输出视频——ok

完整工作流脚本大概如下:

企业微信20241122-193244@2x.png

再奉上环境配置(我只能做到这了)requirements.txt
# python version 3.9.20
absl-py==2.1.0
annotated-types==0.7.0
anyio==4.6.2.post1
appdirs==1.4.4
asgiref==3.8.1
astunparse==1.6.3
attr==0.3.1
attrs==24.2.0
azure-core==1.32.0
azure-storage-blob==12.24.0
bleach==5.0.1
boto==2.49.0
boto3==1.35.63
botocore==1.35.63
cachetools==5.5.0
certifi==2024.8.30
cffi==1.17.1
charset-normalizer==3.4.0
click==8.1.7
colorama==0.4.4
cryptography==43.0.3
Cython==0.29.26
defusedxml==0.7.1
Deprecated==1.2.15
distro==1.9.0
Django==4.2.16
django-annoying==0.10.6
django-cors-headers==3.6.0
django-csp==3.7
django-debug-toolbar==3.2.1
django-environ==0.10.0
django-extensions==3.2.3
django-filter==2.4.0
django-migration-linter==5.1.0
django-model-utils==4.1.1
django-ranged-fileresponse==0.1.2
django-rq==2.5.1
django-storages==1.12.3
django-user-agents==0.4.0
djangorestframework==3.15.2
drf-dynamic-fields==0.3.0
drf-flex-fields==0.9.5
drf-generators==0.3.0
easydict==1.13
exceptiongroup==1.2.2
expiringdict==1.2.2
ffmpeg-python==0.2.0
filelock==3.16.1
flatbuffers==24.3.25
fsspec==2024.10.0
future==1.0.0
gast==0.4.0
google-api-core==2.23.0
google-auth==2.36.0
google-auth-oauthlib==1.0.0
google-cloud-appengine-logging==1.5.0
google-cloud-audit-log==0.3.0
google-cloud-core==2.4.1
google-cloud-logging==3.11.3
google-cloud-storage==2.18.2
google-crc32c==1.6.0
google-pasta==0.2.0
google-resumable-media==2.7.2
googleapis-common-protos==1.66.0
grpc-google-iam-v1==0.13.1
grpcio==1.67.1
h11==0.14.0
h5py==3.12.1
httpcore==1.0.7
httpx==0.27.2
humansignal-drf-yasg==1.21.10.post1
idna==3.10
ijson==3.3.0
imageio==2.36.0
importlib_metadata==8.5.0
inflection==0.5.1
isodate==0.7.2
jax==0.4.30
jaxlib==0.4.30
Jinja2==3.1.4
jiter==0.7.1
jmespath==1.0.1
joblib==1.4.2
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
keras==2.12.0
Keras-Preprocessing==1.1.2
label-studio-sdk==1.0.7
launchdarkly-server-sdk==8.2.1
libclang==18.1.1
lockfile==0.12.2
lxml==5.3.0
lxml_html_clean==0.4.1
Markdown==3.7
markdown-it-py==3.0.0
MarkupSafe==3.0.2
mdurl==0.1.2
ml-dtypes==0.3.2
mpmath==1.3.0
mtcnn==0.1.1
namex==0.0.8
networkx==3.2.1
nltk==3.9.1
numexpr==2.8.4
numpy==1.23.5
oauthlib==3.2.2
openai==1.54.4
opencv-python==4.5.5.64
opentelemetry-api==1.28.1
opt_einsum==3.4.0
optree==0.13.1
ordered-set==4.0.2
packaging==24.2
pandas==2.2.3
pillow==11.0.0
proto-plus==1.25.0
protobuf==3.20.3
psycopg2-binary==2.9.10
pyasn1==0.6.1
pyasn1_modules==0.4.1
pyboxen==1.3.0
pycparser==2.22
pydantic==2.9.2
pydantic_core==2.23.4
Pygments==2.18.0
pynput==1.7.7
pyobjc-core==10.3.1
pyobjc-framework-ApplicationServices==10.3.1
pyobjc-framework-Cocoa==10.3.1
pyobjc-framework-CoreText==10.3.1
pyobjc-framework-Quartz==10.3.1
PyQt5==5.15.11
PyQt5-Qt5==5.15.15
PyQt5_sip==12.15.0
PyQt6==6.2.3
PyQt6-Qt6==6.7.3
PyQt6_sip==13.8.0
pyRFC3339==2.0.1
python-dateutil==2.9.0.post0
python-json-logger==2.0.4
pytz==2022.7.1
PyWavelets==1.4.1
PyYAML==6.0.2
redis==3.5.3
referencing==0.35.1
regex==2024.11.6
requests==2.32.3
requests-mock==1.12.1
requests-oauthlib==2.0.0
rich==13.9.4
rpds-py==0.21.0
rq==1.10.1
rsa==4.9
rules==3.4
s3transfer==0.10.3
scikit-image==0.19.1
scipy==1.13.1
semver==3.0.2
sentry-sdk==2.18.0
six==1.16.0
sniffio==1.3.1
sqlparse==0.5.2
sympy==1.13.1
tensorboard==2.12.3
tensorboard-data-server==0.7.2
tensorflow-estimator==2.12.0
tensorflow-io-gcs-filesystem==0.37.1
tensorflow-macos==2.12.0
tensorflow-metal==1.1.0
termcolor==2.5.0
tifffile==2024.8.30
toml==0.10.2
torch==2.5.1
torchvision==0.20.1
tqdm==4.62.3
typing_extensions==4.12.2
tzdata==2024.2
ua-parser==0.18.0
ujson==5.10.0
uritemplate==4.1.1
urllib3==1.26.20
user-agents==2.2.0
webencodings==0.5.1
Werkzeug==3.1.3
wrapt==1.14.1
xmljson==0.2.1
zipp==3.21.0


写在最后

1. 为什么不买台式机?主要工作场景不是换脸,也不是玩游戏,在主要工作场景外能很好地玩dfl、甚至游戏,目前已经是非常意外的惊喜。
2. 在mac上玩dfl门槛太高,win上人家做好直接可用的东西,在mac上得折腾死才能用。但本人有点强逼症和牛脾气,对喜欢的事情很执着,不是那么容易知难而退。
3. 吹爆chat-gpt!虽然它并不能一次过解决你的问题(这回就试过上百个版本都不能解决同一个问题,还反复犯错),但通过不段喂缺失的、更精准的信息给它,最终还是会解决问题。当然它给出的代码也需要有一定的理解能力,否则解决起来非常麻烦。

总之,最后起码在mac上顺利运行了,而且效果还不错!给各位大大一个参考,也不要问我怎么搞,问chat-gpt吧!哈哈!谢谢大家!

评分

参与人数 5贡献 +5 收起 理由
tgyoyo + 1 非常牛!
mcsnow + 1 十分给力!
Terea + 1 非常牛!
fghfdg + 1 十分给力!
NewClive + 1 非常牛!

查看全部评分

回复

使用道具 举报

1

主题

36

帖子

467

积分

初级丹师

Rank: 3Rank: 3

积分
467
 楼主| 发表于 7 小时前 | 显示全部楼层
yxyao 发表于 2024-11-23 08:27
比如640或更高分辨率模型,4090跑不动的那些大模型

喔,有空找个丹试试
回复 支持 1 反对 0

使用道具 举报

40

主题

862

帖子

4712

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
4712

万事如意节日勋章

发表于 昨天 21:02 | 显示全部楼层
论坛有你们更精彩
回复 支持 1 反对 0

使用道具 举报

1

主题

36

帖子

467

积分

初级丹师

Rank: 3Rank: 3

积分
467
 楼主| 发表于 昨天 21:10 | 显示全部楼层
pasanonic 发表于 2024-11-22 21:02
论坛有你们更精彩

多谢支持
回复 支持 反对

使用道具 举报

9

主题

218

帖子

3399

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
3399
QQ
发表于 昨天 21:23 | 显示全部楼层
这下不用担心爆显存了,想知道最高可以训练什么参数的模型呢?有没有试过呀?不过估计可能迭代相对较慢?
回复 支持 反对

使用道具 举报

1

主题

36

帖子

467

积分

初级丹师

Rank: 3Rank: 3

积分
467
 楼主| 发表于 昨天 23:32 | 显示全部楼层
yxyao 发表于 2024-11-22 21:23
这下不用担心爆显存了,想知道最高可以训练什么参数的模型呢?有没有试过呀?不过估计可能迭代相对较慢? ...

目前只试过BS16的,我有空试试更高的参数
回复 支持 反对

使用道具 举报

2

主题

76

帖子

1112

积分

初级丹圣

Rank: 8Rank: 8

积分
1112
发表于 20 小时前 | 显示全部楼层
牛!没话说!
回复

使用道具 举报

1

主题

36

帖子

467

积分

初级丹师

Rank: 3Rank: 3

积分
467
 楼主| 发表于 18 小时前 | 显示全部楼层

谢谢支持~!
回复 支持 反对

使用道具 举报

0

主题

6

帖子

226

积分

初级丹师

Rank: 3Rank: 3

积分
226
发表于 13 小时前 | 显示全部楼层
大神
回复

使用道具 举报

9

主题

218

帖子

3399

积分

高级丹圣

Rank: 13Rank: 13Rank: 13Rank: 13

积分
3399
QQ
发表于 12 小时前 | 显示全部楼层
chicoluk 发表于 2024-11-22 23:32
目前只试过BS16的,我有空试试更高的参数

比如640或更高分辨率模型,4090跑不动的那些大模型
回复 支持 反对

使用道具 举报

1

主题

62

帖子

1872

积分

初级丹圣

Rank: 8Rank: 8

积分
1872

万事如意节日勋章

发表于 8 小时前 | 显示全部楼层
试试更大的模型
回复 支持 反对

使用道具 举报

QQ|Archiver|手机版|deepfacelab中文网 |网站地图

GMT+8, 2024-11-23 20:34 , Processed in 0.150677 second(s), 44 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表