Tessera: тайловый апскейл видео 4K и 8K для MiniMax H3

ComfyUI Wikinews

Tessera это набор узлов ComfyUI, который уточняет клипы MiniMax H3 тайл за тайлом до 2K, 4K и 8K, с условиями для каждого тайла и потоковым VAE.

Tessera опубликован 30 октября 2026 года пользователем hashu786 как пак из девяти нод ComfyUI для видео MiniMax H3. Он берёт уже увеличенное полотно, уточняет его тайл за тайлом и чанк за чанком до 2K, 4K или 8K и выполняет потоковые кодирование и декодирование VAE, чтобы клип в полном разрешении никогда не приходилось целиком держать в памяти. Код и пример рабочего процесса: hashu786/ComfyUI-Tessera.

H3 хорошо справляется с короткими клипами в 544p, но обходится дорого выше этого разрешения. Существующие пути к более высокому разрешению либо перегенерируют кадр в большем размере и мирятся с более медленным и менее стабильным проходом, либо увеличивают пиксели и теряют детали. Tessera выбирает третий путь: сохраняет исходный клип как референс, который модель уже понимает, увеличивает изображение нейтральным ресемплером и позволяет H3 заново отрендерить каждый тайл этого полотна при точном локальном условии.

Пак поставляется как обычные ноды ComfyUI без дополнительных зависимостей, версия 1.0.0, а его pyproject.toml содержит блок [tool.comfy] (DisplayName = "Tessera", PublisherId = "hashu786") для публикации в Comfy Registry.

Исходник в 544pРендер Tessera с 4x увеличением
Исходный клип в 544pРендер 3840x2176 из промо-видео проекта

Тайлы, привязанные к основе, а не друг к другу

Очевидный способ уточнить большой латентный тензор по частям: пройти тайлы по порядку и позволить каждому унаследовать готовую границу соседей. Автор Tessera измерил, почему это не работает с H3: дрейф совмещения накапливается вдоль ряда, составляя +1.5, -2.1, -9.3 и -15.5 px на четырёх тайлах, потому что каждый тайл обусловлен догадкой предыдущего тайла, а не источником.

Tessera меняет зависимость на обратную. Каждый тайл проходит денойзинг относительно собственных кропов одного и того же эталона:

  • Ссылки DiT обрезаются до окна тайла и отображаются на латентную сетку этого окна, так что видеоссылка и опциональная ссылка на изображение показывают патч кадра этого тайла, а не весь кадр.
  • Текст перекодируется из собственного кропа тайла, если подключён вход clip. Без него штатная нода-ссылка передаёт Qwen весь кадр, и каждому тайлу сообщается о субъекте, которого в нём может не быть; в заметках это называют ghost-subject failure (ошибка субъекта-призрака).
  • Гиды остаются на точной сетке основы, и нода сразу выдаёт ошибку, если они не совпадают.

Тайлы также используют одно глобальное поле шума, а не генерируют шум отдельно для каждого тайла; полосы вдоль шва генерируются обоими соседями с полосой seam_regen в 32 px, а затем смешиваются через взвешенно-нормализованное накопление. Два тайла, которые оба видели полосу, дают точный кроссфейд между рендерами вместо призрачного смешения.

Расписание: один шаг головы и два шага хвоста

Сигмы по умолчанию: 1.0, 0.7, 0.4, 0.0. Это один шаг с дистиллированной turbo-головой, затем два шага euler в тонком хвосте. Внутриполосный гайд рассматривается как спектральный клэмп, поэтому он зашумляется только для хвоста (guide_release 0.8), а не на всём прогоне. Голова решает структуру при полной информации, хвост добавляет текстуру при свободе, а к моменту передачи уже зафиксировано достаточно сигнала, чтобы содержимое не могло сдвинуться.

По измерениям на референсном клипе автора эта комбинация даёт +67% локальной детализации тайла относительно базовой линии с замороженной границей при шиммере, близком к базовому, а переключение идентичного расписания с LMS на euler дало +56% детализации при сокращении шиммера примерно на треть. Два шага головы хуже, а не лучше: это сводит состояние к мягкому гайду и стоит 21% детализации, а дистиллированная turbo-модель, прошедшая два шага через средние сигмы, в одном измеренном прогоне выдала NaN в латент.

