0Pricing
CUDA Academy · บทเรียน

cuDNN สำหรับการเรียนรู้เชิงลึก

คอนโวลูชันและการดำเนินการกับเทนเซอร์ในระดับใหญ่

cuDNN สำหรับการเรียนรู้เชิงลึก เป็นบทเรียน CUDA Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CUDA Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน

กลไกเบื้องหลังเฟรมเวิร์ก AI

cuDNN คือไลบรารีการเรียนรู้เชิงลึกของ NVIDIA โดย PyTorch และ TensorFlow อาศัยไลบรารีนี้เพื่อทำคอนโวลูชันและองค์ประกอบพื้นฐานอื่น ๆ ของโครงข่ายประสาทเทียมให้รวดเร็ว 🧠

เหตุใดคอนโวลูชันจึงต้องมีตัวช่วย

คอนโวลูชัน เลื่อนตัวกรองขนาดเล็กไปบนภาพและทำการคำนวณจำนวนมหาศาล cuDNN จึงทำงานนี้ได้เร็วกว่าการใช้เคอร์เนลแบบพื้นฐานมาก

เริ่มต้นด้วยตัวจัดการ

เช่นเดียวกับ cuBLAS, cuDNN เก็บสถานะไว้ใน ตัวจัดการ ที่คุณสร้างครั้งเดียวและใช้ซ้ำกับทุกการดำเนินการ จากนั้นจึงทำลายเมื่อปิดการทำงาน

cudnnHandle_t h;
cudnnCreate(&h);

อธิบายข้อมูลของคุณ

cuDNN ทำงานผ่าน ตัวบอกข้อมูล ตัวบอกข้อมูลเทนเซอร์จะบันทึกรูปร่าง ชนิดข้อมูล และรูปแบบการจัดวาง เพื่อให้ไลบรารีทราบอย่างแน่ชัดว่ากำลังประมวลผลอะไร

cudnnTensorDescriptor_t xDesc;
cudnnCreateTensorDescriptor(&xDesc);

รูปแบบ NCHW

โดยทั่วไปเทนเซอร์จะอยู่ในรูปแบบ NCHW: แบตช์ ช่อง ความสูง และความกว้าง การกำหนดรูปแบบนี้ให้ถูกต้องเป็นสิ่งสำคัญเพื่อให้การคำนวณสอดคล้องกัน

cudnnSetTensor4dDescriptor(xDesc,
  CUDNN_TENSOR_NCHW, CUDNN_DATA_FLOAT, N, C, H, W);

ตัวกรองมีตัวบอกข้อมูลของตนเอง

น้ำหนักของเคอร์เนลคอนโวลูชันใช้ ตัวบอกข้อมูลตัวกรอง แยกต่างหาก ซึ่งอธิบายจำนวนช่องเอาต์พุต จำนวนช่องอินพุต รวมถึงความสูงและความกว้างของตัวกรอง

cudnnFilterDescriptor_t wDesc;
cudnnCreateFilterDescriptor(&wDesc);

การตั้งค่าคอนโวลูชัน

ตัวบอกข้อมูลคอนโวลูชัน จะเก็บค่าการเติมขอบ ระยะเลื่อน และอัตราการขยาย ซึ่งเป็นตัวกำหนดว่าตัวกรองจะกวาดผ่านเทนเซอร์อินพุตอย่างไร

เลือกอัลกอริทึม

cuDNN มี อัลกอริทึมคอนโวลูชันหลายแบบ ซึ่งมีข้อแลกเปลี่ยนด้านความเร็วและหน่วยความจำแตกต่างกัน คุณสามารถสอบถามเพื่อเลือกแบบที่ดีที่สุดสำหรับรูปร่างเทนเซอร์ของคุณ

จองพื้นที่ทำงาน

อัลกอริทึมที่รวดเร็วต้องใช้พื้นที่ชั่วคราว คุณจองบัฟเฟอร์ พื้นที่ทำงานบนอุปกรณ์ โดย cuDNN จะบอกขนาดที่ต้องใช้ล่วงหน้า

size_t bytes;
cudnnGetConvolutionForwardWorkspaceSize(...,&bytes);

เรียกใช้การประมวลผลไปข้างหน้า

cudnnConvolutionForward เชื่อมทุกอย่างเข้าด้วยกัน ได้แก่ ตัวจัดการ ตัวบอกข้อมูล อัลกอริทึม และพื้นที่ทำงาน แล้วสร้างแผนผังคุณลักษณะเอาต์พุตด้วยการเรียกใช้เพียงครั้งเดียว

cudnnConvolutionForward(h, &alpha, xDesc, x,
  wDesc, w, convDesc, algo, ws, bytes, &beta, yDesc, y);

มากกว่าคอนโวลูชัน

cuDNN ยังช่วยเร่ง การพูลลิง ฟังก์ชันกระตุ้น และการทำให้เป็นมาตรฐาน ซึ่งเป็นเลเยอร์อื่น ๆ ที่ประกอบกันเป็นโครงข่ายประสาทเทียมสมัยใหม่

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทบทวนว่า cuDNN สร้างขึ้นเพื่อเร่งการทำงานใด

สรุปทบทวน

คุณตั้งค่า ตัวจัดการ อธิบายเทนเซอร์และตัวกรองในรูปแบบ NCHW เลือกอัลกอริทึมพร้อมพื้นที่ทำงาน และเรียกใช้การประมวลผลคอนโวลูชันไปข้างหน้า 🎓

คำถามที่พบบ่อย

บทเรียน “cuDNN สำหรับการเรียนรู้เชิงลึก” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “cuDNN สำหรับการเรียนรู้เชิงลึก” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CUDA Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CUDA Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “cuDNN สำหรับการเรียนรู้เชิงลึก”

คอนโวลูชันและการดำเนินการกับเทนเซอร์ในระดับใหญ่ คุณปฏิบัติ CUDA Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CUDA Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน CUDA Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “cuDNN สำหรับการเรียนรู้เชิงลึก” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน CUDA Academy นี้ได้ไหม

ได้ บทเรียน CUDA Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ใช้ GEMM ของ cuBLAS ให้ถูกต้อง
  2. เวกเตอร์และการแปลงของ Thrust
  3. Reduce, Scan และ Sort ของ Thrust
  4. cuDNN สำหรับการเรียนรู้เชิงลึก
← กลับไปที่ CUDA Academy