Бонусы за приглашения

Как работают бонусы за приглашения

Поделитесь ссылкой. Когда друг зарегистрируется по ней и пополнит баланс, вы получите указанный бонус за его последующие пополнения.

Qwen Image 2.1 + MiniMax H3: локальный видеопайплайн по первому и последнему кадру

Как выбрать полностью локальные 768p или гибридные 2K, подготовить кадры в Qwen, запустить H3-Base локально, сравнить с облачной версией на одинаковых входах и найти источник сбоев.

Содержание
Qwen Image 2.1 + MiniMax H3: локальный видеопайплайн по первому и последнему кадру

Вы уже можете получить в Qwen убедительные первый и последний кадры. Главная проблема — сможет ли H3 связать их в один непрерывный план: не заменить героя, не вставить лишнюю склейку и не выдать зависимый от API путь 2K за локальный. Ниже — практический маршрут: сначала доказать полностью локальную цепочку 768p, затем переходить на гибридные 2K только при реальной необходимости и сравнивать локальный и размещённый H3 на одинаковых входах.

С чего начать: локальные 768p подходят большинству задач

Если нужно проверить передачу кадров, оставить материалы на своей машине или найти причину лишних склеек, начните с полностью локальных 768p. Гибридные 2K выбирайте только тогда, когда 2K обязателен для выдачи и допустимы удалённые вызовы H3-Context-IR и H3-Regenerate-2K.

Ваша цельС чего начатьПочемуКогда рекомендация меняется
Доказать, что вся цепочка работаетПолностью локальные 768pМеньше переменных: проблемы Qwen и H3 проще разделитьПереходите дальше, когда 768p стабилен и выдаче действительно нужен 2K
Не отправлять материалы наружуПолностью локальные 768pКадры Qwen и H3-Base остаются на вашей машинеЕсли одновременно нужен 2K и запрещены удалённые API, документированный полный путь не подходит; потребуется другое локальное 2K-решение
Получить финальный ролик 2KГибридные 2KОфициальный полный путь зависит от двух размещённых модулейВозвращайтесь к 768p или меняйте решение, если материалы нельзя отправлять удалённо
Выбрать между локальным и размещённым H3Сначала запустите локальные 768p, затем делайте парное сравнениеИначе ошибки развёртывания смешаются с качеством моделиФиксируйте долгосрочный вариант после повторов на нескольких типах планов

Не обещайте совместимость только по названию видеокарты. В примере MiniMax с SGLang используются четыре GPU, а публичный запуск выполнен на DGX Spark; ни один из них не даёт минимальный VRAM и не доказывает работу на обычной потребительской карте.

Что действительно можно оставить на своей машине

Локально выполняются создание кадров в Qwen и H3-Base 768p; официальный полный путь 2K остаётся гибридным.

ЭтапМожно выполнить локально?Документированная граница
Создание и редактирование первого/последнего кадра в Qwen Image 2.1ДаОфициальный репозиторий содержит QwenImage21Pipeline, локальные примеры Diffusers, нативные размеры 2K и поддержку до 10 референсных изображений
Преобразование первого/последнего кадра в аудиовидео с MiniMax H3-BaseДаОткрытый checkpoint FL2VA принимает ноль, одно или два изображения; два изображения включают режим первого и последнего кадра, локальная проверка выполняется в 768p
H3-Context-IRНе в виде полного официального локального решенияMiniMax описывает его как размещённую систему предобработки и оркестрации, не вошедшую в открытый релиз; можно вызвать API либо построить собственную предобработку по руководству по промптам
H3-Regenerate-2KНе из текущих открытых компонентовМодуль пока не открыт; официальный полный 2K-процесс обращается к нему через API
Сравнение с размещённым H3НетWeb/API-запуск по определению удалённый и служит контрольной группой

MiniMax также указывает длительность 4–15 секунд, 24 FPS, стерео 32 кГц и короткую сторону 768 пикселей по умолчанию; 2K создаётся через H3-Regenerate-2K. Это границы модели, а не обещание, что любая конфигурация поместится в ваше оборудование.

Один публичный тест доказывает реализуемость, но не выбирает победителя

Используйте этот пример как схему проверки, а не как доказательство, что локальный H3 всегда лучше.

Кинематографист Sam Wasserman показал один локальный запуск «идея → изображение → видео» на DGX Spark с Qwen Image 2.1 и MiniMax H3. Прикреплённый ролик длится примерно восемь секунд. В следующей публикации он сообщил, что повторил тот же prompt, те же спецификации и те же первый/последний кадры в платном Web H3. По его оценке, веб-версия вставила нежелательную склейку, тогда как локальная сохранила задуманную последовательность.

