CLIP और विपरीत दृष्टि-भाषा पूर्व प्रशिक्षण
Type: Build
Languages: Python (stdlib, InfoNCE + sigmoid loss implementations)
Prerequisites: Phase 12 · 01 (ViT patches), Phase 7 (Transformers)
Time: ~180 minutes
सीखने के लक्ष्य
- आपसी सूचना से InfoNCE हानि प्राप्त करें और संख्यात्मक रूप से स्थिर वेक्टरिज़ेड संस्करण लागू करें।
- बताएं कि सिग्मोइड जोड़ीबद्ध हानि (सिगलिप) सभी एकत्रित ओवरहेड सॉफ्टमैक्स आवश्यकताओं के बिना बैच 32768+ तक क्यों बढ़ जाती है।
- पाठ टेम्पलेट्स का निर्माण करके शून्य-शॉट ImageNet वर्गीकरण चलाएं (
a photo of a {class}) और कॉसिन समानता पर argmax लेना। - CLIP/SigLIP प्री-ट्रेनिंग आपको प्रदान करने वाले चार लीवरों का नाम देंः बैच आकार, तापमान, प्रॉम्प्ट टेम्पलेट, डेटा गुणवत्ता।
समस्या
प्री-CLIP विजन की देखरेख की गई थी। लेबल वाले डेटासेट (इमेजनेटः 1.2M छवियां, 1000 वर्ग) एकत्र करें, सीएनएन को प्रशिक्षित करें, इसे भेजें। लेबल महंगे हैं, लेबल वे हैं जिन पर लेबलर सहमत हो सकते हैं, और लेबल बिना ठीक से ट्यूनिंग के नए कार्यों में स्थानांतरित नहीं होते हैं।
छवि कैप्शन वेब में एक अरब से अधिक ढीले लेबल वाले जोड़े मुफ्त में हैं। "मेरे कुत्ते मैक्स पार्क में" के साथ एक स्वर्ण रिट्रीवर की तस्वीर में एक पर्यवेक्षण संकेत होता है। पाठ छवि का वर्णन करता है। सवालः क्या आप इसे उपयोगी प्रशिक्षण में बदल सकते हैं?
CLIP का जवाबः छवि-कैप्शन जोड़े को एक मिलान कार्य के रूप में देखें। N छवियों और N कैप्शन के एक बैच को देखते हुए, N-1 विचलित करने वालों के खिलाफ प्रत्येक छवि को अपने स्वयं के कैप्शन से मेल खाने का सीखें। पर्यवेक्षण "इन दोनों चीजों का एक साथ होना चाहिए; ये N-1 नहीं करते हैं।" कोई वर्ग लेबल नहीं। कोई मानव टिप्पणी नहीं। बस एक विपरीत हानि।
ImageNet शून्य शॉट काम करता है क्योंकि "एक बिल्ली की तस्वीर" बिल्लियों की तस्वीरों के पास एम्बेड करता है जो कभी स्पष्ट रूप से बिल्लियों के लेबल नहीं दिए गए थे। यह शर्त है कि हर 2026 VLM पैदा किया।
अवधारणा
दोहरी एन्कोडर
क्लिप में दो टावर हैंः
- छवि एन्कोडर
f: ViT या ResNet, प्रति छवि एक डी-डिम वेक्टर आउटपुट करता है। - पाठ एन्कोडर
g: छोटे ट्रांसफार्मर, प्रति कैप्शन डी-डिम वेक्टर आउटपुट करता है।
दोनों टावरों ने अपनी आउटपुट को इकाई लंबाई के लिए सामान्य बनाया।cos(f(x), g(y)) = f(x)^T g(y)चूंकि दोनों इकाई-नियमित हैं।
N (छवि, कैप्शन) जोड़े के बैच के लिए, समानता मैट्रिक्स का निर्माण करें Sआकार का (N, N):
S[i, j] = cos(f(x_i), g(y_j)) / tauकहाँtauएक सीखा तापमान (CLIP 0.07 पर आरंभिक होता है; लॉग-स्पेस में सीखा जाता है) ।
InfoNCE हानि
CLIP पंक्तियों और स्तंभों पर एक समानुपातिक क्रॉस-एंट्रोपी का उपयोग करता हैः
loss_i2t = CE(S, labels=identity) # each image's positive is its own caption
loss_t2i = CE(S^T, labels=identity) # each caption's positive is its own image
loss = (loss_i2t + loss_t2i) / 2यह InfoNCE है। CE में सॉफ्टमैक्स प्रत्येक छवि को बैच में अन्य सभी कैप्शन की तुलना में अधिक अपने कैप्शन से मेल खाने के लिए मजबूर करता है। "नकारात्मक" अन्य बैच आइटम हैं। बड़े बैच = अधिक नकारात्मक = मजबूत संकेत। CLIP बैच 32k पर प्रशिक्षित; पैमाने का सवाल है।
तापमान
tauसीआईपी को सीखा जाता है लॉग ((1/ताऊ), टूटने से बचने के लिए काट दिया जाता है। सिगलिप 2 प्रारंभिक ताऊ को ठीक करता है और इसके बजाय एक सीखा पूर्वाग्रह का उपयोग करता है।
सिग्मोइड स्केल बेहतर क्यों है (SigLIP)
सॉफ्टमैक्स को समक्रमण में पूरे समानता मैट्रिक्स की आवश्यकता होती है। वितरित प्रशिक्षण में आपको प्रत्येक प्रतिलिपि में सभी एम्बेडिंग को इकट्ठा करना होगा, फिर सॉफ्टमैक्स करना होगा। यह संचार के लिए विश्व आकार में चतुर्भुज है।
सिगलिप सॉफ्टमैक्स को तत्व-बुद्धिमान सिगमोइड से बदल देता हैः प्रत्येक जोड़ी के लिए (i, j), हानि "क्या ये मिलान जोड़ी हैं? " के द्विआधारी वर्गीकरण है सकारात्मक वर्ग लेबल विकर्ण हैं, बाकी सब कुछ नकारात्मक है। हानि हैः
L = -1/N sum over (i, j) [ y_ij log sigmoid(S[i,j]) + (1-y_ij) log sigmoid(-S[i,j]) ]y_ij = 1यदि i == jप्रत्येक जोड़ी का नुकसान स्वतंत्र है. कोई सभी इकट्ठा करने की आवश्यकता नहीं है. प्रत्येक GPU अपने स्थानीय ब्लॉक और योगों की गणना करता है. सिगलिप 2 बैच 32k-512k सस्ते में पैमाने पर जहां CLIP को समानुपातिक रूप से अधिक संचार की आवश्यकता होगी.
शून्य शॉट वर्गीकरण
N वर्ग के नाम दिए गए, प्रत्येक वर्ग के लिए एक पाठ टेम्पलेट बनाएंः
"a photo of a {class}"प्रत्येक टेम्पलेट को टेक्स्ट एन्कोडर के साथ एम्बेड करें. अपनी छवि को छवि एन्कोडर के साथ एम्बेड करें. Argmax cosine समानता = पूर्वानुमानित वर्ग. लक्ष्य वर्गों पर कोई प्रशिक्षण नहीं।
त्वरित टेम्पलेट्स मायने रखते हैं। CLIP के मूल पेपर में प्रति वर्ग (सादा, कलात्मक, फोटो, पेंटिंग, आदि) 80 टेम्पलेट्स का उपयोग किया गया था और एम्बेडिंग का औसत था। +3 ImageNet अंक। आधुनिक उपयोग आमतौर पर एक या दो टेम्पलेट्स चुनता है।
रैखिक जांच और ठीक से समायोजन
शून्य-शॉट एक बेसलाइन है। एक रैखिक जांच (अपने लक्ष्य वर्गों के लिए जमे हुए CLIP सुविधाओं के शीर्ष पर एक रैखिक परत को ट्रेन करें) डोमेन में कार्यों पर शून्य-शॉट से बेहतर है। पूर्ण ठीक समायोजन डोमेन में रैखिक जांच से बेहतर है लेकिन शून्य-शॉट हस्तांतरण को नुकसान पहुंचा सकता है। तीन विनिमय के साथ तीन शासन।
सिगलिप 2: NaFlex और घने फीचर्स
सिगलिप 2 (2025) में कहा गया है कि:
- NaFlex: एकल मॉडल चर पहलू अनुपात और संकल्पों को संभालता है।
- विखंडन और गहराई अनुमान के लिए बेहतर घने सुविधाएं, VLM में जमे हुए रीढ़ की हड्डी के रूप में उपयोग को लक्षित करना।
- बहुभाषी: 100 से अधिक भाषाओं में प्रशिक्षित जहां CLIP केवल अंग्रेजी में था।
- 1 बी पैरामीटर स्केल जहां CLIP 400M पर शीर्ष पर है।
2026 में खुले VLMs में, SigLIP 2 SO400m/14 डिफ़ॉल्ट दृष्टि टावर है। CLIP शुद्ध छवि-पाठ निकालने के लिए डिफ़ॉल्ट है जहां विशिष्ट LAION-2B प्रशिक्षण वितरण आपके क्वेरी पैटर्न से मेल खाता है।
ALIGN, BASIC, OpenCLIP, EVA-CLIP
ALIGN (Google, 2021): CLIP के समान विचार, 1.8B जोड़ी पैमाने, 90% शोर। सिद्ध शोर डेटा पैमाने। OpenCLIP (LAION): LAION-400M / 2B पर CLIP का खुला पुनरुत्पादन, कई पैमाने, गो-टू-ओपन चेकपॉइंट। EVA-CLIP: मास्क छवि मॉडलिंग से शुरू करता है; VLM के लिए मजबूत रीढ़ की हड्डी। BASIC: Google का CLIP+ALIGN हाइब्रिड। सभी एक ही परिवार, अलग डेटा और ट्यूनिंग।
शून्य शॉट छत
CLIP-वर्ग के मॉडल 76% के आसपास ImageNet शून्य-शॉट (CLIP-G, OpenCLIP-G) की सीमा करते हैं। इसके अलावा या तो बहुत अधिक डेटा (SigLIP 2 80% +) या वास्तुकला परिवर्तन (निरीक्षण किए गए हेड, अधिक मापदंड) की आवश्यकता होती है। बेंचमार्क संतृप्त है; वास्तविक मूल्य एम्बेडिंग स्थान है जो डाउनस्ट्रीम VLMs खपत करते हैं।
इसका प्रयोग करें
code/main.pyकार्य करता हैः
- एक खिलौना दोहरे एन्कोडर (हैश आधारित छवि सुविधाओं, पाठ चार्ट सुविधाओं) ताकि आप नम्प के बिना InfoNCE आकार देख सकते हैं।
- शुद्ध पायथन में InfoNCE हानि (लॉग-सम-एक्सप के माध्यम से संख्यात्मक स्थिरता) ।
- तुलना के लिए सिग्मोइड जोड़ी हानि।
- शून्य-शॉट वर्गीकरण दिनचर्याः पाठ संकेतों के सेट के खिलाफ कॉसिन समानता की गणना करें, भविष्यवाणी के लिए argmax।
इसे चलाएं और हार के वक्र को देखें। पूर्ण संख्या खिलौना है; आकार वास्तविक CLIP ट्रेनर के उत्सर्जन से मेल खाता है।
इसे भेजें
यह सबक हमें फल देता हैoutputs/skill-clip-zero-shot.md. चित्रों के एक सेट (पथ के माध्यम से) और लक्ष्य वर्गों की सूची को देखते हुए, यह CLIP टेम्पलेट के साथ पाठ प्रमाणीकरण बनाता है, दोनों पक्षों को एक निर्दिष्ट चेकपॉइंट के साथ एम्बेड करता है (जैसे, openai/clip-vit-large-patch14), और समानता स्कोर के साथ शीर्ष-1 / शीर्ष-5 भविष्यवाणियों को लौटाता है। कौशल प्रम्प्ट सूची में नहीं होने वाली कक्षाओं के बारे में दावे करने से इनकार करता है।
व्यायाम
- 4 जोड़े के बैच के लिए हाथ से InfoNCE लागू करें। 4x4 समानता मैट्रिक्स का निर्माण करें, सॉफ्टमैक्स चलाएं, विकर्ण चुनें, क्रॉस-एंट्रोपी की गणना करें। इस हाथ गणना के आधार पर अपने पायथन कार्यान्वयन की जांच करें।
- सिगलिप एक पूर्वाग्रह पैरामीटर का उपयोग करता है
bतापमान के अतिरिक्तःS'[i,j] = S[i,j]/tau + b. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .bजब बैच में एक बड़ा वर्ग असंतुलन होता है (प्रति पंक्ति सकारात्मक से बहुत अधिक नकारात्मक) ।
- बिल्लियों के लिए शून्य शॉट वर्गीकरण बनाएं कुत्ते के लिए। दो त्वरित टेम्पलेट्स का प्रयास करेंः
a photo of a {class}औरa picture of a {class}. 100 परीक्षण छवियों पर सटीकता मापें. टेम्पलेट्स के सेट एकल से अधिक है?
- बैच 32k पर 512-जीपीयू रन के लिए सॉफ्टमैक्स InfoNCE बनाम सिग्मोइड की संचार लागत की गणना करें। किस पैमाने को O(N) के रूप में, जो O(N ^ 2) के रूप में? SigLIP धारा 4 को उद्धृत करें।
- OpenCLIP स्केलिंग-लॉज पेपर (arXiv:2212.07143, Cherti et al.) पढ़ें। आंकड़ों से डेटा स्केलिंग के लिए उनके निष्कर्ष को पुनः प्रस्तुत करेंः निश्चित मॉडल आकार पर, ImageNet शून्य-शॉट सटीकता और प्रशिक्षण डेटा आकार के बीच लॉग-लाइनर संबंध क्या है?
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| InfoNCE | "Contrastive loss" | Cross-entropy over a batch's similarity matrix; each item's positive is its paired item, negatives are everything else |
| Sigmoid loss | "SigLIP loss" | Per-pair binary cross-entropy; no softmax, no all-gather, scales cheaply in distributed training |
| Temperature | "tau" | Scalar that scales logits before softmax/sigmoid; controls sharpness of the distribution |
| Zero-shot | "no-finetune classification" | Use text prompts to construct class embeddings and classify by cosine similarity; no training on target classes |
| Prompt template | "a photo of a ..." | Text scaffold around a class name; affects zero-shot accuracy by 1-5 points |
| Dual encoder | "Two-tower" | One image encoder + one text encoder, outputs in shared D-dim space |
| Hard negative | "Tough distractor" | A negative similar enough to the positive that the model has to work to separate them |
| Linear probe | "Frozen + one layer" | Train only a linear classifier on top of frozen features; measures feature quality |
| NaFlex | "Native flexible resolution" | SigLIP 2 capability to ingest images at any aspect ratio and resolution without resizing |
| Temperature scaling | "log-parametrized tau" | CLIP parametrizes log(1/tau) so gradients behave; clips to prevent collapse to near-zero tau |
आगे पढ़ना
- Radford et al. — Learning Transferable Visual Models From Natural Language Supervision (arXiv:2103.00020) CLIP पेपर।
- Zhai et al. — Sigmoid Loss for Language Image Pre-Training (arXiv:2303.15343) सिगलिप।
- Tschannen et al. — SigLIP 2 (arXiv:2502.14786) बहुभाषी + NaFlex।
- Jia et al. — ALIGN (arXiv:2102.05918) शोर वेब डेटा के साथ पैमाने पर।
- Cherti et al. — Reproducible scaling laws for contrastive language-image learning (arXiv:2212.07143) ओपनसीएलआईपी स्केलिंग कानून।
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.