Phase 12: Multimodal AI

कुछ शॉट VLM के लिए फ्लेमिंगो और गेट क्रॉस-अटेंशन

डीपमाइंड के फ्लेमिंगो (2022) ने किसी और से पहले दो चीजें कीं। इसमें दिखाया गया कि एक ही मॉडल छवियों, वीडियो और पाठ के मनमाने ढंग से परस्पर जुड़े अनुक्रमों को संसाधित कर सकता है। और यह दिखाया VLMs संदर्भ में सीख सकते हैं तीन उदाहरण (छवि, कैप्शन) जोड़े के साथ कुछ शॉट प्रम्प्ट देना और मॉडल किसी भी gradient कदम के बिना एक नई छवि कैप्शन। तंत्रः गॅटेड क्रॉस-एटेंशन लेयर, जमे हुए एलएलएम की मौजूदा परतों के बीच डाला गया, जिसमें एक सीखे हुए टैन गेट है जो शून्य से शुरू होता है ताकि आरंभिकरण पर एलएलएम की पाठ क्षमता संरक्षित हो। यह सबक फ्लेमिंगो के पर्सीवर रीसैम्पलर और गेट किए गए क्रॉस-एटेंशन आर्किटेक्चर पर चलता है जो मिथुन के इंटरलेवेड इनपुट और आइडियाफिक्स 2 के दृश्य टोकन के पूर्वज हैं।

Type: Learn

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

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

Time: ~120 minutes

सीखने के लक्ष्य

  • समझाएं कि कैसे गेट-क्रॉस-एटेंशन ने टैनह(गेट) = 0 के माध्यम से आरंभिकरण पर जमे हुए एलएलएम की पाठ क्षमता को संरक्षित किया।
  • एक प्रतिबिंब प्रतिबिंबकर्ता के माध्यम से चलेंः N छवि पैच → K क्रॉस-अटेंशन के माध्यम से फिक्स्ड "लैटिनेंट" क्वेरी।
  • वर्णन करें कि फ्लेमिंगो छवि-पाठ अनुक्रमों को परस्पर जोड़कर कारणों से छिपाकर कैसे संभालता है जो छवि स्थान का सम्मान करता है।
  • कुछ शॉट के मल्टीमोडल प्रॉम्प्ट संरचना (3 छवि-कैप्शन उदाहरण फिर एक क्वेरी छवि) को पुनः प्रस्तुत करें।

समस्या

BLIP-2 32 दृश्य टोकन को जमे हुए LLM की इनपुट परत में खिलाता है। प्रति संकेत एक छवि के लिए काम करता है. लेकिन क्या होगा अगर आप पाठ के साथ बहुत से चित्रों को फ़ीड करना चाहते हैं, जैसे कि "यहां छवि A है, इसे कैप्शन दें; यहाँ छवि B है, इसे कैप्शन दें; अब यहाँ छवि C है, इसे कैप्शन दें"? एलएलएम के आत्म-विचार को एक स्ट्रीम में छवि टोकन और पाठ टोकन को संभालने की आवश्यकता होगी, और यह सवाल कि कौन सी स्थिति कौन सी छवियों को ध्यान में रख सकती है, परेशान हो जाता है।

फ्लेमिंगो का जवाबः LLM की इनपुट स्ट्रीम को बिल्कुल भी न बदलें। मौजूदा LLM ब्लॉकों के बीच अतिरिक्त क्रॉस-अटेंशन परतें डालें। पाठ टोकन अभी भी एलएलएम के कारण स्व-विचार के माध्यम से बहते हैं हमेशा की तरह. LLM के प्रत्येक कुछ ब्लॉक के बीच, पाठ टोकन एक नई गेट लेयर के माध्यम से छवि सुविधाओं को क्रॉस-एटेंडेड भी करते हैं। गेट (शून्य पर शुरू) का मतलब है कि शून्य चरण पर नई परतें नो-ऑप्स हैं मॉडल पूर्व प्रशिक्षित एलएलएम की तरह व्यवहार करता है। प्रशिक्षण के साथ-साथ गेट खुलता है और दृश्य जानकारी बहना शुरू होती है।

Flamingo ने दूसरे प्रश्न का उत्तर दियाः आप प्रति प्रॉम्प्ट प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति

अवधारणा

जमे हुए LLM

फ्लेमिंगो एक जमे हुए चिंचिला 70B LLM के साथ शुरू होता है। सभी 70B वजन छूने नहीं. मौजूदा पाठ आत्म-ध्यान और FFN सामान्य रूप से काम करते हैं।

रिसेप्टर रिसेम्पलर

प्रॉम्प्ट में प्रत्येक छवि के लिए, ViT N पैच टोकन उत्पन्न करता है। पर्सीवर रीसैम्पलर में K फिक्स्ड लर्नेबल लैंट हैं (फ्लैमिंगो K=64 का उपयोग करता है) । प्रत्येक रीसैम्पलर ब्लॉक दो उप-चरणों से बना हैः

  1. क्रॉस-अटेंशनः K लटेंट्स N पैच टोकन पर मौजूद होते हैं (Q लटेंट्स से, K/V पैच से) ।
  2. आत्म-विचार + लटेंट्स के भीतर एफएफएन।

6 resampler ब्लॉक के बाद, आउटपुट K=64 dim 1024 के दृश्य टोकन है, भले ही ViT ने कितने पैच बनाए हों। एक 224x224 छवि (196 पैच) और एक 480x480 छवि (900 पैच) दोनों 64 resampler टोकन के रूप में बाहर निकलते हैं।

वीडियो के लिए, रीसैम्पलर को समय के साथ लागू किया जाता हैः प्रत्येक फ्रेम के पैच 64 लटेंट्स का उत्पादन करते हैं, और एक समय स्थिति एन्कोडिंग मॉडल को t=0 से t=N को अलग करने की अनुमति देता है। पूरा वीडियो T * 64 दृश्य टोकन बन जाता है।

ग्लिटेड क्रॉस-अटेंशन

