Logo Zephyrnet

Ảo hóa FPGA để học sâu: Đạt được hiệu suất gấp 3 lần trên đám mây

Ngày:

Đây là bài đăng của Song Yao Xilinx Giám đốc cấp cao về Kinh doanh AI

Điện toán đám mây đã trở thành mô hình điện toán mới. Đối với điện toán đám mây, ảo hóa là cần thiết để tạo ra sự cô lập giữa người dùng, tính linh hoạt và khả năng mở rộng cao, bảo mật cao và sử dụng tối đa tài nguyên phần cứng.

Kể từ năm 2017, vì những ưu điểm của khả năng lập trình, độ trễ thấp và hiệu quả năng lượng cao, FPGA đã được áp dụng rộng rãi vào điện toán đám mây. Hiện tại, Amazon Web Service, Aliyun (Alibaba Cloud), Microsoft Azure, Huawei Cloud, v.v. đều đã cung cấp các phiên bản Xilinx FPGA trên đám mây của họ. Tuy nhiên, các phiên bản FPGA trên đám mây vẫn là các phiên bản vật lý nhằm mục đích cho một nhiệm vụ đơn lẻ và kịch bản khối lượng công việc tĩnh, có nghĩa là nếu có nhiều người dùng, họ chỉ có thể chia sẻ một phiên bản FPGA theo cách ghép kênh phân chia thời gian (TDM). Ngày càng có nhiều nhu cầu về FPGA ảo hóa.

Nhóm nghiên cứu của Giáo sư Yu Wang, Đại học Thanh Hoa, đã làm việc về ảo hóa FPGA trong nhiều năm và gần đây đã đề xuất một khuôn khổ cho phép ảo hóa FPGA cấp nút cho các ứng dụng tăng tốc học sâu. Tính năng cô lập hiệu suất cho nhiều người dùng được kích hoạt thông qua mô-đun điều phối lệnh hai cấp (IDM) và nhóm tài nguyên phần cứng dựa trên đa lõi. Chi phí biên dịch lại trực tuyến được giảm xuống còn khoảng 1ms bằng cách thiết kế gói khung hướng dẫn dựa trên lát gạch và biên dịch tĩnh-động hai giai đoạn được áp dụng. Thiết kế cơ sở của thiết kế đường cơ sở của máy gia tốc DNN dựa trên Angel-Eye, một gia tốc DNN trên FPGA do nhóm của Giáo sư Wang công bố vào năm 2017.

Bài báo vừa được trình bày ở 28th FCCM, một hội nghị học thuật hàng đầu trong lĩnh vực máy tính có thể lập trình được. Bản demo cũng được cung cấp cho bất kỳ ai muốn dùng thử:

https://github.com/annoysss123/FPGA-Virt-Exp-on-Aliyun-f3

Giới thiệu chung

Như trong Hình 1 (a), một phiên bản FPGA được cung cấp trên đám mây thường là phiên bản có nhiều tài nguyên như Xilinx VU9P, có thể hỗ trợ một số lượng lớn người dùng. Đối với đám mây công cộng, có hai phương pháp cách ly điển hình giữa người dùng: tài nguyên vật lý và cách ly hiệu suất. Cách ly tài nguyên vật lý phân bổ các tài nguyên phần cứng khác nhau cho những người dùng khác nhau trong khi cách ly hiệu suất có nghĩa là hiệu suất được cung cấp cho mỗi người dùng không bị ảnh hưởng bởi các tác vụ được thực thi bởi nhiều người dùng khác. Đối với đám mây riêng, ảo hóa nhằm mục đích tối đa hóa hiệu suất tổng thể của hệ thống.

Trong nghiên cứu này, hai thiết kế cơ sở được sử dụng để so sánh hai cấu hình khác nhau: thiết kế lõi lớn đơn tĩnh hỗ trợ nhiều người dùng sử dụng ghép kênh phân chia theo thời gian (TDM) và thiết kế đa lõi tĩnh với 16 lõi nhỏ hỗ trợ từng người dùng một lõi mỗi. Thiết kế ảo hóa cũng có 16 lõi nhỏ nhưng sử dụng ghép kênh phân chia không gian (SDM) để hỗ trợ nhiều tác vụ một cách linh hoạt.

 Hình 1 Phương pháp ảo hóa cho bộ tăng tốc DNN dựa trên ISA trên FPGA: (a) Kiến trúc phần cứng cho đám mây công cộng; (b) Thiết kế trình biên dịch hai giai đoạn cho đám mây riêng.Hình 1 Phương pháp ảo hóa cho bộ tăng tốc DNN dựa trên ISA trên FPGA: (a) Kiến trúc phần cứng cho đám mây công cộng; (b) Thiết kế trình biên dịch hai giai đoạn cho đám mây riêng.