Это полезное подтверждение реализуемости и хороший дизайн парного сравнения. Но это не доказательство, что локальный H3 в целом лучше. В публикациях нет команд установки, пикового потребления памяти, времени генерации, обработки звука, seed или неудачных попыток. Сравнение сделал тот же автор на одном входе, а не независимая команда.

Шаг 1. Сведите идею к одному непрерывному плану

Задайте одну локацию, одну цепочку действий и одно конечное состояние. Запишите их как контракт плана — короткую спецификацию, по которой можно проверить и инструкцию, и результат.

ПолеЧто определить
Объект и окружениеЛюди, предметы, одежда, фон и признаки идентичности, которые должны сохраняться
Начальное состояниеПоложение, поза, взгляд, крупность, композиция и свет в первом кадре
Конечное состояниеТолько допустимое изменение к последнему кадру; не меняйте одновременно героя, локацию и положение камеры
Траектория движенияКак движется объект, движется ли камера и в каком порядке происходят действия
Ограничения непрерывностиЯвные формулировки «один непрерывный план», «без склеек», «без телепортации»
Выходные параметрыДлительность, соотношение сторон, необходимость речи, атмосферы или музыки
ЗапретыНежелательные персонажи, субтитры, смены сцен, замена фона и лишние действия

Если тест должен выявить нежелательные склейки, не просите в одном prompt несколько локаций, временных периодов или монтажную последовательность. Иначе склейка может быть разумной интерпретацией инструкции, а не ошибкой модели.

Например, «герой идёт от двери к столу, берёт чашку, без склеек» подходит для проверки первого и последнего кадров. «Перейти с улицы в офис, затем показать флешбэк детства» естественно требует нескольких сцен и не подходит для чистой проверки лишних склеек.

Шаг 2. Сначала создайте первый кадр, затем отредактируйте его в последний

Получайте последний кадр редактированием первого, а не двумя независимыми prompt. Так проще сохранить героя, одежду, композицию и фон ещё до запуска H3.

Официальный ID модели — Qwen/Qwen-Image-2.1. Qwen документирует визуальный генератор на 7B параметров, локальную работу через Diffusers, генерацию и редактирование, нативный 2K и до 10 референсных изображений.

pip install "torch>=2.4.0" "transformers>=5.17" accelerate pillow
pip install git+https://github.com/huggingface/diffusers
from pathlib import Path

import torch
from diffusers import QwenImage21Pipeline

first_prompt = Path("first_prompt.txt").read_text(encoding="utf-8").strip()
last_edit_prompt = Path("last_edit_prompt.txt").read_text(encoding="utf-8").strip()

pipe = QwenImage21Pipeline.from_pretrained(
    "Qwen/Qwen-Image-2.1",
    torch_dtype=torch.bfloat16,
).to("cuda")

first = pipe(
    prompt=first_prompt,
    width=2752,
    height=1536,
    num_inference_steps=40,
    generator=torch.Generator("cuda").manual_seed(42),
).images[0]
first.convert("RGB").save("first.png")

last = pipe(
    prompt=last_edit_prompt,
    image=first,
    width=2752,
    height=1536,
    num_inference_steps=40,
    generator=torch.Generator("cuda").manual_seed(43),
).images[0]
last.convert("RGB").save("last.png")

Код объединяет официальные интерфейсы генерации и редактирования одного изображения; first_prompt и last_edit_prompt задаёте вы. Используются документированный размер 16:9 2752 × 1536, 40 шагов и непрозрачные RGB PNG. В публичном описании H3 не указано, как при такой передаче обрабатывается alpha-канал, поэтому непрозрачные кадры убирают одну переменную, если RGBA не проверялся отдельно.

После генерации запишите не только имена файлов:

  • ID модели, версию фреймворка, prompt первого кадра и prompt редактирования последнего;
  • оба seed, ширину, высоту, число шагов и список референсов;
  • SHA-256, размер в пикселях и цветовой режим обоих файлов;
  • стабильность личности, одежды, композиции, света и фона;
  • показывает ли последний кадр только конечное состояние, а не весь сценарий движения.

Qwen также документирует enable_model_cpu_offload() для ограниченной памяти. Это подтверждает наличие offload-пути, но не устанавливает минимальный VRAM и не гарантирует скорость всей связки.

Шаг 3. Дайте локальному и размещённому H3 один и тот же вход

Не вводите параметры по памяти в двух интерфейсах. Сохраните кадры, prompt и настройки вывода в одном манифесте: другой seed, длительность или переписанный prompt способны обесценить всё сравнение.

