FaceFusion 换脸提速指南:执行线程数如何设置,3 步拨到最优点
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
FaceFusion 是一款做人脸替换、换脸与人脸增强的处理平台。它跑得快不快,很大程度取决于一个滑块——执行线程数。这篇带你把它从默认值 8 拨到你机器上的最优点,并教你崩了怎么救。
一条视频的处理时间,能差出几倍 📉
同一个 3 分钟的视频,线程数设 4 和设 16,总耗时能差出接近一倍。原因是线程数直接等于"同一时刻同时处理几帧"——帧是天然可并行的,窗口开得合理,出活就快。你现在要做的第一件事:打开任务管理器看你的 CPU 物理核心数,这是后面所有判断的基准。
3 步打开线程滑块,锁定 1~32 的合法区间
第 1 步,UI 里在左侧执行区找到 EXECUTION THREAD COUNT 滑块;第 2 步,命令行直接传--execution-thread-count 12;第 3 步,无论怎么调,合法值都被 facefusion/choices.py 卡死在 1 到 32 之间,越界直接报错。想确认边界,打开 facefusion/uis/components/execution_thread_count.py 看滑块的最小、最大值来源即可。
先设 8,再朝物理核心数逼近
命令行默认就是 8(见 facefusion/program.py),把它当起点最稳。接着:物理 4 核就从 8 往下试 4~6;8 核以上再往上加到 12~16。每个线程都要吃内存,内存 8GB 以下就别超过核数的一半。动作:把滑块从 8 拨到你的物理核心数,跑一条片,记下耗时。
线程数到底在并行什么:一帧一个工位 🍽️
它是字面意义的"同时开工的工位数",每个工位负责一帧,而不是 CPU 超线程那种"多算一点"。后厨(你的 GPU/CPU 算力)才是瓶颈,窗口开太多,工人在门口干等,出餐反而慢。这段逻辑写在 facefusion/workflows/to_video.py,把线程数塞进线程池:
max_workers = state_manager.get_item('execution_thread_count')这行代码就是"开几个工位"的开关,后面所有帧都往这个池子里丢。
用同一目标片跑两次,验证是否真提速
判断调参有没有用,唯一可信的办法是 A/B。固定同一条目标视频、同样的处理器组合,线程数 8 跑一遍记下进度条耗时,改成 12 再跑一遍。两次差值大于 5% 才算数;几乎不变,说明你已撞到 GPU 或磁盘 I/O 的天花板,别再空耗窗口了。
崩了或不提速:3 种情况的对应动作
- 直接闪退 / 内存爆:先把线程数砍半,再关掉吃内存的后台应用,还不行就把输出分辨率调低。
- 速度纹丝不动:检查进度条是否卡在合并视频那一步——那一步不走线程池,加线程无效。
- 时快时慢、进度条卡顿:用 facefusion/process_manager.py 的状态(pending / processing / stopping)判断当前卡在哪阶段,再决定是等它跑完还是手动停止。
执行线程数速查清单
- 合法区间 1~32,CLI 默认 8,UI 滑块与命令行共用同一份状态
- 初值取物理核心数,内存紧张就再除以二
- 验证必须同片 A/B,差值 >5% 才有效
- 闪退先砍线程,再降分辨率,最后查磁盘
你机器是几核几线程?跑出来最好的线程数是多少,评论区报个数字,帮后面的人省一步试错。
【免费下载链接】facefusionIndustry leading face manipulation platform项目地址: https://gitcode.com/GitHub_Trending/fa/facefusion
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考