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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ใช้ GEMM ของ cuBLAS ให้ถูกต้อง
- เวกเตอร์และการแปลงของ Thrust
- Reduce, Scan และ Sort ของ Thrust
- cuDNN สำหรับการเรียนรู้เชิงลึก