experiment_id: "qwen-h3-001"
qwen_model: "Qwen/Qwen-Image-2.1"
h3_model: "MiniMaxAI/MiniMax-H3"
h3_variant: "fl2va"
prompt_file: "prompt.txt"
first_frame: "first.png"
last_frame: "last.png"
prompt_sha256: "<sha256>"
first_frame_sha256: "<sha256>"
last_frame_sha256: "<sha256>"
duration_seconds: "<same value>"
aspect_ratio: "<same value>"
local_seed: "<record if exposed>"
hosted_seed: "<record or not_exposed>"

Локальный и размещённый запуски должны читать этот манифест. Если Web-интерфейс скрывает seed, переписывает prompt или ограничивает длительность, укажите not_exposed либо сохраните переписанный текст. Не изображайте параметры одинаковыми, когда это нельзя проверить: различие результатов имеет смысл только после контроля наблюдаемых входов.

Шаг 4. Сначала добейтесь локального результата H3-Base в 768p

Сначала примите результат 768p и только потом думайте о 2K. Статичные кадры Qwen могут быть 2K, но локальное видео H3-Base от этого не становится 2K.

MiniMax публикует два специализированных checkpoint. Здесь нужен MiniMax-H3 Base FL2VA, который поддерживает генерацию аудиовидео из текста, первого, последнего или обоих кадров в BF16. Официальные команды загрузки и пример SGLang:

hf download MiniMaxAI/MiniMax-H3 \
  --include "FL2VA/*" \
  --local-dir MiniMax-H3

sglang serve \
  --model-path MiniMaxAI/MiniMax-H3 \
  --num-gpus 4 \
  --ulysses-degree 4 \
  --performance-mode speed \
  --host 0.0.0.0 \
  --port 30010 \
  --model-variant fl2va

Вторая команда — пример MiniMax для четырёх GPU. Это не опубликованная конфигурация DGX Spark от Wasserman и не минимальное требование. Меняйте её только по документации выбранного фреймворка и фиксируйте все изменения; не выдавайте пример за гарантию для любой машины.

Сделайте оба кадра доступными процессу SGLang

FL2VA принимает одно или два изображения с role: "keyframe". В официальном руководстве SGLang для H3 frame_index: 0 означает первый кадр, frame_index: -1 — последний, а набор [0, -1] задаёт оба граничных кадра. В воспроизводимом скрипте MiniMax показан вариант только с первым кадром; ниже те же поля используются сразу для двух изображений.

URI file:// разрешает процесс сервера SGLang, а не терминал, из которого запущен curl. Если сервер и команда работают на одном хосте, подходят абсолютные пути из realpath. При запуске SGLang в контейнере или на другой машине сначала смонтируйте либо скопируйте туда оба файла и задайте FIRST_URI и LAST_URI как пути, доступные серверу.

Сохраните контракт плана в prompt.txt. Для полностью локального 768p это может быть ваш структурированный prompt. В гибридном пути 2K поместите результат H3-Context-IR в то же поле prompt, а затем передайте результат H3-Base в H3-Regenerate-2K.

Отправьте FL2VA, дождитесь завершения и сохраните MP4

Скрипт следует документированному асинхронному циклу: создаёт задачу через POST /v1/videos, читает .id, опрашивает GET /v1/videos/{id} и обращается к GET /v1/videos/{id}/content только после status: "completed". Официальный cookbook считает failed конечной ошибкой; при любом другом непустом статусе опрос продолжается.

set -euo pipefail

BASE_URL="${BASE_URL:-http://127.0.0.1:30010}"
FIRST_URI="${FIRST_URI:-file://$(realpath first.png)}"
LAST_URI="${LAST_URI:-file://$(realpath last.png)}"
PROMPT_FILE="${PROMPT_FILE:-prompt.txt}"
OUTPUT_FILE="${OUTPUT_FILE:-fl2va.mp4}"

payload=$(
  jq -n \
    --rawfile prompt "$PROMPT_FILE" \
    --arg first "$FIRST_URI" \
    --arg last "$LAST_URI" \
    '{
      model: "MiniMaxAI/MiniMax-H3",
      task: "fl2va",
      prompt: $prompt,
      seconds: 8,
      conditions: [
        {
          type: "image",
          uri: $first,
          role: "keyframe",
          frame_index: 0
        },
        {
          type: "image",
          uri: $last,
          role: "keyframe",
          frame_index: -1
        }
      ],
      target: {
        short_edge: 768,
        aspect_ratio: "auto",
        duration_seconds: 8
      },
      seed: 0
    }'
)

