GeekAlerts

جایی برای گیک‌ها

آشنایی با مدل چندوجهی یکپارچه BAGEL

آشنایی با مدل چندوجهی یکپارچه BAGEL
  • مدت زمان مطالعه: حدود ۱۵ دقیقه
  • اهداف:
    • یاد میگیری که BAGEL چیه و چه نیازی رو برطرف میکنه.
    • با معماری خاصش یعنی MoT (ترکیب متخصص‌های ترنسفورمر) آشنا میشی.
    • میفهمی که حالت «فکر کردن» در این مدل چطوری کار میکنه و چه تاثیری داره.
    • عملکردش رو روی بنچمارک‌های مختلف میبینی و با مدل‌های دیگه مقایسه‌اش میکنی.
    • یاد میگیری چطور به صورت عملی باهاش کار کنی و تنظیماتش رو تغییر بدی.

سلام به همه دوستان علاقه‌مند به دنیای هوش مصنوعی. امروز میخوایم با هم یک مدل خیلی جالب به اسم BAGEL رو بررسی کنیم. دنیای مدل‌های زبان بزرگ (LLM) که به صورت متن‌باز یا همون اوپن سورس ارائه میشن، خیلی سریع داره خودش رو به سیستم‌های تجاری و بسته نزدیک میکنه. اما وقتی صحبت از مدل‌های چندوجهی یا «مالتی‌مُدال» میشه، یعنی مدل‌هایی که هم متن رو میفهمن و هم تصویر رو، گزینه‌های اوپن سورسی که بتونن با مدل‌های معروفی مثل GPT-4o یا Gemini رقابت کنن، کمتر پیدا میشن. اینجاست که پروژه‌ای به اسم BAGEL وارد میدون میشه. هدف این پروژه اینه که هوش مصنوعی پیشرفته چندوجهی رو در دسترس همه قرار بده.

آموزش دادن به مدل‌های چندوجهی یکپارچه که بتونن به صورت همزمان تصویر رو درک کنن، تصویر جدید تولید کنن و حتی تصاویر موجود رو ویرایش کنن، یک چالش خیلی بزرگه. این کار به تصمیم‌های پیچیده در مورد معماری مدل، نیاز به مجموعه داده‌های عظیم و روش‌های آموزشی خیلی دقیق داره. BAGEL که توسط محقق‌هایی از شرکت ByteDance و چندین موسسه دانشگاهی توسعه داده شده، سعی کرده با این چالش‌ها روبرو بشه و نتیجه‌اش یک مدل پایه قدرتمند شده که با مجوز Apache 2.0 در اختیار همه قرار گرفته. توی این درس میخوایم بخش‌های مختلف این مدل رو با هم کالبدشکافی کنیم و ببینیم داستان از چه قراره.

فصل اول: BAGEL چیه و اصلا چرا بهش نیاز داریم؟

بیاین از اول شروع کنیم. BAGEL یک مدل پایه اوپن سورس هست که طوری طراحی شده تا به صورت ذاتی هم از درک چندوجهی و هم از تولید چندوجهی پشتیبانی کنه. اگه بخوایم فنی‌تر بگیم، این مدل یک ترنسفورمر فقط-رمزگشا (decoder-only) و یکپارچه است که روی تریلیون‌ها توکن پیش‌آموزش دیده. نکته مهم اینه که این حجم عظیم از داده‌ها فقط متن نیست، بلکه شامل داده‌های ترکیبی از متن، تصویر، ویدیو و اطلاعات وب هست که با دقت خیلی زیاد جمع‌آوری و آماده شدن.

این مدل در کل ۱۴ میلیارد پارامتر داره، اما موقع کار کردن و استنتاج (inference)، فقط ۷ میلیارد پارامترش فعال هستن.

