Buckets:
| <meta charset="utf-8" /><meta name="hf:doc:metadata" content="{"title":"CogVideoX","local":"cogvideox","sections":[{"title":"Persiapan Data","local":"data-preparation","sections":[{"title":"Format kecil","local":"small-format","sections":[],"depth":3},{"title":"Format stream","local":"stream-format","sections":[],"depth":3}],"depth":2},{"title":"Pelatihan","local":"training","sections":[],"depth":2},{"title":"Inferensi","local":"inference","sections":[],"depth":2},{"title":"Kurangi penggunaan memori","local":"reduce-memory-usage","sections":[],"depth":2}],"depth":1}"/> | |
| <link href="/docs/diffusers/main/en/_app/immutable/entry/start.D3LnKZ4R.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/BF9UNEM9.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DPnyVmXs.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/entry/app.C0rBoMxR.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DSGUT_OW.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/C045MWWx.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DnVIJfC5.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/DsnmJJEf.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/nodes/0.DTZsP_3B.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/IaDvMxLQ.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/nodes/314.Clt70fkN.js" rel="modulepreload"> | |
| <link href="/docs/diffusers/main/en/_app/immutable/chunks/bKdwVYpU.js" rel="modulepreload"> | |
| <!--26s02k--><meta name="hf:doc:metadata" content="{"title":"CogVideoX","local":"cogvideox","sections":[{"title":"Data Preparation","local":"data-preparation","sections":[{"title":"Small format","local":"small-format","sections":[],"depth":3},{"title":"Stream format","local":"stream-format","sections":[],"depth":3}],"depth":2},{"title":"Training","local":"training","sections":[],"depth":2},{"title":"Inference","local":"inference","sections":[],"depth":2},{"title":"Reduce memory usage","local":"reduce-memory-usage","sections":[],"depth":2}],"depth":1}"/><!----> | |
| <link href="/docs/diffusers/main/en/_app/immutable/assets/0.tn0RQdqM.css" rel="modulepreload"> <!--[--><!--[0--><!--[--><!--[0--><!--[--><p></p> <div class="items-center shrink-0 min-w-[100px] max-sm:min-w-[50px] justify-end ml-auto flex" style="float: inline-end; margin-inline-start: 10px; display: inline-flex; position: relative; z-index: 10;"><div dir="ltr" class="inline-flex rounded-md max-sm:rounded-sm"><button class="inline-flex items-center gap-1 h-7 max-sm:h-7 px-2 max-sm:px-1.5 text-sm font-medium text-gray-800 border border-r-0 rounded-l-md max-sm:rounded-l-sm border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-live="polite"><span class="inline-flex items-center justify-center rounded-md p-0.5 max-sm:p-0 hover:text-gray-800 dark:hover:text-gray-200"><svg class="sm:size-3.5 size-3" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----></span> <span dir="auto">Copy page</span></button> <button class="inline-flex items-center justify-center w-6 max-sm:w-5 h-7 max-sm:h-7 disabled:pointer-events-none text-sm text-gray-500 hover:text-gray-700 dark:hover:text-white rounded-r-md max-sm:rounded-r-sm border border-l transition border-gray-200 bg-white hover:shadow-inner dark:border-gray-850 dark:bg-gray-950 dark:text-gray-200 dark:hover:bg-gray-800" aria-haspopup="menu" aria-expanded="false" aria-label="Open copy menu"><svg class="transition-transform text-gray-400 overflow-visible sm:size-3.5 size-3 rotate-0" width="1em" height="1em" viewBox="0 0 12 7" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L6 6L11 1" stroke="currentColor"></path></svg><!----></button></div> <!--[-1--><!--]--></div><!----> <!--[0--><h1 class="relative group"><a id="cogvideox" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#cogvideox"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->CogVideoX<!----></span></h1><!--]--><!----> <p>CogVideoX adalah model generasi teks-ke-video yang berfokus pada pembuatan video yang lebih koheren dan selaras dengan prompt. Hal ini dicapai dengan menggunakan beberapa metode.</p> <ul><li><p>autoencoder variational 3D yang mengompresi video secara spasial dan temporal, meningkatkan rasio kompresi dan akurasi video.</p></li> <li><p>blok transformer ahli untuk membantu menyelaraskan teks dan video, serta modul perhatian penuh 3D untuk menangkap dan membuat video yang akurat secara spasial dan temporal.</p></li></ul> <p>Uji aktual pada dimensi instruksi video menemukan bahwa CogVideoX memiliki efek yang baik pada tema yang konsisten, informasi dinamis, latar belakang yang konsisten, informasi objek, gerakan yang halus, warna, adegan, gaya penampilan, dan gaya temporal, tetapi tidak dapat mencapai hasil yang baik pada aksi manusia, hubungan spasial, dan beberapa objek.</p> <p>Finetuning dengan Diffusers dapat membantu mengatasi hasil yang kurang baik tersebut.</p> <!--[1--><h2 class="relative group"><a id="data-preparation" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#data-preparation"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Persiapan Data<!----></span></h2><!--]--><!----> <p>Skrip pelatihan menerima data dalam dua format.</p> <p>Format pertama cocok untuk pelatihan skala kecil, dan format kedua menggunakan format CSV, yang lebih sesuai untuk streaming data untuk pelatihan skala besar. Di masa depan, Diffusers akan mendukung tag <code><Video></code>.</p> <!--[2--><h3 class="relative group"><a id="small-format" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#small-format"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Format kecil<!----></span></h3><!--]--><!----> <p>Dua file, di mana satu file berisi prompt yang dipisahkan baris dan file lainnya berisi path ke data video yang dipisahkan baris (path ke file video harus relatif terhadap path yang Anda berikan saat menentukan <code>--instance_data_root</code>). Mari kita lihat sebuah contoh untuk memahaminya lebih baik!</p> <p>Asumsikan Anda telah menentukan <code>--instance_data_root</code> sebagai <code>/dataset</code>, dan direktori ini berisi file: <code>prompts.txt</code> dan <code>videos.txt</code>.</p> <p>File <code>prompts.txt</code> harus berisi prompt yang dipisahkan per baris:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class=" "><!---->A <span class="hljs-keyword">black </span><span class="hljs-keyword">and </span>white animated sequence featuring a rabbit, named Rabbity Ribfried, <span class="hljs-keyword">and </span>an anthropomorphic goat in a musical, playful environment, <span class="hljs-keyword">showcasing </span>their evolving interaction. | |
| A <span class="hljs-keyword">black </span><span class="hljs-keyword">and </span>white animated sequence on a <span class="hljs-keyword">ship's </span>deck features a <span class="hljs-keyword">bulldog </span>character, named <span class="hljs-keyword">Bully </span><span class="hljs-keyword">Bulldoger, </span><span class="hljs-keyword">showcasing </span>exaggerated facial expressions <span class="hljs-keyword">and </span><span class="hljs-keyword">body </span>language. The character progresses from confident to focused, then to strained <span class="hljs-keyword">and </span><span class="hljs-keyword">distressed, </span><span class="hljs-keyword">displaying </span>a range of emotions as it navigates challenges. The <span class="hljs-keyword">ship's </span>interior remains static in the <span class="hljs-keyword">background, </span>with minimalistic details such as a <span class="hljs-keyword">bell </span><span class="hljs-keyword">and </span>open door. The character<span class="hljs-string">'s dynamic movements and changing expressions drive the narrative, with no camera movement to distract from its evolving reactions and physical gestures. | |
| ...</span><!----></pre></div><!----> <p>File <code>videos.txt</code> harus berisi jalur ke file video yang dipisahkan per baris. Perhatikan bahwa jalur tersebut harus <em>relatif</em> terhadap direktori <code>--instance_data_root</code>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class=" "><!---->videos<span class="hljs-symbol">/00000.mp4</span> | |
| videos<span class="hljs-symbol">/00001.mp4</span> | |
| ...<!----></pre></div><!----> <p>Secara keseluruhan, berikut adalah tampilan dataset Anda jika Anda menjalankan perintah <code>tree</code> pada direktori root dataset:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class=" "><!---->/dataset | |
| ├── prompts<span class="hljs-selector-class">.txt</span> | |
| ├── videos<span class="hljs-selector-class">.txt</span> | |
| ├── videos | |
| ├── videos/<span class="hljs-number">00000</span><span class="hljs-selector-class">.mp4</span> | |
| ├── videos/<span class="hljs-number">00001</span><span class="hljs-selector-class">.mp4</span> | |
| ├── ...<!----></pre></div><!----> <p>Saat menggunakan format ini, <code>--caption_column</code> harus berupa <code>prompts.txt</code> dan <code>--video_column</code> harus berupa <code>videos.txt</code>.</p> <!--[2--><h3 class="relative group"><a id="stream-format" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#stream-format"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Format stream<!----></span></h3><!--]--><!----> <p>Anda dapat menggunakan satu file CSV. Untuk keperluan contoh ini, asumsikan Anda memiliki file <code>metadata.csv</code>. Format yang diharapkan adalah:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class=" "><!----><CAPTION_COLUMN>,<PATH_TO_VIDEO_COLUMN> | |
| <span class="hljs-string">"""A black and white animated sequence featuring a rabbit, named Rabbity Ribfried, and an anthropomorphic goat in a musical, playful environment, showcasing their evolving interaction."""</span>,<span class="hljs-string">"""00000.mp4"""</span> | |
| <span class="hljs-string">"""A black and white animated sequence on a ship's deck features a bulldog character, named Bully Bulldoger, showcasing exaggerated facial expressions and body language. The character progresses from confident to focused, then to strained and distressed, displaying a range of emotions as it navigates challenges. The ship's interior remains static in the background, with minimalistic details such as a bell and open door. The character's dynamic movements and changing expressions drive the narrative, with no camera movement to distract from its evolving reactions and physical gestures."""</span>,<span class="hljs-string">"""00001.mp4"""</span> | |
| ...<!----></pre></div><!----> <p>Dalam kasus ini, <code>--instance_data_root</code> harus menjadi lokasi tempat video disimpan dan <code>--dataset_name</code> harus berupa path ke folder lokal atau dataset yang kompatibel dengan <a href="https://huggingface.co/docs/datasets/main/en/package_reference/loading_methods#datasets.load_dataset" rel="nofollow">load_dataset</a> yang di-host di Hub. Mengasumsikan Anda memiliki video gameplay Minecraft di <code>https://huggingface.co/datasets/my-awesome-username/minecraft-videos</code>, Anda harus menentukan <code>my-awesome-username/minecraft-videos</code>.</p> <p>Saat menggunakan format ini, <code>--caption_column</code> harus <code><CAPTION_COLUMN></code> dan <code>--video_column</code> harus <code><PATH_TO_VIDEO_COLUMN></code>.</p> <p>Anda tidak secara ketat dibatasi pada format CSV. Format apa pun dapat digunakan selama metode <code>load_dataset</code> mendukung format file untuk memuat <code><PATH_TO_VIDEO_COLUMN></code> dan <code><CAPTION_COLUMN></code> dasar. Alasan untuk melakukan berbagai pengaturan organisasi dataset ini untuk memuat data video adalah karena <code>load_dataset</code> tidak sepenuhnya mendukung semua jenis format video.</p> <blockquote class="note"><p>CogVideoX bekerja paling baik dengan prompt yang panjang dan deskriptif yang diperkaya oleh LLM untuk generasi video. Kami merekomendasikan pra-pemrosesan video Anda dengan terlebih dahulu menghasilkan ringkasan menggunakan VLM, lalu memperkaya prompt dengan LLM. Untuk menghasilkan caption di atas, kami menggunakan <a href="https://huggingface.co/openbmb/MiniCPM-V-2_6" rel="nofollow">MiniCPM-V-26</a> dan <a href="https://huggingface.co/meta-llama/Meta-Llama-3.1-8B-Instruct" rel="nofollow">Llama-3.1-8B-Instruct</a>. Contoh yang sangat sederhana dan tanpa fitur tambahan untuk hal ini tersedia <a href="https://gist.github.com/a-r-r-o-w/4dee20250e82f4e44690a02351324a4a" rel="nofollow">di sini</a>. Rekomendasi resmi untuk memperkaya prompt adalah <a href="https://huggingface.co/THUDM?search_models=chatglm" rel="nofollow">ChatGLM</a> dan panjang 50-100 kata dianggap baik.</p></blockquote> <blockquote><p>![NOTE] | |
| Diharapkan bahwa dataset Anda sudah diproses sebelumnya. Jika belum, beberapa pra-pemrosesan dasar dapat dilakukan dengan mengatur parameter berikut: <code>--height</code>, <code>--width</code>, <code>--fps</code>, <code>--max_num_frames</code>, <code>--skip_frames_start</code> dan <code>--skip_frames_end</code>. | |
| Saat ini, semua video dalam dataset Anda harus berisi jumlah frame video yang sama ketika menggunakan ukuran batch pelatihan > 1.</p></blockquote> <!--[1--><h2 class="relative group"><a id="training" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#training"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Pelatihan<!----></span></h2><!--]--><!----> <p>Anda perlu menyiapkan lingkungan pengembangan dengan menginstal persyaratan yang diperlukan. Paket-paket berikut diperlukan:</p> <ul><li>Torch 2.0 atau di atasnya berdasarkan fitur pelatihan yang Anda gunakan (mungkin memerlukan versi terbaru atau nightly untuk pelatihan kuantisasi/deepspeed)</li> <li><code>pip install diffusers transformers accelerate peft huggingface_hub</code> untuk semua hal yang berkaitan dengan pemodelan dan pelatihan</li> <li><code>pip install datasets decord</code> untuk memuat data pelatihan video</li> <li><code>pip install bitsandbytes</code> untuk menggunakan optimizer 8-bit Adam atau AdamW untuk pelatihan yang dioptimalkan untuk memori</li> <li><code>pip install wandb</code> opsional untuk memantau log pelatihan</li> <li><code>pip install deepspeed</code> opsional untuk pelatihan <a href="https://github.com/microsoft/DeepSpeed" rel="nofollow">DeepSpeed</a></li> <li><code>pip install prodigyopt</code> secara opsional jika Anda ingin menggunakan optimizer Prodigy untuk pelatihan</li></ul> <p>Untuk memastikan Anda dapat menjalankan versi terbaru dari skrip contoh dengan sukses, kami sangat merekomendasikan <strong>memasang dari sumber</strong> dan menjaga instalasi tetap mutakhir karena kami memperbarui skrip contoh secara berkala dan memasang beberapa persyaratan khusus untuk contoh. Untuk melakukan ini, jalankan langkah-langkah berikut di lingkungan virtual baru:</p> <p>Sebelum menjalankan skrip, pastikan Anda menginstal pustaka dari sumber:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!---->git <span class="hljs-built_in">clone</span> https://github.com/huggingface/diffusers | |
| <span class="hljs-built_in">cd</span> diffusers | |
| pip install -e .<!----></pre></div><!----> <p>Lalu, navigasikan ke folder contoh yang berisi skrip pelatihan dan instal dependensi yang diperlukan untuk skrip yang Anda gunakan:</p> <ul><li>PyTorch</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!----><span class="hljs-built_in">cd</span> examples/cogvideo | |
| pip install -r requirements.txt<!----></pre></div><!----> <p>Dan inisialisasi lingkungan <a href="https://github.com/huggingface/accelerate/" rel="nofollow">🤗 Accelerate</a> dengan:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!---->accelerate config<!----></pre></div><!----> <p>Atau untuk konfigurasi accelerate default tanpa menjawab pertanyaan tentang lingkungan Anda</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!---->accelerate config default<!----></pre></div><!----> <p>Atau jika lingkungan Anda tidak mendukung shell interaktif (misalnya, notebook)</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-python "><!----><span class="hljs-keyword">from</span> accelerate.utils <span class="hljs-keyword">import</span> write_basic_config | |
| write_basic_config()<!----></pre></div><!----> <p>Saat menjalankan <code>accelerate config</code>, jika Anda menggunakan torch.compile, dapat terjadi peningkatan kecepatan yang signifikan. Perpustakaan PEFT digunakan sebagai backend untuk pelatihan LoRA, jadi pastikan <code>peft>=0.6.0</code> terinstal di lingkungan Anda.</p> <p>Jika Anda ingin mendorong model Anda ke Hub setelah pelatihan selesai dengan kartu model yang rapi, pastikan Anda sudah masuk:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!---->hf auth login | |
| <span class="hljs-comment"># Alternatively, you could upload your model manually using:</span> | |
| <span class="hljs-comment"># hf upload my-cool-account-name/my-cool-lora-name /path/to/awesome/lora</span><!----></pre></div><!----> <p>Pastikan data Anda telah disiapkan seperti yang dijelaskan dalam <a href="#data-preparation">Persiapan Data</a>. Saat siap, Anda dapat mulai melatih!</p> <p>Dengan asumsi Anda melatih pada 50 video dengan konsep serupa, kami menemukan bahwa 1500-2000 langkah bekerja dengan baik. Namun, rekomendasi resmi adalah 100 video dengan total 4000 langkah. Dengan asumsi Anda melatih pada satu GPU dengan <code>--train_batch_size</code> sebesar <code>1</code>:</p> <ul><li>1500 langkah pada 50 video akan setara dengan <code>30</code> epoch pelatihan</li> <li>4000 langkah pada 100 video akan setara dengan <code>40</code> epoch pelatihan</li></ul> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-bash "><!----><span class="hljs-meta">#!/bin/bash</span> | |
| GPU_IDS=<span class="hljs-string">"0"</span> | |
| accelerate launch --gpu_ids <span class="hljs-variable">$GPU_IDS</span> examples/cogvideo/train_cogvideox_lora.py \ | |
| --pretrained_model_name_or_path THUDM/CogVideoX-2b \ | |
| --cache_dir <CACHE_DIR> \ | |
| --instance_data_root <PATH_TO_WHERE_VIDEO_FILES_ARE_STORED> \ | |
| --dataset_name my-awesome-name/my-awesome-dataset \ | |
| --caption_column <CAPTION_COLUMN> \ | |
| --video_column <PATH_TO_VIDEO_COLUMN> \ | |
| --id_token <ID_TOKEN> \ | |
| --validation_prompt <span class="hljs-string">"<ID_TOKEN> Spiderman swinging over buildings:::A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance"</span> \ | |
| --validation_prompt_separator ::: \ | |
| --num_validation_videos 1 \ | |
| --validation_epochs 10 \ | |
| --seed 42 \ | |
| --rank 64 \ | |
| --lora_alpha 64 \ | |
| --mixed_precision fp16 \ | |
| --output_dir /raid/aryan/cogvideox-lora \ | |
| --height 480 --width 720 --fps 8 --max_num_frames 49 --skip_frames_start 0 --skip_frames_end 0 \ | |
| --train_batch_size 1 \ | |
| --num_train_epochs 30 \ | |
| --checkpointing_steps 1000 \ | |
| --gradient_accumulation_steps 1 \ | |
| --learning_rate 1e-3 \ | |
| --lr_scheduler cosine_with_restarts \ | |
| --lr_warmup_steps 200 \ | |
| --lr_num_cycles 1 \ | |
| --enable_slicing \ | |
| --enable_tiling \ | |
| --optimizer Adam \ | |
| --adam_beta1 0.9 \ | |
| --adam_beta2 0.95 \ | |
| --max_grad_norm 1.0 \ | |
| --report_to wandb<!----></pre></div><!----> <p>Untuk melacak eksperimen pelatihan kami dengan lebih baik, kami menggunakan flag berikut dalam perintah di atas:</p> <ul><li><code>--report_to wandb</code> akan memastikan jalannya pelatihan dilacak di Weights and Biases. Untuk menggunakannya, pastikan Anda menginstal <code>wandb</code> dengan <code>pip install wandb</code>.</li> <li><code>validation_prompt</code> dan <code>validation_epochs</code> untuk memungkinkan skrip melakukan beberapa eksekusi inferensi validasi. Hal ini memungkinkan kami untuk memeriksa secara kualitatif apakah pelatihan berjalan sesuai harapan.</li></ul> <p>Menetapkan <code><ID_TOKEN></code> tidak diperlukan. Dari beberapa eksperimen terbatas, kami menemukan bahwa hasilnya lebih baik (karena menyerupai pelatihan <a href="./dreambooth">Dreambooth</a>) jika token ini disertakan. Jika disediakan, <code><ID_TOKEN></code> akan ditambahkan di awal setiap prompt. Jadi, jika <code><ID_TOKEN></code> Anda adalah <code>"DISNEY"</code> dan prompt Anda adalah <code>"Spiderman swinging over buildings"</code>, prompt efektif yang digunakan dalam pelatihan akan menjadi <code>"DISNEY Spiderman swinging over buildings"</code>. Jika tidak disediakan, Anda dapat melatih model tanpa token tambahan apa pun, atau memperkaya dataset Anda untuk menerapkan token di posisi yang diinginkan sebelum memulai pelatihan.</p> <blockquote class="note"><p>Anda dapat meneruskan <code>--use_8bit_adam</code> untuk mengurangi kebutuhan memori pelatihan.</p></blockquote> <blockquote class="important"><p>Pengaturan berikut telah diuji pada saat dukungan pelatihan LoRA untuk CogVideoX ditambahkan:</p> <ul><li>Pengujian kami terutama dilakukan pada CogVideoX-2b. Kami akan segera mengerjakan CogVideoX-5b dan CogVideoX-5b-I2V</li> <li>Satu dataset terdiri dari 70 video pelatihan dengan resolusi <code>200 x 480 x 720</code> (F x H x W). Dari sini, dengan menggunakan frame skipping dalam pra-pemrosesan data, kami membuat dua dataset yang lebih kecil, yaitu 49-frame dan 16-frame, untuk eksperimen yang lebih cepat dan karena batas maksimum yang direkomendasikan oleh tim CogVideoX adalah 49 frame. Dari 70 video tersebut, kami membuat tiga kelompok berisi 10, 25, dan 50 video. Semua video memiliki sifat yang serupa dalam hal konsep yang dilatihkan.</li> <li>25+ video bekerja paling baik untuk melatih konsep dan gaya baru.</li> <li>Kami menemukan bahwa lebih baik melatih dengan token pengenal yang dapat ditentukan sebagai <code>--id_token</code>. Ini mirip dengan pelatihan seperti Dreambooth, tetapi penyesuaian halus normal tanpa token semacam itu juga berhasil.</li> <li>Konsep yang telah dilatih tampaknya bekerja cukup baik ketika dikombinasikan dengan prompt yang sama sekali tidak terkait. Kami mengharapkan hasil yang bahkan lebih baik jika CogVideoX-5B di-finetune.</li> <li>Repositori asli menggunakan <code>lora_alpha</code> sebesar <code>1</code>. Kami menemukan bahwa nilai ini tidak cocok dalam banyak eksekusi, kemungkinan karena perbedaan dalam backend pemodelan dan pengaturan pelatihan. Rekomendasi kami adalah mengatur <code>lora_alpha</code> menjadi <code>rank</code> atau <code>rank // 2</code>.</li> <li>Jika Anda melatih pada data yang caption-nya menghasilkan hasil buruk dengan model asli, <code>rank</code> 64 ke atas adalah pilihan yang baik dan juga merupakan rekomendasi dari tim di balik CogVideoX. Jika hasil generasi sudah cukup baik pada caption pelatihan Anda, <code>rank</code> 16/32 seharusnya sudah memadai. Kami menemukan bahwa mengatur rank terlalu rendah, misalnya <code>4</code>, tidak ideal dan tidak menghasilkan hasil yang menjanjikan.</li> <li>Para penulis CogVideoX merekomendasikan 4000 langkah pelatihan dan 100 video pelatihan secara keseluruhan untuk mencapai hasil terbaik. Meskipun hal itu mungkin menghasilkan hasil terbaik, kami menemukan dari eksperimen terbatas kami bahwa 2000 langkah dan 25 video juga bisa menjadi cukup.</li> <li>Saat menggunakan optimizer Prodigy untuk pelatihan, Anda dapat mengikuti rekomendasi dari blog <a href="https://huggingface.co/blog/sdxl_lora_advanced_script" rel="nofollow">ini</a>. Prodigy cenderung overfit dengan cepat. Dari pengujian saya yang sangat terbatas, saya menemukan bahwa learning rate <code>0.5</code> cocok digunakan selain <code>--prodigy_use_bias_correction</code>, <code>prodigy_safeguard_warmup</code>, dan <code>--prodigy_decouple</code>.</li> <li>Learning rate yang direkomendasikan oleh para penulis CogVideoX dan dari eksperimen kami dengan Adam/AdamW adalah antara <code>1e-3</code> dan <code>1e-4</code> untuk dataset berisi 25+ video.</li></ul> <p>Perlu dicatat bahwa pengujian kami tidak bersifat menyeluruh karena waktu eksplorasi yang terbatas. Rekomendasi kami adalah untuk bereksperimen dengan berbagai pengaturan untuk menemukan konfigurasi terbaik untuk data Anda.</p></blockquote> <!--[1--><h2 class="relative group"><a id="inference" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#inference"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Inferensi<!----></span></h2><!--]--><!----> <p>Setelah Anda melatih model lora, inferensi dapat dilakukan dengan mudah dengan memuat bobot lora ke dalam <code>CogVideoXPipeline</code>.</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class="language-python "><!----><span class="hljs-keyword">import</span> torch | |
| <span class="hljs-keyword">from</span> diffusers <span class="hljs-keyword">import</span> CogVideoXPipeline | |
| <span class="hljs-keyword">from</span> diffusers.utils <span class="hljs-keyword">import</span> export_to_video | |
| pipe = CogVideoXPipeline.from_pretrained(<span class="hljs-string">"THUDM/CogVideoX-2b"</span>, dtype=torch.float16) | |
| <span class="hljs-comment"># pipe.load_lora_weights("/path/to/lora/weights", adapter_name="cogvideox-lora") # Or,</span> | |
| pipe.load_lora_weights(<span class="hljs-string">"my-awesome-hf-username/my-awesome-lora-name"</span>, adapter_name=<span class="hljs-string">"cogvideox-lora"</span>) <span class="hljs-comment"># If loading from the HF Hub</span> | |
| pipe.to(<span class="hljs-string">"cuda"</span>) <span class="hljs-comment"># or "mps", "xpu", "cpu"</span> | |
| <span class="hljs-comment"># Assuming lora_alpha=32 and rank=64 for training. If different, set accordingly</span> | |
| pipe.set_adapters([<span class="hljs-string">"cogvideox-lora"</span>], [<span class="hljs-number">32</span> / <span class="hljs-number">64</span>]) | |
| prompt = <span class="hljs-string">"A vast, shimmering ocean flows gracefully under a twilight sky, its waves undulating in a mesmerizing dance of blues and greens. The surface glints with the last rays of the setting sun, casting golden highlights that ripple across the water. Seagulls soar above, their cries blending with the gentle roar of the waves. The horizon stretches infinitely, where the ocean meets the sky in a seamless blend of hues. Close-ups reveal the intricate patterns of the waves, capturing the fluidity and dynamic beauty of the sea in motion."</span> | |
| frames = pipe(prompt, guidance_scale=<span class="hljs-number">6</span>, use_dynamic_cfg=<span class="hljs-literal">True</span>).frames[<span class="hljs-number">0</span>] | |
| export_to_video(frames, <span class="hljs-string">"output.mp4"</span>, fps=<span class="hljs-number">8</span>)<!----></pre></div><!----> <!--[1--><h2 class="relative group"><a id="reduce-memory-usage" class="header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full" href="#reduce-memory-usage"><span><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 256"><path d="M167.594 88.393a8.001 8.001 0 0 1 0 11.314l-67.882 67.882a8 8 0 1 1-11.314-11.315l67.882-67.881a8.003 8.003 0 0 1 11.314 0zm-28.287 84.86l-28.284 28.284a40 40 0 0 1-56.567-56.567l28.284-28.284a8 8 0 0 0-11.315-11.315l-28.284 28.284a56 56 0 0 0 79.196 79.197l28.285-28.285a8 8 0 1 0-11.315-11.314zM212.852 43.14a56.002 56.002 0 0 0-79.196 0l-28.284 28.284a8 8 0 1 0 11.314 11.314l28.284-28.284a40 40 0 0 1 56.568 56.567l-28.285 28.285a8 8 0 0 0 11.315 11.314l28.284-28.284a56.065 56.065 0 0 0 0-79.196z" fill="currentColor"></path></svg><!----></span></a> <span><!---->Kurangi penggunaan memori<!----></span></h2><!--]--><!----> <p>Saat pengujian menggunakan pustaka diffusers, semua optimasi yang disertakan dalam pustaka diffusers diaktifkan. Skema ini belum diuji untuk penggunaan memori aktual pada perangkat di luar arsitektur <strong>NVIDIA A100 / H100</strong>. Secara umum, skema ini dapat diadaptasi untuk semua perangkat <strong>NVIDIA Ampere architecture</strong> dan di atasnya. Jika optimasi dinonaktifkan, konsumsi memori akan berlipat ganda, dengan penggunaan memori puncak sekitar 3 kali nilai dalam tabel. Namun, kecepatan akan meningkat sekitar 3-4 kali. Anda dapat secara selektif menonaktifkan beberapa optimasi, termasuk:</p> <div class="code-block relative "><div class="absolute top-2.5 right-4"><button class="inline-flex items-center relative text-sm focus:text-green-500 cursor-pointer focus:outline-none transition duration-200 ease-in-out opacity-0 mx-0.5 text-gray-600 " title="code excerpt" type="button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M28,10V28H10V10H28m0-2H10a2,2,0,0,0-2,2V28a2,2,0,0,0,2,2H28a2,2,0,0,0,2-2V10a2,2,0,0,0-2-2Z" transform="translate(0)"></path><path d="M4,18H2V4A2,2,0,0,1,4,2H18V4H4Z" transform="translate(0)"></path><rect fill="none" width="32" height="32"></rect></svg><!----> <div class=" absolute pointer-events-none transition-opacity bg-black text-white py-1 px-2 leading-tight rounded font-normal shadow left-1/2 top-full transform -translate-x-1/2 translate-y-2 opacity-0 "><div class="absolute bottom-full left-1/2 transform -translate-x-1/2 w-0 h-0 border-black border-4 border-t-0" style="border-left-color: transparent; border-right-color: transparent;"></div> Disalin</div><!----></button><!----></div> <pre class=" "><!---->pipe<span class="hljs-selector-class">.enable_sequential_cpu_offload</span>() | |
| pipe<span class="hljs-selector-class">.vae</span><span class="hljs-selector-class">.enable_slicing</span>() | |
| pipe<span class="hljs-selector-class">.vae</span><span class="hljs-selector-class">.enable_tiling</span>()<!----></pre></div><!----> <ul><li>Untuk inferensi multi-GPU, optimasi <code>enable_sequential_cpu_offload()</code> harus dinonaktifkan.</li> <li>Menggunakan model INT8 akan memperlambat inferensi, yang dilakukan untuk mengakomodasi GPU dengan memori lebih rendah sambil mempertahankan kehilangan kualitas video yang minimal, meskipun kecepatan inferensi akan menurun secara signifikan.</li> <li>Model CogVideoX-2B dilatih dalam presisi <code>FP16</code>, dan semua model CogVideoX-5B dilatih dalam presisi <code>BF16</code>. | |
| Kami merekomendasikan untuk menggunakan presisi tempat model dilatih untuk inferensi.</li> <li><a href="https://github.com/pytorch/ao" rel="nofollow">PytorchAO</a> dan <a href="https://github.com/huggingface/optimum-quanto/" rel="nofollow">Optimum-quanto</a> dapat digunakan untuk mengkuantisasi modul text encoder, transformer, dan VAE guna mengurangi kebutuhan memori CogVideoX. Hal ini memungkinkan model berjalan di Colab T4 gratis atau GPU dengan memori lebih kecil! Selain itu, perhatikan bahwa kuantisasi TorchAO sepenuhnya kompatibel dengan <code>torch.compile</code>, yang dapat meningkatkan kecepatan inferensi secara signifikan. Presisi FP8 harus digunakan pada perangkat dengan NVIDIA H100 ke atas, yang memerlukan instalasi dari sumber <code>torch</code>, <code>torchao</code>, <code>diffusers</code>, dan <code>accelerate</code> paket Python. CUDA 12.4 direkomendasikan.</li> <li>Tes kecepatan inferensi juga menggunakan skema optimasi memori di atas. Tanpa optimasi memori, kecepatan inferensi meningkat sekitar 10%. Hanya versi <code>diffusers</code> dari model yang mendukung kuantisasi.</li> <li>Model ini hanya mendukung input dalam bahasa Inggris; bahasa lain dapat diterjemahkan ke bahasa Inggris untuk digunakan melalui penyempurnaan model besar.</li> <li>Penggunaan memori untuk fine-tuning model diuji dalam lingkungan <code>8 * H100</code>, dan program secara otomatis menggunakan optimasi <code>Zero 2</code>. Jika jumlah GPU tertentu ditandai dalam tabel, maka jumlah GPU tersebut atau lebih harus digunakan untuk fine-tuning.</li></ul> <table><thead><tr><th><strong>Atribut</strong></th><th><strong>CogVideoX-2B</strong></th><th><strong>CogVideoX-5B</strong></th></tr></thead><tbody><tr><td><strong>Nama Model</strong></td><td>CogVideoX-2B</td><td>CogVideoX-5B</td></tr><tr><td><strong>Presisi Inferensi</strong></td><td>FP16<em>(Disarankan), BF16, FP32, FP8</em>, INT8, INT4 tidak didukung</td><td>BF16 (Disarankan), FP16, FP32, FP8*, INT8, Tidak didukung INT4</td></tr><tr><td><strong>VRAM Inferensi GPU Tunggal</strong></td><td>FP16: Menggunakan diffusers 12,5GB<em>INT8: Menggunakan diffusers dengan torchao 7,8GB</em></td><td>BF16: Menggunakan diffusers 20,7GB<em>INT8: Menggunakan diffusers dengan torchao 11,4GB</em></td></tr><tr><td><strong>VRAM Inferensi Multi GPU</strong></td><td>FP16: Menggunakan diffusers 10GB*</td><td>BF16: Menggunakan diffusers 15GB*</td></tr><tr><td><strong>Kecepatan Inferensi</strong></td><td>Satu A100: ~90 detik, Satu H100: ~45 detik</td><td>Satu A100: ~180 detik, Satu H100: ~90 detik</td></tr><tr><td><strong>Penyesuaian Presisi</strong></td><td>FP16</td><td>BF16</td></tr><tr><td><strong>Konsumsi VRAM Fine-tuning</strong></td><td>47 GB (bs=1, LORA) 61 GB (bs=2, LORA) 62GB (bs=1, SFT)</td><td>63 GB (bs=1, LORA) 80 GB (bs=2, LORA) 75GB (bs=1, SFT)</td></tr></tbody></table> <a class="!text-gray-400 !no-underline text-sm flex items-center not-prose mt-4" href="https://github.com/huggingface/diffusers/blob/main/docs/source/en/training/cogvideox.md" target="_blank"><svg class="mr-1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" fill="currentColor" focusable="false" role="img" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 32 32"><path d="M31,16l-7,7l-1.41-1.41L28.17,16l-5.58-5.59L24,9l7,7z"></path><path d="M1,16l7-7l1.41,1.41L3.83,16l5.58,5.59L8,23l-7-7z"></path><path d="M12.419,25.484L17.639,6.552l1.932,0.518L14.351,26.002z"></path></svg><!----> <span><span class="underline">Update</span> on GitHub</span></a><!----> <p></p><!--]--><!----><!--]--><!--]--><!--]--> <!--[-1--><!--]--><!--]--> | |
| <script> | |
| { | |
| __sveltekit_g37pnb = { | |
| base: "/docs/diffusers/main/en", | |
| assets: "/docs/diffusers/main/en" | |
| }; | |
| const element = document.currentScript.parentElement; | |
| Promise.all([ | |
| import("/docs/diffusers/main/en/_app/immutable/entry/start.D3LnKZ4R.js"), | |
| import("/docs/diffusers/main/en/_app/immutable/entry/app.C0rBoMxR.js") | |
| ]).then(([kit, app]) => { | |
| kit.start(app, element, { | |
| node_ids: [0, 314], | |
| data: [null,null], | |
| form: null, | |
| error: null | |
| }); | |
| }); | |
| } | |
| </script> | |
Xet Storage Details
- Size:
- 55.5 kB
- Xet hash:
- a5ba3262259f2b7d9820e56a0077acb50b175ff4abd1af9f6f17e6f5b2c6051b
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.