H3-metal: нативный инференс видео-модели MiniMax-H3 на Apple Silicon

H3-metal: нативный инференс видео-модели MiniMax-H3 на Apple Silicon

На GitHub опубликован проект h3.c (кодовое имя H3-metal), нативная реализация инференса видео-модели MiniMax-H3 для Apple Silicon на Metal, без CUDA и без прослойки MLX. Проект строится как последовательность рабочих вертикальных срезов: сначала детерминированные метаданные хоста и модели, затем портируемый паритет Metal-блоков, кодирование промпта, генерация видео и аудио по тексту, а затем conditioning по первому и последнему кадру и упорядоченные Ref2VA-референсы. На момент публикации весь этот функционал уже работает целиком: генерация видео/аудио по текстовому промпту, привязка к первому/последнему кадру ролика, а также произвольное число упорядоченных изображений, видео- и аудио-референсов (Ref2VA), которые модель воспринимает как подписанные «Picture 1», «Picture 2» и так далее. Текущая работа, точечная оптимизация быстродействия и памяти под конкретно M3 Max и M5 Max.

Для запуска нужен локальный снимок весов MiniMax-H3 с Hugging Face, FFmpeg в PATH и сборка через make. Бинарник умеет как разовую генерацию по флагам командной строки, так и интерактивную сессию в духе Iris, где промпт, подготовленный DiT и видео-декодер держатся в памяти между запусками, повтор промпта с другим seed не требует повторной загрузки и кодирования.

Проект приводит собственные измерения ускоряющих приёмов на 512×512-пиксельном 22-кадровом тесте. Базовый сбалансированный пресет (20 шагов подавления шума, 45 из 50 слоёв трансформера, --reuse 2) даёт 22 кадра при 24 кадрах/с, около 0.92 секунды видео. Урезанный до 4 шагов вариант прошёл шумоподавление за ~3.5 секунды на M5 Max против 26.4 секунды у 29-шагового эталона, при этом структурное сходство (SSIM) с эталоном составило 0.556 на тесте с лисой и 0.547 на независимом тесте с сёрфером. Опция --use-int8-row-fc2 (доступна на M5) сократила число полных проходов denoiser примерно на 2.6% в повторных тестах, сохранив те же сюжет, обстановку и движение (SSIM 0.919 и 0.828 на сопоставленных четырёхшаговых роликах). Token reduction на профиле «45 слоёв + reuse 2» сократила время прохода с 16.69 до 12.60 секунды на M5 Max, хотя композиция при этом может сильнее отклоняться от эталонной. Авторы явно отмечают: точное совпадение пикселей с MLX не ожидается, поскольку генераторы случайных чисел и движки исполнения различаются, совпадать должны содержание и движение в кадре, а не побитовый результат.

Есть жёсткие технические ограничения. Ширина и высота кадра должны быть кратны 32, а их произведение не может превышать 768 × 1344 пикселей, сама модель H3-Base нативно 768p. Число кадров округляется вверх до формулы 5 + 17n: запрос на 10 секунд превращается в 243 кадра (10.125 секунды), а запрос на 23 кадра округляется до 39. Рекомендованная длина ролика, примерно 4, 15 секунд. При рендере в 256×256 эффективная пространственная сетка токенов, всего 8×8, из-за чего модель автоматически вдвое уменьшает координаты RoPE, это убрало повторяющиеся артефакты-решётку на длинных роликах с лисой и сохранило связность на независимом портретном тесте. Разрешение 128×128 не поддерживается вовсе: сетка токенов 4×4 не позволяет восстановить узнаваемый сюжет даже после подстройки RoPE. Флаги --reuse и --core-reuse взаимно исключают друг друга, а комбинация --token-reduction сразу с --layers 40 и --reuse 3 в тестах давала цветные ореолы, контуры и «призрачные» конечности.

