Для Apple Silicon появилась нативная реализация инференса MiniMax-H3. Проект делают вертикальными срезами: сначала детерминированные метаданные, затем portable Metal-блоки, кодирование промпта, генерация видео/аудио, first/last-frame кондиционирование и упорядоченные Ref2VA-ссылки. Сейчас уже работают prompt-to-video/audio, привязка по первому/последнему кадру и Ref2VA end-to-end. Основная текущая работа — инкрементальная оптимизация под Metal на M3 Max и M5 Max.
Бинарь h3 запускает Iris-style интерактивную сессию. В памяти держатся точное BF16-кондиционирование промпта, подготовленный DiT и видео-декодер, поэтому повторный промпт с другим seed не грузит и не кодирует всё заново. Ref2VA-картинки добавляются как <Picture 1>, <Picture 2>, порядок меняется командами !refs, !ref-remove, !refs clear. Первый и последний кадр задаются через !first и !last.
Для скорости есть независимые контролы: --steps задаёт число реальных проходов денойзинга, --reuse переиспользует целые denoiser-вычисления, --layers отключает часть из 50 блоков трансформера, --core-reuse обновляет только patch/head, а --token-reduction ужимает горизонтальные токены в средних блоках. На тесте 512x512, 22 кадра, четыре прохода заняли около 3.5 секунд на M5 Max против 26.4 секунд у 29-проходного референса. Token reduction с --layers 45 --reuse 2 ускорил денойз с 16.69 до 12.60 секунд. А вот --layers 40 + --reuse 3 + token-reduction дают цветовой звон и призрачные конечности, так что такую комбинацию не используют.
Вместо полного разрешения можно рендерить внутренний канвас меньше, а потом vImage-апскейлить RGB до нужного размера. 384-to-512 срез ускоряет DiT примерно на 33%, VAE на 18%. Нативный 256x256 автоматически адаптирует RoPE и убирает решётчатые артефакты; 128x128 не поддерживается.
Из низкоуровневого: на M5 persistent веса трансформера отображаются прямо из safetensor-шардов, 37 GiB остаются file-backed. M5 использует native BF16 Metal 4/TensorOps для QKV-проекций. Qwen-энкодер предзаполняет буферы на восьми I/O-воркерах. Специализированные DiT-проекции и patch-касты в 1.6–2.3 раза быстрее на M3/M5 Max. На M5 int8 MLP-движок по умолчанию: 50-слойный 19-transition рендер 512x512 прошёл за 25.80 секунд против 36.30 у BF16 MPS. Выходы совпадают с MLX-оракулом с точностью до мелких отличий.