Как добавить свою кастомную ноду в template для Modal
Как добавить кастомную ноду ComfyUI в template Modal: сборка образа, requirements, отдельное хранилище моделей и контрольный JSON.
Короткий ответ. Чтобы добавить свою кастомную ноду ComfyUI в шаблон Modal, внесите её репозиторий и зависимости в сборку образа, а не устанавливайте вручную в одноразовый контейнер. Затем перезапустите сборку, проверьте стартовый лог ComfyUI и запустите минимальный workflow с этой нодой. Сохраняйте модели отдельно от исходников расширения.
Определите состав ноды
Найдите официальный репозиторий пакета, инструкцию установки, файл requirements.txt и требуемые модели. Документация ComfyUI объясняет, что зависимости должны устанавливаться в то же окружение, где работает сервер. Проверьте лицензию и версию пакета. Если нода предоставляется приватным репозиторием, продумайте защищённый способ доступа без записи токена в код образа.
Измените сборку образа
В Modal задайте установку исходников и Python-зависимостей на этапе построения контейнера. Закрепите commit или версию, если важна воспроизводимость. Не полагайтесь на ручной git clone после запуска: следующий контейнер может стартовать без изменений. Сравните путь custom_nodes с путём именно этой установки ComfyUI.
Разделите ноду и её веса
Код ноды и модели живут по разным правилам. Большие веса не всегда разумно включать в образ, особенно при частой пересборке. Поместите их в устойчивое хранилище и задайте путь, который читает загрузчик ноды. Убедитесь, что формат файлов и структура папки соответствуют README пакета. Пустой список моделей не обязательно означает ошибку установки Python.
Проверяйте в два этапа
Сначала откройте лог старта и убедитесь, что нет ImportError или ошибки requirements. Затем выполните небольшой API JSON, содержащий эту ноду. Если импорт успешен, а выполнение падает, ищите входные данные, модель, VRAM и доступ к файлам. Не проверяйте сразу большой workflow с десятками других пакетов: причина станет неразличимой.
Зафиксируйте расходы и доступ
После успешного теста сохраните конфигурацию образа и итоговый JSON. Проверьте, будет ли endpoint постоянно доступен и сколько стоит простой по правилам Modal. Публичный адрес ComfyUI защищайте в соответствии с вашим сценарием; не включайте секреты в шаблон.
На что обратить внимание при проверке
В процессе сборки проверяйте import расширения отдельно от скачивания моделей. Это сокращает время диагностики: если образ не собирается, проблема в Python-пакете; если собирается, но граф не выполняется, вероятнее входы или веса. Для воспроизводимости сохраните хеш commit ноды, а перед обновлением протестируйте новый вариант в отдельном развёртывании. Не смешивайте код приватного пакета с публичным шаблоном. Для длительного проекта подготовьте минимальный тестовый JSON и один небольшой входной файл, который можно прогнать после каждой пересборки без дорогого видеорендера.
Запишите команду запуска и способ доступа к endpoint в документации проекта. Иначе следующий участник команды может успешно пересобрать образ, но не знать, как проверить результат.
Для повторения эксперимента храните вместе исходный JSON, входное изображение или видео, названия файлов моделей и результат. Запишите версии ComfyUI и пользовательских нод, а также разрешение и длительность. При вопросе в сообществе приложите конкретный кадр, на котором виден дефект, и укажите, что уже проверено. Это помогает отличить ошибку сборки от ограничений самой модели и даёт возможность воспроизвести проблему.
Частые вопросы
Можно ли исправить проблему одним prompt?
Сначала проверьте входные файлы, соединения и совместимость модели. Prompt меняет текстовое условие, но не создаёт отсутствующую ноду и не подключает референс. Если схема исправна, меняйте формулировку только после контрольного прогона.
Как понять, что правка помогла?
Повторите короткий тест с прежними моделью, размером, seed и входным материалом. Меняйте один параметр за раз и сравнивайте конкретный дефект. Сохраняйте обе версии результата и workflow.