Education

GPUs Programming for AI and ML เพิ่มความเร็ว AI ให้แรง 1000 เท่าด้วย GPU

    โมเดลปัญญาประดิษฐ์ โดยเฉพาะอย่างยิ่ง Artificial Neural Network, Convolutional Neural Network, Recurent Neural Network และ Generative Adversarial Networks ใช้พลังในการประมวลผลอย่างมาก เมื่อประกอบกับข้อมูลในปัจจุบันที่มีจำนวนมหาศาลแล้ว ทำให้ในการ Train โมเดลใช้ระยะเวลานานหลายสัปดาห์ หลายเดือน ซึ่งเป็นอุปสรรคอย่างมากสำหรับคนทำงานด้าน AI เพื่อจัดการกับปัญหานี้ เราได้นำความรู้การเขียนโปรแกรมให้ประมวลผลบน GPU เข้ามาใช้งาน


     ในคอร์สนี้เราสอนเขียนโปรแกรมให้ประมวลผลบน GPU ด้วย PyCUDA
ซึ่งมีข้อดีคือ
               1. เขียนด้วยภาษา Python ซึ่งเป็นภาษาที่คนทำงานด้าน AI ใช้งานกัน
      2.โปรแกรม saxpy (ย่อมาจาก Single-Precision AX + Y) ที่เขียนบน PyCUDA ประมวลผลเร็วกว่า TensorFlow (ที่ประมวลผลด้วย GPU) ขั้นต่ำ 8 เท่า (แหล่งข้อมูล https://github.com/bennylp/saxpy-benchmark)


ทำไมต้อง GPU?

  • GPU คืออะไร

         GPU ย่อมาจาก “graphics processing unit” คนทั่ว ๆ ไปเรียกว่า “การ์ดจอ” หน้าที่หลักของการ์ดจอคือการคำนวณและประมวลผลภาพขึ้นบนหน้าจอ ชึ่งการคำนวณมักจะเป็นการแปลงจากข้อมูล polygon ที่อยู่ในรูปของเซ็ตพิกัด (x, y, z) ให้กลายเป็นสีของแต่ละพิกเซลบนหน้าจอ การคำนวณนี้เป็นการคำนวณง่าย ๆ แต่มีจำนวนการคำนวณมหาศาล เนื่องจากจอภาพหนึ่ง ๆ มีจำนวนพิกเซลจำนวนมาก (หน้าจอที่มีความละเอียด 1920x1080 ก็จะมีทั้งหมด 2,073,600 พิกเซล!!) ยิ่งไปกว่านั้นต้องคำนวณให้เร็วมากพอที่จะรีเฟรชหน้าจอให้ทัน หมายความว่าถ้าหน้าจอที่มี 60 Hz ก็ต้องประมวลผลให้ได้วินาทีละ 60 ภาพ!! การ์ดจอจึงต้องออกแบบมาเพื่อให้คำนวณข้อมูลจำนวนมหาศาลที่คำนวณแบบเดียวกันได้ ด้วยคุณสมบัตินี้ของการ์ดจอ จึงได้ถูกนำมาประยุกต์ใช้ในการคำนวณทั่ว ๆ ไปนอกเหนือจากการประมวลผลภาพขึันหน้าจอเพียงอย่างเดียว ก่อให้เกิดเป็น “GPGPU” (general-purpose computing on graphics processing units) นั่นคือการนำการ์ดจอมาคำนวณโดยทั่ว ๆ ไปนั่นเอง
ไลบรารี่ที่ใช้ในการคำนวณบน GPU จะมีอยู่สองไลบรารี่ คือ CUDA และ openCL ซึ่ง CUDA ถูกพัฒนาโดย Nvidia จึงใช้ได้เฉพาะบนการ์ดจอ Nvidia เท่านั้น ส่วน OpenCL สามารถใช้ได้กับการ์ดจอทุกยี่ห้อ ในคอร์สนี้จะสอนเฉพาะ CUDA ซึ่งจะรันได้เฉพาะบนการ์ดจอ Nvidia เท่านั้น

  • GPU มีอะไรดี

         ปัญหาหลาย ๆ อย่างในทางคณิตศาสตร์ วิทยาศาสตร์ วิศวกรรมศาสตร์ รวมถึงด้านปัญญาประดิษฐ์ ส่วนใหญ่มีการคำนวณรูปแบบเดียวกัน แต่มีปริมาณข้อมูลจำนวนมหาศาล เช่น นำตัวเลขพันล้านคู่มาบวกกัน ในกรณีนี้ถ้าคำนวณโดยใช้เพียงแต่ CPU เพียงอย่างเดียวก็จะใช้ระยะในการคำนวณเป็นเวลานาน เนื่องจาก CPU จะนำตัวเลขมาบวกทีละคู่ แต่ถ้าใช้ GPU ก็จะสามารถบวกตัวเลขทีละจำนวนหลายคู่มาก ๆ พร้อม ๆ กันได้ ทำให้การคำนวณรวดเร็วขึ้น ดังนั้น GPU จึงสามารถนำมาใช้เพิ่มความเร็ว ลดระยะเวลาที่ใช้ในการคำนวณได้ และเป็นที่นิยมนำมาใช้แก้ปัญหาหลาย ๆ อย่าง เช่น แก้สมการเชิงอนุพันธ์ย่อยแบบเชิงตัวเลข (สมการความร้อน สมการคลื่น สมการความเค้นความเครียด สมการของไหล ฯลฯ) จำลองการเคลื่อนที่ของประจุพลาสมา ปัญหาระบบพหุวัตถุ (แบบจำลองแกแลกซีชนกัน แบบจำลอง molecular dynamics) ปัญหา agent-based model (แบบจำลองคนเดินถนน การหนีออกจากอาคาร การจราจร ฯลฯ) แปลงฟูเรียร์จากสัญญาณคลื่นเสียงหาความถี่มูลฐาน แปลงฟูเรียร์จากคลื่นวิทยุค้นหาโมเลกุลน้ำ คอนโวลูชันสำหรับ image processing ทางด้าน AI สามารถนำ GPU มาใช้ feedforward ใน neural network ทีละหมื่นตัวพร้อม ๆ กันได้ นำมาใช้เพิ่มความเร็วในการ backpropagation ได้ ทำให้ระยะเวลาในการ train แต่ละครั้งสั้นลง

รายละเอียด

ครั้งที่ 1
  1. Introduction to parallel programming

  • ความรู้พื้นฐานต่าง ๆ ที่เกี่ยวกับการคำนวณเชิงขนาน ศัพท์เทคนิค นิยามต่าง ๆ

  1. C language

  • ภาษาซีพื้นฐาน (ตรงส่วนนี้จะไม่เน้นมาก อย่างน้อยสามารถตรวจสอบเงื่อนไข if...else…ได้  วนลูป for, while, do while ได้ ใช้ฟังก์ชันเป็น และจองหน่วยความจำเป็น)

ครั้งที่ 2
  1. Introduction to CUDA

  • ความรู้พื้นฐานเกี่ยวกับ CUDA สถาปัตยกรรมของการ์ดจอ การแบ่งงาน หน่วยความจำ ขั้นตอนการเขียนโค้ดให้รันบนการ์ดจอ

  1. CUDA C

  • การเขียนโคัดด้วยภาษา C ให้รันบนการ์ดจอ (ส่วนนี้จะไม่เน้น แต่เนื่องจากการเขียนด้วยภาษา C จะทำให้เห็นโครงสร้างของการรันบนการ์ดจอได้ชัดเจนกว่า และการเขียน kernel function ใน PyCUDA ก็ต้องเขียนด้วยภาษา C จึงจำเป็นที่จะต้องพอที่จะเขียนภาษา C ได้บ้าง)

  • ตัวอย่างโปรแกรม : บวกเวกเตอร์, แมนเดลบรอตเซต, แก้สมการลาปลาซ, อินทิเกรตเชิงตัวเลข

ครั้งที่ 3 - 4
  1. PyCUDA

  • การเขียนโค้ดด้วยภาษา python ให้รันบนการ์ดจอ, การใช้ไลบรารี gpuarray ที่จะทำให้การเขียนโค้ดให้รันบนการ์ดจอง่ายเหมือนการใช้ไลบรารี numpy

  • ไลบรารีต่าง ๆ ที่จำเป็นสำหรับสายงานทางด้านคณิตศาสตร์ วิทยาศาสตร์ เช่น การสุ่มตัวเลข การแก้ระบบสมการเชิงเส้น (Ax = b) การแปลงฟูเรียร์

  • ตัวอย่างในหัวข้อนี้จะมีการนำตัวอย่างที่เขียนโดยโค้ดภาษา C มาแปลงให้กลายเป็นโค้ด python และจะมีตัวอย่างเพิ่มเติมที่ครอบคลุมศาสตร์ทุกแขนง

  • บวกเวกเตอร์, แมนเดลบรอตเซต, แก้สมการลาปลาซ, อินทิเกรตเชิงตัวเลข

  • Linear regression, Multiple regression

  • Monte Carlo algorithm, Genetic algorithm


งานนี้เหมาะกับใคร

  • นักเรียน นักศึกษา บุคคลทั่วไป ที่สนใจหาความรู้เพิ่มเติมที่ยังไม่มีใครสอนในห้องเรียน
  • Developers, Entrepreneurs ผู้ที่ต้องการจะนำ GPU ไปใช้ประโยชน์ในการเพิ่มความเร็วในการคำนวณทางคณิศาสตร์ วิทยาศาสตร์ วิศวกรรมศาสตร์ ฯลฯ


Speakers                                           

Tickets

  • บัตร Regular Ticket ราคา 5,000 บาท
          ชำระเงินได้ที่ เลขบัญชี : 738-2-9555-14  ธนาคารกสิกรไทย
          ชื่อบัญชี : ฆฤณ ชินประสาทศักดิ์

  • พิเศษ -สำหรับผู้สมัครที่ชำระเงินก่อน 23:59 ของวันที่ 14 มีนาคม 2562 จะได้สิทธิ์เรียน AI เพื่อพยากรณ์ราคาหุ้นและอัตราแลกเปลี่ยนฟรี (เวลาเรียน 9.00 - 12.00 ในวันที่ 16 - 17, 30 - 31 มีนาคม 2562)
หมายเหตุ
  • ถ้าโน๊ตบุ๊คของท่านไม่มี GPU ของ Nvidia ที่ต้องใช้ในการทำ workshop ทางเรามีเตรียม GPU ให้ใช้ภายในงานนี้ด้วย
  • สามารถออกใบเสร็จ/ใบกำกับภาษีในนามบริษัทได้ ในแบบลงทะเบียน  ก่อนชำระเงิน และกรอกข้อมูลให้ครบถ้วน


Venue

Date: Saturday-Sunday, 16-17, 30-31 March , 2019 (4 days)
Time: 13:00 p.m. - 17:00 p.m.
Location: Thai Summit Tower, IT Floor
(Google Maps: https://goo.gl/maps/eQ2dQCgaDpL2)
MRT เพชรบุรี ทางออกที่ 1, Airport Link สถานีมักกะสัน
หรือ รถยนต์ส่วนตัวสามารถนำรถมาจอดได้ที่ตึก Thai Summit Tower 


สอบถามรายละเอียดเพิ่มเติมทาง

  • Email: krin.chinprasatsak@gmail.com
  • Call: 086-524-4463 (อัพ)


Sponsors

         

Application Form

ลงทะเบียน GPUs Programming for AI

บัตรราคา 5,000 บาท รับจำนวนจำกัด 60 คน เท่านั้น กดปุ่ม "Apply" เพื่อสมัคร

0272bbe620dc51f5158828aa5df524d170f7c5e3
Organized by
TAUTOLOGY