HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Antirez/h3.c: Mac用MiniMax H3推論エンジン

Antirez/h3.c: MiniMax H3 inference engine for Mac computers (github.com)

414 pointsby swyx93 コメント

要約

Antirez氏が開発したh3.cは、Apple Silicon Mac向けに最適化されたMiniMax-H3推論エンジンです。Metal APIを活用し、プロンプトから動画や音声を生成する機能や、画像・動画・音声を参照する機能(Ref2VA)を実装しています。コマンドラインインターフェース(CLI)を通じて、モデルの検査、インタラクティブなセッション、高速な動画生成、参照品質に近い動画生成など、様々な設定で推論を実行できます。

全文翻訳

h3-metal Apple Silicon向けのネイティブMiniMax-H3推論。 このプロジェクトは、動作する垂直スライスのシーケンスとして構築されています。まず、決定論的なホスト/モデルメタデータ、次にポータブルなMetalブロックの同等性、プロンプトエンコーディング、プロンプトから動画/音声への変換、最初/最後のフレーム条件付け、そして順序付けられた参照です。 プロンプトから動画/音声への変換、最初/最後のフレーム条件付け、および順序付けられたRef2VA画像/動画/音声参照は、エンドツーエンドで機能します。 現在の作業は、M3 MaxおよびM5 MaxでのH3固有のMetalパフォーマンスとメモリ最適化の増分です。 チュートリアル 1. モデルのビルドと検査 例では、Hugging Faceのスナップショットが./MiniMax-H3にあり、FFmpegとFFprobeがPATHで利用可能であることを前提としています。 make -j8 mkdir -p outputs ./h3 --info -d ./MiniMax-H3 --infoはモデルのレイアウトをチェックし、すべての重みをマッピングしたりメディアを生成したりせずに、選択されたMetalデバイスを表示します。 完全なCLIリファレンスについては、./h3 --help を実行してください。 -pなしで、同じバイナリはIrisスタイルのインタラクティブセッションを開始します。 ./h3 -d ./MiniMax-H3 --width 512 --height 512 --steps 20 プロンプトを入力して番号付きの動画を生成します。 セッションは、正確なBF16プロンプト条件付け、準備されたDiT、およびビデオデコーダーをメモリ内に保持するため、同じプロンプトを別のシードで繰り返しても、それらを再度ロードしてエンコードする必要がありません。 便利なコマンドは、!status, !seed random, !seconds 2, !show, !save output.mp4, および !cache です。 完全な短いリストについては、!help を使用してください。 最初/最後のフレーム条件付けはセッションで永続的です。 h3> !first opening.png h3> !last ending.png h3> カメラが被写体の周りをゆっくりと移動します。 アンカーを削除するには、!first clear または !last clear を使用してください。 生成された動画は、起動時に表示されるセッションディレクトリに書き込まれます。 一般的なRef2VA条件付け画像については、代わりに!ref-image PATH を使用してください。 画像は順序で追加され、モデルには<Picture 1>, <Picture 2> などとして公開されます。ファイル名にモデルに対する意味はありません。 h3> !ref-image person.png h3> Picture 1に示されている人物にカメラに向かって手を振らせてください。 !refs は現在の順序をリストし、!ref-remove N は1つを削除し、!refs clear はすべてを削除します。 Ref2VA参照は、!first/!lastアンカーと混在させることはできません。 2. 最初の高速動画を作成する 検証済みのバランスの取れたプリセットから開始します。 これは24fpsで22フレーム(約0.92秒)を生成し、サポートされているグラフィカルターミナルで各デノイズ遷移後に進化する中間ビデオフレームを表示し、フェーズタイミングを表示します。 ./h3 --profile \ -d ./MiniMax-H3 \ -p "A red fox walks through fresh snow in a pine forest. Medium tracking shot, natural winter light, realistic fur, soft footsteps and wind." --width 512 --height 512 \ --frames 22 --steps 20 \ --layers 45 --reuse 2 \ --show \ -o outputs/fox-fast.mp4 これは意図的に最も攻撃的な構成ではありません。 --steps 20 はデフォルトの20回のデノイズパスを実行します。 --reuse 2 は、すべての20回ではなく11回の新しいデノイザー速度を計算し、スキップされた遷移を外挿します。 --layers 45 は50個のトランスフォーマーブロックのうち45個を実行し、時間とユニファイドメモリの使用量を削減します。 --show はオプションです。 Kitty/GhosttyおよびiTerm2/WezTerm/Konsoleグラフィカルプロトコルをサポートしています。 常駐プレビューVAEをロードし、各Euler遷移後に1つの代表的な中間ビデオフレームを表示し、その後すべての最終フレームを表示します。 表示寸法はデフォルトで2倍になり、画像はmacOS Retina画面で意図した論理サイズになります。HiDPIでないディスプレイでは--zoom 1を使用してください。 これにより、プレビューデコード時間と約10GiBの一時的なモデル常駐が追加されます。--showなしの実行は変更されません。 --profileはオプションであり、異なる生成パスを選択しません。 最初のプロセス呼び出しでは、モデルロードとファイルシステムキャッシュのコストもかかります。 繰り返し実行を使用してパフォーマンスを比較し、ワークロードは熱スロットリングに敏感であるため、マシンがウォームアップしている間に代替バリアントを試してください。 非常に短いイテレーションのために、直接4回のデノイズパスを要求します。 ./h3 --profile \ -d ./MiniMax-H3 \ -p "A red fox walks through fresh snow in a pine forest. Medium tracking shot, natural winter light, realistic fur." --width 512 --height 512 --frames 22 \ --steps 4 --layers 50 --reuse 1 \ --show \ -o outputs/fox-four-step.mp4 --steps N は常に正確にN回のデノイズパスを意味します。 4〜7回のパスは、低予算比較で勝利したのと同じスケジュールを使用します。4から7に増やすと、詳細とモーションが徐々に向上します。 このような小さな予算では--reuse 1を維持して、要求された各パスでモデルを実行できるようにします。 --showは各パスの後に1つのプレビューを表示します。 ほとんどの目に見えるクリーンアップは長い実行の後半に発生するため、いくつかのテールヘビーなスケジュールが評価されました。 それらは初期のコンポジションアップデートを十分に保持せず、織り交ぜられたテクスチャ、弱いモーション、またはクリップされた色を生成しました。 保持モードは、1つの終端ポイントを持つリリースされた線形ベースグリッドを使用します。 512平方、22フレームのキツネテストでは、選択された4パスの結果は、29パスの参照に対して0.556のフルビデオSSIMでした。独立したサーファーテストでは0.547を測定しました。 4パスのデノイズはM5 Maxで約3.5秒かかりましたが、参照は26.4秒でした。 3. 参照品質に向けて移動する 品質を評価するときは、一度に1つのコントロールを変更します。 まずすべてのレイヤーを復元し、次にすべてのデノイザー評価を復元し、最後にデフォルトの20パススケジュールをより遅い50パス参照に引き上げます。 ./h3 --profile \ -d ./MiniMax-H3 \ -p "A red fox walks through fresh snow in a pine forest. Medium tracking shot, natural winter light, realistic fur, soft footsteps and wind." --width 512 --height 512 \ --frames 22 --steps 50 \ --layers 50 --reuse 1 \ -o outputs/fox-close.mp4 デフォルトは--steps 20 --layers 50 --reuse 1です。このクローズパスについては--steps 50を明示的に維持してください。 これは50回の完全な50ブロックデノイザーフォワードを実行し、デフォルトよりもはるかに高価ですが、高速モードが被写体、解剖学、モーション、またはコンポジションを変更した場合の正しいオラクルです。 MLXとの数値的なピクセル同一性は、乱数エンジンと実行エンジンが異なるため期待されません。描画されたコンテンツとモーションは一致するはずです。 4. スピード/品質プリセットを選択する これらのコントロールは、特に言及しない限り独立しています。 コントロール | 遅い参照 | デフォルト | 攻撃的 | 主な影響 ---|---|---|---|--- デノイズパス | --steps 50 | --steps 20 | --steps 4..7 | パス数は常に実際のデノイズパスを指します。 全体のデノイザー再利用 | --reuse 1 | --reuse 2 | --reuse 3 | 20ステップで: 20, 11, または 8回の新しいDiT評価。 アクティブなDiTブロック | --layers 50 | --layers 45 | --layers 40 | より少ないブロックは計算と常駐トランスフォーマー重みを削減します。 コア残差再利用 | --core-reuse 1 | --core-reuse 4 | --core-reuse 6 | ステップごとにパッチ/ヘッドワークをリフレッシュしますが、高価なコアの実行頻度は低くなります。 トークン削減 | オフ | オプション | --token-reduction | 中間ブロック内の水平ビデオトークンをペアにします。より高速ですが、コンポジションを変更する可能性があります。 内部キャンバス出力サイズ | 512平方出力用384x384 | 320x320 | | DiT/VAEを小さく実行し、vImageでアップスケールします。 M5では、--use-int8-row-fc2はFC2行ごとに1つのアクティベーションスケールと単一のフル幅TensorOps積を使用します。 これはグループ化されたint8よりも数値的に保守的ではないためオプションです。 逆テストでは、完全なデノイザーフォワードを約2.6%削減しました。 一致した4ステップのキツネとサーファーの動画は、同じ被写体、設定、およびモーションを維持しました(フルビデオSSIM 0.919および0.828)。 インタラクティブセッションでは、!int8-row-fc2 on を使用します。 --reuseと--core-reuseは相互排他的です。 レイヤーの薄化は、どちらか一方と組み合わせることができます。 最初のコマンドを、出力解像度を維持しながらより速くするために、トークン削減を追加します。 ./h3 --profile \ -d ./MiniMax-H3 \ -p "A surfer riding inside a sharp blue ocean wave, one rider and one white board, realistic spray." --width 512 --height 512 --frames 22 --steps 20 \ --layers 45 --reuse 2 --token-reduction \ -o outputs/surfer-fast.mp4 検証済みの512平方形状で、トークン削減はIT M5 Maxで45レイヤー+リユース2デノイズプロファイルを16.69秒から12.60秒に削減しました。 独立したキツネとサーファーのレンダリングは一貫性を保ちましたが、コンポジションはクローズパスからより大きく逸脱する可能性があります。 攻撃的なプレビューのために、内部で320平方でレンダリングし、要求された512平方出力にアップスケールします。 ./h3