Тайлы без признаков пропускаются, а не подвергаются выборке. Кроп ровной пластины даёт модели ноль информации и полную свободу, и автор поймал её на том, что она закрашивала референсное лицо в пустое небо и дым, причём хуже, когда было включено повторное кодирование текста для каждого тайла. flat_skip (по умолчанию 4.0) сохраняет пластину в этих окнах и возвращает время выборки. Решение принимается для каждого тайла и каждого чанка по энергии пикселей источника, поскольку две метрики в латентном пространстве были опровергнуты подряд.

Потоковая обработка того, что не помещается

При 4x 15-секундный клип занимает около 36 ГБ как ComfyUI IMAGE в float32 на каждую копию, а обычный граф держит три копии плюс два кодирования всего клипа целиком. Это приводит к OOM на любой GPU, поэтому Tessera разделяет работу:

  • Streamed Encode выполняет upscale и VAE-кодирование источника во временных окнах по сетке блоков H3 размером 17 px, с повторным кодированием прогрева 22 px на каждое окно, которое затем отбрасывается. В проверенном прогоне от 544p до 4K пиковый буфер пикселей на стороне кодирования составил около 5,2 ГБ против 57,6 ГБ для копии всего клипа, которая вызывала OOM в обычном графе.
  • Streamed Decode собирает выход за одно потоковое декодирование, с буфером на диске при объёме свыше 4 ГБ. Ранее холст 8K из 124 кадров падал при выделении 49,7 ГБ в монолитном декодировании.
  • Проверка диска (disk preflight) выполняется до первой выборки тайла, поскольку потребность декодирования во временном пространстве известна уже на этапе планирования. Один прогон выборки 8K уже потратил 8 часов 49 минут, прежде чем не смог выделить буфер 67,6 ГБ.
  • Страховка от сбоев: если этап выхода всё же падает, уточнённый латентный сохраняется как tessera_rescue_<timestamp>.latent, и граф всё равно возвращает латентный, поэтому LoadLatent вместе с потоковым декодером восстанавливает рендер без повторной выборки.

Длинные клипы с быстрым движением проходят через Temporal Dilate / Decimate, который повышает частоту кадров на интервал и заново рассчитывает тайминг выхода на обратном пути. Окна чанков рассчитываются в реальных секундах содержимого: dilation делит содержимое в каждом окне, поэтому временное окно масштабируется вместе с коэффициентом dilation, чтобы сохранить одинаковое количество структуры движения на окно. Планировщик также привязывает начало каждого окна в середине интервала к кратному 5 латентным, что соответствует собственной токенной синхронизации H3: один головной токен, затем четыре кадра на токен. Такое решение приняли после 15-секундного теста, показавшего мерцающий метроном с шагом 17-пиксельных кадров через каждый невыровненный чанк.

Замеренные прогоны

Эталонный прогон автора для пути от 544p до 4K: 15-секундный клип, 617 дилатированных кадров, 18 окон, 24 тайла в 3 выровненных чанках, 3 часа в общей сложности на одной GPU. Покадровая осцилляция составила 2,44% в среднем и 16,1% в пике против 2,32% и 12,3% у эталонного прогона того же клипа в 2x, при этом в автокорреляции не осталось сигнатуры 17 кадров.

Прогоны, опубликованные в Banodoco Discord на следующий день после релиза, от людей, не являющихся автором:

  • LDWorks David, RTX 6000 Pro с весами BF16: 121 кадр, от 2K до 4K, 84 шага refine при примерно 32 с/шаг, 44 минуты до достижения 93%.
  • seitanism: 1344x768, 362 кадра, дилатированные по времени до 583 кадров и отрендеренные в 2688x1536 за 46:58; второй клип от 1920x1088 до 3840x2176 за 53:08; третий с кадром-якорем Qwen-Image 2.1 за 27:48. Его оценка: это не исправляет все артефакты движения, но держится достойно.
  • mdkb, на 12 GB RTX 3060, протестировал его на соответствие собственному 20-минутному бюджету и попросил рецепт для карт с низким VRAM. Автор ответил, что такой ещё впереди: поставляемые по умолчанию настройки ориентированы на карты с высоким VRAM.

