|
Download README.md from cocount21/comfy-faceswap-setup: direct link, hf CLI and curl.
- Browser
- Download file 9.93 kB
-
https://huggingface.co/cocount21/comfy-faceswap-setup/resolve/main/README.md
- Command line
-
hf download hf://cocount21/comfy-faceswap-setup/README.md
-
curl -L -o README.md https://huggingface.co/cocount21/comfy-faceswap-setup/resolve/main/README.md
9.93 kB
| license: apache-2.0 | |
| tags: | |
| - comfyui | |
| - runpod | |
| - faceswap | |
| # 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](https://runpod.io) с пополненным балансом | |
| - аккаунт на [HuggingFace](https://huggingface.co) — бесплатный | |
| --- | |
| ## Шаг 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 не даёт ничего испортить. | |
| - Не вставляй токен в сам скрипт — только в переменную окружения. | |