जमे हुए LLM की प्रत्येक M परत के बीच (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, तो init पर गेट शाखा शून्य योगदान देता है.
  • जैसे alphaशून्य से दूर चला जाता है, क्रॉस-अटेंशन योगदान सुचारू रूप से बढ़ता है।
  • शेष कनेक्शन का मतलब है कि एक पूरी तरह से खुला गेट भी LLM के पाठ प्रतिनिधित्व को ओवरराइट नहीं करता है; यह केवल ऊपर दृश्य जानकारी जोड़ता है।

यह फ्लेमिंगो में सबसे महत्वपूर्ण डिजाइन विकल्प हैः दृश्य कंडीशनिंग आरंभिकरण पर अतिरिक्त, बंद और शून्य है। चरण 0 पर एक फ्लेमिंगो केवल पाठ इनपुट पर एक सही चिंचिला 70 बी है।

इंटरलेटेड इनपुट के लिए मास्क क्रॉस-अटेंशन

"<image A> caption A <image B> caption B <image C> ?" जैसे प्रॉम्प्ट में, प्रत्येक टेक्स्ट टोकन को केवल अनुक्रम में उसके सामने आए चित्रों को देखना चाहिए। क्रॉस-अटेंशन मास्क लागू करता हैः स्थिति में टेक्स्ट टोकन tकेवल छवि resampler टोकन के लिए भाग लेता है जिसका छवि सूचकांक i < i_tकहाँi_tस्थिति से पहले नवीनतम छवि है t. "केवल अंतिम पूर्ववर्ती छवि देखता है" या "सभी पूर्ववर्ती चित्र देखता है" दोनों वैध विकल्प हैं; फ्लेमिंगो ने पहले का चयन किया।

संदर्भ में कुछ शॉट सीखने

एक फ्लेमिंगो संकेत इस तरह दिखता हैः

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

मॉडल पूरा पैटर्न देखता है और "पक्षी" (या जो भी छवि3 दिखाता है) आउटपुट करता है। कोई ग्रेडिएंट कदम नहीं। जमे हुए एलएलएम की संदर्भ में सीखने की क्षमता बंद क्रॉस-अटेंशन के माध्यम से ले जाती है।

प्रशिक्षण के आंकड़े

फ्लेमिंगो तीन डेटा सेट पर प्रशिक्षितः

  1. मल्टीमोडल मैसिव वेब (एम3डब्ल्यू): 43 मिलियन वेब पृष्ठ जो कि पन्नों और पाठ के साथ परस्पर जुड़े हुए हैं, जो पढ़ने के क्रम को पुनः निर्माण करते हैं।
  2. छवि-पाठ जोड़े (ALIGN + LTIP): 4.4B जोड़े।
  3. वीडियो-टेक्स्ट जोड़े (वीटीपी): 27 एम लघु वीडियो क्लिप।

ओबेलिक्स (2023) एक इंटरलेवेड वेब कॉर्पस का एक खुला प्रजनन है, जिस पर आइडेफिक्स, आइडेफिक्स 2 और अधिकांश खुले "फ्लैमिंगो-जैसे" मॉडल प्रशिक्षण देते हैं।

ओपनफ्लैमिंगो और ओटर

ओपनफ्लैमिंगो (2023) ओपनप्रोडक्शन है। वास्तुकला समान है (प्रतिबिंबक पुनः नमूना + जमे हुए एलएलएएमए या एमपीटी पर गेट क्रॉस-अटेंशन) । 3 बी, 4 बी, 9 बी पर चेकपॉइंट। कम बेस एलएलएम और कम डेटा के कारण गुणवत्ता फ्लैमिंगो में देरी होती है।

ओटर (2023) ने एमआईएमआईसी-आईटी (मल्टीमोडल निर्देशों का एक डेटासेट) पर निर्देशों के ट्यूनिंग के साथ ओपनफ्लैमिंगो पर निर्माण किया, जिसमें निर्देशों के बाद भी गटेड क्रॉस-अटेंशन काम करता है।

वंशज

  • 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

एक बजट पर एकल-छवि वीक्यूए के लिए बीएलआईपी-2 चुनें। इंटरलेविड, कुछ शॉट, या मल्टी-छवि तर्क के लिए फ्लेमिंगो / आइडेफिक्स2 चुनें।

इसका प्रयोग करें

code/main.pyदिखाता हैः

  1. 8 सीखने योग्य लटेंट्स (शुद्ध पायथन क्रॉस-अटेंशन) के साथ 36 नकली पैच टोकन पर एक पर्सेवर रीसैम्पलर।
  2. एक बंद पार ध्यान कदम के साथ alpha = 0→ आउटपुट इनपुट के बराबर है (LLM अपरिवर्तित), तो alpha = 2.0→ दृश्य योगदान मिश्रित।
  3. एक इंटरलेवेड मास्क बिल्डर जो "(चित्र 1) (पाठ 1) (चित्र 2) (पाठ 2)" अनुक्रम के लिए 2 डी ध्यान मास्क का उत्पादन करता है।

इसे भेजें

यह सबक हमें फल देता हैoutputs/skill-gated-bridge-diagnostic.md. एक खुला VLM की विन्यास (रेसैम्पलर Y/N, क्रॉस-एटन आवृत्ति, गेट योजना) को देखते हुए, यह फ्लेमिंगो वंश तत्वों की पहचान करता है और फ्रीजिंग रणनीति की व्याख्या करता है। यह डिबगिंग के लिए उपयोगी है कि एक बारीक-ट्यून टेक्स्ट प्रदर्शन में गिरावट क्यों आती है (जवाबः गेट बहुत तेजी से चौड़ा हो गया है) ।

व्यायाम

  1. फ्लेमिंगो-9बी के दृश्य पैरामीटर की गणना करेंः 9बी एलएलएम + 1.4बी गेट वाले क्रॉस-अटेंशन परतें + 64 एम रीसैम्पलर। कुल पैरामीटर का कितना अंश प्रशिक्षित किया जाता है?
  1. बंद अवशिष्ट को लागू करें y = tanh(alpha) * cross + xप्रयोगात्मक रूप से दिखाएँ किalpha=0,y==xठीक ही शुरू में.
  1. OpenFlamingo धारा 3.2 (arXiv:2308.01390) को पढ़ें कि वे एक बैच में कई छवियों को कैसे संभालते हैं जब प्रत्येक प्रॉम्प्ट में एक अलग छवि संख्या होती है। पैडिंग रणनीति का वर्णन करें।
  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

आगे पढ़ना

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.