การจัดแบตช์ การสับเปลี่ยน และ num_workers
กำหนดค่า DataLoader เพื่อความเร็ว
การจัดแบตช์ การสับเปลี่ยน และ num_workers เป็นบทเรียน Deep Learning Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Deep Learning Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
พบกับ DataLoader
ชุดข้อมูลส่งตัวอย่างออกมาทีละรายการ แต่การฝึกต้องการข้อมูลเป็นกลุ่ม DataLoaderจะห่อหุ้มชุดข้อมูลของคุณและส่งข้อมูลออกมาเป็นชุดที่สะดวกต่อการใช้งาน 📦
from torch.utils.data import DataLoader
loader = DataLoader(ds)การแบ่งเป็นชุดช่วยประหยัดเวลา
กำหนดbatch_size แล้วตัวโหลดจะนำตัวอย่างจำนวนดังกล่าวมาซ้อนเป็นเทนเซอร์หนึ่งชุด ชุดที่ใหญ่ขึ้นใช้ฮาร์ดแวร์ได้คุ้มค่ากว่าและช่วยให้การอัปเดตที่มีสัญญาณรบกวนราบรื่นขึ้น
loader = DataLoader(ds, batch_size=32)หนึ่งชุดซ้อนรวมกัน
แต่ละชุดจะเพิ่มมิติใหม่ไว้ด้านหน้า ตัวอย่าง 32 รายการที่มีรูปร่าง 784 จะกลายเป็นเทนเซอร์เดียวที่มีรูปร่าง 32 คูณ 784 พร้อมให้โมเดลใช้งาน
วนลูปผ่านชุดข้อมูล
คุณวนลูปผ่านตัวโหลดได้เหมือนลำดับใด ๆ ของ Python ในแต่ละรอบ ลูปจะส่งชุดข้อมูลของข้อมูลนำเข้าและป้ายกำกับหนึ่งชุดให้ขั้นตอนการฝึก
for xb, yb in loader:
pred = model(xb)สุ่มลำดับใหม่ทุกยุค
การตั้งค่าshuffleเป็น True จะจัดลำดับตัวอย่างใหม่ในแต่ละยุค วิธีนี้ช่วยทำลายลำดับที่เกิดขึ้นโดยบังเอิญ ทำให้โมเดลไม่สามารถจดจำลำดับข้อมูลของคุณได้
loader = DataLoader(ds, batch_size=32, shuffle=True)สุ่มชุดฝึก ไม่สุ่มชุดทดสอบ
เปิดการสุ่มสำหรับชุดการฝึก แต่ปิดไว้สำหรับการตรวจสอบและการทดสอบ การประเมินมีหน้าที่วัดประสิทธิภาพเท่านั้น ดังนั้นใช้ลำดับคงที่ในส่วนนี้ได้
num_workers โหลดแบบขนาน
การอ่านและถอดรหัสข้อมูลอาจทำให้ GPU ต้องรอ การตั้งค่าnum_workersให้มากกว่าศูนย์จะสร้างกระบวนการช่วยเหลือเพื่อเตรียมชุดถัดไปขณะที่โมเดลกำลังฝึก
loader = DataLoader(ds, batch_size=32, num_workers=4)เลือกจำนวนตัวช่วยที่เหมาะสม
จุดเริ่มต้นทั่วไปสำหรับnum_workersคือจำนวนแกนประมวลผล CPU ที่คุณมี หากมีมากเกินไปอาจทำให้หน่วยความจำทำงานหนักเกินควร จึงควรวัดผลแทนการเดา
pin_memory ช่วยเร่งการคัดลอกไปยัง GPU
เมื่อฝึกบน GPU ให้ตั้งค่าpin_memoryเป็น True การตั้งค่านี้จะวางชุดข้อมูลไว้ในหน่วยความจำที่ล็อกหน้าไว้ ทำให้การถ่ายโอนไปยังอุปกรณ์เร็วขึ้นอย่างเห็นได้ชัด
loader = DataLoader(ds, batch_size=32, pin_memory=True)จัดการชุดสุดท้าย
ชุดสุดท้ายมักมีขนาดเล็กกว่าชุดอื่น ใช้drop_lastเป็น True เพื่อละทิ้งชุดนี้เมื่อโมเดลของคุณต้องการให้ทุกชุดมีขนาดเท่ากัน
loader = DataLoader(ds, batch_size=32, drop_last=True)ใช้ตัวโหลดแยกสำหรับแต่ละส่วน
โดยทั่วไป คุณจะสร้างตัวโหลดแยกสำหรับชุดฝึก ชุดตรวจสอบ และชุดทดสอบ แต่ละตัวมีการตั้งค่าของตนเอง เช่น เปิดการสุ่มเฉพาะชุดฝึก
ตรวจสอบอย่างรวดเร็ว
การตั้งค่า num_workers ให้มากกว่าศูนย์ทำอะไรจริง ๆ
สรุปทบทวน
DataLoaderจะแบ่งชุดข้อมูลของคุณเป็นชุดย่อย สุ่มข้อมูลการฝึก และใช้ num_workers เพื่อโหลดชุดข้อมูลแบบขนาน ทำให้โมเดลมีข้อมูลป้อนอย่างต่อเนื่องและทำงานได้รวดเร็ว 🎉
เรียนรู้ Python ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การจัดแบตช์ การสับเปลี่ยน และ num_workers” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดแบตช์ การสับเปลี่ยน และ num_workers” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Deep Learning Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Deep Learning Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดแบตช์ การสับเปลี่ยน และ num_workers”
กำหนดค่า DataLoader เพื่อความเร็ว คุณปฏิบัติ Deep Learning Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Deep Learning Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Deep Learning Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดแบตช์ การสับเปลี่ยน และ num_workers” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Deep Learning Academy นี้ได้ไหม
ได้ บทเรียน Deep Learning Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เขียนคลาสชุดข้อมูลแบบกำหนดเอง
- การจัดแบตช์ การสับเปลี่ยน และ num_workers
- collate_fn สำหรับอินพุตความยาวต่างกัน
- ปรับอินพุตให้เป็นมาตรฐาน