Ruka hadi maudhui makuu
Mafunzo ya AI

Tengeneza Klipu za Video-kutoka-Maandishi na Video-kutoka-Picha za MiniMax H3 kwenye Apple Silicon ukitumia TensorFold

Mafunzo haya yanaeleza jinsi ya kusakinisha kifurushi cha TensorFold MiniMax H3, kuandaa modeli yake kubwa na adapta ya Turbo, kutengeneza klipu za video-kutoka-maandishi na video-kutoka-picha, na kurekebisha mwonekano, fremu, mbegu, adapta na hatua za sampuli kwenye maunzi yanayooana ya Apple Silicon.

Tengeneza Klipu za Video-kutoka-Maandishi na Video-kutoka-Picha za MiniMax H3 kwenye Apple Silicon ukitumia TensorFold

Mradi huu hufanya nini

Hifadhi hii ya msimbo hufunga modeli ya video ya MiniMax H3 kwa ajili ya TensorFold kwenye Apple Silicon. Inaunganisha familia ya H3 ya TensorFold na kernel za MLX int8 Metal pamoja na adapta ya LightX2V Turbo ili kutengeneza video yenye sauti ya stereo iliyosawazishwa.

Kifurushi hiki kinaunga mkono text-to-video na, kuanzia toleo la 1.1, image-to-video kwa kutumia fremu ya kwanza iliyotolewa. Kwenye Mac Studio M5 Ultra iliyopimwa yenye kumbukumbu ya GB 256, klipu ya sekunde 5 yenye ukubwa wa 864x480 huchukua takriban sekunde 50 ikiwa na adapta ya Turbo. Klipu ya 768x448 huchukua takriban sekunde 40 chini ya masharti ya benchmark yaliyoandikwa.

Hifadhi hii ya msimbo ni njia ya kutengeneza matoleo ya uendelezaji, si seva wala bidhaa. Hakuna amri ya tensorfold generate; modeli hupakiwa kwa kila utoaji kupitia script zilizojumuishwa.

h3.c hatua 20 / TensorFold int8 hatua 20 / TensorFold Turbo int8, agizo lilelile

Vipengele muhimu

  • Text-to-video: eleza tukio na utengeneze MP4 yenye video na sauti ya stereo.
  • Image-to-video: toa fremu ya kwanza na eleza kitakachotokea baadaye.
  • Uzalishaji wa Turbo: adapta ya LightX2V hupunguza utoaji hadi forwards tatu katika njia ya haraka iliyoandikwa.
  • Kernel za MLX na int8: shughuli zilizochaguliwa za transformer na decoder hutumia kernel za int8 Metal kwenye maunzi yanayooana ya M5 yenye tensor.
  • Usanidi unaoweza kurudiwa: kisakinishi hubandika matoleo ya TensorFold, MLX, maktaba tegemezi, marekebisho ya modeli na checksum za adapta.
  • Utoaji wa modeli msingi kwa hiari: zima adapta na utumie takriban hatua 20 za sampling unapotaka utoaji ulio karibu zaidi na modeli msingi.

Mahitaji ya maunzi na programu

Namba za utendaji zilizochapishwa zilipimwa kwenye Mac Studio M5 Ultra yenye kumbukumbu ya pamoja ya GB 256, ikiendesha macOS 27.0.1. Mradi unaeleza kuwa angalau GB 128 za kumbukumbu zinahitajika, huku uunganishaji wa adapta ukifikia takriban GB 103 za kumbukumbu ya juu zaidi. Bila adapta, kumbukumbu ya juu zaidi imeorodheshwa kuwa takriban GB 65.

Kernel za int8 zinahitaji shughuli za tensor za Metal 4, kwa hiyo uongezaji kasi ulioripotiwa unalenga maunzi ya M5 yanayooana. Kwenye mifumo isiyo na shughuli hizo, familia ya H3 huendesha katika bfloat16 na huenda ikawa polepole kuliko mbadala za C zilizoelezwa kwenye README.

Pia unahitaji Homebrew, Python 3.11, uv na FFmpeg. Upakuaji wa modeli ya MiniMax H3 ni takriban GB 144, na adapta ya Turbo ni takriban GB 1.96.

Sakinisha mradi

Fanya clone ya hifadhi na usakinishe zana zinazohitajika za mwenyeji:

git clone https://github.com/drowzeys/keys-Mac-TensorFold-MiniMax-H3-MLX.git
cd keys-Mac-TensorFold-MiniMax-H3-MLX
brew install python@3.11 uv ffmpeg

Endesha script ya usanidi wa hatua moja:

bash oneshot-setup.sh

Kisakinishi huunda mazingira yaliyotengwa kwenye ~/.local/opt/tensorfold-h3 na kusakinisha TensorFold 0.6.5 pamoja na familia ya H3 na lock ya utegemezi iliyobandikwa. Docker inapopatikana, kinaweza kupata payload ya TensorFold iliyothibitishwa kwa checksum kutoka kwa carrier iliyojengwa awali ya mradi kwenye GHCR; vinginevyo, hupata commit inayolingana ya chanzo kutoka Git.

