ERTACache: یه راه خفن برای سریع‌تر و بهتر کردن مدل‌های دیفیوژن!

Fall Back

خب بچه‌ها، امروز میخوام درباره یه ایده جالب به اسم ERTACache صحبت کنم؛ این ایده تازه از دل دنیای هوش مصنوعی اومده و هدفش اینه که مدل‌های دیفیوژن (Diffusion Models) رو هم سریع‌تر کنه و هم کیفیت خروجی‌شون رو نگه داره یا حتی بهترش کنه! اگه اسم مدل دیفیوژن رو نشنیدی:

مدل دیفیوژن یعنی همون مدل‌هایی که امروزه کلی سر و صدا کردن، مخصوصا برای ساختن عکس و ویدیو از هیچ! مثلاً مدل‌هایی مثل Stable Diffusion رو دیدی که میگن “از متنش عکس بساز”؟ اینا مدل دیفیوژن هستن.

حالا مشکل چیه؟ این مدل‌ها برخلاف مدل‌های معمولی، پروسه پیش‌بینی‌شون (بهش میگن inference) یه خورده کند و سنگین هست چون باید مرحله به مرحله (یا همون Timesteps، یعنی گام‌های زمانی مختلف) محاسبات انجام بدن. این باعث میشه کلی قدرت سخت‌افزاری و زمان مصرف کنن.

یه راه ساده برای تند کردن کارشون اینه که خروجی‌های میانی (Feature Cache، یعنی نتیجه‌های باحالی که وسط کار تو هر مرحله درمیاد) رو نگه دارن و دوباره ازشون استفاده کنن، ولی این خودش باعث میشه کیفیت خروجی بیاد پایین، یعنی دیگه اون عکس یا ویدیوی نهایی لزوماً به خوبی حالت اصلی نیست!

اینجا ERTACache میاد وسط! این روش یه نگاه دقیق و علمی انداخته به اینکه اشکال‌های این حافظه‌سازی (Caching) چیه. اونا فهمیدن که قضیه دو تا ایراد اصلی داره:

۱. Feature Shift Error: یعنی میان خروجی‌هایی که وسط کار کش می‌کنن اشتباه‌هایی پیش میاد و وقتی دوباره ازش استفاده می‌کنن، سر جاش نیست!
۲. Step Amplification Error: این یکی یعنی وقتی تو یه سری مراحل خطا داری، این اشتباهات جمع میشه و بزرگ‌تر میشه چون با زمان جلوتر میره (همون propagate کردن خطاها).

خب، ERTACache برای این دو تا مشکل اومده چه کار کنه؟ چند تا کار باحال انجام داده:

  • یه مرحله داره که بهش Offline Residual Profiling میگن. یعنی قبل اینکه مدل شروع به کار کنه، بررسی می‌کنه ببینه تو چه مرحله‌هایی میشه کش درست و قابل اعتمادی ساخت و تو کدوم مرحله‌ها نه.
  • یه سیستم داره که همون Integration Intervals (بازه‌های ترکیب مرحله‌ها) رو بسته به روند اجرا (Trajectory-Aware Correction Coefficient) خودش هوشمندانه تنظیم می‌کنه. یعنی لازم نیست همه چیز ثابت باشه و بر اساس شرایط واکنش نشون میده!
  • با یه مدل خطی بسته (Closed-Form Residual Linearization Model)، خطای کش شدن داده‌ها رو دقیق و سریع تخمین می‌زنه تا نذاره اشتباه‌ها بزرگ شن.

نتیجه همه این داستانا چیه؟ طبق آزمایش‌هایی که خودشون انجام دادن (روی دیتاست‌های معروف ساخت عکس و ویدیو)، این روش تونسته inference رو تا دو برابر سریع‌تر کنه! یعنی مثلاً به جای اینکه ۲۰ ثانیه صبر کنی، تو ۱۰ ثانیه نتیجه رو می‌بینی و کیفیت تصویر هم تقریبا همونه یا حتی تو بعضی بخش‌ها بهتره.

مثالی که خود محقق‌ها آوردن، روی مدل مشهور Wan2.1 از مدل‌های ویدیویی هست. این مدل خیلی معروفه برای ساخت ویدیو. ERTACache تونسته با همین روش سرعت رو دو برابر کنه و کیفیت هم از نظر معیار VBench خیلی کم پایین اومده، یعنی هنوز میشه گفت نتیجه دقیقاً شبیه قبله اما با سرعت خیلی بیشتر!

این وسط اگه خواستی کد منبعش رو ببینی یا حتی روی پروژه‌های خودت امتحانش کنی، می‌تونی بری تو گیت‌هابشون: https://github.com/bytedance/ERTACache

پس خلاصه‌اش اینکه: اگه عاشق مدل‌های تولید عکس و ویدیوی هوش مصنوعی هستی و دلت می‌خواد سریع‌تر به نتیجه برسی، ERTACache می‌تونه حسابی به دردت بخوره!

منبع: +