Apache MXNet - Giới thiệu
Chương này nêu bật các tính năng của Apache MXNet và nói về phiên bản mới nhất của khung phần mềm học sâu này.
MXNet là gì?
Apache MXNet là một công cụ khung phần mềm học sâu mã nguồn mở mạnh mẽ giúp các nhà phát triển xây dựng, đào tạo và triển khai các mô hình Học sâu. Trong vài năm qua, từ chăm sóc sức khỏe đến giao thông vận tải đến sản xuất và trên thực tế, trong mọi khía cạnh của cuộc sống hàng ngày của chúng ta, tác động của học sâu đã trở nên phổ biến. Ngày nay, học sâu được các công ty tìm kiếm để giải quyết một số vấn đề khó khăn như Nhận dạng khuôn mặt, phát hiện đối tượng, Nhận dạng ký tự quang học (OCR), Nhận dạng giọng nói và Dịch máy.
Đó là lý do Apache MXNet được hỗ trợ bởi:
Một số công ty lớn như Intel, Baidu, Microsoft, Wolfram Research, v.v.
Các nhà cung cấp đám mây công cộng bao gồm Amazon Web Services (AWS) và Microsoft Azure
Một số viện nghiên cứu lớn như Carnegie Mellon, MIT, Đại học Washington, Đại học Khoa học & Công nghệ Hồng Kông.
Tại sao sử dụng Apache MXNet?
Có rất nhiều nền tảng học sâu khác nhau như Torch7, Caffe, Theano, TensorFlow, Keras, Bộ công cụ nhận thức của Microsoft, v.v. tồn tại và bạn có thể thắc mắc tại sao Apache MXNet? Hãy cùng kiểm tra một số lý do đằng sau nó:
Apache MXNet giải quyết một trong những vấn đề lớn nhất của các nền tảng học sâu hiện có. Vấn đề là để sử dụng các nền tảng học sâu, người ta phải học một hệ thống khác để có một hương vị lập trình khác.
Với sự trợ giúp của Apache MXNet các nhà phát triển có thể khai thác toàn bộ khả năng của GPU cũng như điện toán đám mây.
Apache MXNet có thể tăng tốc bất kỳ tính toán số nào và đặc biệt chú trọng vào việc tăng tốc độ phát triển và triển khai DNN quy mô lớn (mạng nơ ron sâu).
Nó cung cấp cho người dùng khả năng của cả lập trình mệnh lệnh và biểu tượng.
Các tính năng khác nhau
Nếu bạn đang tìm kiếm một thư viện học sâu linh hoạt để nhanh chóng phát triển nghiên cứu học sâu tiên tiến hoặc một nền tảng mạnh mẽ để đẩy khối lượng công việc sản xuất, tìm kiếm của bạn sẽ kết thúc tại Apache MXNet. Đó là vì các tính năng sau của nó:
Đào tạo phân tán
Cho dù đó là đào tạo đa gpu hay đa máy chủ lưu trữ với hiệu quả mở rộng gần như tuyến tính, Apache MXNet cho phép các nhà phát triển tận dụng tối đa phần cứng của họ. MXNet cũng hỗ trợ tích hợp với Horovod, là một khung học sâu phân tán mã nguồn mở được tạo ra tại Uber.
Đối với tích hợp này, sau đây là một số API phân phối phổ biến được xác định trong Horovod:
horovod.broadcast()
horovod.allgather()
horovod.allgather()
Về vấn đề này, MXNet cung cấp cho chúng tôi các khả năng sau:
Device Placement - Với sự trợ giúp của MXNet, chúng ta có thể dễ dàng chỉ định từng cấu trúc dữ liệu (DS).
Automatic Differentiation - Apache MXNet tự động hóa phân biệt tức là tính toán đạo hàm.
Multi-GPU training - MXNet cho phép chúng tôi đạt được hiệu quả mở rộng với số lượng GPU có sẵn.
Optimized Predefined Layers - Chúng tôi có thể mã hóa các lớp của riêng mình trong MXNet cũng như tối ưu hóa các lớp được xác định trước để tăng tốc độ.
Lai ghép
Apache MXNet cung cấp cho người dùng một giao diện người dùng kết hợp. Với sự trợ giúp của API Gluon Python, nó có thể thu hẹp khoảng cách giữa các khả năng bắt buộc và biểu tượng của nó. Nó có thể được thực hiện bằng cách gọi nó là chức năng hybridize.
Tính toán nhanh hơn
Các phép toán tuyến tính như hàng chục hoặc hàng trăm phép nhân ma trận là nút thắt cổ chai tính toán cho các mạng nơron sâu. Để giải quyết nút thắt cổ chai này, MXNet cung cấp:
Tính toán số được tối ưu hóa cho GPU
Tính toán số được tối ưu hóa cho các hệ sinh thái phân tán
Tự động hóa các quy trình công việc chung với sự trợ giúp của NN tiêu chuẩn có thể được diễn đạt ngắn gọn.
Ràng buộc ngôn ngữ
MXNet có khả năng tích hợp sâu vào các ngôn ngữ cấp cao như Python và R. Nó cũng cung cấp hỗ trợ cho các ngôn ngữ lập trình khác như-
Scala
Julia
Clojure
Java
C/C++
Perl
Chúng tôi không cần phải học bất kỳ ngôn ngữ lập trình mới nào thay vào đó MXNet, kết hợp với tính năng lai tạo, cho phép chuyển đổi đặc biệt trơn tru từ Python sang triển khai bằng ngôn ngữ lập trình mà chúng tôi lựa chọn.
Phiên bản mới nhất MXNet 1.6.0
Apache Software Foundation (ASF) đã phát hành phiên bản ổn định 1.6.0 của Apache MXNet vào ngày 21 tháng 2 năm 2020 theo Giấy phép Apache 2.0. Đây là bản phát hành MXNet cuối cùng hỗ trợ Python 2 vì cộng đồng MXNet đã bỏ phiếu không hỗ trợ Python 2 trong các bản phát hành tiếp theo. Hãy để chúng tôi kiểm tra một số tính năng mới mà bản phát hành này mang lại cho người dùng.
Giao diện tương thích NumPy
Do tính linh hoạt và tính tổng quát của nó, NumPy đã được sử dụng rộng rãi bởi các học viên, nhà khoa học và sinh viên Học máy. Nhưng như chúng ta biết rằng, những bộ tăng tốc phần cứng ngày nay như Bộ xử lý đồ họa (GPU) ngày càng trở nên đồng hóa với nhiều bộ công cụ Học máy (ML) khác nhau, người dùng NumPy, để tận dụng tốc độ của GPU, cần phải chuyển sang các khuôn khổ mới với các cú pháp khác nhau.
Với MXNet 1.6.0, Apache MXNet đang hướng tới trải nghiệm lập trình tương thích với NumPy. Giao diện mới cung cấp khả năng sử dụng cũng như tính biểu cảm tương đương cho những người thực hành quen thuộc với cú pháp NumPy. Cùng với đó, MXNet 1.6.0 cũng cho phép hệ thống Numpy hiện có sử dụng các bộ tăng tốc phần cứng như GPU để tăng tốc các phép tính quy mô lớn.
Tích hợp với Apache TVM
Apache TVM, một ngăn xếp trình biên dịch học sâu mã nguồn mở end-to-end dành cho phần cứng-phụ trợ như CPU, GPU và các bộ tăng tốc chuyên dụng, nhằm mục đích lấp đầy khoảng cách giữa khung học sâu tập trung vào năng suất và phần cứng phụ trợ phần cứng định hướng hiệu suất . Với bản phát hành mới nhất MXNet 1.6.0, người dùng có thể tận dụng Apache (đang ấp ủ) TVM để triển khai các nhân toán tử hiệu suất cao bằng ngôn ngữ lập trình Python. Hai ưu điểm chính của tính năng mới này là:
Đơn giản hóa quy trình phát triển dựa trên C ++ trước đây.
Cho phép chia sẻ cùng một triển khai trên nhiều phần cứng phần cứng như CPU, GPU, v.v.
Cải tiến các tính năng hiện có
Ngoài các tính năng được liệt kê ở trên của MXNet 1.6.0, nó cũng cung cấp một số cải tiến so với các tính năng hiện có. Những cải tiến như sau:
Phân nhóm hoạt động khôn ngoan cho GPU
Như chúng ta biết hiệu suất của các hoạt động khôn ngoan là băng thông bộ nhớ và đó là lý do, việc xâu chuỗi các hoạt động như vậy có thể làm giảm hiệu suất tổng thể. Apache MXNet 1.6.0 thực hiện sự kết hợp hoạt động khôn ngoan của các phần tử, thực sự tạo ra các hoạt động được hợp nhất đúng lúc và khi có thể. Sự kết hợp hoạt động khôn ngoan như vậy cũng làm giảm nhu cầu lưu trữ và cải thiện hiệu suất tổng thể.
Đơn giản hóa các biểu thức phổ biến
MXNet 1.6.0 loại bỏ các biểu thức thừa và đơn giản hóa các biểu thức phổ biến. Việc tăng cường như vậy cũng cải thiện việc sử dụng bộ nhớ và tổng thời gian thực thi.
Tối ưu hóa
MXNet 1.6.0 cũng cung cấp các tối ưu hóa khác nhau cho các tính năng và toán tử hiện có, như sau:
Độ chính xác hỗn hợp tự động
API Gluon Fit
MKL-DNN
Hỗ trợ căng thẳng lớn
TensorRT hội nhập
Hỗ trợ gradient bậc cao hơn
Operators
Hồ sơ hiệu suất của nhà điều hành
Nhập / xuất ONNX
Cải tiến đối với API Gluon
Cải tiến đối với API biểu tượng
Hơn 100 bản sửa lỗi