حالا سوال اصلی اینه که چرا به مدل‌هایی مثل BAGEL نیاز داریم؟ دلیلش اینه که با اینکه سیستم‌های تجاری و بسته قابلیت‌های چندوجهی خیلی خفنی رو نشون دادن، اما دسترسی بهشون محدوده و این موضوع جلوی تحقیقات گسترده‌تر و استفاده‌های خلاقانه رو میگیره. توی مقاله‌ای که این مدل رو معرفی کرده، به یک «شکاف قابل توجه» بین مدل‌های دانشگاهی موجود و این سیستم‌های بسته اشاره شده. BAGEL میخواد این شکاف رو پر کنه و این کار رو از چند طریق انجام میده:

  • ارائه یک جایگزین اوپن سورس: این مدل یک گزینه عالی برای محقق‌ها و توسعه‌دهنده‌هاست تا بتونن بدون محدودیت روی مدل‌های چندوجهی کار کنن.
  • به اشتراک گذاشتن جزئیات: تیم سازنده یافته‌های کلیدی، جزئیات مراحل پیش‌آموزش و حتی پروتکل‌های ساخت داده‌ها رو به اشتراک گذاشته.
  • انتشار کدها و مدل: با منتشر کردن کدها و وزن‌های مدل (چک‌پوینت‌ها)، جامعه برنامه‌نویس‌ها و محقق‌ها میتونن به پیشرفت بیشتر این مدل کمک کنن.

BAGEL با یکپارچه کردن درک و تولید محتوا در یک چارچوب واحد، راه رو برای نسل جدیدی از مدل‌های چندوجهی اوپن سورس باز میکنه. در واقع، این مدل یک مدل تولید و درک یکپارچه است که پیش‌آموزش اون از مدل‌های زبان بزرگ شروع شده و همین موضوع باعث شده که قابلیت‌های پایه‌ای برای استدلال و گفتگو داشته باشه. این مدل میتونه ورودی و خروجی‌های تصویری و متنی رو به صورت ترکیبی پردازش کنه.

یکی از نکات کلیدی در مورد BAGEL اینه که روی داده‌های ترکیبی و درهم‌تنیده از ویدیو و وب پیش‌آموزش دیده. این کار بهش اجازه میده که تصاویر باکیفیت و فوتورئالیستیک، فریم‌های ویدیویی یا محتوای ترکیبی از تصویر و متن تولید کنه. این داده‌های درهم‌تنیده، اگه به درستی با هم تراز بشن، یک نوع «زنجیره فکر» (Chain-of-Thought) چندوجهی طبیعی رو در مدل به وجود میارن که به مدل اجازه میده قبل از تولید خروجی‌های بصری، اول «فکر» کنه.

فصل دوم: چه چیزی BAGEL رو خاص میکنه؟ معماری و قابلیت‌های نوظهور

حالا که فهمیدیم BAGEL چیه، بریم سراغ بخش‌های جذاب‌تر و ببینیم چه چیزی این مدل رو از بقیه متمایز میکنه. آموزش دیدن روی داده‌های متنوع و درهم‌تنیده باعث شده که BAGEL قابلیت‌های نوظهوری در زمینه استدلال پیچیده چندوجهی از خودش نشون بده. این‌ها قابلیت‌هایی هستن که به صورت مستقیم به مدل آموزش داده نشدن، بلکه با بزرگ‌تر شدن مقیاس مدل و داده‌ها، خود به خود پدیدار شدن. در نتیجه این ویژگی‌ها، BAGEL:

  • در بنچمارک‌های استاندارد برای درک و تولید چندوجهی، به شکل قابل توجهی از مدل‌های یکپارچه اوپن سورس قبلی بهتر عمل میکنه.
  • قابلیت‌های استدلال پیشرفته‌ای مثل دستکاری آزادانه تصویر (free-form image manipulation)، پیش‌بینی فریم‌های آینده (future frame prediction)، دستکاری سه‌بعدی (3D manipulation) و حتی ناوبری در دنیای شبیه‌سازی شده (simulated world navigation) رو به نمایش میذاره.

مقاله معرفی‌کننده این مدل به یک الگوی جالب اشاره میکنه که با افزایش حجم داده‌های چندوجهی در مرحله پیش‌آموزش، این الگو مشخص‌تر میشه:

  1. اول از همه، قابلیت‌های پایه مثل درک چندوجهی و تولید محتوای باکیفیت در مدل شکل میگیرن.
  2. بعد از اون، قابلیت‌های پیچیده‌تر مثل ویرایش تصویر و دستکاری آزادانه بصری پدیدار میشن.
  3. در نهایت، استدلال مبتنی بر زمینه طولانی (long-context reasoning) هم به درک و هم به تولید محتوا کمک میکنه. این نشون میده که مهارت‌های اتمی و پایه‌ای با هم ترکیب میشن و استدلال ترکیبی رو به وجود میارن.

این قابلیت‌های پیشرفته که معمولا فراتر از توانایی‌های مدل‌های سنتی ویرایش تصویر هستن، BAGEL رو به یک پروژه هیجان‌انگیز تبدیل کردن.

