Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
MiniMax H3 Max 실시간 속도? 앱 지연 시간 측정법
2026/09/07

MiniMax H3 Max 실시간 속도? 앱 지연 시간 측정법

MiniMax H3 Max의 실시간 속도 측정이 무엇을 의미하는지, 공개된 시간이 다른 이유, 큐부터 다운로드까지 벤치마크하는 방법을 알아봅니다.

MiniMax H3 Max는 특정한 정의에서 실시간보다 빠를 수 있습니다: fal은 자신의 최적화된 서빙 스택에서 5초 클립을 3초 미만에 생성한다고 보고합니다. 하지만 이는 모든 5초 요청이 사용자 화면에 3초 안에 도달한다는 뜻도, 모델이 완성된 프레임을 지속적으로 스트리밍한다는 뜻도 아닙니다. 큐잉, 프롬프트 확장, 출력 처리, 폴링, 다운로드 모두 좁은 추론 측정 범위 밖에 있습니다.[1]

이 구별은 제1자 수치에서 명확합니다. MiniMax Design은 5초 H3 Max 비디오가 약 15초 정도 걸린다고 말하고 15초 비디오는 약 40초 정도 걸린다고 하며, 실제 시간은 설정 및 서비스 상태에 따라 달라집니다.[2] 두 명제 모두 참입니다. 각각 다른 시스템과 측정 범위를 설명합니다.

빠른 답변

  • "실시간보다 빠름"은 생성이 클립 재생 완료 전에 끝난다는 뜻이지, 실시간 프레임 스트리밍을 의미하지 않습니다.
  • fal의 3초 미만 결과는 자신의 최적화된 H3 Max 스택을 측정한 것이지, 범용 API 약속이 아닙니다.[1]
  • MiniMax Design은 자신의 플랫폼에서 더 긴 대기 시간을 예상하기 때문에, 앱은 큐, 생성, 전송, 다운로드를 따로 측정해야 합니다.[2]
  • 시간을 수락된 클립 기준으로 보고합니다. 빠르게 거부된 결과는 유용한 처리량을 더하지 않습니다.

생성 비디오의 "실시간" 의미

비율을 사용하기 전에 라벨을 붙입니다. 표준 실용적 계산은:

real-time factor (RTF) = generation time / output playback duration

5초 출력의 경우:

측정된 생성 시간RTF평문 해석
2.5초0.5이 시계 기준 실시간보다 빠름
5초1.0재생 시간과 같음
15초3.0재생보다 3배 느림

공식은 단순하지만 분자는 그렇지 않습니다. "생성 시간"은 GPU 추론, 제공자 벽시계, POST에서 완료 작업까지의 시간, 또는 플레이어가 완전한 MP4를 받을 때까지의 시간을 의미할 수 있습니다. RTF를 발표할 때마다 분자에 라벨을 붙입니다.

이 네 가지는 다른 측정입니다:

  1. 추론 RTF: 모델 실행을 출력 기간으로 나눈 것입니다.
  2. 제공자 RTF: 제공자가 그 경계를 발표하는 경우, 제공자 승인부터 최종 출력까지입니다.
  3. 관찰된 API RTF: 클라이언트 POST부터 첫 터미널 응답까지입니다.
  4. 재생 준비 RTF: 클라이언트 POST부터 성공적으로 다운로드되거나 버퍼링된 파일까지입니다.

마지막 두 가지만 응용 프로그램의 대기를 설명합니다. 추론 RTF는 서빙 작업을 비교하는 데는 여전히 유용하지만, 클라이언트가 볼 수 없는 큐를 고려할 수 없습니다.

실시간보다 빠른 생성은 스트리밍과 다릅니다

일반적인 H3 Max API 패턴은 비동기입니다: 작업을 제출하고, ID를 받은 후 완료된 MP4를 기다립니다. 클립은 자신의 기간보다 빠르게 완료될 수 있지만, 첫 프레임을 일찍 제공하지는 않습니다. 이는 빠른 배치 생성이지, 증분 비디오 스트리밍의 증거가 아닙니다.

지속적인 재생 시스템은 대신 승인된 클립이 재생되는 동안 다음 클립을 생성하고 앞으로 큐를 유지할 수 있습니다. 이는 버퍼링된 파이프라인입니다. 모든 생성이 완전한 파일로 도착하더라도 지속적인 느낌을 줄 수 있습니다.

fal과 MiniMax Design이 다른 H3 Max 시간을 발표하는 이유

fal은 사후 학습된 H3 Max 변형을 개발했고 그 옆에 추론 시스템을 최적화했습니다. 출시 공지에는 5초 클립이 벽시계 시간 3초 미만에 완료되고 공식 MiniMax H3 엔드포인트 처리량의 약 35배라고 보고합니다.[1] 결과는 fal의 모델과 서빙 조합에 속합니다.