Использование ComfyUI

Установите, клонировав репозиторий в ComfyUI/custom_nodes/. При запуске консоль выводит [Tessera] loaded 9 node(s), когда всё зарегистрировано.

НодаЧто делает
Tessera Tile Planпробный прогон: сетка тайлов, раскладка чанков и стоимость ДО траты времени GPU
Tessera Streamed Encodeисточник в латентный plate плюс guide-условие, во временных окнах
Tessera Refineплиточный рефайнер с условием для каждого тайла, чанкингом, hero-тайлами, пропуском плоских тайлов и выходом с защитой от падений
Tessera Streamed Decodeавтономный потоковый декодер, а также путь восстановления для спасённых латентов
Tessera Guide Anchorвставляет детальный стоп-кадр в тонкую полосу гида, с коррекцией сдвига и распространением по потоку
Tessera Temporal Dilate / Decimateдилатация частоты кадров по отдельным промежуткам и точное перетаймирование
Tessera Guide Grainсогласованное зерно для гида
Tessera Extra Optionsэкспертные настройки с проверенными значениями по умолчанию

Входящий в комплект рабочий процесс подключает исходный клип как H3-ссылку, Lanczos plate в выбранном масштабе, опциональный анкор первого кадра Qwen-Image 2.1 и пару LoRA, которую автор использует как фирменный рецепт (LMS detail LoRA из H3-пака Alissonerdx и 3-step turbo LoRA). Он нацелен на 4x при источнике 544p, с итогом 3840x2176.

Панель Tile Plan

Нода Tile Plan в промо-видео: сетка, чанки и прогнозируемая стоимость ДО запуска.

Модели, используемые в примере: MiniMax H3 ref2va (урезанная int8-сборка в конфигурации автора), видео- и аудио-VAE для H3, текстовый энкодер Qwen3-VL, а также опциональный checkpoint Qwen-Image 2.1 с его turbo LoRA и texture-fix VAE для анкорного стоп-кадра. Рабочий процесс также требует пакеты узлов SAM3 и KJ для опциональной hero-маски и узлов предпросмотра.

Ограничения, о которых стоит знать

  • Пример настроен на одну цель. Ожидаемый размер выхода и коэффициент масштабирования задаются отдельными виджетами; оба должны соответствовать клипу, который вы загружаете. Один тестировщик в Discord запустил готовый рабочий процесс на другом клипе, ожидая 2x, и получил холст 4K, который, по его оценке, был хуже источника.
  • Опорное изображение (still anchor) рассчитано на 2x. На 4x и выше примечания рекомендуют оставлять его неподключённым и позволять модели рендерить начальный фрагмент, поскольку при сращивании выполняется кроссфейд между двумя разными вариантами рендеринга одной и той же текстуры.
  • Мерцание источника наследуется. Источник низкого разрешения, у которого собственная мелкодетальная составляющая «кипит», после апскейла превращается в увеличенное «плавание»: уточнение поднимает когерентность примерно до 0,75 и не может превысить этот уровень.
  • Склейки сцен носят рекомендательный характер. Оракул склеек выводит найденные кадры и рекомендует разделить клип в этих местах; короткие планы внутри одного окна не могут одновременно соответствовать и правилу тайминга начала, и бюджету времени содержимого.
  • Вторые проходы входят при уменьшенной sigma, например 1.0, 0.923, 0.55, 0.0, а опорное изображение второго прохода должно быть выходом первого прохода, а не повторно смягчённым промежуточным результатом.

Доступность

  • hashu786/ComfyUI-Tessera на GitHub, с example_workflows/tessera_upscaler.json и полными инженерными заметками в docs/LAWS.md
  • pyproject.toml содержит блок [tool.comfy] для Comfy Registry (DisplayName = "Tessera"); на момент сканирования пакет там ещё не был опубликован, поэтому устанавливайте его из репозитория
  • Референсные кадры в этой статье это кадры из промо-видео проекта, в котором сравнивается источник 544p с 4x-рендером

Комментарии

Войдите через GitHub, чтобы участвовать в обсуждении.

Загрузка комментариев…
Tessera: тайловый апскейл видео 4K и 8K для MiniMax H3 | ComfyUI Wiki