فلسفه یکپارچه‌سازی در BAGEL

یکی از اصول اصلی در طراحی BAGEL این بوده که ظرفیت مدل رو به حداکثر برسونن، بدون اینکه «محدودیت‌های ابتکاری یا قیدهای مخصوص یک وظیفه خاص» که در مدل‌های قبلی وجود داشت، رو به مدل اضافه کنن. برای رسیدن به این یکپارچگی واقعی، تیم سازنده چند تا گزینه طراحی رو بررسی کرده:

  • مدل‌های خودرگرسیو کوانتیزه شده (Quantized Autoregressive – AR): این مدل‌ها ساختار ساده‌ای دارن اما معمولا کیفیت بصری خروجی‌هاشون پایین‌تره و سرعت استنتاجشون هم کمه.
  • مدل‌های دیفیوژن خارجی (External Diffuser): این روش مدل‌های زبان بزرگ رو از طریق یک سری آداپتور به مدل‌های دیفیوژن وصل میکنه. با اینکه این مدل‌ها میتونن سریع همگرا بشن، اما یک گلوگاه (bottleneck) ایجاد میکنن، چون زمینه و کانتکست مدل زبان بزرگ رو توی چند توکن پنهان فشرده میکنن. این فشرده‌سازی میتونه باعث از دست رفتن اطلاعاتی بشه که برای استدلال با زمینه طولانی خیلی حیاتی هستن.

در نهایت، BAGEL یک رویکرد ترنسفورمر یکپارچه (Integrated Transformer) رو انتخاب کرده. این رویکرد شامل یکپارچه‌سازی اصول مدل‌های زبان بزرگ (برای درک و استدلال) و اصول مدل‌های دیفیوژن (برای تولید بصری قوی) در یک معماری ترنسفورمر واحد هست. این طراحی:

  • یک زمینه بدون گلوگاه رو در تمام بلوک‌های ترنسفورمر حفظ میکنه.
  • امکان تعامل بدون اتلاف اطلاعات بین ماژول‌های درک و تولید رو از طریق عملیات توجه به خود (self-attention) مشترک فراهم میکنه.
  • برای افزایش مقیاس مناسب‌تره و برای استدلال چندوجهی با زمینه طولانی عملکرد بهتری داره.

این معماری یکپارچه به توکن‌های متن، توکن‌های ViT (ترنسفورمر بینایی برای درک) و توکن‌های VAE (رمزگشای خودکار متغیر برای تولید) اجازه میده که با هم ترکیب بشن و به صورت منسجم پردازش بشن.

معماری MoT (ترکیب متخصص‌های ترنسفورمر)

برای پیاده‌سازی این دیدگاه یکپارچه، BAGEL از یک معماری به اسم Mixture-of-Transformers (MoT) یا «ترکیب متخصص‌های ترنسفورمر» استفاده میکنه. این معماری اون رو از مدل‌های متراکم (Dense) یا حتی مدل‌های «ترکیب متخصص‌ها» (Mixture-of-Experts – MoE) متمایز میکنه.

در معماری MoT مدل BAGEL:

  • دو متخصص ترنسفورمر جداگانه وجود داره: یکی از این متخصص‌ها برای درک چندوجهی بهینه شده و اون یکی برای تولید چندوجهی.
  • متناسب با این دو متخصص، از دو رمزگذار بصری (visual encoder) جداگانه هم استفاده میشه: یک رمزگذار برای درک (که از مدل SigLIP2 مقداردهی اولیه شده) و یک رمزگذار VAE برای تولید (که از مدل FLUX گرفته شده و در طول آموزش ثابت و بدون تغییر باقی میمونه).
  • نکته خیلی مهم اینه که این دو متخصص ترنسفورمر روی یک توالی توکن یکسان کار میکنن و در هر لایه از عملیات توجه به خود (self-attention) مشترک استفاده میکنن. این کار باعث میشه که یک تعامل عمیق بین مسیرهای درک و تولید به وجود بیاد.

