Data Echoing คืออะไร เพิ่มความเร็วในการเทรน Neural Network ด้วยเทคนิค Data Echoing – Preprocessing ep.6

อย่างที่เราทราบกันดีว่า I/O หรือระบบ Input/Output เป็นอะไรที่ช้าที่สุด ของระบบคอมพิวเตอร์ การที่จะ Optimize ให้คอมพิวเตอร์ทำงานได้ประสิทธิภาพมากที่สุด ต้องใช้ความรู้ความเข้าใจ บริหารจัดการทรัพยากรส่วนต่าง ๆ เช่น CPU, GPU, Memory, Storage, Network ให้ทำงาน Utilize มากที่สุด ลด Bottleneck ที่ต้องรอข้อมูลระหว่างกัน แต่ในการเทรน Machine Learning ที่เราวิธีที่เราทำกันอยู่ Training Loop จะเริ่มต้นจาก อ่านข้อมูล, สับไพ่ข้อมูล, Split, Data Augmentation, Feed Forward, Loss Function, Backpropagation, Optimizer Update Weight แล้วเริ่มต้น Loop ใหม่ เป็นอย่างนี้ซ้ำ ๆ ไปเรื่อย ๆ ตามลำดับ โดยไม่ได้คำนึงถึงประเด็นด้านบน แล้วเราจะแก้ไขอย่างไร

Batch Size คืออะไร ปรับอย่างไรให้พอดี กับ GPU Memory และ ได้ Accuracy สูงสุด ในการเทรน Deep Neural Network – Hyperparameter Tuning ep.2

ในปัจจุบันการเทรน Deep Neural Network ใช้พื้นฐานอัลกอริทึมมาจาก Mini-Batch Stochastic Gradient Optimization เป็นส่วนใหญ่ และจำนวนตัวอย่างข้อมูลที่เราป้อนให้โมเดลในหนึ่งครั้ง หรือ 1 Mini-Batch คือ Hyperparameter สำคัญตัวหนึ่งที่เราต้องปรับจูน ซึ่งใน Library ต่าง ๆ จะใช้ชื่อว่า Batch Size

สอนใช้ nvidia-smi เครื่องมือดู GPU Utilization และ Memory Usage สำหรับ GPU ยี่ห้อ Nvidia – Hardware ep.1

ในการเทรนโมเดล Deep Learning ที่มีจำนวนหลาย ๆ Layer จำเป็นต้องใช้ GPU เร็ว ๆ แต่เราไม่ควรพิจารณาแค่ความเร็ว ความใหม่ของ GPU เพียงอย่างเดียว ขนาด Memory ของ GPU ก็มีความสำคัญอย่างมาก GPU ควรมี Memory ขนาดใหญ่เพียงพอกับขนาดโมเดล และขนาดของข้อมูล เพื่อที่จะลดเวลาในการเทรน ที่จะต้องเสียเวลา ก็อปปี้ข้อมูลเข้าออก ระหว่าง Disk, CPU Memory และ GPU Memory ทำให้ CUDA Core ของ GPU ที่มีความเร็วสูง กลับว่างงาน เพราะต้องรอข้อมูล