response=$(
  curl --fail-with-body --silent --show-error \
    --request POST \
    --url "$BASE_URL/v1/videos" \
    --header 'Content-Type: application/json' \
    --data-binary "$payload"
)

video_id=$(printf '%s\n' "$response" | jq -er '.id')
printf 'video_id=%s\n' "$video_id"

while true; do
  task_json=$(
    curl --fail-with-body --silent --show-error \
      --request GET \
      --url "$BASE_URL/v1/videos/$video_id"
  )
  status=$(printf '%s\n' "$task_json" | jq -er '.status')
  printf 'status=%s\n' "$status"

  case "$status" in
    completed)
      break
      ;;
    failed)
      printf '%s\n' "$task_json" | jq .
      exit 1
      ;;
    *)
      sleep 1
      ;;
  esac
done

curl --fail-with-body --silent --show-error --location \
  --request GET \
  --url "$BASE_URL/v1/videos/$video_id/content" \
  --output "$OUTPUT_FILE"

test -s "$OUTPUT_FILE"

if command -v ffprobe >/dev/null 2>&1; then
  ffprobe -v error \
    -show_entries stream=codec_type,codec_name,r_frame_rate,sample_rate,channels \
    -of default=noprint_wrappers=1 \
    "$OUTPUT_FILE"
fi

printf 'saved=%s\n' "$OUTPUT_FILE"

curl --fail-with-body немедленно завершает работу при ответе не 2xx, а jq -e — если в ответе нет .id или .status. При failed скрипт печатает полный JSON задачи и выходит с ненулевым кодом; для успеха также нужны удачная загрузка и непустой MP4.

Если установлен ffprobe, скрипт выводит сведения о медиапотоках. Документированный контракт SGLang — MP4 с видео H.264, 24 кадра/с, и одной стереодорожкой AAC 32 кГц. Если задача имеет completed, но файл пуст, не декодируется или имеет неожиданные свойства, не переходите к размещённому сравнению: сначала проверьте журнал SGLang, доступность URI изображений со стороны сервера и JSON запроса.

Поля и endpoints взяты из официального воспроизводимого FL2VA-скрипта MiniMax, cookbook MiniMax-H3 в SGLang и описания video API SGLang. Полностью локальный путь на этом этапе заканчивается MP4 H3-Base в 768p; полный 2K по-прежнему требует описанного выше гибридного процесса.

Шаг 5. Сравнивайте с размещённым H3 только после стабилизации локальной цепочки

Не сравнивайте качество, пока локальный запуск ещё ломается. Иначе ошибки развёртывания, различия входов и поведение модели невозможно разделить. Меняйте только место исполнения:

  1. Загрузите побайтно те же первый и последний кадры и проверьте хэши.
  2. Повторите тот же prompt, длительность, соотношение сторон, язык и намерение по звуку.
  3. Запишите, переписывает ли Web/API prompt, раскрывает ли seed и использует ли H3-Context-IR.
  4. Сохраните исходные файлы без монтажа, перекодирования и добавления музыки.
  5. Скройте метки происхождения и проведите слепую оценку, чтобы ожидание «локальное лучше» или «платное лучше» не влияло на вывод.

Для сравнения стоимости запишите собственный счёт API, время занятости машины и расход электроэнергии. Сами ярлыки «локально» и «платный Web» не показывают, какой путь дешевле для вашей нагрузки.

Шаг 6. Выберите путь для своих планов по одной шкале

Сначала проверьте, выполнена ли творческая задача, и только потом сравнивайте время и оборудование. Более высокое разрешение не помогает, если ролик постоянно вставляет лишние склейки.

КритерийКак проверятьЧто записать
Верность первому кадруСохраняет ли начало героя, композицию и ключевые предметы, а не заменяет их сразуОтклонение и таймкод
Достижение последнего кадраПриходит ли ролик к конечному состоянию естественно, без резкого переключения на финальную картинкуКонечное состояние и качество перехода
Непрерывность одного планаЕсть ли непрошенные склейки, телепортации, замены сцены или временные скачкиТаймкоды и кадры до/после
Стабильность личности и фонаСохраняются ли лицо, одежда, руки, реквизит и геометрия фонаОбъект дрейфа и длительность
ТраекторияДвижутся ли герой и камера в согласованном порядке и направленииОшибка направления, скачок скорости, остановка
АудиоПри запросе есть ли дорожка, синхронизирована ли она, нет ли щелчков и постороннего содержанияСвойства медиа, рассинхрон, аномальный фрагмент
СпецификацияСоответствуют ли длительность, формат кадра, FPS и разрешение настройкамФактические метаданные
Ресурсы запускаСтеновое время, пик памяти ускорителя, системная память и число повторовСырые логи каждого запуска, не оценки
ПовторяемостьВозникает ли проблема снова при повторе контролируемого входаПовторные результаты и доступные случайные параметры

