مدل LLaVA نقطهی عطفی در مهندسی مدلهای چندوجهی (Multimodal) بود. پیش از آن، اتصال انکودرهای تصویر به مدلهای زبانی به ساختارهای پیچیدهای مانند Q-Former متکی بود که هم آموزش دشواری داشتند و هم اطلاعات بصری را در گلوگاههای محدودکننده هدر میدادند. LLaVA ثابت کرد که با یک پروجکتور MLP دولایهی بسیار ساده و آموزش مستقیم با تابع زیان مدل زبانی، میتوان نتایجی فوقالعاده گرفت.
درک معماری LLaVA و مراحل دونقطهای آموزش آن (همترازی پروجکتور و سپس تنظیم دقیق با دستورالعملها) پایهی اصلی ساخت و تنظیم هر VLM نوین است. اگر قصد دارید دستیارهای هوشمند بصری را برای مصارف بومی یا دامنههای تخصصی مانند اسناد، پزشکی یا پردازش تصویر سفارشیسازی کنید، شناخت این دستورالعمل سبک و مقیاسپذیر ضروری است.
اگرچه پیشآموزش کامل این مدلها از صفر به کلاسترهای چند پردازندهای قوی نیاز دارد که تهیه یا اجارهی آنها از خارج دشوار است، اما پیادهسازی معماری پروجکتور، تنظیم دادهها و حتی اجرای استنتاج نسخههای کوانتیزهشده یا پایپلاینهای سبک روی سیستم شخصی یا با تکنیکهای بهینهسازی بهسادگی امکانپذیر است.
مدل LLaVA (آوریل 2023) بیش از هر معماری چندوجهی دیگری در دنیا الگوبرداری شده است. این مدل، Q-Former را در BLIP-2 با یک MLP دولایه و کراساتنشن گیتدار در Flamingo را با الحاق سادهی توکنها جایگزین کرد؛ سپس روی 158 هزار نوبت گفتوگوی دستورالعمل بصری که GPT-4 صرفاً از روی کپشنهای متنی تولید کرده بود، آموزش دید. هر متخصصی که بین سالهای 2023 تا 2026 یک مدل بینایی-زبان (VLM) ساخته، در واقع نسخهای از LLaVA را پیاده کرده است. LLaVA-1.5 از یک پروجکتور MLP و انکودر 336 پیکسلی بهره برد. LLaVA-NeXT کاشیکاری AnyRes را برای ورودیهای با وضوح بالا اضافه کرد. LLaVA-OneVision نیز تصویر تکی، چند تصویر و ویدیو را در قالب یک دستورالعمل یکپارچه ساخت. در این درس، این دستورالعمل را بررسی میکنیم، پروجکتور آن را پیادهسازی میکنیم و میبینیم که چرا «سادگی برنده شد».
اهداف یادگیری
- ساخت یک پروجکتور MLP دولایه که امبدینگ تکههای (Patch Embedding) مدل ViT (با بعد 1024) را به بعد امبدینگ یک LLM (با بعد 4096) نگاشت میکند.
- بررسی گامبهگام فرایند دومرحلهای آموزش LLaVA: (1) همترازی پروجکتور روی 558 هزار جفت تصویر-کپشن، (2) تنظیم دقیق با دستورالعملهای بصری (Visual instruction tuning) روی 158 هزار نوبت گفتوگوی تولیدشده توسط GPT-4.
- ساخت یک پرامپت با قالب LLaVA شامل جایگاه نگهدارندهی توکن تصویر، پرامپت سیستم، و نوبتهای گفتوگوی کاربر/دستیار.
- تحلیل چرایی مهاجرت جامعهی هوش مصنوعی از Q-Former به سمت MLP، با وجود برتری Q-Former در بودجهی توکن.
صورت مسئله
ماژول Q-Former در BLIP-2 (درس 12.03) تصویر را در 32 توکن فشرده میکند؛ تمیز، کارآمد و عالی برای بنچمارکها. اما دو مشکل اساسی دارد:
اول اینکه Q-Former گرچه آموزشپذیر است، تابع زیان (loss) آن وظیفهی نهایی را هدف نمیگیرد. مرحلهی اول ITC+ITM+ITG را آموزش میدهد و مرحلهی دوم تابع زیان مدل زبانی (LM loss) را. کوئریها بازنمایی میانی خاصی یاد میگیرند که LLM بعداً باید آن را رمزگشایی کند؛ در نتیجه اطلاعات در این گلوگاه هدر میرود.
دوم اینکه Q-Former حدود 188 میلیون پارامتر دارد و در مقیاس سال 2023 LLaVA، مجبور بودید آن را هماهنگ با LLM مقصد طراحی کنید. با تغییر LLM، باید Q-Former دوباره آموزش میدید. با تغییر انکودر بینایی هم همینطور. هر ترکیب جدید، عملاً یک پروژهی تحقیق و توسعهی جداگانه بود.
پاسخ LLaVA به این مسئله به شکلی شگفتآور ساده بود: 576 توکنِ تکهی ViT را بردارید، هر کدام را از یک MLP دولایه (1024 → 4096 → 4096) عبور دهید، و تمام این 576 توکن را مستقیماً داخل دنبالهی ورودی LLM بریزید؛ بدون هیچ گلوگاهی و بدون پیشآموزش مرحلهی اول روی اهداف عجیبوغریب. کافی است MLP را مستقیماً با یک تابع زیان LM آموزش دهید.
دادهها از کجا میآیند؟ اینجاست که دومین ایدهی درخشان LLaVA مطرح میشود: استفاده از GPT-4 (نسخهی متنی محض) برای تولید دادههای دستورالعمل. دادههای کپشن و کادرهای محدودکننده (Bounding box) یک تصویر در COCO را به GPT-4 میدهید و از آن میخواهید گفتوگوها، توضیحات و پرسشهای استدلالی پیچیده بسازد؛ به همین سادگی، 158 هزار نوبت دستورالعمل-پاسخ بدون نیاز به برچسبگذاری انسانی و کاملاً رایگان به دست آمد.
نتیجه: یک VLM که ظرف یک روز روی 8 پردازندهی A100 آموزش دید، Flamingo را در بنچمارک MMMU شکست داد، و یک چکپوینت متنباز منتشر کرد که جامعهی هوش مصنوعی توانست آن را گسترش دهد. تا اواخر سال 2023، بیش از 50 پروژه از آن fork شدند.
مفهوم اصلی
معماری
مشخصات LLaVA-1.5 در نسخهی 7B:
- انکودر بینایی: CLIP ViT-L/14 @ 336 (در مرحلهی اول ثابت یا frozen، در مرحلهی دوم به دلخواه آموزشپذیر).
- پروجکتور: MLP دولایه با فعالساز GELU بهصورت
1024 → 4096 → 4096. - مدل زبانی بزرگ (LLM): Vicuna-7B v1.5 (نسخهی 13B از Vicuna-13B استفاده میکند؛ بعدها فورکها به سراغ Llama-3.1-8B رفتند).
گذر رو به جلو (Forward pass) روی یک تصویر بههمراه پرامپت متنی:
img -> ViT -> 576 patches of dim 1024
patches -> MLP -> 576 tokens of dim 4096
prompt: system + "<image>" placeholder + user question
replace <image> token with the 576 projected tokens
feed the full sequence to the LLM
decode response
تصویر 576 توکن از زمینه (Context) مدل زبانی را اشغال میکند. در زمینهی 2048 توکنی، 1472 توکن برای متن باقی میماند. در زمینههای 32k، این مقدار ناچیز و در حد خطای گرد کردن است.
مرحلهی 1: همترازی پروجکتور
مدل ViT و LLM را فریز کنید. تنها پروجکتورِ MLP دولایه را آموزش دهید. مجموعهداده: 558 هزار جفت تصویر-کپشن (از LAION-CC-SBU). تابع زیان: مدلسازی زبان روی کپشن، مشروط به توکنهای تصویر پروجکتشده.
در یک تکاپوک با اندازهی دستهی 128، این آموزش ظرف چند ساعت تمام میشود. پروجکتور یاد میگیرد فضای ViT را به فضای LLM نگاشت کند؛ آن هم بدون هیچ نظارت ویژهی وظیفه.
مرحلهی 2: تنظیم دقیق با دستورالعملهای بصری
پروجکتور را از حالت فریز خارج کنید (همچنان آموزشپذیر بماند). LLM را هم از حالت فریز خارج کنید (معمولاً کامل، گاهی با LoRA). حالا روی 158 هزار نوبت دستورالعمل بصری آموزش دهید.
ترفند اصلی، خود دادههای دستورالعمل است. لیو (Liu) و همکارانش این دادهها را به این ترتیب تولید کردند:
- یک تصویر از COCO بردارید.
- توضیحات متنی آن را استخراج کنید (5 کپشن انسانی + فهرست کادرهای محدودکننده).
- این اطلاعات را همراه با سه قالب پرامپت (Prompt template) به GPT-4 بفرستید:
- مکالمه: «یک گفتوگوی رفتوبرگشتی بین یک کاربر و دستیار دربارهی این تصویر بساز.»
- توضیح دقیق: «توضیحی غنی و با جزئیات از تصویر ارائه بده.»
- استدلال پیچیده: «سوالی مطرح کن که نیازمند استدلال دربارهی تصویر باشد، سپس به آن پاسخ بده.»
- خروجی GPT-4 را به جفتهای (دستورالعمل، پاسخ) تبدیل کنید.
هیچیک از این بخشها مستقیماً با خود تصویر سروکار ندارد و همهچیز متکی بر توضیحات متنی است. GPT-4 محتوای بصری باورپذیری خیالپردازی (Hallucinate) میکند. مقداری نویز وجود دارد، اما جواب داد: 158 هزار نوبت گفتوگو برای شکلگیری قابلیت مکالمه کاملاً کافی بود.
چرا جامعهی هوش مصنوعی این روش را کپی کرد؟
- نیازی به تنظیم توابع زیان خاص برای مرحلهی 1 نیست؛ در تمام مسیر از تابع زیان LM استفاده میشود.
- پروجکتور ظرف چند ساعت آموزش میبیند، نه چند روز.
- با بازآموزیِ صرفاً پروجکتور، میتوان LLM را تعویض کرد (LLaVA-Llama2، LLaVA-Mistral، LLaVA-Llama3).
- پایپلاین دادههای دستورالعمل بصری از GPT-4 استفاده میکند و بازتولید آن برای حوزههای کاری جدید بسیار ارزان است.
مدلهای LLaVA-1.5 و LLaVA-NeXT
مدل LLaVA-1.5 (اکتبر 2023) این موارد را اضافه کرد:
- ترکیب دادههای وظایف آکادمیک (VQA، OKVQA، RefCOCO) در مرحلهی تنظیم با دستورالعمل.
- پرامپت سیستم بهتر.
- یک پروجکتور MLP دولایه بهجای لایهی خطی سادهی اولیه، و CLIP ViT-L/14 در ابعاد 336 پیکسل (576 توکن) بهجای 224 پیکسل (256 توکن). طول دنبالههای آموزشی روی 2048 توکن باقی ماند.
- یک نسخهی با وضوح بالا مبتنی بر تقسیم شبکهای در مقاله، که بعدها LLaVA-NeXT آن را با نام AnyRes عرضه کرد.
مدل LLaVA-NeXT (ژانویه 2024) این موارد را افزود:
- قابلیت AnyRes: تقسیم تصاویر وضوحبالا به شبکهای 2x2 یا 1x3 از برشهای 336x336، بهعلاوهی یک تصویر بندانگشتی سراسری با وضوح پایین. هر برش به 576 توکن تبدیل میشود؛ در مجموع حدود 2880 توکن بصری به ازای هر تصویر. عملکرد در وظایف OCR و نمودار جهش چشمگیری داشت.
- ترکیب بهتر دادههای دستورالعمل به کمک ShareGPT4V (کپشنهای باکیفیتِ GPT-4V).
- مدلهای زبانی پایهی قویتر (Mistral-7B، Yi-34B).
مدل LLaVA-OneVision
در درس 12.08 بهتفصیل به OneVision میپردازیم. خلاصهی ماجرا: همان پروجکتور استفاده میشود، اما با یک برنامهی آموزشی مرحلهبهمرحله (Curriculum) که تصویر تکی، چند تصویر و ویدیو را در قالب یک مدل واحد با بودجهی توکن بصری مشترک پوشش میدهد.
مقایسه با Q-Former
| Q-Former (BLIP-2) | MLP (LLaVA) | |
|---|---|---|
| توکنهای بصری به ازای هر تصویر | 32 | 576 (پایه) یا 2880 (در AnyRes) |
| پارامترهای آموزشپذیر | 188M + مدل زبانی | حدود 22M (در مدل 7B) + مدل زبانی |
| تابع زیان مرحلهی 1 | ITC+ITM+ITG | فقط LM |
| تعویض درجا و آسان LLM | نیازمند بازآموزی | تعویض با کمترین بازآموزی |
| چند تصویری | دشوار | طبیعی (الحاق) |
| ویدیو | دشوار | طبیعی (الحاق فریمبهفریم) |
| بودجهی توکن | کم | زیاد |
پروجکتور MLP در سادگی و انعطافپذیری توکنها برنده میشود؛ Q-Former در بودجهی توکن دست بالا را دارد. از اواخر سال 2023 به بعد، بودجهی توکن دیگر گلوگاه اصلی نبود (پنجرهی زمینهی مدلهای زبانی به 32k تا بیش از 128k رسید) و سادگی بازی را برد.
قالب پرامپت
A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions. USER: <image> Describe this image in detail. ASSISTANT: The image shows ...
عبارت <image> یک توکن جایگزین است. پیش از توکنسازی (Tokenization)، این برچسب با 576 توکن بصری (یا 2880 در AnyRes) جایگزین میشود. توکنایزر دنبالهای کمی طولانیتر از آنچه روی آن آموزش دیده میبیند، اما LLM از پس این ورودی جدید برمیآید چون در مرحلهی اول دقیقاً همین را یاد گرفته است.
دخلوخرج پارامترها
تفکیک پارامترهای LLaVA-1.5-7B:
- انکودر بینایی CLIP ViT-L/14 @ 336: حدود 303M پارامتر (در مرحلهی اول فریز، در مرحلهی دوم اغلب باز).
- پروجکتور (دو لایهی خطی): حدود 22M پارامترِ آموزشپذیر.
- مدل Llama-7B: حدود 7B پارامتر.
- مجموع: 7.3B پارامتر. پارامترهای آموزشپذیر در مرحلهی دوم: کل 7B بهاضافهی 22M پروجکتور.
هزینهی آموزش برای مرحلهی 2: حدود 20 ساعت روی 8 پردازندهی A100. عدد کلیدی همین است: یک روز، روی یک نود، با قابلیت بازتولید آسان. دلیل فراگیر شدن LLaVA دقیقاً همین بود.
به کار بگیرید
فایل code/main.py این بخشها را پیادهسازی میکند:
- پروجکتور MLP دولایه (ابعاد
16 → 32 → 32برای مقیاس آزمایشی) در پایتون خالص. - پایپلاین ساخت پرامپت: پرامپت سیستم + جایگزینی
<image>با N توکن تصویر پروجکتشده + نوبت کاربر + جایگاه خالی برای تولید متن توسط دستیار. - ابزاری برای مصورسازی اینکه بلوک 576 توکنی تصویر چه فضایی از زمینهی LLM را اشغال میکند (درصد مصرفی از زمینههای 2k، 32k و 128k).
تحویل پروژه
این درس فایل outputs/skill-llava-vibes-eval.md را تولید میکند. این اسکریپت با دریافت یک چکپوینت از خانوادهی LLaVA، یک مجموعهی ارزیابی حسی (vibes-eval) شامل 10 پرامپت (3 کپشننویسی، 3 VQA، 2 استدلال، 2 امتناع یا refusal) را اجرا میکند و گزارشی خوانا ارائه میدهد. هدف بنچمارک گرفتن نیست؛ صرفاً یک تست دود (Smoke test) است تا مطمئن شوید پروجکتور و LLM بهخوبی با هم ارتباط برقرار کردهاند.
تمرینها
-
تعداد پارامترهای آموزشپذیر را برای پروجکتور MLP دولایه با ابعاد
1024 → 4096 → 4096محاسبه کنید. با احتساب فعالساز GELU و بایاسها، این پروجکتور چه کسری از کل پارامترهای LLaVA-13B را تشکیل میدهد؟ -
یک پرامپت LLaVA برای حالت «امتناع» بسازید؛ فرض کنید تصویر شامل یک فرد عادی است که حریم خصوصی دارد. پاسخ مورد انتظار دستیار را بنویسید. چرا LLaVA باید بتواند در حالت صفر-شات (Zero-shot) از پاسخ به این پرامپت خودداری کند و چه دادههای آموزشی برای تقویت این رفتار امتناع لازم است؟
-
بخش AnyRes را در وبلاگ LLaVA-NeXT مطالعه کنید. تعداد توکنهای بصری را برای یک تصویر با ابعاد 1344x672 در حالت AnyRes محاسبه کنید. آن را با 576 توکنِ حالت پایهی 336x336 مقایسه کنید.
-
پروجکتور مرحلهی 1 مدل LLaVA با تابع زیان LM روی کپشنها آموزش میبیند. اگر مرحلهی 1 را رد کنید و مستقیماً به سراغ مرحلهی 2 (تنظیم با دستورالعملهای بصری) بروید چه اتفاقی میافتد؟ برای پاسخ، به آزمایشهای حذفی (Ablation) مقالهی Prismatic VLMs (شناسهی arXiv:2402.07865) ارجاع دهید.
-
مجموعهدادهی LLaVA-Instruct-150k از GPT-4 و کپشنهای COCO برای ساخت دستورالعملها استفاده میکند. برای یک حوزهی تخصصی جدید (مانند تصاویر رادیولوژی پزشکی یا تصاویر ماهوارهای)، پایپلاین چهار مرحلهای ساخت دادههای دستورالعمل را شرح دهید. در هر مرحله چه خطاهایی ممکن است رخ دهد؟
اصطلاحات کلیدی
| اصطلاح | در گفتوگوها | معنای دقیق فنی |
|---|---|---|
| پروجکتور (Projector) | «پل رابط MLP» | یک MLP دولایه با GELU که بعد ViT را به بعد LLM نگاشت میکند |
| توکن تصویر (Image token) | «جایگاه نگهدارندهی <image>» | نشانگری در پرامپت که پیش از استنتاج، با N توکن بصریِ پروجکتشده جایگزین میشود |
| تنظیم دقیق با دستورالعملهای بصری (Visual instruction tuning) | «مرحلهی 2 در LLaVA» | آموزش روی سهگانههای (تصویر، دستورالعمل، پاسخ) که توسط GPT-4 تولید شدهاند |
| همترازی مرحلهی 1 (Stage 1 alignment) | «پیشآموزش پروجکتور» | فریز کردن ViT و LLM، و آموزش پروجکتور با تابع زیان LM روی کپشنها |
| کاشیکاری AnyRes (AnyRes) | «کاشیکاری چندبرشی» | برش تصویر باکیفیت به شبکهای از کاشیها و الحاق توکنهای بصری هر کاشی |
| LLaVA-Instruct | «تولیدشده با GPT-4» | 158 هزار جفت دستورالعمل-پاسخ که از کپشنهای COCO توسط GPT-4 ساخته شده است |
| فریز انکودر بینایی (Vision encoder freeze) | «قفل کردن بکبون» | وزنهای CLIP در مرحلهی 1 بهروزرسانی نمیشوند، و گاهی در مرحلهی 2 نیز ثابت میمانند |
| مجموعهدادهی ShareGPT4V (ShareGPT4V) | «کپشنهای بهتر» | 1 میلیون کپشن پرجزئیات تولیدشده با GPT-4V که برای همترازی باکیفیتتر استفاده میشود |
| پرسش و پاسخ بصری (VQA) | «پاسخ به سوال از تصویر» | وظیفهی پاسخدهی به یک سوال متنی با ساختار آزاد دربارهی تصویر |
| مقالهی Prismatic VLMs (Prismatic VLMs) | «مقالهی بررسی فضای طراحی» | پژوهش Karamcheti در سال 2024 که معماری پروجکتور و دادهها را با آزمایشهای حذفی بررسی کرد |
برای مطالعهی بیشتر
- مقاله لیو و همکاران — Visual Instruction Tuning (شناسه arXiv:2304.08485) — مقالهی اصلی LLaVA.
- مقاله لیو و همکاران — Improved Baselines with Visual Instruction Tuning (شناسه arXiv:2310.03744) — مقالهی LLaVA-1.5.
- مقاله چن و همکاران — ShareGPT4V (شناسه arXiv:2311.12793) — مجموعهدادهی کپشنهای پرجزئیات.
- مقاله کارامچتی و همکاران — Prismatic VLMs (شناسه arXiv:2402.07865) — بررسی و تحلیل فضای طراحی مدلها.
- مقاله لی و همکاران — LLaVA-OneVision (شناسه arXiv:2408.03326) — یکپارچهسازی تصویر تکی، چند تصویر و ویدیو در یک مدل.
