Phase 12: Multimodal AI

ترانسفورماتورهای بینایی و پرامتیو پچ توکن

قبل از هرچیزی چندگانه، یک تصویر باید به یک سری از توکن هایی تبدیل شود که یک ترانسفورماتور می تواند بخورد. مقاله ViT 2020 با پیچ های 16x16 پیکسل، یک پروژکتور خطی و یک موقعیت داخلی پاسخ داده است. پنج سال بعد هر مدل مرزی 2026 (Claude Opus 4.7 در 2576px بومی، Gemini 3.1 Pro، Qwen3.5-Omni) هنوز به این شکل شروع می شود کدگر از ViT به DINOv2 به SigLIP 2 تغییر کرد، توکن های ثبت اضافه شد، طرح موقعیت تبدیل به 2D-RoPE شد، اما اولیه نگه داشت. این درس پایپلاين تکه های پیچ را از پایان به آخر می خواند و آن را در stdlib Python ایجاد می کند تا بقیه فاز 12 یک مدل ذهنی مشخص برای "تکه های بصری" داشته باشد.

Type: Learn

Languages: Python (stdlib, patch tokenizer + geometry calculator)

Prerequisites: Phase 7 (Transformers), Phase 4 (Computer Vision)

Time: ~120 minutes

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

  • یک تصویر HxWx3 را به یک ردیابی از توکن های پیچ با کدگذاری موقعیت مناسب تبدیل کنید.
  • طول دنباله، تعداد پارامتر ها و FLOPs را برای یک ViT داده شده محاسبه کنید (حجم پیچ، وضوح، کم کم پنهان، عمق).
  • سه ارتقاء که به ViT از تحقیقات سال 2020 تا تولید سال 2026 منجر شد را نام ببرید: پیش آموزش خود نظارت (DINO / MAE) ، توکن های ثبت و بسته بندی با رزولوشن بومی.
  • انتخاب بین جمع کردن CLS، جمع کردن متوسط و ثبت توکن ها برای یک کار زیرکاه.

مشکل

ترانسفورماتورها بر روی دنباله های بردار عمل می کنند. متن قبلاً یک دنباله (بایت یا توکن) است. یک تصویر یک شبکه 2D از پیکسل ها با سه کانال رنگی نیست. اگر هر پیکسل را صاف کنید، یک تصویر RGB 224x224 به 150,528 توکن تبدیل می شود و توجه به خود در این طول یک غیر راه اندازی است (چهارگانه در طول دنباله).

رویکردهای قبل از سال 2020 یک استخراج کننده ویژگی CNN را به سمت جلو قرار دادند: ResNet یک نقشه ویژگی 7x7 از 2048 متری را تولید می کند، آن 49 توکن را به یک ترانسفورمتر تغذیه می کند. این کار می کند اما تعصب های CNN را (تساوی مترجم، زمینه های گیرنده محلی) به ارث می برد و اشتها ترانسفورمتر را برای مقیاس از دست می دهد.

دوسویتسکی و همکارانش (2020) سوال ساده ای را مطرح کرد: اگر از CNN بگذریم چی؟ تصویر را به پچ های اندازه ثابت (به عنوان مثال 16x16 پیکسل) تقسیم کنید، هر پچ را به صورت خطی به یک ویکتور پرتاب کنید، یک گنجاندن موقعیت را اضافه کنید و دنباله را به یک ترانسفارمر وانیل تغذیه کنید. در آن زمان این یک کینه گرایی بود بدون پیچیدگی. با داده های کافی (JFT-300M، سپس LAION) آن را از ResNet در ImageNet و بهبود ادامه داد.

تا سال 2026، ابتدایی ViT پایه ی بدون سوال است. هر برج دید VLM با وزن باز، یک نسل است (DINOv2، SigLIP 2، CLIP، EVA، InternViT). سوال دیگر "آیا باید از پیچ ها استفاده کنیم؟" بلکه "چه اندازه پیچ، چه برنامه رزولوشن، چه هدف پیش از تمرین، چه کدگذاری موقعیت است".