MiniMax Design은 다른 플랫폼에 대한 사용자 대면 예측을 제공합니다: 5초 출력에 대해 약 15초, 15초 출력에 대해 40초입니다. 페이지는 실제 시간이 설정 및 서비스 상태에 따라 달라진다고 명시적으로 경고합니다.[2]

격차는 여러 단계를 포함할 수 있습니다:

POST 전송됨
  -> 인증 및 유효성 검사
  -> 큐 승인
  -> 선택적 프롬프트 처리
  -> 모델 추론
  -> 인코딩 및 안전 검사
  -> 스토리지 및 결과 발행
  -> 다음 클라이언트 폴
  -> MP4 다운로드 또는 플레이어 버퍼링

다른 제공자는 서로 다른 하드웨어, 배치 규칙, 동시성 제한, 프롬프트 확장, 엔드포인트 구현도 실행할 수 있습니다. 한 제공자 내에서도 480P와 768P는 같은 지연 분포를 가질 필요가 없습니다. 한 출시 번호를 다른 경로에 대한 약속으로 변환할 건전한 방법은 없습니다.

배포할 경로에서 MiniMax H3 Max 엔드투엔드 측정

유용한 지연 테스트는 POST 이전에 시작되고 출력이 실제로 사용 가능할 때 끝납니다. 기준을 측정하는 동안 프롬프트, 기간, 해상도, 원본 자산, 계정, 지역을 고정 상태로 유지합니다. 그 후 한 번에 하나의 변수를 변경합니다.

이 타임스탬프를 기록합니다:

타임스탬프이벤트캡처 내용
t0클라이언트가 POST 시작사용자 가시 대기의 시작
t1제출 응답 구문 분석됨네트워크, 유효성 검사, 승인, 작업 생성
t2마지막 관찰된 processing 상태완료 전 하한
t3첫 관찰된 터미널 상태작업 완료 플러스 폴 지연의 상한
t4출력 다운로드 완료전체 파일 워크플로의 재생 준비 대기

폴링은 정확한 완료 순간이 t2t3 사이에 있다는 것을 의미합니다. 서버가 정확한 완료 타임스탬프를 노출한 것처럼 t3 - t0을 밀리초 정밀도로 보고하지 마십시오. 3초마다 폴링하면 관찰이 상태 변경 후 거의 3초 지연되어 도착할 수 있으며, 캐싱이 불확실성을 확대할 수 있습니다.

reAPI 작업 API는 2~3초 폴링 주기를 권장하고 비행 중 작업 응답이 5초 동안 캐시된다고 합니다. 더 빨리 폴링하면 비디오가 더 빨리 완료되지 않고도 요청 압력만 증가합니다.[4]

reAPI를 위한 Node.js 타이밍 하네스

아래 스크립트는 한 개의 유료 5초 480P 작업을 제출하고, 클라이언트 가시 시간을 측정하며, 반환된 파일을 메모리로 다운로드합니다. 이는 fal의 추론 커널을 측정한다고 주장하지 않습니다. 실행하기 전에 라이브 모델 페이지와 계정을 확인하세요.[5]

const API_BASE = 'https://reapi.ai/api/v1';
const API_KEY = process.env.REAPI_API_KEY;

if (!API_KEY) throw new Error('Set REAPI_API_KEY');

const headers = {
  Authorization: `Bearer ${API_KEY}`,
  'Content-Type': 'application/json',
};

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function readJson(response) {
  const body = await response.json().catch(() => ({}));
  if (!response.ok) {
    const message = body.error?.message ?? response.statusText;
    throw new Error(`HTTP ${response.status}: ${message}`);
  }
  return body;
}

const t0 = performance.now();

// Submit once. Do not automatically repeat this POST after an ambiguous
// network failure: the first request may already have created a paid task.
const submission = await readJson(
  await fetch(`${API_BASE}/videos/generations`, {
    method: 'POST',
    headers,
    body: JSON.stringify({
      model: 'minimax-h3-max',
      prompt:
        'One continuous shot of a red paper boat moving through a shallow rain gutter while the camera tracks beside it; natural rain and street ambience, no dialogue.',
      aspect_ratio: '16:9',
      duration: 5,
      resolution: '480P',
    }),
  }),
);

const t1 = performance.now();
let lastProcessingAt = t1;
let task;
const deadline = Date.now() + 30 * 60 * 1000;