Như trong Hình 1 (b), quy trình biên dịch hai giai đoạn được đề xuất để giảm chi phí biên dịch lại trực tuyến. Ý tưởng cơ bản là xếp bản đồ tính năng đầu ra thành các khối và có một gói khung hướng dẫn (IFP) cho một loạt các hướng dẫn cho mỗi ô. Trong quá trình triển khai ngoại tuyến, IFP được tạo dựa trên mô hình DNN và cấu hình phần cứng của các đơn vị cơ bản có thể chia sẻ (lõi nhỏ). Trong giai đoạn triển khai trực tuyến, chúng tôi chỉ cần phân bổ lại các IFP được tạo trước cho mỗi lõi dựa trên tài nguyên phần cứng được phân bổ lại cho người dùng mới. Một trình mô phỏng độ trễ đơn giản cũng được đề xuất để chúng tôi có thể dự đoán độ trễ của từng IFP và đạt được sự cân bằng khối lượng công việc giữa tất cả các lõi được phân bổ.

Hình 2. Kiến trúc phần cứng của bộ tăng tốc FPGA DNN ảo hóa được đề xuấtHình 2. Kiến trúc phần cứng của bộ tăng tốc FPGA DNN ảo hóa được đề xuất

Thiết kế phần cứng và trình biên dịch

Để thực hiện ảo hóa, như thể hiện trong Hình 2, kiến ​​trúc phần cứng của bộ tăng tốc DNN khác với bộ tăng tốc DNN truyền thống. Trước hết, như trong Hình 2 (a) trình tăng tốc này đã sử dụng Nhóm tài nguyên phần cứng (HRP) với nhiều lõi nhỏ, được phân bổ riêng cho những người dùng khác nhau. Bên cạnh đó, không giống như Mô-đun phân phối lệnh (IDM) ban đầu, chỉ được sử dụng để thực hiện phân phối lệnh và quản lý phụ thuộc trong một lõi duy nhất, IDM hai cấp được thiết kế để đạt được sự chia sẻ và đồng bộ hóa đa lõi, như thể hiện trong Hình 2 ( b).

IDM cấp đầu tiên có 4 mô-đun, bao gồm Bản ghi hướng dẫn, Bộ giải mã lệnh, Bộ điều khiển chuyển mạch nội dung và Đồng bộ hóa đa lõi. Bộ điều khiển. Hướng dẫn Mem. tìm nạp các hướng dẫn từ DDR và ​​lưu trữ chúng cho đến khi cấu hình lại tiếp theo. Bộ giải mã lệnh giải mã chúng và gửi các lệnh đến IDM cấp hai của lõi tương ứng theo chỉ số lõi của mỗi lệnh. Bộ điều khiển Content-Switch ghi lại chỉ mục của lớp DNN đã được thực thi, để các lõi khác có thể tiếp tục tính toán dựa trên kết quả trung gian. Đồng bộ đa lõi. Bộ điều khiển quản lý đồng bộ hóa đa lõi theo lớp khôn ngoan.

IDM cấp thứ hai quản lý tính toán bên trong mỗi lõi. Mô-đun chuyển đổi ngữ cảnh có thể khởi động lại tính toán dựa trên thông tin ngữ cảnh được IDM cấp đầu tiên ghi lại trong giai đoạn cấu hình lại trực tuyến. Bộ điều khiển đồng bộ hóa hệ thống tạo tín hiệu đồng bộ hóa cục bộ khi quá trình tính toán lớp DNN hiện tại kết thúc và sau đó đợi tín hiệu đồng bộ hóa toàn cục hợp lệ cho lớp tiếp theo bắt đầu.

Hình 3. Luồng biên dịch cho bộ tăng tốc FPGA DNN ảo hóa, bao gồm biên dịch tĩnh (trái) và biên dịch động (phải).Hình 3. Luồng biên dịch cho bộ tăng tốc FPGA DNN ảo hóa, bao gồm biên dịch tĩnh (trái) và biên dịch động (phải).