مفهوم

پیچ ها به عنوان توکن

به نظر ميادxشکل(H, W, 3)و اندازه ی پیچP، شما تصویر را به یک شبکه از(H/P) x (W/P)هر تکه یک تکه است.P x P x 3مکعب پیکسل ها. هر مکعب را به یک مسطح کنید3 P^2متری. یک پروژکتور خطی مشترک را اعمال کنید W_Eشکل(3 P^2, D)برای نقشه برداری هر پیچ به ابعاد پنهان مدلD. .

برای پیکربندی وی تی بی ۱۶:

  • قطعنامه 224، اندازه پچ 16 → شبکه 14x14 → 196 توکن پچ.
  • هر پیچ16 x 16 x 3 = 768ارزش پیکسل ها، پیش بینی شده به D = 768. .
  • يه چيز يادگيري اضافه کن[CLS]طول تکه تا تکه ۱۹۷

پروژکتور پیچ از نظر ریاضی به یک پیچ 2D با اندازه هسته یکسان است P، قدم بزنPوDکانال های خروجی. این روش کد تولید واقعاً آن را اجرا می کند nn.Conv2d(3, D, kernel_size=P, stride=P)چارچوبی "پیش بینی خطی" مفهومی است؛ چارچوبی هسته کارآمد است.

ورق های موقعیت

پیچ ها هیچ ترتیب ذاتی ندارند ترانسفورماتور آنها را به عنوان یک کیسه می بیند. ویتی های اولیه یک گنجانشی موقعیت 1D قابل یادگیری را اضافه کردند (یک ویکتور 768-dim در هر موقعیت، 197 از آنها). کار می کند، اما مدل را به رزولوشن آموزش متصل می کند: در نتیجه شما باید جدول موقعیت را بینگرا کنید اگر شبکه را تغییر دهید.

ستون های جدید بینایی از 2D-RoPE (M-RoPE Qwen2-VL، پیش فرض SigLIP 2) یا موقعیت های 2D فاکتور شده استفاده می کنند. 2D-RoPE به اساس شاخص پیچ (صف، ستون) ، جستجو و متری کلیدی را چرخش می کند، بنابراین مدل موقعیت 2D نسبی را از زاویه چرخش تحلیل می کند. هیچ جدول موقعیت وجود ندارد. مدل اندازه های شبکه های تعسفی را در نتیجه گیری اداره می کند.

توکن CLS، تولید مشترک و توکن های ثبت

نمایش سطح تصویر چیست؟ سه گزینه هم در هم وجود دارد:

  1. [CLS]توکن. یک ویکتور قابل یادگیری را به دنباله پیچ آماده کنید. پس از تمام بلوک های ترانسفورماتور، حالت پنهان توکن CLS نشان دهنده تصویر است. از BERT ارث گرفته شده است. توسط ViT اصلی، CLIP استفاده می شود.
  2. متوسط پول، متوسط حالت پنهان تولید توکن های پیچ استفاده شده توسط SigLIP، DINOv2، بیشتر VLM های مدرن
  3. درسیت و همکاران (2023) مشاهده کردند که وی تی هایی که بدون یک توکن سینک صریح آموزش دیده اند، پیچ های "آرتیفاکت" استاندارد بالایی را توسعه می دهند که توجه به خود را ربوده اند. اضافه کردن 416 توکن های register قابل یادگیری این بار را جذب می کند و کیفیت پیش بینی کثافت (تقسمت، عمق) را بهبود می بخشد. DINOv2 و SigLIP 2 هر دو با registers کشتی می کنند.

انتخاب برای وظایف پایین تر مهم است. CLS برای طبقه بندی مناسب است. برای VLM هایی که توکن های پچ را به LLM تغذیه می کنند، شما به طور کامل جمع آوری را نادیده می گیرید هر تکه تبدیل به توکن ورودی LLM می شود. سوابق قبل از تحویل رد می شوند (آن ها استقرار هستند، نه محتوای).

آموزش قبل از تمرین: تحت نظارت، ضد، ماسک، خود تزریق

