MindSpore ของ Huawei: คู่แข่งรายใหม่สำหรับ TensorFlow และ PyTorch?

สารบัญ:

MindSpore ของ Huawei: คู่แข่งรายใหม่สำหรับ TensorFlow และ PyTorch?
MindSpore ของ Huawei: คู่แข่งรายใหม่สำหรับ TensorFlow และ PyTorch?

วีดีโอ: MindSpore ของ Huawei: คู่แข่งรายใหม่สำหรับ TensorFlow และ PyTorch?

วีดีโอ: MindSpore ของ Huawei: คู่แข่งรายใหม่สำหรับ TensorFlow และ PyTorch?
วีดีโอ: MindSpore от Huawei: новый конкурент для TensorFlow и PyTorch? 2024, พฤศจิกายน
Anonim

Huawei ประกาศว่ามิดเดิลแวร์ MindSpore Deep Learning สไตล์ TensorFlow และ PyTorch เป็นโอเพ่นซอร์สแล้ว ค้นหาคุณสมบัติที่สำคัญที่สุดในบทความนี้

MindSpore โดย Huawei
MindSpore โดย Huawei

Huawei เพิ่งประกาศว่าเฟรมเวิร์ก MindSpore สำหรับการพัฒนาแอปพลิเคชัน AI กำลังกลายเป็นโอเพ่นซอร์สและพร้อมใช้งานบน GiHub และ Gitee MindSpore เป็นเฟรมเวิร์ก Deep Learning อีกรูปแบบหนึ่งสำหรับการฝึกโมเดลโครงข่ายประสาทเทียม คล้ายกับ TensorFlow หรือ PyTorch ที่ออกแบบมาเพื่อใช้งานจาก Edge to Cloud ซึ่งรองรับทั้ง GPU และโปรเซสเซอร์ Huawei Ascend อย่างเห็นได้ชัด

เมื่อเดือนสิงหาคมที่ผ่านมา เมื่อ Huawei ประกาศเปิดตัวโปรเซสเซอร์ Ascend อย่างเป็นทางการ MindSpore ได้รับการแนะนำเป็นครั้งแรก โดยระบุว่า ในเซสชันการฝึกอบรมตาม ResNet-50 ทั่วไป การรวมกันของ Ascend 910 และ MindSpore นั้นเร็วเป็นสองเท่า เมื่อฝึกโมเดล AI เทียบกับการ์ดการเรียนรู้หลักอื่นๆ โดยใช้ TensorFlow เป็นความจริงที่เฟรมเวิร์กจำนวนมากเกิดขึ้นในช่วงไม่กี่ปีที่ผ่านมา และบางที MindSpore อาจเป็นเพียงกลุ่มเดียวที่สามารถแข่งขันกับ TensorFlow (สนับสนุนโดย Google) และ PyTorch (สนับสนุนโดย Facebook จากระยะไกล) ได้).

ระบบสถาปัตยกรรม

เว็บไซต์ MindSpore อธิบายว่าโครงสร้างพื้นฐานประกอบด้วยสามชั้นหลัก ได้แก่ นิพจน์ส่วนหน้า เอ็นจิ้นกราฟิก และรันไทม์แบ็กเอนด์ รูปต่อไปนี้แสดงไดอะแกรมภาพ:

ภาพ
ภาพ

MindSpore ระดับแรกมี Python API สำหรับโปรแกรมเมอร์ เนื่องจากภาษาศาสตร์ภาษาในชุมชนของเราคือ Python โดยพฤตินัย มิฉะนั้น MindSpore ต้องการแข่งขันกับ PyTorch และ TensorFlow ด้วย API นี้ โปรแกรมเมอร์สามารถจัดการโมเดล (การฝึกอบรม การอนุมาน ฯลฯ) และประมวลผลข้อมูลได้ ระดับแรกนี้ยังรวมถึงการสนับสนุนการแสดงโค้ดชั่วคราว (MindSpore IR) ซึ่งจะมีการปรับให้เหมาะสมหลายอย่างซึ่งสามารถทำได้ในแบบขนานและการสร้างความแตกต่างอัตโนมัติ (GHLO)

ด้านล่างนี้คือเลเยอร์ Graph Engine ที่มีฟังก์ชันที่จำเป็นในการสร้างและดำเนินการสร้างความแตกต่างอัตโนมัติของกราฟการดำเนินการ ด้วย MindSpore พวกเขาเลือกใช้โมเดลการสร้างความแตกต่างอัตโนมัตินอกเหนือจาก PyTorch (ซึ่งสร้างกราฟการดำเนินการแบบไดนามิก) หรือ TensorFlow (แม้ว่าตัวเลือกในการสร้างกำหนดการการดำเนินการแบบคงที่ที่มีประสิทธิภาพมากขึ้นจะถูกเลือกตั้งแต่แรก ตอนนี้ก็ยังมีตัวเลือกกราฟการดำเนินการแบบไดนามิกและช่วยให้ กราฟเวอร์ชันคงที่โดยใช้ตัวตกแต่ง @ tf.function ของ API ระดับต่ำ)

