Phase 12: Multimodal AI

توجه متقابل فلامینگو و گیت برای VLM های چند گلوله

فلامینگو DeepMind (2022) دو چیز را قبل از هر کس دیگری انجام داد. این نشان داد که یک مدل تنها می تواند به طور تصادفی دنباله های تصاویر، ویدیوها و متن را پردازش کند. و نشان داد که VLM ها می توانند در زمینه یاد بگیرند چند عکس با سه مثال (تصاویر، عنوان) و مدل یک تصویر جدید بدون هیچ مرحله گرادینت را زیرنویس می کنند. مکانیسم: لایه های بین بین بین بین توجه، در میان لایه های موجود LLM منجمد، با یک دروازه tanh آموخته که از صفر شروع می شود تا توانایی متن LLM در هنگام ابتدایی حفظ شود. این درس به دنبال نمونه برداری مجدد Perceiver Flamingo و معماری توجه متقابل دروازه ای است که اجداد ورودی های متقابل Gemini و نمادهای بصری Idefics2 است.

Type: Learn

Languages: Python (stdlib, gated cross-attention + Perceiver resampler demo)

Prerequisites: Phase 12 · 03 (BLIP-2 Q-Former)

Time: ~120 minutes

اهداف یادگیری

  • توضیح دهید که چگونه توجه متقابل دروازه ای توانایی متن LLM منجمد را در هنگام ابتدایی از طریق tanh(gate) = 0 حفظ می کند.
  • از طریق یک نمونه برداری مجدد Perceiver راه بروید: N تصویر پیچ → K سوالات "لاتنت" ثابت از طریق توجه متقابل.
  • توضیح دهید که چگونه فلامینگو به ترتیب متن تصویر با پوشش علتانه ای که به قرار دادن تصویر احترام می گذارد، برخورد می کند.
  • یک ساختار چند عکس چند حالت را تکرار کنید (3 مثال تصویر سرشنوی سپس یک تصویر سوال).

مشکل

BLIP-2 32 توکن بصری را به لایه ورودی LLM منجمد می دهد. براي هر ارسال يک عکس کار ميکنه اما اگر می خواهید تصاویر زیادی را با متن به هم متصل کنید، مثل این که "این تصویر A است، سرشناس آن؛ این تصویر B است، سرشناس آن؛ حالا این تصویر C است، سرشناس آن". توجه خود LLM باید به مدیریت نماد تصویر و نماد متن در یک جریان واحد باشد و سوال اینکه کدام موقعیت می تواند به کدام تصاویر توجه کند، می شود.

جواب فلامینگو: اصلا جریان ورودی LLM را تغییر ندهید. لایه های اضافی توجه متقابل بین بلوک های موجود LLM را وارد کنید. نماد متن هنوز مثل هميشه از طریق توجه به خود LLM جریان داره بین هر چند بلوک LLM، توکن های متن نیز از طریق یک لایه جدید بسته به ویژگی های تصویر به هم می پیوندند. دروازه (در ابتدا به صفر) به این معنی است که در مرحله صفر لایه های جدید بدون عملیات هستند مدل دقیقا مانند LLM پیش از آموزش رفتار می کند. با پیشرفت آموزش، دروازه باز می شود و اطلاعات بصری شروع به جریان می کند.

دومین سوال Flamingo پاسخ داد: چگونه شما با تعداد متغیر تصاویر (0, 1 یا بسیاری) در هر پرامپت کار می کنید؟ یک نمونه برداری مجدد Perceiver یک ماژول کوچک توجه متقابل است که هر تعداد پچ هایی را که دارید را می گیرد و تعداد ثابت از توکن های پنهان بصری را تولید می کند. لایه توجه متقابل LLM بدون توجه به تعداد تصاویر در پرامپت شکل مشابهی را می بیند.

مفهوم

مدرک تحصیلی قانونی منجمد

فلامينگو با يک سند "چينچيللا 70B" شروع مي شود. تمام وزن هاي 70B دست نخورده. متن موجود خود توجه و FFN به طور معمول عمل مي کنند.

نمونه گیری مجدد رسیور

برای هر تصویر در پرامپت، ViT نمادهای N پچ تولید می کند. نمونه گیری بازبینی گیرنده دارای K ثابت است که می تواند یاد گرفته شود (Flamingo از K = 64 استفاده می کند). هر بلوک نمونه گیری بازبینی دو زیر مرحله است:

  1. توجه متقابل: K latences در برابر N patch tokens (Q از latences، K/V از patches) حضور دارند.
  2. توجه به خود + FFN در غفلت ها

پس از 6 بلوک نمونه برداری، خروجی K=64 توکن بصری از dim 1024 است، بدون توجه به تعداد پیچ های تولید شده توسط ViT. یک تصویر 224x224 (196 پیچ) و یک تصویر 480x480 (900 پیچ) هر دو به عنوان 64 توکن نمونه برداری خارج می شوند.

برای ویدیو، نمونه گیری مجدد به صورت زمانی اعمال می شود: پیچ های هر فریم 64 خرده تولید می کنند و یک کدگذاری موقعیت زمانی به مدل اجازه می دهد t=0 را از t=N تشخیص دهد. ویدیو کامل تبدیل به توکن های بصری T * 64 می شود.

توجه متقابل

بین هر لایه M LLM منجمد (Flamingo از M=4 استفاده می کند) یک بلوک جدید بین توجه های متقاطع را وارد کنید:

x_after_llm_block = llm_block(x_before)
cross = cross_attn(x_after, resampler_output)
gated = tanh(alpha) * cross + x_after
x_before_next_block = gated
  • alphaیک مقیاس قابل یادگیری است که به صفر شروع شده است.
  • tanh(0) = 0، پس در ابتدا شاخه بسته صفر را به دست می آورد.
  • مثلalphaاگر از صفر دور شود، سهم توجه متقابل به طور منظم رشد می کند.
  • اتصال باقیمانده به این معنی است که حتی یک در کاملا باز، نمایش متن LLM را بیش از حد نمی نویسد؛ آن را فقط اطلاعات بصری در بالا اضافه می کند.

این تنها مهم ترین انتخاب طراحی در فلامینگو است: شرایط بصری اضافه، بسته و صفر در ابتداء است. یک فلامینگو در مرحله 0 یک چینچیلا 70B کامل در ورودی های فقط متن است.

توجه متقابل پوشیده برای ورودی های متقابل

در یک پیامک مانند "<تصاویر A> سرایت A <تصاویر B> سرایت B <تصاویر C> ؟"، هر توکن متن فقط باید تصاویر پیش از آن را در ردیف مشاهده کند. ماسک توجه متقاطع: توکن متن در موقعیت tفقط به توکن های نمونه سازی تصویر که شاخص تصویر آن ها را می گیردi < i_tکجاi_tآخرین تصویر قبل از موقعیت استt"تنها آخرین تصویر قبلی را می بیند" یا "همه تصاویر قبلی را می بیند" هر دو انتخاب معتبر هستند. فلامینگو اولین را انتخاب کرد.

یادگیری چند شوت در زمینه

يه پیام فلامينگو به نظر مياد:

<image1> A photo of a cat. <image2> A photo of a dog. <image3> A photo of a

مدل الگوی تکمیل را می بیند و "پرد" (یا هر آنچه تصویر 3 نشان می دهد) را می دهد. هیچ گام گرادینت نیست. توانایی یادگیری در زمینه LLM یخ زده شده از طریق توجه متقاطع بسته شده است.

اطلاعات آموزش

فلامينگو با سه مجموعه داده آموزش داده شده:

  1. MultiModal MassiveWeb (M3W): 43 میلیون صفحه وب با تصاویر و متن متقابل، بازسازی ترتیب خواندن.
  2. جفت های تصویر-متن (ALIGN + LTIP): 4.4B جفت.
  3. جفت های ویدئو-متن (VTP): 27 میلیون کلیپ ویدئویی کوتاه.

OBELICS (2023) یک تولید باز از کورپوس وب متقابل است که Idefics، Idefics2 و بیشتر مدل های باز "فلامینگو مانند" در آن آموزش می دهند.

OpenFlamingo و اوتر

OpenFlamingo (2023) بازسازی باز است. معماری یکسان (رسمپلر بازبینی + توجه متقاطع در LLaMA یا MPT یخ زده) . نقاط بازرسی در 3B ، 4B ، 9B. کیفیت Flamingo به دلیل LLM پایه کوچکتر و داده های کمتر عقب مانده است.

اوتر (2023) بر روی OpenFlamingo با تنظیم دستورالعمل در MIMIC-IT (یک مجموعه داده از دستورالعمل های چند مدل) ساخته شده است، که نشان می دهد که توجه متقاطع دروازه ای برای آموزش های بعدی نیز کار می کند.

فرزندان

  • Idefics / Idefics2 / Idefics3: خط خط خط توجه متقاطع Hugging Face، به تدریج ساده تر (Idefics2 نمونه گیری را به نفع نمره های پیچ مستقیم با جمع بندی سازنده رها کرد).
  • انتقال فلامینگو به کاملیون: تا سال 2024 بسیاری از تیم ها به فیوژن اولیه (درس 12.11) منتقل شدند؛ توجه متقاطع در سبک فلامینگو در تولید باقی می ماند که در آن یخچال ستون فقرات مورد نیاز است.
  • ورودی متقابل دوقلوها: از نظر مفهومی انعطاف پذیری شکل متقابل فلامینگو را به ارث می برد، اگرچه مکانیسم دقیق مالکیت است.

مقایسه با BLIP-2

BLIP-2Flamingo
Visual bridgeQ-Former once at inputGated cross-attention at every M layers
Visual tokens32 per image64 per image per cross-attn layer
Frozen LLMYesYes
Few-shot in-contextWeakStrong — the paper's centerpiece
Interleaved inputsNo native supportYes, the design target
Training data130M pairs1.3B pairs + 43M interleaved pages
Parameter count188M trained~10B trained (cross-attn layers)
ComputeDays on 8 A100sWeeks on thousands of TPUv4

برای یک تصویر VQA برای بودجه، BLIP-2 را انتخاب کنید، برای یک تصویر چند عکس یا چند تصویر، Flamingo/Idefics2 را انتخاب کنید.

ازش استفاده کن

code/main.pyنشان می دهد:

  1. یک نمونه برداری مجدد Perceiver روی 36 توکن پچ جعلی با 8 لغز قابل یادگیری (انتباه متقابل پاک پایتون).
  2. يه قدم با توجهي با گيتalpha = 0→ output برابر input (LLM بدون تغییر) است، پس alpha = 2.0→ کمک بصری مخلوط شده
  3. یک سازنده ماسک متقابل که ماسک توجه 2D را برای یک سری "(تصاویر 1) (متن 1) (تصاویر 2) (متن 2) " تولید می کند.

-باده

این درس به ما کمک می کندoutputs/skill-gated-bridge-diagnostic.md. با توجه به پیکربندی یک VLM باز (نمایشگر Y / N، فرکانس عبور، طرح دروازه) ، عناصر سلطه Flamingo را شناسایی می کند و استراتژی یخ زدن را توضیح می دهد. مفید برای تنظیم خطا چرا یک تنظیم دقیق عملکرد متن را کاهش می دهد (جواب: دروازه بیش از حد گسترده شده و خیلی سریع است).

تمرینات

  1. شمارش پارامترهای بصری فلامینگو-9B: 9B LLM + 1.4B لایه های بینایی متقاطع + 64M resampler. چه فرقی از پارامترهای کل آموزش داده شده است؟
  1. استفاده از بقای بسته شدهy = tanh(alpha) * cross + xدر PyTorch. تجربه ای نشان بده که باalpha=0،y==xدقیقاً در ابتدا
  1. بخش 3.2 (arXiv:2308.01390) OpenFlamingo را بخوانید که چگونه آنها چندین تصویر را در یک دسته اداره می کنند وقتی هر پیامک تعداد تصویر متفاوتی دارد. استراتژی پر کردن را توصیف کنید.
  1. چرا ماسک توجه متقاطع فلامینگو اجازه می دهد تا یک نشانه متن فقط به آخرین تصویر قبلی توجه کند نه تمام تصاویر قبلی؟ بخش 2.4 مقاله فلامینگو را بخوانید و معامله را توضیح دهید.
  1. چند عکس در زمینه: یک پرامپت با 4 مثال از "تصاویر → رنگ شی اصلی" برای یک نوع جدید فلامینگو بسازید. الگوی دقت انتظار می رود را با تغییر تعداد نمونه ها از 0 تا 8 توصیف کنید.

اصطلاحات کلیدی

TermWhat people sayWhat it actually means
Perceiver resampler"Fixed-latent cross-attention"Module that produces K fixed tokens from a variable number of input patches
Gated cross-attention"Tanh-gated bridge"Residual layer y = tanh(alpha)*cross + x, learnable alpha, init 0
Interleaved input"Mixed sequence"Prompt format with images and text mixed freely in reading order
Frozen LLM"No LLM gradients"The text LLM's weights do not update; only resampler + cross-attn layers train
Few-shot"In-context examples"Give a few (image, answer) pairs in the prompt; model generalizes without finetuning
OBELICS"Interleaved web corpus"Open dataset of 141M web pages with images and text in reading order
Chinchilla"70B frozen base"Flamingo's frozen text LLM, from DeepMind's Chinchilla paper
Gate schedule"How alpha moves"The rate at which the cross-attention gate opens during training
Cross-attn frequency"Every M layers"How often a gated cross-attention block is inserted; Flamingo uses M=4
OpenFlamingo"Open reproduction"MosaicML/LAION open checkpoint at 3-9B; architecture-identical to Flamingo

خواندن بیشتر

  • Alayrac et al. — Flamingo (arXiv:2204.14198) کاغذ اصلی
  • Awadalla et al. — OpenFlamingo (arXiv:2308.01390) باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز کردن باز باز کردن باز کردن باز کردن باز کردن باز باز کردن باز کردن باز کردن باز کردن باز کردن باز باز باز باز کردن باز کردن باز کردن باز باز باز کردن باز باز باز باز باز کردن باز کردن باز باز باز باز باز کردن باز باز باز باز باز باز کردن باز باز کردن باز باز باز باز باز باز باز باز باز باز باز باز شدن باز شدن باز باز باز باز باز باز شدن باز باز باز باز باز باز باز باز باز باز باز باز باز باز باز شد
  • Laurençon et al. — OBELICS (arXiv:2306.16527) شبکه های متقابل
  • Jaegle et al. — Perceiver IO (arXiv:2107.14795) معماری عمومی Perceiver
  • Li et al. — Otter (arXiv:2305.03726) فریداد فلامینگو با دستورات تنظیم شده
  • Laurençon et al. — Idefics2 (arXiv:2405.02246) ساده سازی مدرن رویکرد فلامینگو

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.