اگر امروز برای آموزش یک مدل تصویرساز شخصیسازیشده برنامهریزی میکنید، دیگر مجبور نیستید ساعتها وقت خود را صرف تبدیل فرمتهای پیچیده و بازنویسی کدهای آموزش کنید. انویدیا و هانگینگفیس با معرفی NeMo Automodel، دیواری را که میان مدلهای آماده و محیطهای آموزش صنعتی فاصله بود، تخریب کردند. این کتابخانه، آموزش توزیعشده با درجه تولیدی (Production-grade) را مستقیماً برای هر مدلی که در فرمت Diffusers در هاب هانگینگفیس موجود است، فراهم میکند. طبق یک پست وبلاگی مشترک که در آن به مشارکتهای قابل توجه «سایاک پل» از هانگینگفیس اشاره شده است، این ادغام به توسعهدهندگان اجازه میدهد تا بدون نیاز به هیچگونه تبدیل نقاط بازرسی (Checkpoint Conversion)، از یک مدل پیشآموزشدیده به یک نسخه تنظیمشده (Fine-tuned) منتقل شوند.
مدل انتشار (Diffusion Model) — شبیه هنرمندی که ابتدا یک بوم پر از نویز و برفک میبیند و سپس ذرهذره آن را به یک تصویر واضح تبدیل میکند — در دو سال اخیر موتور محرک برخی از هیجانانگیزترین عرضه های متنباز بوده است. این رویکرد در تضاد با روشهای سنتی است که در مقایسهی فرآیند انتشار در برابر رمزگشایی متوالی در مدلهای جدید انویدیا مورد بررسی قرار گرفته است تا بهرهوری عملیاتی افزایش یابد. نمونههایی مانند FLUX.1-dev برای تبدیل متن به تصویر، و Wan 2.1 و HunyuanVideo برای تبدیل متن به ویدیو، گواه این پیشرفت هستند. کتابخانه 🤗 Diffusers تبدیل به خانه پیشفرض این مدلها شده و یک رابط کاربری سازگار برای استنتاج، تطبیق و ترکیب خط لوله (Pipeline) فراهم میکند. با این حال، با مقیاس پذیر شدن آموزش و تنظیم دقیق، سازندگان به ابزارهای تخصصی برای تکه تکه کردن حافظه با بهرهوری بالا (Memory-efficient sharding)، کش کردن لیتنتها (Latent caching) و دستهبندی دادهها با رزولوشنهای مختلف (Multiresolution bucketing) نیاز دارند.
برای اکثر سازندگان، تنظیم دقیق تاکنون انتخابی بین دو راه دشوار بود: یا استفاده از آداپتورهای کوچک مقیاس LoRA روی یک GPU واحد، یا طراحی خوشههای پیچیده و کدنویسی سفارشی برای تنظیم دقیق کامل (Full Fine-tuning). مدلهای انتشاری مانند FLUX.1-dev با ۱۲ میلیارد پارامتر و HunyuanVideo با ۱۳ میلیارد پارامتر، نیازهای حافظه را به حدی رساندهاند که اسکریپتهای استاندارد دیگر پاسخگو نیستند. اینجاست که NeMo Automodel با معرفی طرحهای موازیسازی صنعتی، مقیاس آموزش را از یک GPU به صدها پردازنده گرافیکی گسترش میدهد. این ادغام بهطور کامل تحت مجوز Apache 2.0 متنباز است و جزئیات آن در راهنمای آموزش Diffusers آمده است.
مکانیسم ادغام و زیرساخت فنی
NeMo Automodel یک کتابخانه آموزش متنباز و نیتیو برای PyTorch DTensor است که در دل چارچوب گستردهتر NVIDIA NeMo تعبیه شده است. این سیستم برای پشتیبانی از اکوسیستم Diffusers بر دو اصل طراحی کلیدی استوار است:
اول، بومی بودن در هانگینگفیس (Hugging Face Nativity)؛ شما میتوانید مسیر pretrained_model_name_or_path را به هر آیدی مدل Diffusers در هاب متصل کنید. این کتابخانه از کلاسهای استاندارد مدل Diffusers (به عنوان مثال WanTransformer3DModel) برای بارگذاری و از خطلولهها (مانند WanPipeline) برای تولید استفاده میکند. این امر تضمین میکند که نقاط بازرسی بهطور کامل و بدون نقص به هاب بازگردانده شوند.
دوم، پیکربندی مستقل از مقیاس (Scale-Agnostic Configuration). در این روش، موازیسازی بهجای بازنویسی کد، از طریق فایلهای پیکربندی YAML مدیریت میشود. کاربران میتوانند با اعلام تنظیمات در فایل YAML، بین حالتهای FSDP2، موازیسازی تنسور (Tensor Parallel)، موازیسازی متخصص (Expert Parallel)، موازیسازی کانتکست (Context Parallel) و موازیسازی خط لوله (Pipeline Parallel) جابهجا شوند. این بدان معناست که همان دستورالعملها و اسکریپتهای آموزشی میتوانند برای هر مقیاسی تغییر یابند.
در لایههای زیرین، این سیستم از «تطبیق جریان» (Flow Matching) به عنوان هدف آموزشی استفاده میکند. برای افزایش سرعت پردازش (Throughput)، سیستم از آموزش در فضای لیتنت (Latent-space training) از طریق خروجیهای پیشکدگذاریشده VAE و بارگذاری دادههای دستهبندیشده با رزولوشنهای مختلف بهره میبرد.