ViT 2020 با طبقه بندی تحت نظارت در JFT-300M پیش از آموزش انجام شد. به سرعت توسط:

  • CLIP (2021): متن تصویر متناقض در جفت 400 میلیون. درس 12.02.
  • MAE (2021, He et al.): 75% تکه ها را ماسک می کند، پیکسل ها را بازسازی می کند. خود نظارت می کند، روی تصاویر خالص کار می کند.
  • DINO (2021) / DINOv2 (2023): خود تزریق با دانش آموز-معلم، بدون برچسب، بدون عنوان. DINOv2 ViT-g/14 2023 قوی ترین ستون فقرات بصری و پیش فرض برای موارد استفاده از "روش های ضخیم" است.
  • سیگلپ / سیگلپ 2 (2023, 2025): CLIP با یک ضایعات سیگمائید و NaFlex برای نسبت ابعاد بومی. برج دید غالب در 2026 VLM های باز (Qwen، Idefics2, LLaVA-OneVision)

انتخاب شما از پیش از تمرین تعیین می کند که ستون فقرات برای چه کاری مناسب است: CLIP/SigLIP برای مطابقت معنوی با متن، DINOv2 برای ویژگی های بصری کثیف، MAE به عنوان نقطه شروع برای تنظیم دقیق زیر جریان.

قوانین مقیاس بندی

مقیاس بندی ViT (Zhai et al. 2022) نشان داد که کیفیت ViT به قوانین قابل پیش بینی در اندازه مدل، اندازه داده و محاسبه عمل می کند. در محاسبه ثابت:

  • مدل بزرگتر + داده های بیشتر → کیفیت بهتر
  • اندازه پچ یک اهرم در طول دنباله در مقابل وفاداری است. پیچ 14 (معمولا برای DINOv2/SigLIP SO400m) نشان دهنده توکن های بیشتر در هر تصویر از پیچ 16 است. بهتر برای OCR و وظایف کثیف، بدتر برای سرعت.
  • قطعنامه یکی دیگر از اهرم های بزرگ است. از 224 به 384 به 512 رفتن تقریبا همیشه کمک می کند، در هزینه مربع در FLOP.

ViT-g/14 (1B params، patch 14, resolution 224 → 256 tokens) و SigLIP SO400m/14 (400M params، patch 14) دو کدگر کار برای VLM های باز 2026 هستند.

تعداد پارامتر برای یک ViT

حساب کامل در سالcode/main.py. براي وي تي بي 16 در 224:

patch_embed = 3 * 16 * 16 * 768 + 768  =  591k
cls + pos    = 768 + 197 * 768          =  152k
block        = 4 * 768^2 (QKVO) + 2 * 4 * 768^2 (MLP) + 2 * 2*768 (LN)
             = 12 * 768^2 + 3k          =  7.1M
12 blocks    = 85M
final LN    = 1.5k
total       ≈ 86M

قبل از بارگذاری نقطه بازرسی هر ViT رو به این طرف پارک کن اندازه ستون فقرات کف VRAM رو در هر VLM زیر جریان تنظیم می کنه

تنظیم تولید 2026

کدگر بازترین VLMs که در سال 2026 با آن در حال حمل است SigLIP 2 SO400m/14 در رزولوشن بومی (NaFlex) است.

  • پارامتر 400 ميتر
  • اندازه پیچ 14، رزولوشن پیش فرض 384 → 729 توکن پیچ در هر تصویر.
  • مجموعه متوسط برای وظایف سطح تصویر؛ تمام 729 پیچ به LLM برای VQA جریان می یابد.
  • 4 تا توکن ثبت شده که قبل از انتقال LLM رد شده اند.
  • 2D-RoPE با مقیاس بندی سطح تصویر برای نسبت ابعاد بومی.

هر تصميمي که توي اين نقشه قرار داده شده به يه مقاله ي که ميتوني بخوني باز مي گردد

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