Xếp chồng là một ý tưởng quan trọng trong việc thiết kế máy gia tốc DNN để đạt được độ song song lớn và tái sử dụng dữ liệu bằng cách phân vùng bản đồ đối tượng thành các ô. Chúng tôi có thể xếp gạch giữa các kích thước khác nhau, chẳng hạn như chiều cao và chiều rộng của bản đồ đối tượng địa lý. Tuy nhiên, vì trình biên dịch tạo ra các lệnh Chuyển đổi dọc theo kích thước chiều cao, chiều rộng bản đồ đối tượng và kích thước kênh đầu ra được chọn làm thứ nguyên xếp lớp để tạo IFP.

Phần bên trái của Hình 3 cho thấy cách lấy kết quả độ trễ cho từng IFP bằng cách sử dụng các kích thước lát gạch khác nhau. Sau khi lát, các hướng dẫn trong mỗi ô được tích hợp vào IFP và sau đó trình mô phỏng độ trễ cấp chu kỳ dự đoán độ trễ của mỗi IFP (T_1 đến T_N hoặc T_M). Trong giai đoạn biên dịch động, trình biên dịch động tìm nạp các dự đoán độ trễ và tìm chiến lược phân bổ tối ưu cho chia sẻ đa lõi để giảm thiểu tổng độ trễ của một lớp DNN.

Kết quả thực nghiệm

Để đánh giá hiệu suất của thiết kế ảo hóa này, nhóm nghiên cứu đã sử dụng Xilinx Alveo U200, Xilinx VU9P FPGA trong Aliyun (Alibaba Cloud) và GPU nVidia Tesla V100 để chạy 4 mô hình DNN nổi tiếng để so sánh, bao gồm Inception v3, VGG16, MobileNet và ResNet50 Xilinx SDAccel 2018.3 được sử dụng để tổng hợp phần cứng và triển khai phần mềm. Kết quả sử dụng tài nguyên phần cứng được thể hiện trong Bảng 1. Đối với thiết kế đa lõi ảo hóa, tài nguyên bộ nhớ và logic nhiều hơn 1% so với thiết kế đa lõi tĩnh, vì IDM hai cấp tốn nhiều tài nguyên hơn một chút. Thiết kế đa lõi tiêu thụ tài nguyên gần như gấp đôi so với thiết kế lõi lớn đơn vì rất nhiều mô-đun như trình chuyển dữ liệu sẽ được sao chép cho từng lõi nhỏ trong thiết kế đa lõi.

bảng1.png

Thứ nhất, chi phí chuyển đổi ngữ cảnh với số lượng lõi được phân bổ lại khác nhau được đánh giá. Như thể hiện trong Bảng 2. Quá trình biên dịch tĩnh mất 14.7-46.8 giây để tạo IFP trong quá trình triển khai ngoại tuyến, trong khi biên dịch động chỉ tốn 0.4-1.5 mili giây. Tổng chi phí cấu hình lại trực tuyến được giới hạn trong 0.45-1.70ms tính đến thời gian truyền tệp hướng dẫn. So với thiết kế không ảo hóa mất hàng chục giây để biên dịch lại toàn bộ mô hình DNN, chi phí cấu hình lại trực tuyến của thiết kế ảo hóa là không đáng kể.

bảng2.png

Một khuôn khổ ảo hóa tốt phải đạt được hiệu suất cô lập tốt, có nghĩa là hiệu suất của một người dùng sẽ không bị ảnh hưởng bởi các tác vụ khác. Thử nghiệm thứ hai giả định rằng có thể có 4 người dùng, cung cấp cho một người dùng tài nguyên cố định x (100%, 75%, 50% và 25% tổng tài nguyên), điều chỉnh những người dùng còn lại để chiếm (1 - x) tài nguyên khác và cuối cùng đạt được hiệu suất tối đa và tối thiểu mà người dùng có thể nhận được. Như trong Hình 4, khi người dùng độc quyền tất cả các tài nguyên, sẽ không có sai lệch về hiệu suất. Khi tài nguyên do một người dùng chiếm giữ là 75%, 50% và 25% tổng tài nguyên, giải pháp ảo hóa GPU có độ lệch hiệu suất 7.1-13.1%, 5.5-10.9% và 6.5-8.1%, trong khi thiết kế ảo hóa FPGA giới hạn chúng trong vòng 1%. Giải pháp ảo hóa FPGA đạt được khả năng cách ly tốt hơn nhiều so với GPU trong khi vẫn đáp ứng tất cả các yêu cầu về cách ly.

