Huawei đã thông báo rằng phần mềm trung gian MindSpore Deep Learning theo phong cách TensorFlow và PyTorch của họ hiện là mã nguồn mở. Tìm hiểu trong bài viết này các đặc điểm quan trọng nhất của nó.
Huawei vừa thông báo rằng khung MindSpore để phát triển các ứng dụng AI của họ đang trở thành mã nguồn mở và có sẵn trên GiHub và Gitee. MindSpore là một khuôn khổ Deep Learning khác để đào tạo các mô hình mạng thần kinh, tương tự như TensorFlow hoặc PyTorch, được thiết kế để sử dụng từ Edge đến Cloud, hỗ trợ cả GPU và rõ ràng là bộ xử lý Huawei Ascend.
Tháng 8 năm ngoái, khi Huawei công bố chính thức ra mắt bộ vi xử lý Ascend của mình, MindSpore lần đầu tiên được giới thiệu, nói rằng “trong một buổi đào tạo dựa trên ResNet-50 điển hình, sự kết hợp của Ascend 910 và MindSpore nhanh gấp đôi. Khi đào tạo các mô hình AI so với các thẻ học chính khác bằng cách sử dụng TensorFlow Đúng là nhiều khuôn khổ đã xuất hiện trong những năm gần đây và có lẽ MindSpore không hơn gì một nhóm thậm chí có thể cạnh tranh từ xa với TensorFlow (được hỗ trợ bởi Google) và PyTorch (được hỗ trợ bởi Facebook).
Kiến Trúc Hệ Thống
Trang web MindSpore mô tả rằng cơ sở hạ tầng bao gồm ba lớp chính: biểu thức giao diện người dùng, công cụ đồ họa và thời gian chạy phụ trợ. Hình sau cho thấy một sơ đồ trực quan:
Cấp đầu tiên của MindSpore cung cấp API Python cho các lập trình viên. Vì ngôn ngữ học ngôn ngữ trong cộng đồng của chúng tôi trên thực tế là Python, và nếu không thì MindSpore muốn cạnh tranh với PyTorch và TensorFlow. Với API này, lập trình viên có thể thao tác các mô hình (đào tạo, suy luận, v.v.) và xử lý dữ liệu. Cấp độ đầu tiên này cũng bao gồm hỗ trợ cho biểu diễn tạm thời mã (MindSpore IR), trên đó nhiều tối ưu hóa sẽ được dựa trên có thể được thực hiện song song và phân biệt tự động (GHLO).
Dưới đây là lớp Công cụ đồ thị cung cấp chức năng cần thiết để tạo và thực hiện sự phân biệt tự động của biểu đồ thực thi. Với MindSpore, họ đã chọn mô hình phân biệt tự động khác với PyTorch (tạo đồ thị thực thi động) hoặc TensorFlow (mặc dù tùy chọn để tạo lịch thực thi tĩnh hiệu quả hơn ban đầu được chọn, hiện nó cũng cung cấp tùy chọn đồ thị thực thi động và cho phiên bản tĩnh của biểu đồ với việc sử dụng trình trang trí chức năng @ tf. của API cấp thấp của nó).
Lựa chọn của MindSpore là chuyển đổi mã nguồn sang định dạng mã trung gian (MindSpore IR) để tận dụng lợi thế của hai mô hình (để biết thêm thông tin, hãy xem phần “Tách tự động” trên trang web MindSpore).
Lớp cuối cùng bao gồm tất cả các thư viện và môi trường thời gian chạy cần thiết để hỗ trợ các kiến trúc phần cứng khác nhau mà mã sẽ được xử lý. Nhiều khả năng, nó sẽ là một chương trình phụ trợ rất giống với các khuôn khổ khác, có lẽ với các tính năng của Huawei, chẳng hạn như các thư viện như HCCL (Huawei Collective Communication Library), tương đương với NVIDIA NCCL (NVIDIA Collective Communication Library).
Hỗ trợ trực quan hóa đào tạo
Theo hướng dẫn của MindSpore, mặc dù không thể cài đặt và sử dụng chúng, nhưng họ có MindInsight để tạo ra các hình ảnh có phần gợi nhớ đến TensorBoard, TensorFlow. Hãy xem một số ảnh chụp màn hình mà họ hiển thị trên trang web của họ:
Theo hướng dẫn sử dụng, MindSpore hiện đang sử dụng cơ chế gọi lại (gợi nhớ về cách nó được thực hiện với Keras) để viết (trong tệp nhật ký) trong quá trình đào tạo tất cả các tham số mô hình và siêu tham số mà chúng tôi muốn, cũng như lịch trình tính toán khi biên dịch mạng nơ-ron thành mã trung gian đã hoàn tất.
Song song
Trong hướng dẫn của họ, họ nói về hai chế độ song song (DATA_PARALLEL và AUTO_PARALLEL) và cung cấp mã mẫu đào tạo ResNet-50 với tập dữ liệu CIFAR cho bộ xử lý Ascend 910 (mà tôi không thể kiểm tra). DATA_PARALLEL đề cập đến một chiến lược thường được gọi là song song dữ liệu, bao gồm việc chia dữ liệu huấn luyện thành nhiều tập con, mỗi tập hợp chạy trên cùng một bản sao của mô hình, nhưng ở các đơn vị xử lý khác nhau. Hỗ trợ Graph Engine được cung cấp cho song song mã và đặc biệt cho song song AUTO_PARALLEL.
Chế độ AUTO_PARALLEL tự động tối ưu hóa song song bằng cách kết hợp chiến lược song song hóa dữ liệu (đã thảo luận ở trên) với chiến lược song song hóa mô hình, trong đó mô hình được chia thành các phần khác nhau và mỗi phần được thực hiện song song trong các đơn vị xử lý khác nhau. Chế độ tự động này chọn chiến lược song song mang lại lợi ích tốt nhất, bạn có thể đọc về chiến lược này trong phần Tự động song song trên trang web MindSpore (mặc dù chúng không mô tả cách thực hiện ước tính và quyết định). Chúng tôi sẽ phải đợi để dành thời gian cho nhóm kỹ thuật mở rộng tài liệu và hiểu thêm chi tiết về chiến lược tự động song song hóa. Nhưng rõ ràng là chiến lược tự động song song hóa này là rất quan trọng và đây là nơi họ nên và có thể cạnh tranh với TensorFlow hoặc PyTorch, để có được hiệu suất tốt hơn đáng kể khi sử dụng bộ vi xử lý Huawei.
Lộ trình dự kiến và cách đóng góp
Rõ ràng là còn rất nhiều việc phải làm và tại thời điểm này, họ đã sắp xếp hợp lý các ý tưởng mà họ có trong đầu năm tới trong lộ trình mở rộng được trình bày trên trang này, nhưng họ cho rằng các ưu tiên sẽ được điều chỉnh tùy theo người dùng.
Nhận xét. Hiện tại, chúng tôi có thể tìm thấy những dòng chính sau:
- Hỗ trợ nhiều mô hình hơn (mô hình cổ điển đang chờ xử lý, GAN, RNN, Máy biến áp, mô hình học khuếch đại, lập trình xác suất, AutoML, v.v.).
- Mở rộng các API và thư viện để cải thiện khả năng sử dụng và trải nghiệm lập trình (nhiều toán tử hơn, nhiều trình tối ưu hóa hơn, nhiều hàm mất mát hơn, v.v.)
- Hỗ trợ toàn diện bộ xử lý Huawei Ascend và tối ưu hóa hiệu suất (tối ưu hóa biên dịch, cải thiện sử dụng tài nguyên, v.v.)
- Sự phát triển của ngăn xếp phần mềm và thực hiện tối ưu hóa đồ thị tính toán (cải thiện biểu diễn IR trung gian, thêm khả năng tối ưu hóa bổ sung, v.v.).
- Hỗ trợ nhiều ngôn ngữ lập trình hơn (không chỉ Python).
- Cải thiện học tập phân tán với việc tối ưu hóa lập lịch tự động, phân phối dữ liệu, v.v.
- Cải thiện công cụ MindInsight để giúp lập trình viên dễ dàng "gỡ lỗi" và cải thiện khả năng điều chỉnh siêu tham số trong quá trình học.
- Tiến bộ trong việc cung cấp chức năng suy luận cho các thiết bị trong Edge (bảo mật, hỗ trợ các mô hình không phải nền tảng qua ONNX, v.v.)
Trên trang cộng đồng, bạn có thể thấy MindSpore có các đối tác bên ngoài Huawei và Trung Quốc, chẳng hạn như Đại học Edinburgh, Đại học Hoàng gia London, Đại học Munster (Đức) hoặc Đại học Paris-Saclay. Họ nói rằng họ sẽ tuân theo một mô hình quản trị mở và mời toàn bộ cộng đồng đóng góp cho cả mã và tài liệu.
Sự kết luận
Sau cái nhìn đầu tiên, có vẻ như các quyết định thiết kế và triển khai phù hợp (như đồng thời và phân biệt tự động) có thể tạo thêm chỗ cho các cải tiến và tối ưu hóa nhằm đạt được hiệu suất tốt hơn so với các khuôn khổ mà họ muốn hoạt động tốt hơn. Nhưng vẫn còn rất nhiều việc ở phía trước để bắt kịp PyTorch và TensorFlow, và trên hết là xây dựng một cộng đồng, không chỉ! Tuy nhiên, tất cả chúng ta đều biết rằng với sự hậu thuẫn của một công ty lớn trong lĩnh vực này như Huawei, mọi thứ đều có thể xảy ra, hoặc rõ ràng là cách đây 3 năm khi phiên bản đầu tiên của PyTorch (Facebook) ra mắt rằng nó có thể gần chạm đến gót chân của TensorFlow (Google)?