توی مقاله این مدل، یک سری مطالعات حذفی (Ablation studies) ارائه شده که مدل‌های Dense، MoE (که در اون لایه‌های FFN تکثیر میشن) و MoT (که در اون تمام پارامترهای قابل آموزش مدل زبان برای متخصص تولید تکثیر میشن) رو با هم مقایسه میکنه. نتایج نشون میده که مدل MoT به طور مداوم از بقیه بهتر عمل کرده، به خصوص در بخش تولید چندوجهی (با معیار خطای MSE)، و همزمان عملکرد قوی خودش رو در بخش درک (با معیار خطای CE) حفظ کرده. این نتایج این ایده رو تقویت میکنه که اختصاص دادن متخصص‌های جداگانه با ظرفیت کامل برای درک و تولید، در حالی که به اونها اجازه داده میشه از طریق مکانیزم توجه زمینه رو به اشتراک بذارن، چالش‌های بهینه‌سازی که از اهداف یادگیری متضاد به وجود میان رو کاهش میده.

همچنین، مطالعات حذفی بیشتر نشون میده که ترکیب ویژگی‌های VAE و ViT به طور قابل توجهی ویرایش هوشمندانه تصویر رو بهبود میبخشه. این موضوع بر اهمیت زمینه بصری-معنایی در فعال کردن استدلال پیچیده چندوجهی تاکید میکنه و نقش اون رو در ظهور قابلیت‌های پیشرفته تایید میکنه.

فصل سوم: حالت «فکر کردن» در BAGEL: یک قدم فراتر در تولید محتوا

یکی از ویژگی‌های خیلی مهم BAGEL، توانایی اون برای درگیر شدن در یک فرآیند استدلال صریح یا همون «فکر کردن» قبل از تولید خروجی نهایی هست. این قابلیت به لطف دو مورد امکان‌پذیر شده:

  • داده‌های تقویت‌شده با استدلال: به داده‌های مرحله پیش‌آموزش، محتوای استدلال‌محور (با الهام از مدل DeepSeek-R1) اضافه شده. این محتوا شامل زنجیره فکر (Chain-of-Thoughts – CoT) برای درک چندوجهی هم میشه. فرضیه اینه که یک مرحله استدلال مبتنی بر زبان، قبل از تولید تصویر، میتونه اهداف بصری رو واضح‌تر کنه و به برنامه‌ریزی بهتر کمک کنه.
  • تولید صریح زنجیره فکر (CoT): برای وظایفی مثل تولید تصویر از متن یا ویرایش‌های پیچیده تصویر، میشه از BAGEL خواست که اول یک مرحله «فکر کردن» میانی (همون CoT) رو تولید کنه. این مرحله، دستور اولیه رو اصلاح میکنه یا استراتژی ویرایش رو مشخص میکنه. بعد از این مرحله، درک اصلاح‌شده مدل، تولید خروجی نهایی رو هدایت میکنه.

این فرآیند «فکر کردن» عملکرد مدل رو به شکل چشمگیری بهتر میکنه. بیاین چند تا مثال عددی ببینیم:

  • برای تولید تصویر از متن در بنچمارک WISE، مدل BAGEL به همراه CoT به امتیاز ۰.۷۰ رسیده. این یک پیشرفت خیلی بزرگ نسبت به نسخه بدون CoT خودش (که امتیاز ۰.۵۲ گرفته بود) محسوب میشه و از بهترین مدل‌های اوپن سورس قبلی هم جلو میزنه.
  • برای ویرایش هوشمندانه تصویر، استفاده از CoT امتیاز BAGEL رو در بنچمارک IntelligentBench از ۴۴.۰ به ۵۵.۳ افزایش داده. این بهبود رو میشه به استفاده بهتر از دانش عمومی (world knowledge) و راهنمایی دقیق‌تر برای ویرایش نسبت داد.

این توانایی «فکر کردن» به BAGEL اجازه میده تا با دستورات مبهم‌تر و وظایف پیچیده و چند مرحله‌ای بهتر کنار بیاد. این مدل یک حالت فکر کردن رو در خودش جا داده و از درک چندوجهی خودش برای بهبود تولید و ویرایش استفاده میکنه. با استدلال کردن در مورد دستورات ورودی، BAGEL توضیحات کوتاه رو به خروجی‌های دقیق و منسجم تبدیل میکنه. این کار تضمین میکنه که محتوای تولید شده دارای زمینه دقیق، جزئیات درست و سازگاری منطقی باشه که در نهایت به نتایج غنی‌تر و دقیق‌تر منجر میشه.

به طور کلی، چارچوب کلی مدل از یک پارادایم «پیش‌بینی گروه بعدی توکن» پیروی میکنه که در اون، مدل آموزش میبینه تا گروه بعدی توکن‌های زبانی یا بصری رو به عنوان یک هدف فشرده‌سازی پیش‌بینی کنه.

