Tensor Core, Triton, เครือข่ายเรซิดวล และ Vision Transformer

ตั้งแต่ปี 2015 จนถึงปัจจุบัน การเรียนรู้เชิงลึกพัฒนาจากโค้ด GPU ภาษา C++ ที่ปรับแต่งด้วยมือและเครือข่ายคอนโวลูชัน ไปสู่เอนจินเมทริกซ์ที่เร่งด้วยฮาร์ดแวร์และสถาปัตยกรรม Transformer หลักชัยสามประการนี้กำหนดวิธีที่โมเดล AI สมัยใหม่ถูกออกแบบและขยายขนาด
1. วิวัฒนาการของ CUDA สมัยใหม่: Tensor Core และ OpenAI Triton
ในปี 2012 Alex Krizhevsky เขียน CUDA C++ ระดับต่ำ (cuda-convnet) เพื่อคำนวณการดำเนินการทศนิยมลอยตัวทีละรายการบน CUDA core มาตรฐาน ปัจจุบันการเรียนรู้เชิงลึกพึ่งพาฮาร์ดแวร์เมทริกซ์เฉพาะทางและคอมไพเลอร์ระดับสูง
- จาก CUDA Core สู่ Tensor Core CUDA core แบบดั้งเดิมทำการคูณและบวกสเกลาร์หนึ่งครั้งต่อหนึ่งรอบสัญญาณนาฬิกา เริ่มจากสถาปัตยกรรม Volta (2017) NVIDIA เปิดตัว Tensor Core ซึ่งคูณเมทริกซ์ขนาดเล็กทั้งก้อน (เช่นบล็อก 4×4 หรือ 16×16) ได้ในหนึ่งรอบสัญญาณนาฬิกา Tensor Core รุ่นใหม่ใช้รูปแบบความแม่นยำผสม เช่น FP16, BF16 และ FP8 ให้ความเร็วในการคูณเมทริกซ์เพิ่มขึ้นเป็นระดับ order of magnitude
- cuDNN และการเลือกเคอร์เนลอัตโนมัติ แทนที่นักวิจัยจะเขียนคอนโวลูชัน C++ เอง ไลบรารี cuDNN ของ NVIDIA ปัจจุบันมีเคอร์เนลแอสเซมบลีที่คอมไพล์ไว้ล่วงหน้าหลายร้อยตัว ขณะรันไทม์ เฟรมเวิร์กอย่าง PyTorch จะทดสอบประสิทธิภาพอัลกอริทึมต่าง ๆ สำหรับรูปร่างเทนเซอร์ของคุณโดยเฉพาะ และเลือกรูทีน Tensor Core ที่เร็วที่สุดให้โดยอัตโนมัติ
- OpenAI Triton (การเขียนโปรแกรม GPU ด้วย Python) การเขียน CUDA C++ ดิบต้องจัดการการระบุดัชนีเธรด bank conflict ของ shared memory และการซิงโครไนซ์ warp ด้วยตนเอง Triton ซึ่งเปิดตัวโดย OpenAI ช่วยให้นักวิจัยเขียนเคอร์เนล GPU ประสิทธิภาพสูงด้วย Python ได้โดยตรง คุณกำหนดการดำเนินการในระดับบล็อก (ไทล์ของข้อมูล) แล้วคอมไพเลอร์ Triton จะจัดการ memory coalescing, shared memory tiling และการจัดตารางงาน Tensor Core ให้อัตโนมัติ ซึ่งมักทำได้เท่าหรือดีกว่า CUDA C++ ที่ปรับแต่งด้วยมือ
2. Skip Connection ของ ResNet และการไหลของ Backpropagation
ก่อน ResNet (2015) การซ้อนเลเยอร์คอนโวลูชันมากกว่าประมาณ 20 เลเยอร์ทำให้ข้อผิดพลาดในการฝึกพุ่งสูงขึ้น เมื่อ gradient เดินทางย้อนกลับผ่านขั้นตอนการคูณหลายสิบขั้น ค่าจะหดลงเข้าใกล้ศูนย์ (vanishing gradient) หรือไม่เสถียร
- การเรียนรู้เรซิดวลแทนเอาต์พุตดิบ ในบล็อกเครือข่ายมาตรฐาน เลเยอร์ที่ซ้อนกันพยายามเรียนรู้การแมปโดยตรง H(x) จากอินพุต x ส่วน ResNet นำ skip connection (identity shortcut) มาใช้ ซึ่งบวกอินพุตเดิม x เข้ากับเอาต์พุตของบล็อกโดยตรง:
y=F(x)+x
ในที่นี้ F(x) แทนเลเยอร์คอนโวลูชันที่ซ้อนกัน แทนที่จะสร้างการแทนค่าทั้งหมดขึ้นใหม่ตั้งแต่ต้น เลเยอร์ต้องเรียนรู้เพียงเรซิดวล (ค่าปรับเล็กน้อย F(x) = y - x) เท่านั้น หากเลเยอร์ใดไม่จำเป็น เครือข่ายก็ผลัก F(x) ไปทางศูนย์ได้ง่าย ทำให้เหลือการส่งผ่านแบบ identity ที่สะอาด
- ทางด่วน gradient ที่ไม่ขาดตอน ระหว่าง backpropagation กฎลูกโซ่จะคำนวณ gradient ของ loss (L) เทียบกับอินพุต x:
(∂ L)/(∂ x)=(∂ L)/(∂ y)((∂ F(x))/(∂ x)+1)
เพราะพจน์ + 1 ที่เกิดจาก identity shortcut gradient ต้นทาง ((∂ L)/(∂ y)) จึงไหลย้อนตรงไปยังเลเยอร์ก่อนหน้าโดยไม่ถูกลดทอนด้วยเมทริกซ์น้ำหนักค่าน้อยใน (∂ F(x))/(∂ x) ทำให้ gradient แพร่ผ่านเครือข่ายที่มี 100 เลเยอร์ขึ้นไป หรือแม้แต่ 1,000 เลเยอร์ขึ้นไปได้อย่างสะอาด
3. การเปลี่ยนผ่านจาก CNN สู่ Vision Transformer (ViT)
เกือบทศวรรษหลัง AlexNet เครือข่ายประสาทเทียมแบบคอนโวลูชัน (CNN) ครองวงการคอมพิวเตอร์วิทัศน์ด้วยการเลื่อนฟิลเตอร์เฉพาะที่ขนาดเล็กไปบนภาพ ในปี 2020 Google เปิดตัว Vision Transformer (ViT) ซึ่งนำสถาปัตยกรรม Transformer จากการประมวลผลภาษาธรรมชาติมาปรับใช้กับภาพ
| คุณลักษณะ | เครือข่ายประสาทเทียมแบบคอนโวลูชัน (CNN) | Vision Transformer (ViT) |
|---|---|---|
| การประมวลผลอินพุต | ประมวลผลกริดภาพ 2 มิติทั้งภาพด้วยฟิลเตอร์แบบเลื่อน (เช่น 3×3) | แบ่งภาพเป็นแพตช์ขนาดคงที่ (เช่น 16×16 พิกเซล) แล้วแผ่เป็นลำดับของโทเค็น |
| Receptive Field | เริ่มจากเฉพาะที่ก่อน เลเยอร์ต้น ๆ มองเห็นเฉพาะพิกเซลข้างเคียง บริบทระดับโลกค่อย ๆ สะสมขึ้นอย่างช้า ๆ ในเลเยอร์ที่ลึก | เห็นทั้งภาพทันที Self-attention เชื่อมทุกแพตช์ของภาพกับทุกแพตช์อื่นตั้งแต่เลเยอร์ที่ 1 |
| Inductive Bias | สูง สมมติฐานที่ฝังมาในตัวเรื่องความไม่แปรผันตามการเลื่อนตำแหน่งและความเป็นเฉพาะที่เชิงพื้นที่ 2 มิติ ช่วยให้ CNN เรียนรู้ได้ดีบนชุดข้อมูลขนาดเล็กกว่า | ต่ำ ไม่มีกฎเชิงพื้นที่ 2 มิติฝังมาในตัว (พึ่งพา positional embedding) จึงต้องใช้ชุดข้อมูลขนาดมหาศาลเพื่อเรียนรู้โครงสร้างของภาพ |
| การขยายขนาดบนฮาร์ดแวร์ | พึ่งพาเคอร์เนลคอนโวลูชันเฉพาะทางและรูปแบบการเข้าถึงหน่วยความจำที่ซับซ้อน | พึ่งพาการคูณเมทริกซ์แบบหนาแน่น (GEMM) เกือบทั้งหมด ซึ่งใช้ Tensor Core ของ GPU สมัยใหม่ได้เต็มที่ด้วยประสิทธิภาพสูงสุด |
- เหตุผลที่ ViT เข้ามาครองวงการ AI สมัยใหม่ แม้ CNN ยังคงมีประสิทธิภาพสำหรับอุปกรณ์มือถือและอุปกรณ์เอดจ์ขนาดเบา แต่ Vision Transformer ขยายขนาดได้ดีกว่ามากเมื่อฝึกด้วยภาพหลายร้อยล้านภาพ นอกจากนี้ เพราะ ViT แทนภาพเป็นลำดับโทเค็น ซึ่งเป็นรูปแบบเดียวกับที่ใช้กับข้อความและเสียง จึงทำให้โมเดล AI แบบมัลติโมดัลสมัยใหม่ (เช่น GPT-4o และ Gemini) ประมวลผลภาพและภาษาภายในสถาปัตยกรรมเดียวที่รวมกันได้