ทางเลือกของ MindSpore คือการแปลงซอร์สโค้ดเป็นรูปแบบโค้ดระดับกลาง (MindSpore IR) เพื่อใช้ประโยชน์จากทั้งสองรุ่น (สำหรับข้อมูลเพิ่มเติม โปรดดูส่วน "การแยกอัตโนมัติ" บนเว็บไซต์ MindSpore)

เลเยอร์สุดท้ายประกอบด้วยไลบรารีทั้งหมดและสภาพแวดล้อมรันไทม์ที่จำเป็นต่อการสนับสนุนสถาปัตยกรรมฮาร์ดแวร์ต่างๆ ซึ่งโค้ดจะได้รับการประมวลผล เป็นไปได้มากว่ามันจะเป็นแบ็กเอนด์ที่คล้ายกับเฟรมเวิร์กอื่น ๆ ซึ่งอาจมีคุณสมบัติของ Huawei เช่นไลบรารีเช่น HCCL (Huawei Collective Communication Library) เทียบเท่ากับ NVIDIA NCCL (NVIDIA Collective Communication Library)

การสนับสนุนการสร้างภาพการฝึกอบรม

ตามบทช่วยสอนของ MindSpore แม้ว่าจะติดตั้งและใช้งานไม่ได้ แต่ก็มี MindInsight เพื่อสร้างการแสดงภาพที่ชวนให้นึกถึง TensorBoard หรือ TensorFlow ดูภาพหน้าจอบางส่วนที่แสดงบนเว็บไซต์ของพวกเขา:

ภาพ
ภาพ
ภาพ
ภาพ

ตามคู่มือ ปัจจุบัน MindSpore ใช้กลไกเรียกกลับ (เตือนให้นึกถึงวิธีการทำกับ Keras) เพื่อเขียน (ในล็อกไฟล์) ในกระบวนการฝึกพารามิเตอร์โมเดลและไฮเปอร์พารามิเตอร์ทั้งหมดที่เราต้องการ ตลอดจนกำหนดการคำนวณเมื่อ การรวบรวมโครงข่ายประสาทเทียมเป็นรหัสระดับกลางเสร็จสมบูรณ์

ความเท่าเทียม

ในบทช่วยสอน พวกเขาพูดถึงโหมดการทำให้ขนานกันสองโหมด (DATA_PARALLEL และ AUTO_PARALLEL) และจัดเตรียมโค้ดตัวอย่างที่ฝึก ResNet-50 ด้วยชุดข้อมูล CIFAR สำหรับโปรเซสเซอร์ Ascend 910 (ซึ่งฉันไม่สามารถทดสอบได้) DATA_PARALLEL หมายถึงกลยุทธ์ที่รู้จักกันทั่วไปว่าเป็น data parallelism ซึ่งประกอบด้วยการแบ่งข้อมูลการฝึกออกเป็นหลายชุดย่อย ซึ่งแต่ละชุดทำงานบนแบบจำลองเดียวกันของแบบจำลอง แต่ในหน่วยการประมวลผลที่ต่างกัน การสนับสนุน Graph Engine มีให้สำหรับการขนานโค้ดและโดยเฉพาะอย่างยิ่งสำหรับการขนาน AUTO_PARALLEL

โหมด AUTO_PARALLEL จะปรับการขนานข้อมูลให้เหมาะสมโดยอัตโนมัติโดยการรวมกลยุทธ์ data Parallization (ที่กล่าวถึงข้างต้น) กับกลยุทธ์ model Parallization ซึ่งโมเดลจะถูกแบ่งออกเป็นส่วนต่างๆ และแต่ละส่วนจะถูกดำเนินการพร้อมกันในหน่วยประมวลผลที่ต่างกัน โหมดอัตโนมัตินี้จะเลือกกลยุทธ์การทำคู่ขนานที่ให้ประโยชน์สูงสุด ซึ่งสามารถอ่านได้ในส่วนคู่ขนานอัตโนมัติบนเว็บไซต์ MindSpore (แม้ว่าจะไม่ได้อธิบายวิธีการประมาณการและการตัดสินใจก็ตาม) เราจะต้องรอให้ทีมเทคนิคขยายเอกสารและทำความเข้าใจรายละเอียดเพิ่มเติมเกี่ยวกับกลยุทธ์การขนานอัตโนมัติ แต่ชัดเจนว่ากลยุทธ์การขนานอัตโนมัตินี้มีความสำคัญอย่างยิ่ง และนี่คือจุดที่พวกเขาควรและสามารถแข่งขันกับ TensorFlow หรือ PyTorch เพื่อให้ได้ประสิทธิภาพที่ดีขึ้นอย่างเห็นได้ชัดโดยใช้โปรเซสเซอร์ของ Huawei