فصل چهارم: عملکرد BAGEL در دنیای واقعی: بنچمارک‌ها و اعداد و ارقام

خب، تا اینجا با کلیات و معماری مدل آشنا شدیم. حالا وقتشه ببینیم BAGEL در عمل چطور کار میکنه و وقتی با مدل‌های دیگه مقایسه میشه، چه جایگاهی داره. بهترین راه برای این کار، نگاه کردن به نتایج بنچمارک‌های مختلفه. بنچمارک‌ها در واقع یک سری آزمون استاندارد هستن که توانایی‌های مختلف مدل‌های هوش مصنوعی رو می‌سنجن.

تیم BAGEL مدل خودش رو روی چندین بنچمارک معتبر در زمینه‌های درک چندوجهی، تولید تصویر از متن و ویرایش تصویر ارزیابی کرده.

عملکرد در درک چندوجهی (Multimodal Understanding)

این بنچمارک‌ها توانایی مدل رو در فهمیدن محتوای تصاویر و پاسخ به سوالات مربوط به اونها می‌سنجن.

مدلMMEMMBenchMMMUMM-VetMathVista
Janus-Pro-7B۷۹.۲۴۱.۰۵۰.۰
Qwen2.5-VL-7B۲۳۴۷۸۳.۵۵۸.۶۶۷.۱۶۸.۲
BAGEL۲۳۸۸۸۵.۰۵۵.۳۶۷.۲۷۳.۱

همونطور که توی جدول بالا میبینین، BAGEL در اکثر این بنچمارک‌ها تونسته نتایج بهتری نسبت به مدل‌های اوپن سورس دیگه مثل Qwen2.5-VL-7B و Janus-Pro-7B ثبت کنه. این نشون میده که معماری یکپارچه و داده‌های آموزشی متنوعش تونسته به درک عمیق‌تری از محتوای بصری برسه.

عملکرد در تولید تصویر از متن (Text-to-Image Generation)

این بخش کیفیت تصاویری که مدل فقط بر اساس یک توضیح متنی تولید میکنه رو ارزیابی میکنه.

مدلGenEvalWISE
Janus-Pro-7B۰.۸۰۰.۳۵
SD3-Medium۰.۷۴
FLUX-1-dev۰.۸۲۰.۵۰
BAGEL۰.۸۲۰.۵۲
BAGEL + Rewritter/CoT۰.۸۸۰.۷۰

توی این جدول دو تا نکته مهم وجود داره. اول اینکه BAGEL به خودی خود عملکردی رقابتی با مدل‌های تخصصی تولید تصویر مثل FLUX-1-dev داره. دوم اینکه وقتی از قابلیت زنجیره فکر (CoT) یا بازنویسی دستور (Rewritter) استفاده میشه، عملکردش به شکل قابل توجهی بهتر میشه و از بقیه مدل‌ها جلو میزنه. این همون تاثیر مثبت «فکر کردن» قبل از تولیده.

عملکرد در ویرایش تصویر (Image Editing)

این بخش یکی از جذاب‌ترین قابلیت‌های BAGEL رو به چالش میکشه. اینجا توانایی مدل در ویرایش یک تصویر موجود بر اساس دستورات متنی سنجیده میشه.

مدلGEdit-Bench-EN (SC)GEdit-Bench-EN (PQ)GEdit-Bench-EN (O)IntelligentBenchKISE-BenchRISEBench
Step1X-Edit🥉۷.۰۹🥉۶.۷۶🥈۶.۷۰۱۴.۹۴۳.۲۹۱.۹
Gemini 2.0۶.۷۳۶.۶۱۶.۳۲🥈۵۷.۶🥈۶۲.۴۱🥈۱۳.۳
GPT-4o🥇۷.۸۵🥇۷.۶۲🥇۷.۵۳🥇۷۸.۹🥇۸۰.۰۹🥇۲۸.۹
BAGEL🥈۷.۳۶🥈۶.۸۳🥉۶.۵۲۴۴.۰۵۶.۲۱۶.۱
BAGEL+CoT🥉۵۵.۳🥉۶۰.۱۸🥉۱۱.۹