Usanidi pia hufanya clone ya marekebisho yanayohitajika ya minimax-h3-mlx, hupakua partition ya MiniMax H3 FL2VA kwenye ~/h3-models/MiniMax-H3, hupakua adapta ya Turbo na kutengeneza klipu ya majaribio kwenye outputs/test.mp4.

Ili kukagua usakinishaji uliopo bila kuusakinisha tena, endesha:

bash oneshot-setup.sh --verify

Ili kuruka utoaji wa awali wa majaribio, tumia:

bash oneshot-setup.sh --no-render

h3.c hatua 20 / TensorFold int8 hatua 20 / TensorFold Turbo int8, agizo lilelile

Unaweza kubadilisha maeneo chaguomsingi ya usakinishaji na modeli kupitia vigeu vya mazingira vya PREFIX na H3_MODEL_DIR.

Tengeneza klipu ya text-to-video

Tumia scripts/generate.sh ukiwa na prompt na jina la faili la towe:

bash scripts/generate.sh "A hummingbird hovering over red flowers, soft wing hum" out.mp4

Njia chaguomsingi hutumia adapta ya Turbo iliyosanidiwa na mipangilio chaguomsingi ya uzalishaji ya hifadhi. Prompt hueleza tukio la kuona na, inapofaa, sauti inayokusudiwa.

Kwa utofauti unaoweza kurudiwa, toa seed na uchague canvas inayoungwa mkono:

WIDTH=768 HEIGHT=448 SEED=7 bash scripts/generate.sh "A quiet train crossing a snowy valley at dawn" out.mp4

Unaweza kuhifadhi prompt kwenye faili la maandishi. Katika hali hiyo, pitisha hoja tupu ya prompt na uweke PROMPT_FILE:

PROMPT_FILE=prompts/black-mirror-scene.txt SEED=2077 bash scripts/generate.sh "" out.mp4

Tengeneza klipu ya image-to-video

Weka FIRST_FRAME kwenye faili la picha. Picha hiyo huwa fremu ya kwanza, huku prompt ikieleza mwendo au tukio linalofuata:

FIRST_FRAME=photo.jpg WIDTH=1344 HEIGHT=768 bash scripts/generate.sh "She turns to the camera and smiles" out.mp4

Picha hunyooshwa ili iendane na canvas iliyochaguliwa, kwa hiyo chagua vipimo vyenye uwiano unaolingana au ikate picha kabla ya kutoa. README inapendekeza 1344x768 kwa 16:9, 768x1344 kwa 9:16 na 768x768 kwa maudhui ya mraba.

Prompt za image-to-video za mtindo wa MiniMax zinaweza kutambua wazi fremu ya kwanza, kwa mfano:

For the target video, at 0.00 seconds into the target video, <Picture 1> (from [Shot 1]) is fully referenced. The subject walks through the doorway and looks toward the window.

Uzalishaji wa fremu ya kwanza unapatikana kwa kutumia adapta ya Turbo na pia njia ya msingi ya hatua 20. Hali za fremu ya mwisho na picha ya marejeo hazijaunganishwa kwenye kifurushi hiki.

Dhibiti fremu, mwonekano, na sampuli

Idadi ya fremu lazima ifuate muundo wa 17n + 5. README inaorodhesha mifano inayotumika ikiwa ni pamoja na fremu 56, 73, 90, 124, 192, 243, na 362. Upana na urefu lazima viwe vigawanyo vya 32, na kikomo cha modeli iliyotolewa ni turubai yenye jumla isiyozidi pikseli 768x1344.

Njia ya haraka ya Turbo hutumia forward tatu. Ili kuzima adapta na kutumia uonyeshaji wa hatua 20, weka ADAPTER=none na POINTS=21:

ADAPTER=none POINTS=21 bash scripts/generate.sh "A lantern glowing beside a forest path" base-model.mp4

README inaeleza kuwa mpangilio huu uko karibu zaidi na modeli ya msingi, huku Turbo ikiweza kutoa fremu zilizo wazi kwa haraka lakini wakati mwingine ikarudia wahusika. Hali hizi mbili zinaweza kutoa miundo tofauti hata zikitumia seed ileile.

picha tuli za ulinganisho

Elewa mabadilishano ya kasi

Ongezeko kubwa zaidi la kasi linatokana na forward tatu za adapta ya Turbo badala ya 20. MLP ya int8 SwiGLU, utendakazi wa int8 QKV, matokeo ya attention, na kernels za dekoda ya video hutoa maboresho ya ziada kwenye maunzi ya tensor ya M5 yanayoungwa mkono.

Katika kipimo kilichoandikwa cha 864x480, njia ya Turbo ilichukua takriban sekunde 27.6 kwa denoising na takriban sekunde 50 kwa ujumla, ikiwa ni pamoja na usimbaji wa maandishi, upakiaji na quantization, na decoding. Uonyeshaji wa TensorFold int8 wa hatua 20 ulichukua takriban sekunde 210 kwa ujumla katika ulinganisho huo huo.