MiniMax заявляет генерацию стерео 32 кГц, но публикации Wasserman не сообщают, был ли звук включён, сохранён или обработан после генерации. Свой результат проверять можно, а ссылаться на этот пример как на проверку качества звука — нельзя.

Исправляйте верхний слой, а не перезапускайте всё подряд

Неверный первый кадр исправляется в Qwen, нарушение непрерывности — в H3, а расхождение разрешения начинается с проверки выбора между локальными 768p и гибридными 2K. Такая диагностика быстрее, чем менять все параметры сразу.

СимптомСначала проверитьДействие
Первый кадр уже неверенЭтап QwenИсправьте prompt, референсы и seed, а не пытайтесь чинить композицию внутри H3
В последнем кадре меняются герой или фонПередаваемый актив QwenРедактируйте первый кадр вместо независимой генерации; уменьшите число изменений и повторно используйте стабильные референсы
Появляется нежелательная склейкаPrompt H3 и ограничения движенияПотребуйте один непрерывный план, удалите язык монтажа/нескольких сцен и повторите с теми же хэшами изображений
Ролик не доходит до финалаДлительность и план движенияСократите цепочку действий и задайте порядок начало—процесс—конец
Звук отсутствует или не совпадаетВариант H3, клиент и контейнерПроверьте аудиовидео checkpoint и путь запроса; запуски без сопоставимого звука пометьте как несравнимые
Qwen не помещается в памятьРазвёртывание изображенияПопробуйте документированный CPU offload и измерьте влияние на скорость; не выводите универсальный минимум VRAM
H3 не стартует на текущем железеРазвёртывание H3Следуйте руководству фреймворка; официальный пример использует четыре GPU, но работа на потребительской карте не гарантирована
Локально доступно 768p, а 2K требует APIГраница архитектурыЭто документированная схема, а не сбой; примите 768p или выберите гибридный 2K
Локальный и облачный результаты сильно различаютсяВходы и предобработкаПроверьте переписывание prompt, Context-IR, seed, длительность, формат и перекодирование до вывода о модели

Как выбрать локальный или размещённый H3 для постоянной работы

Решение должно опираться на набор ваших планов, а не на один самый красивый пример. Проверьте статичную камеру, движение человека, изменение объекта, диалог и окружение, сохраняя успехи и неудачи; разделяйте следующие величины:

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

Если материалы не должны покидать вашу машину, по умолчанию сохраняйте локальный путь 768p. Если финальная выдача требует 2K и удалённые API допустимы, выбирайте гибридные 2K. Если важнее всего непрерывность, проведите слепую оценку локального и размещённого H3 на одном наборе планов и предпочитайте вариант, который стабильнее проходит вашу шкалу. Публичный пример показывает, что локальный путь запускается и в одном тесте избежал лишней склейки; он не заменяет ваши повторные проверки.

Проверьте эти восемь пунктов перед запуском

  • Запуск помечен как «полностью локальный 768p» либо «гибридный 2K», термины не смешаны.
  • Для обоих кадров сохранены модель Qwen, prompt, seed, размеры и референсы.
  • Кадры и prompt хэшированы, оба запуска H3 читают один вход.
  • Локальный запуск использует fl2va и сначала принимается как результат H3-Base 768p.
  • Переписывание prompt и скрытые параметры размещённой версии записаны честно.
  • Исходные видео не отредактированы и оцениваются одной шкалой непрерывности, склеек, звука и спецификации.
  • Время, пик памяти, повторы и ошибки взяты из логов.
  • Вывод ограничен протестированными входами, оборудованием и датой проверки.

Итог

Рекомендация по умолчанию проста: локально создайте первый и последний кадры в Qwen Image 2.1, затем добейтесь локального 768p через MiniMax H3-Base fl2va. Переходите на H3-Context-IR → локальный H3-Base → H3-Regenerate-2K только тогда, когда 2K обязателен и удалённые API допустимы.

В любом варианте зафиксируйте кадры, prompt, длительность и соотношение сторон, затем сравнивайте непрерывность, лишние склейки, звук, время и нагрузку на оборудование при одинаковом входе. Так демонстрация превращается в проверяемый процесс, который можно осознанно принять или отклонить.

Ссылки

Факты проверены 26 сентября 2026 года.

Готовы оптимизировать LLM workflow?

Подключите единый API, управляйте ключами и контролируйте расходы на AI-модели в BetterToken.

Начать бесплатно