توی این جدول، BAGEL نتایج خیلی خوبی رو در سناریوهای کلاسیک ویرایش تصویر نشون میده و از مدل‌های اوپن سورس پیشرو بهتر عمل میکنه. در مقایسه با مدل‌های تجاری قدرتمندی مثل GPT-4o و Gemini 2.0 هم عملکرد قابل قبولی داره. باز هم میبینیم که اضافه کردن حالت زنجیره فکر (CoT) باعث بهبود امتیازات در بنچمارک‌های ویرایش هوشمندانه (IntelligentBench) و استدلال (RISEBench و KISE-Bench) میشه.

در تاریخ ۱۵ ژوئن ۲۰۲۵، تیم توسعه‌دهنده نتایج ارزیابی برای دو بنچمارک KRIS-Bench و RISEBench رو آپدیت و اصلاح کرد. بر اساس این نتایج، مدل BAGEL در این بنچمارک‌های استدلال، عملکردی قابل مقایسه با Gemini 2.0 از خودش نشون میده.

فصل پنجم: راهنمای عملی: چطور با BAGEL کار کنیم؟

خب، حالا که با تئوری و عملکرد BAGEL آشنا شدیم، بریم سراغ بخش عملی. چطور میشه از این مدل استفاده کرد؟ با توجه به اینکه این مدل ۱۴ میلیارد پارامتر داره (و ۷ میلیارد پارامتر فعال)، برای اجراش به سخت‌افزار نسبتا قوی نیاز داریم. حداقل به یک کارت گرافیک با ۱۲ گیگابایت VRAM و پشتیبانی از flash-attention نیاز هست.

اگه سخت‌افزار مورد نیاز رو ندارین، نگران نباشین. تیم سازنده یک دموی آنلاین روی وبسایت رسمی پروژه راه‌اندازی کرده که میتونین از طریق اون با مدل کار کنین. این دمو از قابلیت‌های درک تصویر، تولید تصویر و ویرایش تصویر پشتیبانی میکنه و برای همه این‌ها میتونین حالت «فکر کردن» رو فعال یا غیرفعال کنین.

اما اگه سخت‌افزار لازم رو دارین و دوست دارین مدل رو به صورت محلی روی کامپیوتر خودتون اجرا کنین، میتونین مراحل زیر رو دنبال کنین.

مرحله اول: آماده‌سازی محیط

اول از همه باید کدهای پروژه رو از گیت‌هاب دانلود کنین و محیط پایتون مورد نیاز رو بسازین.

# ۱. اول کدهای پروژه رو از گیت‌هاب کلون میکنیم
git clone https://github.com/bytedance-seed/BAGEL.git
# ۲. وارد پوشه پروژه میشیم
cd BAGEL
# ۳. یک محیط مجازی با استفاده از conda و پایتون نسخه ۳.۱۰ میسازیم
conda create -n bagel python=3.10 -y
# ۴. محیط مجازی رو فعال میکنیم
conda activate bagel
# ۵. کتابخونه‌های مورد نیاز رو از فایل requirements.txt نصب میکنیم
pip install -r requirements.txt
# ۶. کتابخونه flash_attn رو به صورت جداگانه نصب میکنیم
pip install flash_attn==2.5.8 --no-build-isolation

مرحله دوم: دانلود چک‌پوینت مدل

بعد از آماده شدن محیط، باید فایل‌های مدل پیش‌آموزش دیده رو از Hugging Face Hub دانلود کنین. این فایل‌ها شامل وزن‌های مدل هستن.

# این یک اسکریپت پایتون هست که باید اجرا بشه
from huggingface_hub import snapshot_download
# مسیر ذخیره فایل‌های مدل
save_dir = "models/BAGEL-7B-MoT"
# شناسه مخزن مدل در هاگینگ فیس
repo_id = "ByteDance-Seed/BAGEL-7B-MoT"
# مسیر کش برای دانلود
cache_dir = save_dir + "/cache"
# شروع دانلود فایل‌ها
snapshot_download(cache_dir=cache_dir,
                  local_dir=save_dir,
                  repo_id=repo_id,
                  local_dir_use_symlinks=False,
                  resume_download=True,
                  allow_patterns=["*.json", "*.safetensors", "*.bin", "*.py", "*.md", "*.txt"],
                 )

مرحله سوم: اجرای رابط کاربری وب

حالا همه چیز آماده است تا با استفاده از یک رابط کاربری ساده تحت وب که با Gradio ساخته شده، با مدل کار کنین.