Hình 4. Hiệu suất cô lập: Độ lệch hiệu suất trong trường hợp lý tưởng cho một người dùng với các tài nguyên phần cứng khác nhau khi có 4 người dùng.Hình 4. Hiệu suất cô lập: Độ lệch hiệu suất trong trường hợp lý tưởng cho một người dùng với các tài nguyên phần cứng khác nhau khi có 4 người dùng.

Một khuôn khổ ảo hóa tốt sẽ khiến bạn đạt được hiệu suất tương tự tuyến tính với các tài nguyên được phân bổ cho bạn. Hình 5 cho thấy kết quả hoạt động với các mô hình DNN khác nhau và các chiến lược lát gạch khác nhau. Đường màu đỏ thể hiện hiệu suất với một lõi lớn duy nhất và đường màu xanh lam đậm thể hiện thiết kế ảo hóa với sự cân bằng khối lượng công việc.

Đối với Inception v3 và VGG16, kết quả giảm hiệu suất của thiết kế ảo hóa chỉ là 0.95% và 3.93%; nhưng đối với MobileNet, mức giảm hiệu suất là 31.64% vì mô hình DNN nhỏ gọn này đòi hỏi nhiều băng thông bộ nhớ hơn và thiết kế đa lõi làm tăng thêm nhu cầu về băng thông.

Chúng ta cũng có thể thấy rằng đối với VGG16, hiệu suất gần như tuyến tính đối với song song vì nó là một nhiệm vụ giới hạn tính toán. Nhưng đối với Inception v3 và MobileNet, ngay cả hiệu suất của một thiết kế lõi lớn đơn lẻ cũng giảm đi rất nhiều so với độ tuyến tính lý tưởng với một số lượng lớn song song vì tất cả chúng đều bị giới hạn bộ nhớ.

Hình 5. Thông lượng một tác vụ trong các tình huống khác nhau với độ song song khác nhau.Hình 5. Thông lượng một tác vụ trong các tình huống khác nhau với độ song song khác nhau.

Đối với tình huống sử dụng nhiều lần và nhiều tác vụ, hiệu suất được đo bằng tổng thông lượng của chip FPGA. Như trong Hình 6, bốn cột từ xanh lam nhạt đến xanh lam đậm thể hiện lưu lượng với các lõi ảo hóa, các lõi ảo hóa được tối ưu hóa cho một tác vụ duy nhất trên mỗi lõi, thiết kế đa lõi tĩnh và thiết kế lõi đơn lớn. Tổng cộng có 16 lõi được triển khai trên FPGA để có thể hỗ trợ đồng thời tối đa 16 tác vụ.

Khi chỉ có một số tác vụ như 1, 2 hoặc 4 tác vụ, nếu chúng ta gửi mỗi tác vụ đến một lõi nhỏ, thiết kế đa lõi tĩnh không thể đạt được thông lượng cao, trong khi các thiết kế ảo hóa hoạt động tốt hơn nhiều. Khi có 8, 12 hoặc 16 tác vụ, thông lượng của thiết kế lõi đơn lớn tĩnh sẽ không cải thiện vì tất cả các tác vụ được thực thi theo cách TDM. Nhưng đối với thiết kế ảo hóa, càng nhiều tác vụ được thực thi thì thông lượng càng cao có thể đạt được. Khi có tổng cộng 16 tác vụ, thiết kế ảo hóa được tối ưu hóa sẽ đạt được thông lượng tối ưu.Hình 6. Thông lượng đa tác vụ trong các tình huống khác nhauHình 6. Thông lượng đa tác vụ trong các tình huống khác nhau

Kết luận, chúng tôi đã thấy rằng khung ảo hóa FPGA được đề xuất cung cấp khả năng cô lập hiệu suất, khả năng mở rộng và tính linh hoạt tuyệt vời. Với chi phí cấu hình lại trực tuyến khoảng 1ms và giảm hiệu suất 1.12% lõi đơn, nó đạt được cải thiện hiệu suất 1.07x - 1.69x và 1.88x - 3.12x so với thiết kế cơ bản. Thiết kế FPGA ảo hóa cũng đạt được sự cô lập và tuyến tính tuyệt vời đối với tài nguyên phần cứng. Nó sẽ giúp giảm thêm TCO của tất cả các ứng dụng học sâu trên đám mây.

Nếu bạn quan tâm đến tài liệu gốc, vui lòng tải xuống trên Arxiv:

https://arxiv.org/abs/2003.12101.

Nguồn: https://forums.xilinx.com/t5/AI-and-Machine-Learning-Blog/FPGA-Virtualization-for-Deep-Learning-Achieving-3X-Performance/ba-p/1104520

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?