while (Date.now() < deadline) {
  await sleep(3000);
  task = await readJson(
    await fetch(`${API_BASE}/tasks/${submission.id}`, {
      headers: { Authorization: `Bearer ${API_KEY}` },
    }),
  );

  const observedAt = performance.now();

  if (task.status === 'processing') {
    lastProcessingAt = observedAt;
    continue;
  }

  if (task.status === 'failed') {
    throw new Error(
      `${task.error?.code ?? 'FAILED'}: ${task.error?.message ?? 'Unknown error'}`,
    );
  }

  if (task.status === 'completed') {
    const t3 = observedAt;
    const videoUrl = task.output?.video_urls?.[0];
    if (!videoUrl) throw new Error('Completed task has no video URL');

    const download = await fetch(videoUrl);
    if (!download.ok) {
      throw new Error(`Download failed: HTTP ${download.status}`);
    }
    const bytes = (await download.arrayBuffer()).byteLength;
    const t4 = performance.now();

    console.table({
      task_id: submission.id,
      output_seconds: 5,
      submit_round_trip_ms: Math.round(t1 - t0),
      completion_after_ms_lower_bound: Math.round(lastProcessingAt - t0),
      completion_after_ms_upper_bound: Math.round(t3 - t0),
      playback_ready_ms: Math.round(t4 - t0),
      observed_api_rtf: Number(((t3 - t0) / 5000).toFixed(2)),
      playback_ready_rtf: Number(((t4 - t0) / 5000).toFixed(2)),
      downloaded_bytes: bytes,
    });
    break;
  }
}

if (!task || task.status === 'processing') {
  throw new Error(
    `Local polling deadline reached for ${submission.id}; resume GET requests instead of submitting again.`,
  );
}

동일한 하네스를 여러 시간 윈도우에서 실행하되 관찰하려는 큐를 변경하는 큰 폭발 대신 실행합니다. 모든 결과를 저장하세요. 작은 파일럿은 중앙값과 범위를 보고할 수 있으며, p95와 같은 꼬리 백분위수는 샘플이 충분할 때 예약합니다.

실수로 작업을 변경하지 않고 지연 시간 비교

일치하는 설정이 필요하지만 충분하지는 않습니다. 동일한 원본 URL, 프롬프트 바이트, 종횡비, 기간, 해상도를 사용합니다. 한 제공자가 프롬프트를 확장하고 다른 제공자가 그렇지 않으면, 요청이 내부적으로 동일했다고 가장하지 말고 그 차이를 기록합니다.

각 실행에 대해 보유합니다:

  • 모델 ID, 제공자, 엔드포인트, 계정 지역, 관찰 날짜;
  • T2V 또는 I2V 모드와 각 입력 자산의 해시;
  • 기간 및 해상도;
  • 제출 왕복, 완료 범위, 다운로드 시간;
  • 터미널 상태 및 오류 코드;
  • 클립이 창의적 수락 검사를 통과했는지 여부입니다.

5초 480P H3 Max 초안을 15초 768P 베이스 H3 클립과 섞은 후 모델 벤치마크 차이라고 부르지 마십시오. 마찬가지로, fal 추론 시간과 MiniMax Design UI 시간은 테이블이 측정 경계를 라벨 지정하지 않는 한 한 "승자" 열에 속하지 않습니다.

처리량, 동시성, 수락 클립은 별개의 숫자입니다

지연은 한 작업의 대기입니다. 처리량은 시스템이 시간 경과에 따라 완료하는 작업입니다. 제공자는 뛰어난 단일 작업 추론을 가질 수 있지만 여전히 동시 요청을 제한합니다. 다른 제공자는 작업당 더 오래 걸리면서도 병렬로 더 많은 작업을 완료할 수 있습니다.

한 클립 뒤에 다음을 재생해야 하는 버퍼링된 채널의 경우, 대략적인 작업자 추정은:

required concurrent workers ~= ceil(
  tail end-to-end seconds
  / (clip seconds × creative acceptance rate)
)

이는 계획 근사값이지 용량 보장이 아닙니다. 10초 클립이 선택한 꼬리 지연에서 20초가 걸리고 출력의 절반만 통과하면, 한 작업자는 20초마다 0.5개의 수락된 클립을 공급합니다. 10초 재생 슬롯을 채우려면 안전 여유, 절제 실패, 편집 검토를 추가하기 전에 약 4명의 작업자가 필요합니다.

버퍼도 중요합니다. 재생이 시작되기 전에 여러 승인된 클립을 생성한 후 시청자가 현재 클립을 보는 동안 다음 슬롯을 계속 생성합니다. 버퍼가 0에 도달하면 인상적인 중앙값과 관계없이 스트림이 중단됩니다.

초시계는 소리나 이야기를 평가할 수 없습니다