# برای کارت‌های گرافیک با VRAM بیشتر از ۳۲ گیگابایت یا سیستم‌های چند گرافیکی
python app.py
# برای کارت‌های گرافیک با VRAM بین ۱۲ تا ۳۲ گیگابایت، پیشنهاد میشه از کوانتیزاسیون NF4 استفاده بشه
# این دستور رابط کاربری چینی رو هم فعال میکنه
python app.py --mode 2 --zh
# برای کارت‌های گرافیک با VRAM بین ۲۲ تا ۳۲ گیگابایت، استفاده از کوانتیزاسیون INT8 توصیه نمیشه
python app.py --mode 3

هایپرپارامترهای مهم برای استنتاج

وقتی با مدل کار میکنین، یک سری تنظیمات وجود داره که میتونین برای کنترل خروجی تغییرشون بدین. به این تنظیمات هایپرپارامتر میگن. درک این‌ها بهتون کمک میکنه نتایج بهتری بگیرین:

  • cfg_text_scale: این پارامتر کنترل میکنه که مدل چقدر باید به دستور متنی شما پایبند باشه. اگه مقدارش رو ۱.۰ بذارین، راهنمایی متنی غیرفعال میشه. محدوده معمولش بین ۴.۰ تا ۸.۰ هست. هرچی بالاتر بره، مدل سعی میکنه دقیقا چیزی که گفتین رو بسازه.
  • cfg_image_scale: این یکی برای ویرایش تصویره و کنترل میکنه که مدل چقدر باید جزئیات تصویر ورودی رو حفظ کنه. مقدار ۱.۰ راهنمایی تصویری رو غیرفعال میکنه. محدوده معمولش بین ۱.۰ تا ۲.۰ هست.
  • cfg_interval: این پارامتر مشخص میکنه که راهنمایی CFG در چه کسری از مراحل نویززدایی اعمال بشه. میشه مراحل پایانی رو از CFG معاف کرد تا محاسبات کمتر بشه. محدوده معمولش [۰.۴, ۱.۰] هست.
  • timestep_shift: این پارامتر توزیع مراحل نویززدایی رو جابجا میکنه. مقادیر بالاتر، مراحل بیشتری رو در ابتدای فرآیند تخصیص میدن (که روی طرح کلی تصویر تاثیر داره)؛ مقادیر پایین‌تر، مراحل بیشتری رو در انتهای فرآیند تخصیص میدن (که باعث بهبود جزئیات میشه).
  • num_timesteps: تعداد کل مراحل نویززدایی. مقدار معمولش ۵۰ هست.
  • cfg_renorm_min: حداقل مقدار برای نرمال‌سازی مجدد CFG. مقدار ۱.۰ این قابلیت رو غیرفعال میکنه. مقدار معمولش ۰ هست.
  • cfg_renorm_type: نوع نرمال‌سازی مجدد CFG.
    • global: نرمال‌سازی روی تمام توکن‌ها و کانال‌ها (پیش‌فرض برای تولید تصویر از متن).
    • channel: نرمال‌سازی روی کانال‌ها برای هر توکن.
    • text_channel: مثل channel هست اما فقط برای شرط متنی اعمال میشه (برای ویرایش خوبه، اما ممکنه باعث تاری تصویر بشه).

یک نکته کاربردی: اگه دیدین تصاویر ویرایش شده تار به نظر میرسن، سعی کنین نوع cfg_renorm_type رو به global تغییر بدین، یا مقدار cfg_renorm_min رو کم کنین، یا مقدار cfg_scale رو کاهش بدین.

آموزش و ارزیابی مدل

اگه بخواین مدل رو روی داده‌های خودتون آموزش بدین (fine-tune کنین)، میتونین از اسکریپت train.sh استفاده کنین.

bash scripts/train.sh

قبل از اجرا، باید متغیرهای داخل این اسکریپت رو با مقادیر دلخواه خودتون جایگزین کنین. برای جزئیات بیشتر میتونین به فایل TRAIN در مخزن گیت‌هاب مراجعه کنین.

همچنین اسکریپت‌هایی برای ارزیابی مدل روی بنچمارک‌های VLM، T2I و Editing هم ارائه شده که جزئیاتشون در فایل EVAL موجوده.

فصل ششم: تیم سازنده، جامعه کاربری و اطلاعات تکمیلی

یک پروژه اوپن سورس موفق، فقط به کد و مدل خلاصه نمیشه، بلکه به جامعه‌ای که اطرافش شکل میگیره هم وابسته است. تیم BAGEL هم از این قاعده مستثنی نیست.