Takwimu hizi zinategemea maunzi mahususi na hazipaswi kuchukuliwa kuwa za jumla. Hifadhi pia inaeleza kuwa attention yenyewe bado inatumia attention ya MLX scaled dot-product kwa sababu mbadala ya mtindo wa int8 flash iliyopimwa haikutoa faida ya maana ya kasi.

picha tuli za ulinganisho

Vidokezo vya usanidi wa hali ya juu na mtiririko wa kazi

Tumia carrier iliyojengwa tayari

Kisakinishi kinaweza kutumia carrier ya GHCR, lakini carrier hiyo si runtime ya Mac. Metal haiendeshwi ndani ya kontena; carrier hutoa tu wheel ya TensorFold, kufuli la utegemezi, script ya uzalishaji, na checksum kwa ajili ya usakinishaji asilia.

docker pull ghcr.io/drowzeys/keys-mac-tensorfold-minimax-h3-mlx:1.1
docker run --rm -v "$PWD":/out ghcr.io/drowzeys/keys-mac-tensorfold-minimax-h3-mlx:1.1 cp -a /payload/. /out/payload/

Ili kujenga upya na kusukuma carrier, hifadhi inatoa:

PUSH=1 bash scripts/build-carrier.sh

Zingatia matumizi ya kumbukumbu

Upakiaji wa modeli na uunganishaji wa adapta hutumia kumbukumbu nyingi. Funga programu zisizo za lazima kabla ya kuanza uonyeshaji, hasa unapotumia adapta ya Turbo. Hifadhi inaripoti kuwa kutayarisha jedwali za AdaLN mara moja kwa kila uendeshaji na kuachilia uzani huokoa takriban GiB 24 katika njia yake iliyopimwa.

Chagua turubai sahihi ya picha-hadi-video

Kwa kuwa picha ya kwanza inanyooshwa badala ya kukatwa kiotomatiki ili kuhifadhi muundo wake, tayarisha picha chanzo kwa uwiano lengwa wa pande. Hii huepusha upotoshaji usiohitajika unapozalisha klipu za wima, mlalo, au za mraba.

Tumia adapta mbadala kwa uangalifu

Loader inaweza kusoma FastH3 kwa kutumia njia ya adapta na POINTS=5, kwa mfano kwa kutumia ADAPTER=.../adapter_model.safetensors. README inaripoti kuwa njia hii ilijaribiwa katika 864x480, ilichukua sekunde 76 kwenye prompt ya jaribio, na ilionekana kuwa na shughuli nyingi zaidi kuliko Turbo. Ilichapishwa kwa 1344x768, ambako hakukujaribiwa katika mradi.

Tafsiri ulinganisho wa ubora kwa usahihi

README inasisitiza kuwa ubora haukupimwa kwa ukamilifu. Njia ya int8 inaweza kuhifadhi muundo wa bfloat16 huku ikibadilisha maelezo, na uonyeshaji wa Turbo wa forward tatu unaweza kutofautiana na uonyeshaji wa Turbo wa bfloat16. Kwa hiyo, jedwali za vipimo hulinganisha kasi iliyopimwa na picha tuli zilizochaguliwa badala ya kuhakikisha mwendo au ubora wa sauti unaofanana.

Leseni na hali ya mradi

Kifurushi hakisafirishi uzani wa modeli. Kabla ya kupakua MiniMax H3, soma Leseni ya Jumuiya ya MiniMax H3, ikiwemo vizuizi vyake vya maeneo. Pia kagua tuzo za hifadhi na uwataje ipasavyo waandishi asili wa MiniMax, TensorFold, MLX, H3, adapta, na miradi inayohusiana.

Familia ya H3 inayotumika hapa inaelezwa kuwa rasimu ya pull request inayopendekezwa kutoka upstream badala ya kuwa sehemu ya toleo lililotolewa la TensorFold. Kwa hiyo, kubandika marekebisho yaliyoandikwa ni muhimu ili kurudia usanidi huu.

Hitimisho

Hifadhi hii hutoa njia iliyolenga ya kuendesha uzalishaji wa video wa MiniMax H3 kiasili kwenye Mac zinazooana za Apple Silicon. Baada ya kusakinisha mazingira yenye marekebisho yaliyobandikwa na kupakua modeli, unaweza kutoa klipu za maandishi-hadi-video, kuhuisha fremu ya kwanza, kubadili kati ya adapta ya Turbo ya haraka na njia ya msingi ya hatua 20, na kurekebisha turubai, idadi ya fremu, seed, na mipangilio ya prompt. Tarajia mahitaji makubwa ya kumbukumbu na hifadhi, na chukulia muda uliochapishwa kama vipimo vya mfumo mahususi wa M5 badala ya dhamana za jumla.