قابلیتهای کلیدی باز شده
این همکاری دستاوردهای عملیاتی مشخصی برای کاربران Diffusers ایجاد میکند:
- حذف مالیات تبدیل نقاط بازرسی: وزنهای پیشآموزشدیده از هاب مستقیماً و بدون تغییر فعال میشوند. هیچ «فرمت آموزشی» جداگانهای برای تبدیل به یا از آن وجود ندارد. نقاط بازرسی تنظیمشده مستقیماً در یک
DiffusionPipelineبرای استنتاج بارگذاری میشوند. در نتیجه، ابزارهای پاییندست مانند کوانتش (Quantization)، کامپایل، آداپتورهای LoRA و نمونهبرداران (Samplers) سفارشی همچنان بدون مشکل کار میکنند. - پشتیبانی سریع از مدلهای جدید: هنگامی که یک مدل انتشار جدید وارد Diffusers میشود، فعالسازی آن در NeMo Automodel تنها مستلزم یک افزودنی کوچک در کد است؛ یعنی تعریف یک هندلر پیشپردازش داده و یک آداپتور مدل. باقی لایه دستورالعملها، از جمله FSDP2 و بارگذاری دستهبندیشده، بدون تغییر باقی میمانند.
- گزینههای تنظیم منعطف: هم تنظیم دقیق کامل برای دستیابی به حداکثر کیفیت در خوشههای بزرگ و هم روش PEFT مدل LoRA برای حداکثر بهرهوری در گرههای واحد، در یک ساختار دستورالعمل واحد پشتیبانی میشوند.
- مقیاسپذیری در سطح سازمانی: این کتابخانه ارکستراسیون چند گرهای (در حال حاضر از طریق SLURM و در آینده Kubernetes) و طرحهای پیشرفته تکه تکه کردن حافظه (Sharding) را اضافه میکند که آموزش مدلهای با بیش از ۱۲ میلیارد پارامتر را ممکن میسازد.
گردشکار تنظیم دقیق و تحلیل عملکرد
برای نمایش این گردشکار، انویدیا مدل FLUX.1-dev را روی مجموعه داده ۷۸ کارت تاروت Rider–Waite آموزش داد. روش نصب توصیه شده، استفاده از کانتینر Docker مدل NeMo Automodel (nvcr.io/nvidia/nemo-automodel:26.06) است که شامل PyTorch، TransformerEngine و وابستگیهای کامپایلشده CUDA میشود. متناوباً، میتوان آن را از طریق pip3 install nemo-automodel نصب کرد.
گام اول: پیشرمزگذاری مجموعه داده (Pre-encoding)
فرآیند با پیشرمزگذاری دادهها برای ذخیره لیتنتهای VAE و جاسازیهای متنی (Text Embeddings) آغاز میشود. این کار از بازپردازش تصاویر منبع در هر مرحله از آموزش جلوگیری میکند. برای مجموعه داده تاروت، ۷۸ تصویر از هانگینگفیس جاری (Stream) شده و با استفاده از یک بودجه پیکسلی مشخص روی GPUها توزیع شدند. این کار نمونهها را به دسته (Bucket) ۳۸۴×۶۴۰ اختصاص داد. پیشپردازش منجر به تولید فایلهای کش .pt و فایلهای متادیتای تکهتکه شده (مانند metadata_shard_0000.json) گردید.
گام دوم: اجرای آموزش
آموزش با استفاده از پیکربندی examples/diffusion/finetune/flux_t2i_flow.yaml اجرا شد. این فایل YAML مدل FLUX.1-dev، تنظیم دقیق کامل ترنسفورمر، آداپتور flow-matching مدل FLUX، اندازه دسته موثر ۳۲ و موازیسازی هشتگانه FSDP2 را انتخاب میکند. در هنگام اجرا، از دستورات خط فرمان برای تغییر مسیرهای خاص تاروت و تنظیماتی نظیر قرار دادن lr_scheduler.lr_decay_style روی حالت ثابت (Constant) و step_scheduler.max_steps روی ۲۰۰ استفاده شد.

