ComfyUI FaceSwap — готовый темплейт для RunPod

Поднимает на RunPod полностью настроенный ComfyUI с пайплайном замены лица:

  1. Flux.2 Klein 9b — переносит голову с одного фото на другое, сохраняя свет, ракурс и пропорции
  2. Z-Image Turbo + FaceDetailer — заново отрисовывает лицо в высоком разрешении, сюда подключается персональная LoRA

Оба этапа работают в связке и оба обязательны. Flux хорошо ставит голову по свету и ракурсу, но лицо у него выходит лишь похожим. Z-Image затем вырезает это лицо и рисует его заново — уже с обученной на конкретном человеке LoRA. Отсюда и настоящее сходство.

Ничего устанавливать руками не нужно. Один раз создаёшь темплейт — дальше запуск в два клика.

Железо: рассчитано на L40S (48 ГБ VRAM). Минимум — 24 ГБ VRAM и 32 ГБ RAM.


Что нужно иметь

  • аккаунт на RunPod с пополненным балансом
  • аккаунт на HuggingFace — бесплатный

Шаг 1. Токен HuggingFace

Нужен, чтобы скачать модель Flux. Свой, личный — чужие токены не используй.

  1. Открой https://huggingface.co/settings/tokens
  2. Create new token
  3. Тип — Read (не Write)
  4. Название любое, например runpod
  5. Create token → скопируй и сохрани в блокнот

HuggingFace показывает токен только один раз. Потеряешь — сделаешь новый, ничего страшного.


Шаг 2. Принять лицензию Flux

  1. Открой https://huggingface.co/black-forest-labs/FLUX.2-klein-9b-fp8
  2. Убедись, что залогинен
  3. Нажми Agree на серой плашке

Выбирать там нечего, полей нет — просто кнопка.

⚠️ У FLUX.2 Klein некоммерческая лицензия. Использование результатов в коммерческих целях она не разрешает. Это твоя зона ответственности.

Обойти этот шаг и всё равно пользоваться воркфлоу не получится: Flux здесь делает первый этап, без него замена лица не работает. Переключатель WANT_FLUX=0 из таблицы настроек существует для тех, кто собирает что-то своё только на Z-Image — для этого воркфлоу его выключать нельзя.


Шаг 3. Создать темплейт в RunPod

Консоль RunPod → левое меню Templates → New Template.

Поле Значение
Template Name ComfyUI-FaceSwap
Template Type Pod
Container Image runpod/pytorch:1.3.1-cu1300-torch291-ubuntu2404
Container Disk 20 GB
Volume Disk 80 GB
Volume Mount Path /workspace
Expose HTTP Ports 8188,8888
Expose TCP Ports 22

Container Start Command (в некоторых версиях поле называется Docker Command):

bash -c "curl -sL https://huggingface.co/cocount21/comfy-faceswap-setup/resolve/main/provision.sh -o /provision.sh && bash /provision.sh 2>&1 | tee /workspace/provision.log"

Environment Variables — добавь одну переменную:

Key Value
HF_TOKEN оставь пустым

Пустым — потому что заполнять её ты будешь при запуске пода, своим токеном. Так она видна в форме деплоя и её не забудешь.

Нажми Save Template.


Шаг 4. Запустить

  1. Pods → Deploy
  2. Выбери L40S
  3. Change Template → свой ComfyUI-FaceSwap
  4. В блоке Environment Variables впиши свой токен в HF_TOKEN
  5. Deploy On-Demand

Шаг 5. Подождать

Первый запуск — 10–20 минут, качается около 40 ГБ моделей. ComfyUI стартует последним, раньше времени его дёргать бесполезно.

Смотреть прогресс: карточка пода → Logs → Container Logs.

В конце скрипт печатает отчёт:

===========================  SUMMARY  ===========================
  OK       Flux-2-Klein-9b-fp8.safetensors
  OK       qwen_3_8b_fp8mixed.safetensors
  ...
=================================================================
  time: 812 s

  ALL GOOD - ComfyUI is starting on port 8188

Зелёное ALL GOOD — всё готово. Красные строки — смотри раздел «Если что-то пошло не так».


Шаг 6. Работать

  1. Карточка пода → Connect → HTTP Service → :8188
  2. Воркфлоу уже загружен — в левой панели ComfyUI, раздел Workflows
  3. Загрузи две картинки:
    • группа Your-Image — фото-основа: тело, поза, фон
    • группа Reference-Image — лицо, которое переносим
  4. Run

Результат — в ноде SaveImage с жёлтой рамкой. Вторая SaveImage показывает промежуточный результат Flux, до починки лица.

Своя LoRA

Залей свою LoRA в любой публичный репозиторий на HuggingFace и при деплое добавь переменную:

EXTRA_LORAS = твой_ник/твой_репозиторий:имя_файла.safetensors

Несколько — через запятую. Файлы лягут в models/loras/, останется выбрать их в ноде.


Настройки (Environment Variables)

Переменная По умолчанию Что делает
HF_TOKEN пусто твой read-токен HuggingFace
WANT_FLUX 1 этап Flux.2 Klein, ~19 ГБ, gated, non-commercial. Для этого воркфлоу выключать нельзя
WANT_ZIMAGE 1 этап Z-Image Turbo, ~21 ГБ, Apache 2.0. Для этого воркфлоу выключать нельзя
WANT_DETECTORS 1 детекторы лица для FaceDetailer, ~0.4 ГБ. Выключать нельзя
EXTRA_LORAS пусто свои LoRA: repo:file.safetensors, через запятую
GET_WORKFLOWS 1 подтянуть воркфлоу автоматически
START_JUPYTER 0 поднять JupyterLab на порту 8888
SKIP_MODELS 0 только ноды, без моделей — для быстрой проверки
COMFY_PORT 8188 порт ComfyUI
COMFY_REF пусто закрепить ComfyUI на конкретном коммите

Если что-то пошло не так

Скрипт проверяет доступ к Flux до скачивания и объясняет проблему прямо в логе.

В логе Причина Решение
HTTP 401 токен неверный или пустой сделать Read-токен, вписать в HF_TOKEN
HTTP 403 лицензия не принята нажать Agree на странице модели
BAD SIZE файл скачался битым перезапустить под, скрипт перекачает сам
TORCH CHANGED нода подменила torch сообщи автору темплейта
NODE MISSING не склонировалась нода перезапустить под

Полный лог лежит в поде: /workspace/provision.log


Что внутри

Ноды: ComfyUI-Manager, Impact-Pack, Impact-Subpack, Easy-Use, rgthree-comfy, utils-nodes

Модели:

Файл Размер Лицензия
Flux-2-Klein-9b-fp8 8.8 ГБ FLUX Non-Commercial
qwen_3_8b_fp8mixed 8.1 ГБ —
flux2-vae 0.3 ГБ —
bfs_head_v1 (LoRA свапа) 0.6 ГБ не указана автором
z_image_turbo_bf16 11.5 ГБ Apache 2.0
qwen_3_4b 7.5 ГБ Apache 2.0
ae (VAE) 0.3 ГБ Apache 2.0
face_yolov8m + SAM 0.4 ГБ —

Скрипт сверяет размер каждого скачанного файла с эталоном. Битый файл будет пойман сразу, а не через час непонятных ошибок.


Безопасность

  • Токен вписывай свой. Переменные окружения видны изнутри пода любому, у кого есть к нему доступ.
  • Используй Read-токен, не Write. Read не даёт ничего испортить.
  • Не вставляй токен в сам скрипт — только в переменную окружения.
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support