H3 Max는 fal의 출시 공지에 따라 H3의 결합된 오디오 비디오 생성을 유지합니다.[1] 이는 수락 검토를 모든 실시간 주장의 일부로 만듭니다. 완료된 클립은 잘못된 캐릭터가 말하거나, 대사가 음성 사이를 넘나들거나, 사운드 큐가 잘못된 작업에 떨어지거나, 다음 샷이 이전 설정을 잊으면 사용 가능하지 않습니다.

응용 프로그램에 중요한 요구 사항에 따라 각 클립을 평가하세요:

확인통과 조건
프롬프트 이벤트필수 비트가 올바른 순서로 나타남
캐릭터 연속성얼굴, 의복, 역할이 식별 가능한 상태로 유지됨
스피커 할당각 라인이 의도된 음성에 속함
오디오 타이밍음성 및 효과가 보이는 작업과 정렬됨
전환첫 프레임과 마지막 프레임이 제공될 때 합리적으로 연결됨
안전/검토클립이 대상에 수락 가능함

그런 다음 원본 완료 처리량과 수락된 완료 처리량을 모두 보고합니다. 후자는 응용 프로그램을 살릴 수 있는 숫자입니다.

FAQ

MiniMax H3 Max가 실시간보다 빠릅니까?

fal은 자신의 최적화된 스택에서 5초 비디오를 3초 미만에 생성한다고 보고하는데, 이는 해당 측정에 대해 실시간보다 빠릅니다. 사용하려는 경로를 테스트하세요. 그 수치는 다른 곳의 엔드투엔드 지연을 보장하지 않습니다.

MiniMax Design은 왜 5초 클립에 대해 약 15초라고 말합니까?

다른 배달 플랫폼이고 사용자 대면 예측입니다. MiniMax는 시간이 설정과 서비스 상태에 따라 달라진다고 말합니다. 모델 추론 외부의 큐잉 및 처리도 관찰된 대기의 일부일 수 있습니다.

실시간 H3 Max는 프레임별로 실시간 스트림을 생성합니까?

표준 비동기 엔드포인트를 기반으로 하지 않습니다. 완료된 비디오 파일을 반환합니다. 이후 클립이 재생되는 동안 다음 클립을 생성하고 버퍼를 유지하여 지속적인 환경을 구축할 수 있습니다.

해상도가 MiniMax H3 Max 속도에 영향을 줍니까?

수행되는 작업에 영향을 줄 수 있지만 단일 승수를 가정하지 않아야 합니다. 둘 다 중요하면 선택한 엔드포인트에서 480P와 768P 모두를 벤치마킹하세요. 현재 MiniMax 직접 및 reAPI H3 Max 계약은 2K를 제공하지 않습니다.[3]

fal timings.inference 값을 reAPI 초시계와 비교할 수 있습니까?

테이블이 다른 메트릭으로 라벨 지정한 경우에만 가능합니다. 하나는 fal의 백엔드 추론 필드이고 다른 하나는 승인, 큐잉, 폴, 스토리지, 네트워크 시간을 포함할 수 있는 클라이언트 관찰 경로입니다.

테스트는 몇 개나 충분합니까?

범용 수는 없습니다. 배포할 프롬프트, 모드, 설정, 시간 윈도우를 충분히 다루도록 실행하세요. 작은 파일럿을 통해 불안정한 p95보다는 중앙값과 전체 범위를 발행하고 창의적 거부를 기록에 유지합니다.

사용자가 실제로 느끼는 대기 발행

"MiniMax H3 Max 실시간"은 명명된 시계로만 방어 가능합니다. fal의 결과는 공동 최적화된 스택이 할 수 있는 것을 보여줍니다. MiniMax Design의 예상은 다른 제품 플랫폼이 더 긴 대기를 노출할 수 있음을 보여줍니다. 응용 프로그램은 자신의 경로에서 측정되고 수락 률과 쌍을 이룬 자신의 POST-to-playback 번호가 필요합니다.

추론 RTF, 관찰된 API RTF, 재생 준비 RTF, 시간당 수락된 클립을 별개의 필드로 유지합니다. 그러면 속도 주장이 출시 게시물에서 빌린 구문 대신 재현 가능한 작동 번호가 됩니다.

참고 자료

  1. fal. Introducing H3 Max by fal. Published August 26, 2026. fal.ai
  2. MiniMax Design. MiniMax H3 Max—Fast AI Video Generator. Retrieved September 7, 2026. design.minimax.io
  3. MiniMax API. Create Video Generation Task V2. Retrieved September 7, 2026. platform.minimax.io
  4. reAPI. Tasks API: polling, status, and output. Retrieved September 7, 2026. reapi.ai
  5. reAPI. MiniMax H3 Max model page and request controls. Retrieved September 7, 2026. reapi.ai

추가 읽을 거리