گام سوم: تولید و اعتبارسنجی
نقاط بازرسی در گامهای ۵۰، ۱۰۰، ۱۵۰ و ۲۰۰ تولید شدند. نقطه بازرسی نهایی با برچسب epoch_66_step_199 برای تولید استفاده شد. مدل توکن تحریک «trtcrd» را آموخت. تا گام ۲۰۰، مدل توانست تصاویری با پالت رنگی قدیمی (کرم، قرمز و سیاه)، خطوط مرکب ضخیم، میدانهای رنگی تخت و ترکیبات نمادین (Allegorical) تولید کند، در حالی که محتوای پرامپت اصلی را حفظ میکرد.

وقتی توکن تحریک حذف میشد، خروجی مدل همچنان حالت عکاسانه (Photographic) داشت؛ این امر ثابت کرد که اثر یادگرفته شده بهطور قابل توجهی با توکن trtcrd مرتبط است و مدل پایه بهطور جهانی جایگزین نشده است.
بنچمارک بهرهوری سختافزاری
تمامی معیارهای عملکرد روی یک گره شامل ۸ عدد NVIDIA H100 80GB (با اتصال کامل NVLink) جمعآوری شد. نتایج به صورت میانگین ± انحراف معیار نمونه در سه پنجره ۱۰ مرحلهای وضعیت پایدار است. دستههای کامل با drop_last=true اجبار شدند و نوشتن نقاط بازرسی برای دقت بیشتر غیرفعال گردید.
عملکرد متن به تصویر (۵۱۲×۵۱۲):
- FLUX.1-dev (Full FSDP2): اندازه دسته جهانی/محلی ۳۲/۴. زمان هر گام: ۰.۹۰۲ ± ۰.۰۳۹ ثانیه. توان عملیاتی: ۳۵.۵۱ ± ۱.۵۵ تصویر در ثانیه (۴.۴۴ ± ۰.۱۹ تصویر بر ثانیه به ازای هر GPU). پیک حافظه: ۶۳.۸۸ GiB برای هر GPU.
- FLUX.1-dev (LoRA r64 DDP): اندازه دسته جهانی/محلی ۴۸/۶. زمان هر گام: ۰.۸۹۴ ± ۰.۰۰۸ ثانیه. توان عملیاتی: ۵۳.۷۳ ± ۰.۴۸ تصویر در ثانیه (۶.۷۲ ± ۰.۰۶ تصویر بر ثانیه به ازای هر GPU). پیک حافظه: ۶۷.۴۳ GiB برای هر GPU.
- Qwen-Image (Full FSDP2): اندازه دسته جهانی/محلی ۴۰/۵. زمان هر گام: ۰.۹۷۴ ± ۰.۰۷۵ ثانیه. توان عملیاتی: ۴۱.۲۱ ± ۳.۰۶ تصویر در ثانیه (۵.۱۵ ± ۰.۳۸ تصویر بر ثانیه به ازای هر GPU). پیک حافظه: ۵۳.۵۵ GiB برای هر GPU.
- Qwen-Image (LoRA r64 DDP): اندازه دسته جهانی/محلی ۲۴/۳. زمان هر گام: ۰.۵۱۵ ± ۰.۰۰۶ ثانیه. توان عملیاتی: ۴۶.۶۳ ± ۰.۵۴ تصویر در ثانیه (۵.۸۳ ± ۰.۰۷ تصویر بر ثانیه به ازای هر GPU). پیک حافظه: ۶۶.۳۳ GiB برای هر GPU.
عملکرد متن به ویدیو (۵۱۲×۵۱۲×۴۹ فریم):
- Wan 2.1 1.3B (Full): اندازه دسته جهانی/محلی ۸/۱. بررسی نقاط فعالسازی (Activation checkpointing): خاموش. زمان هر گام: ۰.۹۴۲ ± ۰.۰۳۸ ثانیه. توان عملیاتی: ۸.۵۰ ± ۰.۳۵ کلیپ در ثانیه (۱.۰۶ ± ۰.۰۴ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۶.۰۹ GiB برای هر GPU.
- Wan 2.1 14B (Full): اندازه دسته جهانی/محلی ۸/۱. بررسی نقاط فعالسازی: روشن. زمان هر گام: ۳.۷۹۸ ± ۰.۰۱۷ ثانیه. توان عملیاتی: ۲.۱۰۷ ± ۰.۰۰۶ کلیپ در ثانیه (۰.۲۶۳ ± ۰.۰۰۶ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۳۳.۳۵ GiB برای هر GPU.
- Wan 2.1 14B (LoRA r64): اندازه دسته جهانی/محلی ۱۶/۲. بررسی نقاط فعالسازی: روشن. زمان هر گام: ۷.۵۸۵ ± ۰.۰۱۴ ثانیه. توان عملیاتی: ۲.۱۱۰ ± ۰.۰۰۰ کلیپ در ثانیه (۰.۲۶۳ ± ۰.۰۰۰ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۲۴.۰۷ GiB برای هر GPU.
- Wan 2.2 A14B (Full High-Noise): اندازه دسته جهانی/محلی ۸/۱. بررسی نقاط فعالسازی: روشن. زمان هر گام: ۴.۶۲۸ ± ۰.۰۳۱ ثانیه. توان عملیاتی: ۱.۷۳۰ ± ۰.۰۱۰ کلیپ در ثانیه (۰.۲۱۷ ± ۰.۰۰۶ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۲۳.۵۷ GiB برای هر GPU.
- HunyuanVideo 1.5 (Full): اندازه دسته جهانی/محلی ۸/۱. بررسی نقاط فعالسازی: روشن. زمان هر گام: ۵.۹۲۶ ± ۰.۰۴۶ ثانیه. توان عملیاتی: ۱.۳۵۰ ± ۰.۰۱۰ کلیپ در ثانیه (۰.۱۷۰ ± ۰.۰۰۰ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۱۵.۹۰ GiB برای هر GPU.
- HunyuanVideo 1.5 (LoRA r64): اندازه دسته جهانی/محلی ۸/۱. بررسی نقاط فعالسازی: روشن. زمان هر گام: ۵.۵۷۵ ± ۰.۰۰۶ ثانیه. توان عملیاتی: ۱.۴۳۳ ± ۰.۰۰۶ کلیپ در ثانیه (۰.۱۸۰ ± ۰.۰۰۰ کلیپ بر ثانیه به ازای هر GPU). پیک حافظه: ۱۰.۵۸ GiB برای هر GPU.

نتایج تخصصی دامنه (Domain Specialization)
فرای آزمایش تاروت، این کتابخانه تخصصیسازی عمیق در دامنههای مختلف را ممکن میسازد. به عنوان مثال، تنظیم دقیق مدل Wan 2.1 روی یک مجموعه داده ویدئویی استودیو جیبلی (Ghibli) با موفقیت استایل خروجی را تغییر داد. این موضوع با تغییر چشمگیر در ظاهر یک گل در مقایسه با مدل پایه اثبات شد.

علاوه بر این، تأثیر استفاده از LoRA هنگام اعمال آداپتور روی Wan 2.1 مشاهده شد. این کار باعث شد ویدیو استایل خاص جیبلی را به خود بگیرد که بهویژه در هایلایتهای چشم شخصیتها مشهود بود. این نتایج، شامل مثالهایی برای FLUX.2، تأیید میکند که کاربران میتوانند هم به حداکثر کیفیت از طریق تنظیم دقیق کامل و هم به حداکثر بهرهوری از طریق LoRA دست یابند. این امر امکان متناسبسازی خروجیها برای دامنههای سبکشناختی بسیار خاص را فراهم میکند.

موازنهی فنی: تنظیم کامل در مقابل LoRA
کاربران اکنون میتوانند بر اساس محدودیتهای منابع خود انتخاب کنند. تنظیم دقیق کامل (Full Fine-tuning) حداکثر کیفیت را برای کسانی که به خوشههای بزرگ GPU دسترسی دارند ارائه میدهد، در حالی که تنظیم دقیق کارآمد پارامترها (PEFT) در سبک LoRA، حداکثر بهرهوری را برای محیطهای تکگره فراهم میکند. یک ساختار دستورالعمل واحد هر دو حالت را مدیریت میکند و بار معماری را برای توسعهدهندگان کاهش میدهد.


این همکاری بهطور بنیادی شیوه آموزش مدلهای انتشار را تغییر میدهد، زیرا موازیسازی را به یک «انتخاب پیکربندی» تبدیل میکند. با حذف «مالیات نقاط بازرسی»، مانع ورود پژوهشگران برای تکرار و آزمایش روی جدیدترین مدلهای وزنباز بلافاصله پس از انتشار در هاب هانگینگفیس از بین میرود. این رویکرد متنباز در راستای استراتژی گستردهتر انویدیا در انتشار مدلهای قدرتمند است، مشابه آنچه در نمودار Nemotron 3 Ultra در برابر مدلهای بسته برای اثبات برابری توان استدلالی مشاهده شد.
به عنوان گام بعدی، این پروژه قصد دارد دستورالعملهای انتشار را از طریق یک API پایتونی کاملاً تایپشده (Fully Typed) ارائه دهد. در حالی که YAML برای پیکربندیهای بازتولیدپذیر و کنترل نسخه ایدهآل است، یک رابط برنامهنویسی به کاربران اجازه میدهد تا مدلها، دادهها، بهینهسازها و قطعات موازیسازی را مستقیماً از داخل پایتون ترکیب کنند. این کار استفاده از دستورالعملها را در کدهای آموزشی موجود، نوتبوکها و گردشکارهای آزمایش راحتتر میکند.
گام بعدی شما
- اگر مدلهای Diffusers را آموزش میدهید، کانتینر Docker رسمی NeMo Automodel را برای تست سرعت جایگزین اسکریپتهای فعلی کنید.
- فایلهای YAML مربوط به FSDP2 را بررسی کنید تا بفهمید چگونه بدون تغییر کد، توزیع مدل را روی چندین GPU بهینه کنید.
- از API پایتونی که قرار است بهزودی منتشر شود برای اتوماسیون گردشکارهای آموزشی خود استفاده کنید.
اما این تنها بخشی از استراتژی انویدیا برای تسریع استنتاج است؛ جزئیات تکاندهنده سرعت تراشههای Blackwell در اجرای این مدلها را در تحلیل بعدی بررسی خواهیم کرد.




گفتگو