تیم اصلی و نویسندگان

افراد زیادی در توسعه این مدل نقش داشتن. نویسندگان اصلی مقاله و پروژه که سهم یکسانی در کار داشتن با علامت ستاره مشخص شدن:
Chaorui Deng, Deyao Zhu, Kunchang Li, Chenhui Gou, Feng Li, Zeyu Wang, Shu Zhong, Weihao Yu, Xiaonan Nie, Ziang Song, Guang Shi, Haoqi Fan.

شخص مسئول مکاتبات پروژه Guang Shi (با ایمیل shiguang.sg@bytedance.com) و رهبر پروژه Haoqi Fan هستن.

مشارکت‌های جامعه اوپن سورس

تیم BAGEL از تمام مشارکت‌کننده‌های جامعه اوپن سورس برای حمایت‌های ارزشمندشون تشکر کرده. در ادامه لیستی از این مشارکت‌ها و تاریخچه‌شون رو میبینیم:

  • ۱۵ ژوئن ۲۰۲۵: نتایج ارزیابی برای KRIS-Bench و RISEBench آپدیت و اصلاح شد و کدهای ارزیابی برای این دو بنچمارک به همراه ImgEdit-Bench منتشر شد.
  • ۵ ژوئن ۲۰۲۵: کاربری به اسم davideuler یک Dockerfile با flash_attn از پیش ساخته شده رو به پروژه اضافه کرد.
  • ۳۰ مه ۲۰۲۵: کاربری به اسم prartio راهنمای نصب روی ویندوز ۱۱ رو ارائه داد و کاربری به اسم gluttony-10 روی بخش استنتاج با کوانتیزاسیون کار کرد.
  • ۲۹ مه ۲۰۲۵: کاربری به اسم jnc-nj یک Dockerfile به پروژه اضافه کرد.
  • ۲۶ مه ۲۰۲۵: کاربری به اسم neverbiasu یکپارچه‌سازی با ComfyUI رو انجام داد.
  • ۲۵ مه ۲۰۲۵: کاربری به اسم LeanModels نسخه فشرده شده با DF11 و کاربری به اسم Gapeleon نسخه فشرده شده با INT8 رو ارائه دادن. همچنین از gluttony-10 برای کمک به پکیج ویندوز تشکر شده.
  • ۲۴ مه ۲۰۲۵: با همکاری wangwei1237، gluttony-10 و KingNish24، یک اپلیکیشن Gradio ساخته و روی Hugging Face Space راه‌اندازی شد.
  • ۲۳ مه ۲۰۲۵: راهنمای آموزش مدل در فایل TRAIN قرار گرفت.
  • ۲۰ مه ۲۰۲۵: وبسایت رسمی، دمو، مدل و گزارش فنی BAGEL منتشر شد.

تیم توسعه‌دهنده همچنین یک فراخوان برای گزارش موارد ناموفق (Bad Cases) داده. اگه با مواردی مواجه شدین که مدل عملکرد ضعیفی داره، میتونین اونها رو در بخش issue#11 گیت‌هاب یا در کانال دیسکورد پروژه به اشتراک بذارین.

نحوه استناد و مجوز

اگه در کارهای تحقیقاتی خودتون از این مدل استفاده کردین، میتونین به مقاله زیر استناد کنین:

@article{deng2025bagel,
  title={Emerging Properties in Unified Multimodal Pretraining},
  author={Deng, Chaorui and Zhu, Deyao and Li, Kunchang and Gou, Chenhui and Li, Feng and Wang, Zeyu and Zhong, Shu and Yu, Weihao and Nie, Xiaonan and Song, Ziang and Shi, Guang and Fan, Haoqi},
  journal={arXiv preprint arXiv:2505.14683},
  year={2025}
}

مدل BAGEL تحت مجوز Apache 2.0 منتشر شده. این مجوز به کاربران اجازه میده که به صورت آزادانه از مدل استفاده کنن، اون رو تغییر بدن و توزیع کنن، که این موضوع به هدف اصلی پروژه یعنی در دسترس قرار دادن هوش مصنوعی پیشرفته کمک زیادی میکنه.

منابع

  • [۱] BAGEL: The Open-Source Unified Multimodal Model
  • [۲] GitHub – ByteDance-Seed/Bagel: Open-source unified multimodal model
  • [۳] Rsbuild App
  • [۴] Introduction to BAGEL: An Unified Multimodal Model

دیدگاه‌ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *