อย่างที่เราทราบกันดีว่า 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 ใหม่ เป็นอย่างนี้ซ้ำ ๆ ไปเรื่อย ๆ ตามลำดับ โดยไม่ได้คำนึงถึงประเด็นด้านบน แล้วเราจะแก้ไขอย่างไร
Tag Archives: gpu
Quantization คืออะไร Post-Training Quantization มีประโยชน์อย่างไร กับ Deep Neural Network บนอุปกรณ์ Embedded Device, IoT, Edge, มือถือ Mobile – tflite ep.2
ถ้าข้างนอกมีฝนตกอยู่ เราอาจจะไม่ได้ต้องการทราบว่าฝนกำลังตกกี่เม็ดต่อวินาที เราต้องการทราบแค่เพียงว่า ฝนตกหนัก ฝนตกปานกลาง หรือฝนตกเล็กน้อย เช่นเดียวกับการพยากรณ์ของ Neural Network บ่อยครั้งที่เราไม่ได้ต้องการความแม่นยำขนาด ตัวเลยทศนิยม Floating Point 32 Bit หรือแม้กระทั่ง 16 Bit และในหลาย ๆ งานใช้แค่จำนวนเต็ม Integer 8 Bit ก็เพียงพอแล้ว
TensorFlow.js converter คืออะไร สอน tensorflowjs_converter แปลงโมเดล Pre-trained ใน Python เป็น JavaScript JSON ไว้ใช้ใน TensorFlow.js – tfjs ep.9
เนื่องจากใน Web Browser มีทรัพยากรจำกัด การที่เราจะใช้ TensorFlow.js เทรนโมเดลตั้งแต่ต้น จะทำให้เสียเวลาค่อนข้างมาก ในการใช้งาน TensorFlow.js ส่วนใหญ่ เราจึงจะต้องการเทรนโมเดล ด้วยภาษา Python บน Cloud หรือ เครื่อง Server ขนาดใหญ่ ที่มี GPU ความเร็วสูง เมื่อเรียบร้อยแล้ว แล้วนำโมเดลนั้นมาแปลง Convert เพื่อไป Load ใช้งานบน Web Browser รัน JavaScript อีกทีหนึ่ง
TensorFlow.js คืออะไร สอน TensorFlow.js สร้างโมเดล แบบง่าย 1 Dense Layer เริ่มต้นเทรน Machine Learning เส้นตรง Linear Regression ด้วย SGD – tfjs ep.1
ในการสร้างโมเดล Machine Learning ที่สามารถ Predict ได้อย่างถูกต้อง แม่นยำ อีกเรื่องที่เราควรคำนึงถึงคือ สุดท้ายแล้วจุดหมายปลายทางนั้น โมเดลจะถูกนำไป Deploy ที่ไหน ไม่ว่าจะเป็นบน Web Browser, Server, มือถือ, Edge Device, IoT, etc. ใน ep นี้ เราจะมาเรียนรู้ TensorFlow.js ซึ่งเป็น Machine Learning Framework สำหรับภาษา JavaScript จาก Google ที่สามารถรันได้ทั้งใน Web Browser และ บน Server ผ่าน Node.js
ทำไมต้อง Vectorization เปรียบเทียบความเร็ว คูณเมตริกซ์ Matrix Multiplication (Dot Product) ด้วยอัลกอริทึม Vectorization และวน Loop – Tensor ep.3
จาก ep ที่แล้ว ที่เราเรียนรู้ถึงคุณสมบัติพิเศษ ของ Tensor ที่จะมาช่วยในการคำนวนต่าง ๆ เมื่อเรามองเจาะลึกเข้าไปภายในของ Deep Neural Network เราจะพบว่าในขณะที่เราเทรน หรือขณะใช้งานโมเดลก็ตาม Mathematical Operations การดำเนินการทางคณิตศาสตร์ส่วนใหญ่ที่เกิดขึ้นก็คือ การคูณเมตริกซ์ โดยเฉพาะการคูณเมตริกซ์ (Matrix Multiplication) แบบ Dot Product การคูณเมตริกซ์ที่รวดเร็วแม่นยำ มีผลต่อการทำงานของ Neural Network เป็นอย่างมาก
Colab คืออะไร เริ่มต้นเรียนรู้ เขียนโปรแกรม AI, Machine Learning โดยไม่ต้องลงโปรแกรม สอนวิธีเปิด Jupyter Notebook ที่อยู่ใน GitHub บน Google Colab – Colab ep.1
ก่อนหน้านี้ ถ้าเราต้องการศึกษา การเขียนโปรแกรม AI, Machine Learning เราต้องดาวน์โหลดโปรแกรม มาติดตั้งมากมาย ไม่ว่าจะเป็น Python, Anaconda, TensorFlow, Keras, PyTorch, Fastai, Sklearn, Jupyter Notebook, etc. โดยไม่รู้ว่าต้องลงอะไรบ้าง Platform อะไร เวอร์ชันไหน เริ่มต้นอย่างไร ใช้ยังไง แต่ตอนนี้เราสามารถแก้ปัญหานี้ได้ง่าย ๆ ด้วยการเข้าไปที่หน้าเว็บ Colab
เทนเซอร์ Tensor คืออะไร NumPy Array, Matrix, Vector คืออะไร เรียนรู้วิธีใช้งาน Element-wise, Broadcasting – Tensor ep.1
ในการเรียนรู้ Neural Network เราจะพบเจอโค้ดที่ใช้ List, Vector, NumPy Array ไปจนถึง High-Order Tensor หมายถึง Array ที่มีมากกว่า 2 มิติขึ้นไป เช่น 3 มิติ 4 มิติ หรือ 5 มิติ จนเป็นเรื่องธรรมดา ใน ep นี้เราจะมาเรียนรู้การใช้งาน Tensor ทำความเข้าใจ element-wise, broadcasting operations
ทำไม GPU ถึงจำเป็นต่อ Deep Learning เปรียบเทียบ CPU vs GPU เทรน Deep Neural Network – Hardware ep.2
เราคงเคยได้ยินว่า จำเป็นต้องใช้ GPU ในการเทรน Deep Learning ที่ Deep Learning ทำงานได้ดีในยุคปัจจุบัน ก็เพราะมี Data มหาศาลจากอินเตอร์เน็ต และ มี Hardware คือ GPU ทำให้การวิจัยอัลกอริทึมใหม่ ๆ สร้างโมเดล Deep Neural Network แบบใหม่ ๆ เทคโนโลยีพัฒนาได้อย่างรวดเร็ว แต่มันเป็นเรื่องจริงหรือไม่ GPU มีผลแค่ไหน เทียบกับเราใช้ CPU ธรรมดา เราจะมาทดสอบกัน
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 ที่มีความเร็วสูง กลับว่างงาน เพราะต้องรอข้อมูล