TECH 으로 돌아가기
TECH HACKER NEWS 어제 8분 읽기 53 READS

맥에서 돌아가는 C 기반 MiniMax H3 영상 생성 엔진 'h3.c'

맥에서 돌아가는 C 기반 MiniMax H3 영상 생성 엔진 'h3.c'
SOURCE IMAGE · HACKER NEWS

애플 실리콘 맥에서 영상·오디오 생성 모델을 파이썬 스택 없이 돌린다는 발상은 오랫동안 실험 영역에 머물러 있었다. antirez의 h3.c는 그 틈을 파고드는 프로젝트로, MiniMax-H3 모델의 추론을 애플 실리콘에서 네이티브로 수행하는 것을 목표로 한다. 구현은 한 번에 완성된 거대한 코드가 아니라 동작하는 세로 단면(vertical slice)을 차례로 쌓아 올리는 방식으로 진행됐다. 결정론적인 호스트·모델 메타데이터 처리에서 시작해, 이식 가능한 Metal 블록 패리티, 프롬프트 인코딩, 프롬프트 기반 영상·오디오 생성, 그리고 첫 프레임·마지막 프레임 조건화 순으로 기능이 붙었다. 현재는 텍스트-투-비디오/오디오, 첫·마지막 프레임 조건화, 순서가 있는 Ref2VA 이미지·영상·오디오 참조가 처음부터 끝까지 동작하며, 남은 작업은 M3 Max와 M5 Max에서의 H3 특화 Metal 성능·메모리 최적화다.

실행 구조와 대화형 세션

실행하려면 Hugging Face 스냅샷을 ./MiniMax-H3 경로에 두고 FFmpeg·FFprobe를 PATH에 올려야 한다. --info 옵션은 모든 가중치를 매핑하거나 미디어를 생성하지 않고도 모델 레이아웃을 점검하고 선택된 Metal 장치를 출력해 준다. 프롬프트를 -p로 주지 않으면 같은 바이너리가 Iris 스타일 대화형 세션으로 진입한다. 이 세션은 BF16 프롬프트 조건화, 준비된 DiT, 영상 디코더를 메모리에 유지하기 때문에, 같은 프롬프트를 다른 시드로 반복할 때 로딩과 인코딩을 다시 하지 않는다. !status, !seed random, !seconds 2, !save output.mp4 같은 명령으로 상태를 바꾸며, !first/!last로 프레임 앵커를, !ref-image로 참조 이미지를 순서대로 붙일 수 있다. 참조 이미지는 모델에 , 형태로 노출되며 파일명 자체는 의미가 없다. 다만 Ref2VA 참조는 첫·마지막 프레임 앵커와 섞어 쓸 수 없다.

품질과 속도를 손으로 저울질하는 설계

이 엔진의 특징은 화질과 연산량을 사용자가 직접 조절하도록 노출한다는 점이다. 검증된 균형 프리셋은 24fps에서 22프레임(약 0.92초)을 생성한다. --steps N은 정확히 N번의 디노이징 패스를 뜻하며, 4~7패스는 저예산 비교에서 우승한 동일 스케줄을 쓴다. 512 정사각형·22프레임 여우 테스트에서 4패스 결과는 29패스 기준본 대비 전체 영상 SSIM 0.556을, 별도의 서퍼 테스트에서는 0.547을 기록했다. 연산 시간은 M5 Max 기준 4패스가 약 3.5초로, 기준본의 26.4초와 크게 벌어진다. 기본값은 --steps 20 --layers 50 --reuse 1이며, 주제나 해부학·움직임·구도가 바뀌었는지 확인하려면 50패스 기준본을 오라클로 삼는 것이 권장된다. 난수·실행 엔진이 다르므로 MLX와의 픽셀 단위 일치는 기대되지 않고, 묘사된 내용과 움직임이 일치하면 된다.