code/main.pyیک توکنایزر پارت و یک ماشین حساب هندسی است. این (تصویر H، W، پارت P، پنهان D، عمق L) را می گیرد و گزارش می دهد:

  • شکل شبکه و طول ردیف پس از پیچ کردن.
  • تسلسل توکن برای یک تصویر بازیچه مصنوعی 8×8 پیکسل (در مسیر مسطح + پروژه قدم بزنید).
  • تعداد پارامترها به دسته بندی بسته به پچ، موقعیت، بلوک های ترانسفورماتور و سر.
  • FLOPs در هر گذرگاه پیش روی در قطعنامه هدف.
  • جدول مقایسه در ViT-B/16 @ 224, ViT-L/14 @ 336, DINOv2 ViT-g/14 @ 224, SigLIP SO400m/14 @ 384.

اجرا کن، شمارش پارامترها را با اعداد منتشر شده مطابقت بده، با اندازه و رزولوشن پیچ بازی کن تا هزینه شمارش توکن را احساس کنی.

-باده

این درس به ما کمک می کندoutputs/skill-patch-geometry-reader.mdبا توجه به یک پیکربندی ViT (حجم پیچ، وضوح، کم کم پنهان، عمق) ، این یک عدد توکن، تعداد پارامتر و تخمین VRAM با توجیهات تولید می کند. از این مهارت استفاده کنید هر بار که یک ستون فقرات بینایی را برای یک VLM انتخاب کنید.

تمرینات

  1. طول ردیف نماد پیچ برای Qwen2.5-VL را در ورودی 1280x720 بومی با اندازه پیچ محاسبه کنید. چگونه این با نمایش فقط CLS مقایسه می شود؟
  1. یک قاب 1080p (1920x1080) در پیچ 14 چه تعداد توکن تولید می کند؟ در 30 FPS در طول یک ویدیو 5 دقیقه ای، چه تعداد توکن بصری در مجموع وجود دارد؟ کدام هزینه بیشتر برای شما صرفه جویی می کند: جمع آوری، نمونه گیری قاب یا ادغام توکن؟
  1. پیاده سازی جمع آوری میانگین بر روی توکن های پیچ در پایتون خالص. بررسی کنید که میانگین پول بیش از 196 توکن از یک DINOv2 output با مدل مطابقت دارد forwardوقتی که از یک ادغام جمع آوری شده درخواست می کنید باز می گردد.
  1. بخش 3 کتاب "ترانسفارمرهای دید نیاز به ثبت دارند" (arXiv:2309.16588) را بخوانید. در دو جمله شرح دهید که ثبت کننده چه اثری را جذب می کند و چرا برای پیش بینی کثافت پایین جریان مهم است.
  1. تغییرشcode/main.pyبرای پشتیبانی از پیچ-n'-پاک: با توجه به یک لیست از تصاویر با وضوح های مختلف، یک دنباله بسته شده و ماسک توجه قطعه قطعه را تولید کنید.

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

TermWhat people sayWhat it actually means
Patch"16x16 pixel square"A fixed-size non-overlapping region of the input image; becomes one token
Patch embedding"Linear projection"A shared learned matrix (or Conv2d with stride=P) mapping flattened patch pixels to D-dim vectors
CLS token"Class token"Prepended learnable vector whose final hidden state represents the whole image; optional in 2026
Register token"Sink token"Extra learnable tokens that absorb the high-norm attention artifacts ViTs develop during pretraining
Position embedding"Positional info"Per-position vector or rotation making the sequence-order-aware; 2D-RoPE is the modern default
Grid"Patch grid"The (H/P) x (W/P) 2D array of patches for a given resolution and patch size
NaFlex"Native flexible resolution"SigLIP 2 feature: single model serves multiple aspect ratios and resolutions without retraining
Backbone"Vision tower"The pretrained image encoder whose patch-token outputs feed the LLM in a VLM
Pooling"Image-level summary"Strategy to turn patch tokens into one vector: CLS, mean, attention pool, or register-based
Patch 14 vs 16"Finer vs coarser grid"Patch 14 produces more tokens per image, better fidelity for OCR, slower; patch 16 is the classic default

خواندن بیشتر

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.