Apache MXNet - บทนำ
บทนี้จะเน้นคุณสมบัติของ Apache MXNet และพูดถึงเวอร์ชันล่าสุดของเฟรมเวิร์กซอฟต์แวร์การเรียนรู้เชิงลึกนี้
MXNet คืออะไร?
Apache MXNet เป็นเครื่องมือเฟรมเวิร์กซอฟต์แวร์การเรียนรู้เชิงลึกแบบโอเพนซอร์สที่มีประสิทธิภาพซึ่งช่วยให้นักพัฒนาสร้างฝึกอบรมและปรับใช้โมเดล Deep Learning ไม่กี่ปีที่ผ่านมาตั้งแต่การดูแลสุขภาพไปจนถึงการขนส่งไปจนถึงการผลิตและในความเป็นจริงในทุกแง่มุมของชีวิตประจำวันของเราผลกระทบของการเรียนรู้เชิงลึกได้แพร่หลายไปทั่ว ปัจจุบัน บริษัท ต่างๆต้องการการเรียนรู้เชิงลึกเพื่อแก้ปัญหาที่ยากลำบากเช่นการจดจำใบหน้าการตรวจจับวัตถุการรู้จำอักขระด้วยแสง (OCR) การรู้จำเสียงและการแปลด้วยเครื่อง
นั่นคือเหตุผลที่ Apache MXNet รองรับโดย:
บริษัท ใหญ่ ๆ บางแห่งเช่น Intel, Baidu, Microsoft, Wolfram Research เป็นต้น
ผู้ให้บริการระบบคลาวด์สาธารณะรวมถึง Amazon Web Services (AWS) และ Microsoft Azure
สถาบันวิจัยขนาดใหญ่บางแห่งเช่น Carnegie Mellon, MIT, University of Washington และ HongKong University of Science & Technology
ทำไมต้อง Apache MXNet
มีแพลตฟอร์มการเรียนรู้เชิงลึกมากมายเช่น Torch7, Caffe, Theano, TensorFlow, Keras, Microsoft Cognitive Toolkit เป็นต้นแล้วคุณอาจสงสัยว่าทำไม Apache MXNet? ลองดูสาเหตุบางประการที่อยู่เบื้องหลัง:
Apache MXNet แก้ปัญหาที่ใหญ่ที่สุดอย่างหนึ่งของแพลตฟอร์มการเรียนรู้เชิงลึกที่มีอยู่ ปัญหาคือในการใช้แพลตฟอร์มการเรียนรู้เชิงลึกเราต้องเรียนรู้ระบบอื่นสำหรับรสชาติการเขียนโปรแกรมที่แตกต่างกัน
ด้วยความช่วยเหลือของนักพัฒนา Apache MXNet สามารถใช้ประโยชน์จากความสามารถทั้งหมดของ GPU รวมทั้งการประมวลผลแบบคลาวด์
Apache MXNet สามารถเร่งการคำนวณตัวเลขและให้ความสำคัญเป็นพิเศษในการเร่งการพัฒนาและการปรับใช้ DNN ขนาดใหญ่ (deep neural networks)
ช่วยให้ผู้ใช้มีความสามารถในการเขียนโปรแกรมทั้งแบบจำเป็นและเชิงสัญลักษณ์
คุณสมบัติต่างๆ
หากคุณกำลังมองหาไลบรารีการเรียนรู้เชิงลึกที่ยืดหยุ่นได้อย่างรวดเร็วเพื่อพัฒนางานวิจัยเชิงลึกที่ล้ำสมัยอย่างรวดเร็วหรือแพลตฟอร์มที่มีประสิทธิภาพเพื่อผลักภาระงานการผลิตการค้นหาของคุณจะสิ้นสุดที่ Apache MXNet เป็นเพราะคุณสมบัติดังต่อไปนี้:
การฝึกอบรมแบบกระจาย
ไม่ว่าจะเป็นการฝึกอบรมแบบ multi-gpu หรือ multi-host ที่มีประสิทธิภาพในการปรับขนาดใกล้เชิงเส้น Apache MXNet ช่วยให้นักพัฒนาใช้ประโยชน์สูงสุดจากฮาร์ดแวร์ของตน MXNet ยังรองรับการทำงานร่วมกับ Horovod ซึ่งเป็นโอเพ่นซอร์สที่เผยแพร่กรอบการเรียนรู้เชิงลึกที่สร้างขึ้นที่ Uber
สำหรับการผสานรวมนี้ต่อไปนี้เป็น API แบบกระจายทั่วไปที่กำหนดไว้ใน Horovod:
horovod.broadcast()
horovod.allgather()
horovod.allgather()
ในเรื่องนี้ MXNet มีความสามารถดังต่อไปนี้:
Device Placement - ด้วยความช่วยเหลือของ MXNet เราสามารถระบุโครงสร้างข้อมูล (DS) แต่ละรายการได้อย่างง่ายดาย
Automatic Differentiation - Apache MXNet ทำการคำนวณความแตกต่างโดยอัตโนมัติเช่นการคำนวณอนุพันธ์
Multi-GPU training - MXNet ช่วยให้เราบรรลุประสิทธิภาพในการปรับขนาดด้วย GPU ที่มีอยู่จำนวนมาก
Optimized Predefined Layers - เราสามารถโค้ดเลเยอร์ของเราเองใน MXNet รวมทั้งปรับแต่งเลเยอร์ที่กำหนดไว้ล่วงหน้าเพื่อความเร็ว
การผสมพันธ์
Apache MXNet มอบ front-end แบบไฮบริดให้กับผู้ใช้ ด้วยความช่วยเหลือของ Gluon Python API มันสามารถเชื่อมช่องว่างระหว่างความสามารถที่จำเป็นและเชิงสัญลักษณ์ สามารถทำได้โดยเรียกว่าฟังก์ชันไฮบริดไลซ์
การคำนวณที่เร็วขึ้น
การดำเนินการเชิงเส้นเช่นการคูณเมทริกซ์หลายสิบหรือหลายร้อยเป็นคอขวดของการคำนวณสำหรับอวนประสาทแบบลึก เพื่อแก้ปัญหาคอขวด MXNet นี้ให้ -
เพิ่มประสิทธิภาพการคำนวณเชิงตัวเลขสำหรับ GPU
การคำนวณเชิงตัวเลขที่ปรับให้เหมาะสมสำหรับระบบนิเวศแบบกระจาย
การทำงานอัตโนมัติของเวิร์กโฟลว์ทั่วไปด้วยความช่วยเหลือซึ่ง NN มาตรฐานสามารถแสดงได้สั้น ๆ
การผูกภาษา
MXNet มีการรวมเข้ากับภาษาระดับสูงเช่น Python และ R อย่างลึกซึ้งนอกจากนี้ยังให้การสนับสนุนสำหรับภาษาโปรแกรมอื่น ๆ เช่น -
Scala
Julia
Clojure
Java
C/C++
Perl
เราไม่จำเป็นต้องเรียนรู้ภาษาการเขียนโปรแกรมใหม่ใด ๆ แทน MXNet เมื่อรวมกับคุณสมบัติไฮบริดไลเซชันช่วยให้สามารถเปลี่ยนจาก Python ไปสู่การปรับใช้ในภาษาโปรแกรมที่เราเลือกได้อย่างราบรื่น
เวอร์ชั่นล่าสุด MXNet 1.6.0
Apache Software Foundation (ASF) ได้เปิดตัว Apache MXNet เวอร์ชันเสถียร 1.6.0 ในวันที่ 21 กุมภาพันธ์ 2020 ภายใต้ Apache License 2.0 นี่เป็น MXNet รุ่นสุดท้ายที่รองรับ Python 2 เนื่องจากชุมชน MXNet โหวตให้ไม่สนับสนุน Python 2 อีกต่อไปในรุ่นต่อไป ให้เราตรวจสอบคุณสมบัติใหม่บางอย่างที่รุ่นนี้นำเสนอสำหรับผู้ใช้
อินเตอร์เฟซที่เข้ากันได้กับ NumPy
เนื่องจากความยืดหยุ่นและลักษณะทั่วไป NumPy จึงถูกใช้อย่างกว้างขวางโดยผู้ปฏิบัติงาน Machine Learning นักวิทยาศาสตร์และนักเรียน แต่อย่างที่เราทราบกันดีว่าตัวเร่งฮาร์ดแวร์ในปัจจุบันเช่นหน่วยประมวลผลกราฟิก (GPU) ได้ถูกหลอมรวมเข้ากับชุดเครื่องมือ Machine Learning (ML) มากขึ้นผู้ใช้ NumPy เพื่อใช้ประโยชน์จากความเร็วของ GPU จำเป็นต้องเปลี่ยนไปใช้เฟรมเวิร์กใหม่ ด้วยไวยากรณ์ที่แตกต่างกัน
ด้วย MXNet 1.6.0 Apache MXNet กำลังก้าวไปสู่ประสบการณ์การเขียนโปรแกรมที่เข้ากันได้กับ NumPy อินเทอร์เฟซใหม่ให้การใช้งานที่เทียบเท่าและการแสดงออกสำหรับผู้ปฏิบัติงานที่คุ้นเคยกับไวยากรณ์ NumPy นอกจากนี้ MXNet 1.6.0 ยังช่วยให้ระบบ Numpy ที่มีอยู่สามารถใช้ตัวเร่งฮาร์ดแวร์เช่น GPU เพื่อเร่งความเร็วในการคำนวณขนาดใหญ่
การผสานรวมกับ Apache TVM
Apache TVM ซึ่งเป็นสแต็กคอมไพเลอร์การเรียนรู้เชิงลึกแบบ end-to-end แบบโอเพนซอร์สสำหรับฮาร์ดแวร์แบ็กเอนด์เช่นซีพียู GPU และตัวเร่งความเร็วพิเศษมีจุดมุ่งหมายเพื่อเติมเต็มช่องว่างระหว่างเฟรมเวิร์กการเรียนรู้เชิงลึกที่เน้นการผลิตและแบ็กเอนด์ฮาร์ดแวร์ที่เน้นประสิทธิภาพ . ด้วย MXNet 1.6.0 รุ่นล่าสุดผู้ใช้สามารถใช้ประโยชน์จาก Apache (การบ่มเพาะ) TVM เพื่อใช้เคอร์เนลตัวดำเนินการประสิทธิภาพสูงในภาษาโปรแกรม Python ข้อดีหลักสองประการของคุณลักษณะใหม่นี้มีดังต่อไปนี้ -
ลดความซับซ้อนของกระบวนการพัฒนาที่ใช้ C ++ ในอดีต
เปิดใช้งานการแชร์การใช้งานเดียวกันในแบ็กเอนด์ฮาร์ดแวร์หลายตัวเช่นซีพียู GPU เป็นต้น
การปรับปรุงคุณสมบัติที่มีอยู่
นอกเหนือจากคุณสมบัติที่ระบุไว้ข้างต้นของ MXNet 1.6.0 แล้วยังมีการปรับปรุงบางอย่างเหนือคุณสมบัติที่มีอยู่ การปรับปรุงมีดังนี้ -
การจัดกลุ่มการทำงานที่ชาญฉลาดขององค์ประกอบสำหรับ GPU
ดังที่เราทราบดีว่าประสิทธิภาพของการดำเนินการตามองค์ประกอบคือแบนด์วิธหน่วยความจำและนั่นคือเหตุผลที่การผูกมัดการดำเนินการดังกล่าวอาจลดประสิทธิภาพโดยรวม Apache MXNet 1.6.0 ทำฟิวชั่นการดำเนินการที่ชาญฉลาดขององค์ประกอบซึ่งจะสร้างการดำเนินการที่หลอมรวมในเวลาที่เป็นไปได้จริงและเมื่อเป็นไปได้ ฟิวชั่นการทำงานที่ชาญฉลาดขององค์ประกอบดังกล่าวยังช่วยลดความต้องการพื้นที่จัดเก็บและปรับปรุงประสิทธิภาพโดยรวม
การลดความซับซ้อนของนิพจน์ทั่วไป
MXNet 1.6.0 กำจัดนิพจน์ซ้ำซ้อนและลดความซับซ้อนของนิพจน์ทั่วไป การปรับปรุงดังกล่าวยังช่วยปรับปรุงการใช้หน่วยความจำและเวลาดำเนินการทั้งหมด
การเพิ่มประสิทธิภาพ
MXNet 1.6.0 ยังมีการเพิ่มประสิทธิภาพต่างๆให้กับคุณสมบัติและตัวดำเนินการที่มีอยู่ซึ่งมีดังต่อไปนี้:
ความแม่นยำผสมอัตโนมัติ
Gluon Fit API
MKL-DNN
รองรับเทนเซอร์ขนาดใหญ่
TensorRT บูรณาการ
รองรับการไล่ระดับสีลำดับที่สูงขึ้น
Operators
โปรไฟล์ประสิทธิภาพของผู้ปฏิบัติงาน
นำเข้า / ส่งออก ONNX
การปรับปรุง Gluon API
การปรับปรุง Symbol API
แก้ไขข้อบกพร่องมากกว่า 100 รายการ