최적화 옵션도 여럿이다. 레이어 시닝은 체크포인트의 AdaLN 게이트를 실제로 평가해 구조적으로 중요한 첫·마지막 블록을 보호하면서 트랜스포머 시간과 통합 메모리를 함께 줄인다. --reuse와 --core-reuse는 상호 배타적이며, 레이어 시닝은 둘 중 어느 쪽과도 결합된다. 토큰 감소를 켜면 512 정사각형·45레이어·reuse 2 프로파일이 16.69초에서 12.60초로 줄지만 구도가 기준 경로에서 더 벗어날 수 있다. M5에서는 --use-int8-row-fc2가 FC2 행마다 활성화 스케일 하나를 써서 디노이저 전방 계산을 약 2.6% 줄였고, 이때 여우·서퍼 영상은 각각 SSIM 0.919, 0.828로 주제와 움직임을 유지했다. 다만 320 정사각형 내부 렌더 후 업스케일이나 --core-reuse 6 같은 조합은 프레임이 바뀌거나 세부가 뭉개지는 공격적 프리뷰용임을 명시한다.

해상도·시간 축의 기계적 제약

너비와 높이는 각각 32의 배수이자 최소 32여야 하고, 그 곱은 768×1344를 넘을 수 없다. 이는 화질 보장이 아니라 순수한 기계적 한계다. 256 정사각형에서는 유효 공간 토큰 격자가 8×8에 불과해 세부 표현 여지가 적고, H3는 이 지점에서 공간 RoPE 좌표를 자동으로 절반으로 줄여 긴 여우 렌더에서 나타나던 격자 아티팩트를 없앤다. 네이티브 128 정사각형은 4×4 격자로는 주제를 복원하지 못해 여전히 미지원이다. 시간 축은 24fps 고정에 5 + 17n 형태로 상향 정렬되므로, --seconds 10 요청은 243프레임(10.125초)으로 변환된다. 릴리스 워크플로는 대략 4~15초 영상을 상정하며, 오디오 참조는 2~15초·최대 3개·총 15초 이내라는 제한이 붙는다.

프롬프트 자체도 짧은 문장보다 Context-IR에 가까운 서술을 기대한다. 주제, 동작, 배경, 카메라, 조명·스타일, 원하는 사운드를 명시하고 정체성과 객체 수를 분명히 적어야 한다. 옵션을 비교할 때는 프롬프트·시드·해상도·프레임 수·스텝 수를 동일하게 두고 하나의 제어만 바꾸라는 방법론이 반복 강조된다. 실무자 입장에서 이는 생성 품질을 재현 가능한 실험으로 다루라는 요구에 가깝다.

테스트와 구현 세부도 눈여겨볼 만하다. make test는 결정론적 호스트 스위트를 돌리고, MLX 픽스처가 설치돼 있으면 Metal 소스를 런타임에 컴파일해 토이 H3 블록을 MLX 출력과 대조한다. 런타임 컴파일은 Iris를 따른 의도적 선택으로, Xcode의 오프라인 Metal 툴체인을 요구하지 않는다. 내부적으로는 BF16 저장 경로와 캐시된 MPSGraph 그래프, 어텐션 잔차 게이트와 뒤따르는 MLP AdaLN을 융합해 디스패치와 전역 재읽기를 줄이는 커널 최적화가 들어가 있고, H3_DISABLE_* 환경 변수로 각 융합을 끄고 오라클과 A/B 비교를 할 수 있다.

정리하면 h3.c는 완성된 제품이라기보다, 애플 실리콘에서 무거운 확산 기반 영상 모델을 C와 Metal만으로 돌릴 수 있음을 단계적으로 증명해 가는 엔지니어링 실험에 가깝다. 파이썬·MLX 런타임 의존 없이 맥 한 대에서 짧은 클립을 빠르게 반복 생성하려는 개발자에게는 매력적인 출발점이지만, 화질 보장이 없는 기계적 한계와 잦은 근사 옵션, 열 스로틀링에 민감한 성능 특성은 프로덕션 도입 전에 반드시 감안해야 할 부분이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/antirez/h3.c
SHARE
처리 중...