Ключевые факты

  • h3.c (H3-metal), открытый проект нативного инференса видео-модели MiniMax-H3 на Apple Silicon через Metal, без CUDA; уже работают генерация видео/аудио по тексту, привязка к первому/последнему кадру и упорядоченные Ref2VA-референсы (изображения/видео/аудио)
  • Четырёхшаговое шумоподавление проходит за ~3.5 секунды на M5 Max против 26.4 секунды у 29-шагового эталона, при SSIM 0.556 (тест с лисой) и 0.547 (тест с сёрфером)
  • Опция --use-int8-row-fc2 снижает число полных проходов denoiser примерно на 2.6% при сохранении сюжета и движения (SSIM 0.919 и 0.828); token reduction сокращает проход с 16.69 до 12.60 секунды на M5 Max
  • Жёсткие лимиты разрешения: стороны кратны 32, их произведение не больше 768 × 1344 пикселей (модель нативно 768p), число кадров округляется вверх по формуле 5 + 17n
  • Рекомендованная длина ролика, 4, 15 секунд; текущая работа проекта, точечная оптимизация скорости и памяти именно под чипы M3 Max и M5 Max

Почему это важно

Генерация видео диффузионными моделями обычно требует CUDA-инфраструктуры и облачных GPU. h3.c показывает рабочий путь запустить конкретную видео-модель, MiniMax-H3, целиком нативно на Apple Silicon через Metal, с полным набором функций (текст-в-видео, привязка к кадрам, множественные референсы), а не урезанной демо-версией. Это расширяет круг железа, на котором можно локально гонять современную видео-генерацию, без аренды GPU-сервера.

Кому это важно

Разработчикам и энтузиастам, которые хотят генерировать видео локально на Mac без облачных затрат; инженерам, занимающимся оптимизацией инференса диффузионных моделей на потребительском железе; тем, кто строит приложения с офлайн- или приватной видео-генерацией и не хочет зависеть от CUDA-стека.

Как это применить

Нужен локальный снимок весов MiniMax-H3 с Hugging Face, FFmpeg в PATH и сборка проекта через make. Дальше, либо разовые вызовы бинарника с флагами --width/--height/--steps/--layers/--reuse/--token-reduction, либо интерактивная сессия с командами вроде !first!last!ref-image!seed random. Проект даёт готовые пресеты под скорость/качество: сбалансированный (20 шагов, 45 слоёв) для типового результата и агрессивно урезанный (4 шага) для быстрой итерации при разработке промптов. Для длины ролика проще задавать --seconds, фреймворк сам округлит до ближайшего поддерживаемого числа кадров.

Можно ли доверять

Это README самого проекта на GitHub (репозиторий h3.c), а не независимый обзор: приведённые цифры SSIM и времени, измерения авторов на их же тестовых промптах (лиса, сёрфер), без верификации со стороны. В тексте не указаны ни версия или дата релиза h3.c, ни параметры, размер файлов или лицензия самой модели MiniMax-H3, ни сравнение скорости с CUDA-инференсом, есть только оговорка про несовпадение пикселей с MLX. Код открыт и доступен для проверки на GitHub, но самостоятельных бенчмарков третьих сторон пока нет.

Риски и подводные камни

Проект в процессе доработки, сейчас идёт именно точечная оптимизация производительности и памяти, а не финальный релиз. Агрессивные ускорения имеют цену: комбинация --token-reduction с --layers 40 и --reuse 3 в тестах давала цветные ореолы, контуры и искажённые конечности; малые разрешения (128×128) вообще не поддерживаются из-за нехватки токенов на сетку. Флаги --reuse и --core-reuse нельзя использовать одновременно. Режим предпросмотра --show добавляет около 10 ГиБ временной занятости памяти моделью, что ощутимо нагружает унифицированную память. Модель весит отдельно и не входит в поставку, её нужно скачивать самостоятельно с Hugging Face, а лицензия и условия использования MiniMax-H3 в тексте не указаны.

«Точное совпадение пикселей с MLX не ожидается, поскольку генераторы случайных чисел и движки исполнения различаются, совпадать должны содержание и движение в кадре.»

— документация проекта h3.c