แผนงานตามแผนและวิธีการมีส่วนร่วม to

เห็นได้ชัดว่ามีงานต้องทำมากมาย และ ณ จุดนี้พวกเขาได้ปรับปรุงแนวคิดที่พวกเขามีอยู่ในใจสำหรับปีหน้าในแผนงานที่ครอบคลุมที่นำเสนอในหน้านี้ แต่พวกเขาโต้แย้งว่าลำดับความสำคัญจะถูกปรับตามผู้ใช้

ข้อเสนอแนะ. ในขณะนี้เราสามารถหาบรรทัดหลักเหล่านี้ได้:

  1. รองรับโมเดลเพิ่มเติม (รอดำเนินการโมเดลคลาสสิก, GAN, RNN, Transformers, โมเดลการเรียนรู้แบบขยาย, การเขียนโปรแกรมความน่าจะเป็น, AutoML เป็นต้น)
  2. ขยาย API และไลบรารีเพื่อปรับปรุงการใช้งานและประสบการณ์ในการเขียนโปรแกรม (ตัวดำเนินการมากขึ้น ตัวเพิ่มประสิทธิภาพมากขึ้น ฟังก์ชันการสูญเสียที่มากขึ้น ฯลฯ)
  3. การสนับสนุนโปรเซสเซอร์ Huawei Ascend ที่ครอบคลุมและการเพิ่มประสิทธิภาพ (การเพิ่มประสิทธิภาพการรวบรวม การปรับปรุงการใช้ทรัพยากร ฯลฯ)
  4. วิวัฒนาการของซอฟต์แวร์สแต็คและการดำเนินการปรับกราฟให้เหมาะสมที่สุด (ปรับปรุงการแสดง IR ระดับกลาง เพิ่มความสามารถในการเพิ่มประสิทธิภาพเพิ่มเติม ฯลฯ)
  5. รองรับภาษาโปรแกรมเพิ่มเติม (ไม่ใช่แค่ Python)
  6. ปรับปรุงการเรียนรู้แบบกระจายด้วยการเพิ่มประสิทธิภาพของการตั้งเวลาอัตโนมัติ การกระจายข้อมูล ฯลฯ
  7. ปรับปรุงเครื่องมือ MindInsight เพื่อให้โปรแกรมเมอร์ "ดีบัก" และปรับปรุงการปรับแต่งไฮเปอร์พารามิเตอร์ได้ง่ายขึ้นในระหว่างกระบวนการเรียนรู้
  8. ความคืบหน้าในการส่งฟังก์ชันการอนุมานไปยังอุปกรณ์ใน Edge (ความปลอดภัย การรองรับรุ่นที่ไม่ใช่แพลตฟอร์มผ่าน ONNX เป็นต้น)

ในหน้าชุมชน คุณจะเห็นว่า MindSpore มีพันธมิตรนอก Huawei และจีน เช่น University of Edinburgh, Imperial College London, University of Munster (เยอรมนี) หรือ Paris-Saclay University พวกเขากล่าวว่าพวกเขาจะปฏิบัติตามรูปแบบการกำกับดูแลแบบเปิดและเชิญทั้งชุมชนให้มีส่วนร่วมในทั้งรหัสและเอกสาร

บทสรุป

หลังจากการมองแวบแรกอย่างรวดเร็ว ดูเหมือนว่าการออกแบบที่เหมาะสมและการตัดสินใจในการใช้งาน (เช่น การทำงานพร้อมกันและการสร้างความแตกต่างโดยอัตโนมัติ) สามารถเพิ่มพื้นที่สำหรับการปรับปรุงและการปรับให้เหมาะสมเพื่อให้ได้ประสิทธิภาพที่ดีกว่าเฟรมเวิร์กที่ต้องการให้มีประสิทธิภาพเหนือกว่าแต่ก็ยังมีงานอีกมากที่จะจับ PyTorch และ TensorFlow และเหนือสิ่งอื่นใดคือการสร้างชุมชน ไม่ใช่แค่! อย่างไรก็ตาม เราทุกคนรู้อยู่แล้วว่าด้วยการสนับสนุนจากบริษัทใหญ่แห่งหนึ่งในภาคส่วนอย่าง Huawei อะไรก็เกิดขึ้นได้ หรือเมื่อสามปีที่แล้วก็เห็นได้ชัดเมื่อ PyTorch (Facebook) เวอร์ชันแรกออกมาว่าใกล้ถึงขีดสุดแล้ว ของ TensorFlow (Google)?

แนะนำ: