+ Hiện thực một hệ thống tăng tốc các phép tính trong mạng nơ-ron nhântạo trên nền tảng FPGA.+ Xây dựng kiến trúc hệ thống của một mô hình gia tốc thực thi mạngnơ-ron nhân tạo.+ Đo đạc v
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
———————
NGUYỄN XUÂN QUANG
HỆ THỐNG TĂNG TỐC MẠNG NƠ-RON HỌC SÂU
Trang 2-CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG -HCM
Cán bộ hướng dẫn khoa học: PGS.TS Phạm Quốc Cường
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có).
KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
NHIỆM VỤ LUẬN VĂN THẠC SĨ
I TÊN ĐỀ TÀI: Hệ thống tăng tốc mạng nơ-ron học sâu trên nền tảng FPGA
II NHIỆM VỤ VÀ NỘI DUNG:
+ Tìm hiểu và đánh giá các phương pháp tăng tốc mạng nơ-ron bằng phần cứng tái cấu hình trong các công bố khoa học;
+ Nghiên cứu xây dựng phương pháp tăng tốc mạng nơ-ron tích chập trên nền tảng
phần cứng tái cấu hình;
+ Hiện thực phương pháp đề xuất trên nền tảng các chip FPGA;
+ Đánh giá hiệu suất và khả năng tăng tốc.
III NGÀY GIAO NHIỆM VỤ: 21 / 09 / 2020
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 13 / 06 / 2021
V CÁN BỘ HƯỚNG DẪN: PGS.TS Phạm Quốc Cường
Tp HCM, ngày tháng năm 2021
TRƯỞNG KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
Trang 4Lời cảm ơn
Tôi xin trân trọng gửi lời cảm ơn tới PGS TS Phạm Quốc Cường - Bộ môn
Kỹ thuật Máy tính, khoa Khoa học và Kỹ thuật Máy tính, trường Đại học Bách Khoa - ĐHQG - HCM đã tạo điều kiện cho tôi được tham gia chương trình thạc sĩ nghiên cứu và giúp đỡ tôi trong quá trình thực hiện đề tài luận văn thạc sĩ Xin cảm ơn các anh chị em, bạn bè đang tham gia công tác nghiên cứu tại phòng thí nghiệm Kỹ thuật Máy tính đã giúp đỡ tận tình về mặt chuyên môn cũng như hỗ trợ tôi trong các công tác khác của phòng thí nghiệm Đồng thời, tôi cũng xin gửi lời tri ân đến gia đình và bạn bè, những người đã ủng hộ tôi rất nhiều về mặt tinh thần Ngoài ra, không thể không kể đến sự giúp đỡ của các bậc đàn anh tại công ty TNHH Arrive Technologies Việt Nam, những kinh nghiệm quý báu mà tôi có được trong khoảng thời gian công tác tại đây
đã giúp ích rất nhiều trong việc thực hiện luận văn này Bên cạnh đó, cũng phải kể đến các thầy cô và các bạn, các anh chị học viên cao học đã đồng hành với tôi trong các môn học của chương trình đào tạo, những kiến thức học được từ các thầy, cô thực sự quý báu, và nếu không có các bạn, các anh, tôi sẽ rất khó khăn để hoàn thành chương trình học cũng như luận văn này.
Với tất cả sự chân thành, tôi xin gửi lời tri ân tới tất cả mọi người, những người đã giúp đỡ tôi trong suốt thời gian qua, bằng cách này hay cách khác Tôi sẽ luôn trân quý những tình cảm và sự giúp đỡ mà mọi người đã dành cho tôi, giúp tôi có thể hoàn thành luận văn này một cách tốt nhất.
Xin trân trọng cảm ơn./.
Trang 5Tóm tắt luận văn
Ngày nay, lĩnh vực học máy với sự phát triển của các mạng nơ-ron nhân tạo đã đạt được nhiều thành tựu và ứng dụng trong cuộc sống Các mạng nơ-ron nhân tạo đang ngày càng phức tạp hơn và yêu cầu nhiều hơn về mặt tính toán Vì thế, rất khó khăn để triển khai các ứng dụng của chúng trên các thiết bị điện toán biên, nơi có nguồn tài nguyên tính toán hạn hẹp Luận văn này tìm hiểu và hiện thực giải pháp tăng tốc mạng nơ-ron học sâu trên nền tảng FPGA SoC nhằm tăng hiệu quả thực thi các ứng dụng trên các thiết bị điện toán biên Dựa trên phân tích về mặt toán học và việc triển khai mạng nơ-ron trên các nền tảng khác nhau, luận văn này đề xuất một kiến trúc tăng tốc phép tích chập bằng các phương pháp song song hóa, tái sử dụng dữ liệu Các kết quả thí nghiệm cho thấy thiết kế có khả năng thực thi phép tính nhanh hơn bộ xử lí ARM 4 nhân 15.7 lần và bộ xử lí Intel 6 nhân 2.8 lần.
Abstract
Nowadays, machine learning with the development of artificial neural works has achieved many remarkable achievements and has many applica- tions Neural networks are becoming more and more complex and compu- tationally demanding Therefore, it is very difficult for us to deploy their applications on edge devices which have limited computing resources This thesis studies and implements a solution to accelerate deep neural networks
net-on FPGA-based SoC platform to improve the performance of neural network applications on edge computing devices Based on analyzes on mathematical operations of neural networks as well as their inference on different platforms, this thesis proposes an architecture that accelerates convolution in terms of parallelism, data reuse Experimental results show that the implementation outperforms a 4-core ARM processor a 6-core Intel CPU 15.7 and 2.8 times respectively.
Trang 6Lời cam đoan
Tôi xin cam đoan Luận văn tốt nghiệp này hoàn toàn là sản phẩm của quá trình nghiên cứu, thực hiện của mình, không sao chép bất kỳ tài liệu, ấn phẩm nào Các tư liệu tham khảo được sử dụng đúng quy định và trích dẫn rõ ràng Các kết quả, kết luận được thể hiện trong luận văn hoàn toàn dựa trên số liệu
từ các thí nghiệm được thực hiện khách quan theo các phương pháp khoa học
và chưa từng được công bố trong công trình nào khác.
Tôi xin chịu trách nhiệm hoàn toàn về lời cam đoan này.
Học viên thực hiện
Nguyễn Xuân Quang
Trang 7MỤC LỤC
1.1 Giới thiệu 1
1.2 Mục tiêu nghiên cứu 2
1.3 Giới hạn nghiên cứu 3
1.4 Đối tượng nghiên cứu 3
1.5 Nội dung trình bày 4
2 CƠ SỞ LÝ THUYẾT 5 2.1 Mạng nơ-ron nhân tạo 5
2.2 Mạng nơ-ron tích chập 7
2.3 Kỹ thuật khai thác tái sử dụng dữ liệu để tăng tốc tính toán 16 3 CÁC CÔNG TRÌNH LIÊN QUAN 19 4 KIẾN TRÚC HỆ THỐNG 24 4.1 Kiến trúc tổng quan 24
4.2 Lõi tính toán 27
4.3 Bộ xử lý đa bộ lọc-kênh 28
5 HIỆN THỰC HỆ THỐNG 30 5.1 Đặc tả hệ thống 30
5.2 Giới thiệu thiết bị 31
5.3 Bộ vi xử lí 33
5.4 Khối DMA 34
5.5 Các bộ đệm 37
5.6 Các thanh ghi cấu hình 42
5.7 Khối xử lí PE - Processing Element 46
Trang 85.8 Khối xử lí đa bộ lọc-kênh 47
5.9 Lõi tính toán và bộ điều khiển lõi tính toán 48
5.10 Khối tích lũy 51
5.11 Phần mềm 52
6 KẾT QUẢ THỰC NGHIỆM 55 6.1 Thiết kế thí nghiệm 55
6.2 Mô hình đánh giá hiệu năng 56
6.3 Kết quả tổng hợp 57
6.4 Kết quả thí nghiệm 58
Trang 9DANH SÁCH HÌNH VẼ
2.1 Các thành phần của một perceptron 5
2.2 Mạng nơ-ron đa tầng với 2 tầng ẩn 6
2.3 Phép tích chập một chiều 8
2.4 Phép tích chập hai chiều 9
2.5 Phép tích chập hai chiều đa kênh 10
2.6 Phép tích chập hai chiều với đệm P = 1 11
2.7 Phép tích chập hai chiều với đệm P = 1, sải bước S = 3 12
2.8 Phép gộp giá trị lớn nhất và gộp giá trị trung bình 14
2.9 Kiến trúc mạng nơ-ron AlexNet 15
2.10 Tái sử dụng dữ liệu theo thời gian 17
2.11 Tái sử dụng dữ liệu theo không gian 20
4.12 Kiến trúc hệ thống tăng tốc mạng nơ-ron học sâu 25
4.13 Kiến trúc lõi tính toán 27
4.14 Kiến trúc bộ xử lý đa bộ lọc - kênh 29
5.15 Kit phát triển Avnet Ultra96-v2 32
5.16 Zynq UltraScale+ MPSoC trong Vivado Block Design 34
5.17 Kết nối Zynq UltraScale+ MPSoC và Processor System Reset 34 5.18 Xilinx AXI Central Direct Memory Access IP Core 35
5.19 Kết nối giữa Zynq UltraScale+ MPSoC và CDMA 36
5.20 Sơ đồ thuật toán cấu hình cho CDMA hoạt động 38
5.21 Kết nối giữa BRAM, AXI BRAM Controller và CDMA 39
5.22 Kết nối giữa BRAM và BRAM Controller 41
5.23 Kết nối giữa BRAM và các khối để thực hiện việc đọc, ghi từ nhiều nguồn 41
5.24 Sơ đồ khối bộ Processing Element 46
5.25 Sơ đồ nguyên lí bộ xử lí đa bộ lọc-kênh 48
5.26 Sơ đồ khối lõi tính toán 50
Trang 105.27 Các khối chức năng bộ điều khiển lõi tính toán 515.28 Sơ đồ khối bộ tích lũy 525.29 Sơ đồ hoạt động phần mềm cho hệ thống tăng tốc 546.30 Báo cáo tổng hợp về tài nguyên sử dụng của hệ thống từ Vivado 586.31 Một phần dạng sóng trích từ mô phỏng cho lõi tính toán 596.32 Biểu đồ speed up giữa thời gian thực thi trên các số lượng bộ
lọc khác nhau giữa bộ xử lí Intel (SWInt) và phần cứng tăng
tốc (HWAcc) so bộ xử lí lõi ARM (SWArm) 616.33 Biểu đồ speed up thời gian thực thi trên cùng kích thước dữ
liệu đầu vào và khác tham số đệm, sải bước giữa Phần cứng
tăng tốc (HWAcc) so với bộ xử lí Intel (SWInt) và ARM
(SWArm) 62
Trang 11DANH SÁCH BẢNG
5.1 Bảng thông số hệ thống của hệ thống tăng tốc mạng nơ-ron
học sâu được hiện thực 31
5.2 Bảng thanh ghi của Xilinx AXI CDMA IP Core 36
5.3 Bảng các tín hiệu của bus BRAM Port 40
5.4 Bảng mô tả các thanh ghi cấu hình 42
6.6 Bảng lượng tài nguyên sử dụng của hệ thống 58
6.7 Kết quả tổng hợp của lõi tính toán 59
6.8 Bảng thời gian thực thi phép tích chập 2 chiều trong 3 trường hợp thí nghiệm với nhiều kích thước dữ liệu 60
6.9 Bảng thời gian thực thi phép tích chập 2 chiều trong 3 trường hợp thí nghiệm với cùng kích thước dữ liệu, khác đệm, sải bước 62 6.10 Bảng so sánh kết quả với các công trình tương tự 63
Trang 12DANH SÁCH CÁC TỪ VIẾT TẮT
Từ viết tắt Diễn giải
ASIC Application Specific Integrated Circuit
BRAM Block RAM - Block Random Access MemoryCDMA Central Direct Memory Access
CLB Configurable Logic Block
CNN Convolutional Neural Network
Conv Convolution
CPU Central Processing Unit
DDR Double Data Rate
DMA Direct Memory Access
DNN Deep Neural Network
DRAM Dynamic Random Access Memory
DSP Digital Signal Processing
ECC Error Checking and Correction
FIFO First-In First-Out
FPGA Field-Programmable Gate Array
GOPS Giga Operations Per Second
IP Intellectual Property
KCPE Kernel-Channel Processing Engine
LPDDR Low-Power Double Data Rate
LUT Look-up Table
MAC Multiply–Accumulate
PE Processing Element
Psum Partial Sum
SoC System-on-a-Chip
Trang 131 GIỚI THIỆU ĐỀ TÀI
1.1 Giới thiệu
Trong những năm gần đây, lĩnh vực trí tuệ nhân tạo đã và đang được ứngdụng vào đời sống và tạo ra nhiều giá trị cho xã hội Các giải thuật học máyngày càng cho thấy khả năng của mình trong các ứng dụng trong nhiều lĩnhvực như thị giác máy tính, xử lý ngôn ngữ, Trong đó, mạng nơ-ron nhântạo đóng một vai trò quan trọng trong quá trình phát triển này Để đạt đượckhả năng lớn hơn trong các ứng dụng, các nhà nghiên cứu không ngừng cảitiến và thiết kế ra những mạng nơ-ron nhân tạo mới nhằm giải quyết các bàitoán thực tiễn Sự phát triển của các mạng nơ-ron học sâu dẫn đến ứng dụngrộng rãi trong nhiều lĩnh vực đời sống, trong đó, không ít các ứng dụng đòihỏi cao về tốc độ xử lí hoặc phải triển khai trên các thiết bị di động, máytính nhúng Các mạng nơ-ron nhân tạo này ngày càng "sâu" hơn và có kíchthước lớn hơn Cùng với đó, chúng đòi hỏi nhiều hơn về mặt tính toán Điều
đó đồng nghĩa với việc máy tính cần nhiều tài nguyên hơn cho việc tính toántrên các mạng nơ-ron nhân tạo Sự phức tạp trong tính toán này gây trở ngạitrong việc triển khai các mô hình mạng nơ-ron nhân tạo trên các thiết bị điệntoán biên do các thiết bị này thường có lượng tài nguyên tính toán rất giới hạn
Cùng với dòng chảy của sự phát triển trong các nghiên cứu về học máy,học sâu, các nghiên cứu nhằm tăng tính hiệu quả trong việc tính toán trên cácmạng nơ-ron cũng được các nhà nghiên cứu chú trọng Nhiều phương pháp
đã được đưa ra nhằm tăng tốc độ tính toán của các mô hình mạng nơ-ron nhântạo, cả trong góc độ phần mềm lẫn phần cứng Nhiều mô hình thân thiện vớicác thiết bị điện toán biên được đưa ra như MobileNet [1], EfficientNet [2], Các tác giả cũng đã áp dụng phương pháp lượng tử hóa để tạo ra các phiênbản đơn giản từ các mô hình mạng nơ-ron nhân tạo này Phương pháp này
Trang 14nhằm giảm thiểu các phép tính trên số thực, tận dụng khả năng tính toán trên
số nguyên của các phần cứng để triển khai các mạng nơ-ron nhân tạo hiệuquả hơn Về góc độ phần cứng, các giải pháp tăng tốc mạng nơ-ron thườngthấy được triển khai trên các đơn vị xử lí đồ họa (GPU) nhờ vào khả năngtính toán cao trên các ma trận Song song đó, các nghiên cứu cho thấy có mộtnền tảng khác không chỉ có thể vượt qua GPU về năng lượng tiêu thụ mà còn
cả về tốc độ xử lí, đó là mảng logic khả lập trình (FPGA) Việc triển khai cácmạng nơ-ron nhân tạo dựa trên nền tảng FPGA trở thành một hướng nghiêncứu mới Rất nhiều thiết kế phần cứng gia tốc dựa trên FPGA đã được đưa ravới nhiều kỹ thuật tối ưu cho cả phần cứng lẫn phần mềm nhằm đạt được tốc
độ xử lí cao và hiệu quả năng lượng tốt Các nền tảng tăng tốc dựa trên FPGAnày thường được sử dụng cho việc triển khai các ứng dụng ở biên nhờ vào sựkết hợp của bộ xử lí và thành phần khả cấu hình được tích hợp trên một chiptạo thành hệ thống trên chip (SoC) [3], [4] Hệ thống này hoạt động dưới mộttần số thấp hơn nhiều so với GPU và khả năng song song hóa cao hơn so vớicác nền tảng dựa trên tập lệnh Vì thế, chúng đạt được hiệu quả năng lượngtốt hơn so với GPU và hiệu năng tính toán cao hơn so với các CPU [5]
Từ những lợi ích của việc phát triển các bộ gia tốc dựa trên nền tảng FPGA,
có thể thấy đây là lĩnh vực tiềm năng, sẽ ứng dụng nhiều vào đời sống trongtương lai Đồng thời, chúng ta có thể tạo nên một xu hướng dịch chuyển việctriển khai các ứng dụng của mạng nơ-ron nhân tạo từ các nền tảng phần mềmhiện tại sang các nền tảng phần cứng vốn hiệu quả hơn về việc sử dụng tàinguyên, năng lượng, góp phần tối ưu việc sử dụng các nền tảng phần mềmcho các tác vụ khác trong hệ thống và bảo vệ môi trường
Mục tiêu chính của đề tài nghiên cứu cụ thể như sau:
Trang 15+ Hiện thực một hệ thống tăng tốc các phép tính trong mạng nơ-ron nhântạo trên nền tảng FPGA.
+ Xây dựng kiến trúc hệ thống của một mô hình gia tốc thực thi mạngnơ-ron nhân tạo
+ Đo đạc và đánh giá hệ thống được hiện thực, so với các kết quả trên cácnền tảng khác
1.3 Giới hạn nghiên cứu
Đề tài nghiên cứu giới hạn trong việc hiện nghiên cứu thiết kế một kiếntrúc tổng thể cho việc thực hiện số các phép tính trong mạng nơ-ron học sâu
và hiện thực hệ thống trên phần cứng khả lập trình FPGA Cụ thể dòng ZynqUltraScale+ MPSoC tích hợp sẵn lõi vi xử lí ARM cùng với phần logic khảlập trình được sử dụng để hiện thực và kiểm nghiệm thiết kế Điều này đồngnghĩa tiêu chuẩn giao tiếp giữa đơn vị xử lí phần mềm với phần cứng đượcdùng để hiện thực hệ thống tăng tốc mạng nơ-ron nhân tạo phụ thuộc vàothông số kỹ thuật của dòng FPGA này và không nằm trong phạm vi nghiêncứu Kiến trúc hệ thống và lõi tính toán được được xây dựng ở mức trừutượng cao nhằm loại bỏ đi những đặc tính riêng cụ thể của các dòng FPGAkhác nhau nhằm phát triển một lõi IP độc lập, không phụ thuộc vào bất kỳnền tảng cụ thể nào
Dựa trên mục tiêu và giới hạn nghiên cứu, các đối tượng cần nghiên cứubao gồm:
+ Các thành phần của một mạng nơ-ron học sâu về mặt toán học
+ Các hệ thống tăng tốc tính toán trên mạng nơ-ron học sâu hiện hữu
Trang 161.5 Nội dung trình bày
Chương 1 – Giới thiệu đề tài: Đặt vấn đề, giới thiệu tổng quan đề tài,
mục tiêu, tính cấp thiết, ý nghĩa khoa học và thực tiễn Ngoài ra còn trình bàycấu trúc nội dung luận văn
Chương 2 – Cơ sở lý thuyết: Các kiến thức nền tảng về các giải thuật
mạng nơ-ron nhân tạo Một số phương pháp tăng tốc thực thi mạng nơ-ronnhân tạo
Chương 3 – Các công trình liên quan: Các công trình về hiện thực phần
cứng tăng tốc các giải thuật học máy, học sâu trên nền tảng FPGA
Chương 4 – Kiến trúc hệ thống: Trình bày thiết kế kiến trúc hệ thống đề
xuất của hệ thống tăng tốc mạng nơ-ron trên nền tảng FPGA SoC Sử dụngcác sơ đồ khối ở mức tổng quan và giải thích để dễ dàng nắm bắt nhiệm vụcủa các thành phần trong hệ thống
Chương 5 – Hiện thực hệ thống: Trình bày các thiết kế chi tiết của các
khối trong hệ thống
Chương 6 – Kết quả thực nghiệm: Nêu các kết quả thực nghiệm của hệ
thống đã hiện thực, kết quả sử dụng tài nguyên sau tổng hợp So sánh kết quảtrong các trường hợp khác nhau
Chương 7 – Kết luận: Nêu ra kết luận về khả năng và mức độ hiệu quả
cũng như những điểm yếu của hệ thống, đồng thời đề xuất giải pháp khắcphục và hướng phát triển trong tương lai
Danh mục công trình đã công bố: Liệt kê các bài báo khoa học đã công
bố từ luận văn
Danh mục tài liệu tham khảo: Trích dẫn các tài liệu được tham khảo.
Trang 172 CƠ SỞ LÝ THUYẾT
2.1.1 Thuật toán perceptron
Mạng nơ-ron nhân tạo được lấy ý tưởng từ mạng nơ-ron sinh học Trong
đó, một nơ-ron sẽ nhận các tín hiệu từ các nơ-ron khác, các tín hiệu này đượctổng hợp và lưu chuyển đến nơ-ron tiếp theo
Trong mạng nơ-ron nhân tạo, mỗi nốt đơn vị được gọi là 1 perceptron Mỗipeceptron có cấu tạo như Hình 2.1
b là bias, đóng vai trò như hệ số tự do điều chỉnh khoảng giá trị khi tổng hợpcác input Khi đi vào perceptron, các đặc trưng đầu vào sẽ được tổng hợp lạitheo trọng số, thông qua Công thức 1; n là số chiều của dữ liệu đầu vào; y làkết quả đầu ra sau khi áp dụng một hàm số đối với giá trị z tổng hợp được
Trang 18theo Công thức 2, hàm f gọi là hàm kích hoạt, là một hàm phi tuyến bất kỳ.
2.1.2 Các thành phần của mạng nơ-ron nhân tạo
Với 1 perceptron, ta đã có một mạng nơ-ron nhân tạo giải quyết được bàitoán phân loại tuyến tính Đối với các bài toán phức tạp hơn, ta có thể dùngnhiều perceptron sắp xếp lại với nhau thành từng tầng, tầng sau nối với tầngtrước, tạo thành một mạng kết nối đầy đủ như Hình 2.2 gọi là Fully-connected
Hình 2.2: Mạng nơ-ron đa tầng với 2 tầng ẩn
Trang 192.2.1 Phép tích chập
Trong miền rời rạc, phép tích chập giữa 2 hàm số f (n) đại diện cho mộttín hiệu một chiều và g(n) đại diện cho bộ lọc (filter), hay còn gọi là nhân(kernel), được biểu diễn bởi Công thức 3
Trang 20ta trượt bộ lọc đến vị trí cuối của véc-tơ đầu vào để tính tất cả các giá trị đầu ra.
Đối với đầu vào là một ma trận, ta cũng có cách làm tương tự, được minhhọa trong Hình 2.4 Ma trận trọng số (bộ lọc) W trượt lần lượt theo chiềungang và chiều dọc qua tất cả các vị trí của ma trận đầu vào X Tại mỗi vị trí,các giá trị tương ứng của 2 ma trận này được nhân với nhau, sau đó cộng lại
để tạo ra giá trị ở một vị trí trong ma trận đầu ra Y theo Công thức 5, với i, j
là các chỉ số biểu thị cho hàng và cột của ma trận đầu vào, a, b là chỉ số đạidiện cho hàng, cột của ma trận trọng số
Trang 21Trong các phép tích chập ở trên, dễ dàng thấy được kích thước ma trận đầu
ra nhỏ hơn kích thước của ma trận đầu vào Trong trường hợp cần ma trậnđầu ra có cùng kích thước với ma trận đầu vào, hay để không làm mất cácthông tin ở biên của ma trận đầu vào, ta chèn thêm các cột, hàng xung quanhbiên của ma trận đầu vào Thông thường, giá trị ở các vị trí trong các hàng,cột được thêm vào là 0 để tránh làm sai lệch, nhiễu thông tin của ma trận đầuvào Các hàng, cột này gọi là các hàng, cột đệm (padding), số hàng hoặc cột
Trang 22* =
+
Hình 2.5: Phép tích chập hai chiều đa kênh
được thêm vào ở mỗi biên được ký hiệu là P Hình 2.6 thể hiện phép tích chập
2 chiều với đệm để tạo ra ma trận đầu ra có cùng kích thước với ma trận đầuvào
Trang 23Hình 2.6: Phép tích chập hai chiều với đệm P = 1
Đối với mạng nơ-ron tích chập, các bộ lọc thường là các ma trận vuông cókích thước [m × m], và m thường được chọn là số lẻ Để thuận tiện trong việctính toán, dữ liệu đặc trưng đầu vào cũng thường được cấu tạo thành ma trậnvuông có kích thước [n × n] Mặc dù P có thể được chọn là một số tự nhiênbất kỳ, nhưng để kích thước ma trận đầu ra bằng ma trận đầu vào, ta cần đượcchọn thêm m − 1 hàng và cột vào ma trận đầu vào, với m là kích thước ma trận
bộ lọc Khi m là số lẻ thì ta thêm mỗi bên P = (m−1)/2 hàng, cột các giá trị 0
Ngược lại với đệm nhằm tránh mất thông tin của ma trận đầu vào, sải bước(stride) bỏ qua một số hàng, cột của ma trận đầu vào khi trượt cửa sổ bộ lọctrên đó nhằm giảm bớt khối lượng tính toán trên phép tích chập Khi trượt bộlọc trên ma trận đầu vào, ta dịch chuyển bộ lọc theo từng hàng, cột, tuy nhiên,
ta có thể bỏ qua một lượng hàng, cột tương ứng với sải bước khi dịch chuyển
bộ lọc này Số hàng, cột được bỏ qua gọi là sải bước, ký hiệu S Khi đó, côngthức tích chập 2 chiều (5) sẽ được mở rộng thành Công thức 7
Trang 24tương ứng với đệm và sải bước được chọn theo Công thức 8 Hình 2.7 minhhọa phép tích chập 2 chiều với đệm P = 1 và sải bước S = 3.
0
Hình 2.7: Phép tích chập hai chiều với đệm P = 1, sải bước S = 3
Trang 252.2.3 Mạng nơ-ron tích chập CNN
Với một mạng nơ-ron nhân tạo, dữ liệu đầu vào là các đặc trưng đã đượcrút trích từ các dữ liệu thô Tuy nhiên, trong một số bài toán, ta có thể khôngxác định được trước các đặc trưng của dữ liệu thô đầu vào, ví dụ như một bứcảnh Trong trường hợp này, phép tích chập được sử dụng nhờ vào khả năng
tự động rút trích các đặc trưng của mình Một mạng nơ-ron tích chập từ đó
sẽ có một tầng tích chập (Conv layer) dùng để rút trích đặc trưng Sau đó,các đặc trưng này được đưa vào tầng kết nối đầy đủ (FC layer) là một mạngfull-connected tương tự như các mạng nơ-ron nhân tạo thông thường để thựchiện tính toán đầu ra cho bài toán
Lúc này, khối lượng tính toán trong mạng tăng lên rất nhiều Bên cạnh đó,các bài toán trên ảnh như phân loại không đòi hỏi một đối tượng xuất hiệnđúng ở một vị trí nào đó đến mức chính xác từng điểm ảnh, mà đối tượng này
có thể lệch đi một chút Lúc này, kết quả của tầng tích chập phát sinh nhu cầuthể hiện các đặc trưng trên một khu vực trong ảnh thay vì chính xác từng vịtrí Ý tưởng là sẽ gộp các đặc trưng trong một nhóm các vị trí thành một, điềunày làm phát sinh một tầng thường nằm ngay sau tầng tích chập, gọi là tầnggộp (pooling)
Có 2 chiến lược gộp phổ biến là gộp giá trị lớn nhất (max pooling) và gộpgiá trị trung bình (average pooling) Cũng giống như trong phép tích chập,tầng gộp cũng có một cửa sổ trượt di chuyển qua tất cả các vị trí của ma trậnđầu vào Tại mỗi vị trí sẽ tạo ra một giá trị ở ma trận đầu ra Giá trị này là giátrị lớn nhất hoặc giá trị trung bình của các giá trị trong ma trận đầu vào tươngứng với cửa sổ trượt như Hình 2.8 Với cách làm gần giống phép tích chập,tầng gộp cũng có sải bước và đệm Thông thường, đệm được chọn là 0, P = 0
và sải bước được chọn bằng với kích thước của bộ lọc, S = m
Trang 26b) Average Pooling
Hình 2.8: Phép gộp giá trị lớn nhất và gộp giá trị trung bình
Tổng kết lại, mạng nơ-ron tích chập thường có 3 loại tầng:
+ Tầng tích chập (Conv layer)
+ Tầng gộp (Pooling layer)
+ Tầng kết nối đầy đủ (FC layer)
Các mô hình khác nhau sẽ có cách kết hợp các tầng này khác nhau nhằmgiải quyết một bài toán cụ thể nào đó Trên thực tế, các mạng nơ-ron học sâu
đã phát triển rất xa so với ý tưởng ban đầu của nó, có nhiều phép toán được ápdụng và các hàm kích hoạt cũng rất đa dạng Tuy vậy, phép tích chập vẫn xuấthiện rất nhiều và chiếm phần lớn khối lượng tính toán của các mạng nơ-ron
Trang 27nhân tạo hiện đại Hình 2.9 thể hiện kiến trúc mạng nơ-ron AlexNet (2012),một mạng nơ-ron nhân tạo quan trọng, đánh dấu sự phát triển của giải thuậtmạng nơ-ron nhân tạo trong lĩnh vực trí tuệ nhân tạo.
Ảnh [224x224x3]
Conv [96x11x11], S = 4 MaxPooling [3x3], S = 2 Conv [256x5x5], P = 2 MaxPooling [3x3], S = 2 Conv [384x3x3], P = 1 Conv [384x3x3], P = 1 Conv [384x3x3], P = 1 MaxPooling [3x3], S = 2
Trang 282.3 Kỹ thuật khai thác tái sử dụng dữ liệu để tăng tốc tính
toán
Các phép tính ở tầng tích chập cũng như tầng kết nối đầy đủ là các phéptích chập và nhân ma trận Về bản chất, các phép tính này được cấu thành từ
2 toán tử cơ bản là nhân và cộng Các phần tử của ma trận đầu vào và trọng
số được nhân với nhau sau đó được tích lũy lại bằng phép cộng Phép tínhnày được gọi là phép nhân tích lũy hay MAC (Multiply–Accumulate) Toán
tử nhân tích lũy này được thực hiện trong các đơn vị xử lí đặc biệt trong các
bộ gia tốc mạng nơ-ron nhân tạo gọi là PE (Processing Element) Khảo sátcác phép tính tích chập và nhân ma trận, ta có thể thấy kết quả của các phéptính này không phụ thuộc vào thứ tự thực hiện toán tử MAC Đây là điểm mà
ta có thể khai thác để tối ưu việc thực hiện các phép tính trong mạng nơ-ronnhân tạo Bằng cách thay đổi thứ tự thực hiện phép nhân tích lũy, ta đạt được
2 chiến luợc tái sử dụng dữ liệu được trình bày dưới đây để tăng tính songsong trong việc tính toán cũng như giảm thiểu việc trao đổi dữ liệu giữa cácthành phần trong phần cứng Qua đó, ta có thể nâng cao hiệu năng tính toántrên các mạng nơ-ron học sâu
2.3.1 Tái sử dụng dữ liệu theo thời gian
Tái sử dụng dữ liệu theo thời gian (Temporal data reuse) đạt được khi 1 PEgiữ nguyên một giá trị dữ liệu nào đó trong nhiều chu kỳ tính toán Ý tưởngchính của việc tối ưu hóa để đạt được việc tái sử dụng theo thời gian là thayđổi thứ tự các phép nhân tích lũy để giữ một giá trị dữ liệu nào đó càng lâucàng tốt trong 1 PE để thực hiện tính toán Dữ liệu này có thể là một phần tửtrong ma trận đầu vào, ma trận trọng số, hay ma trận đầu ra Khoảng thời giangiữa 2 lần mà 1 giá trị dữ liệu được lấy ra tính toán gọi là khoảng tái sử dụng(reuse distance) Nói cách khác, triết lý cho việc tái sử dụng dữ liệu theo thời
Trang 29gian là làm cho khoảng tái sử dụng đạt giá trị nhỏ nhất có thể.
Cùng quan sát ví dụ Hình 2.10 về tái sử dụng dữ liệu theo thời gian trongphép tích chập 1 chiều để trực quan hóa ý tưởng trên
Hình 2.10: Tái sử dụng dữ liệu theo thời gian
Trong ví dụ Hình 2.10, ta thực hiện phép tích chập giữa véc-tơ đầu vào cókích thước 1 × 7 với véc-tơ trọng số có kích thước 1 × 3 tạo ra véc-tơ đầu ra cókích thước 1 × 5 Với thứ tự thực hiện bình thường như Hình 2.10.b, khoảngtái sử dụng của một giá trị trong véc-tơ trọng số là 3 Ta có thể nhận thấy giá
Trang 30trị được giữ trong PE khi tính toán thay đổi liên tục theo thời gian và cứ cách
3 đơn vị thời gian thì lặp lại Trong khi đó, với thứ tự thực hiện phép tínhnhư Hình 2.10.c, khoảng tái sử dụng được rút ngắn xuống 1 Mỗi giá trị trongvéc-tơ trọng số được giữ để thực hiện 4 phép tính liên tục và sau đó khôngđược sử dụng lại nữa Việcc này giúp làm giảm lượng truy cập vào bộ nhớ đểlấy dữ liệu tính toán
2.3.2 Tái sử dụng dữ liệu theo không gian
Tái sử dụng dữ liệu theo không gian (Spatial data reuse) là việc sử dụngcùng một giá trị dữ liệu trong nhiều PE đồng thời để tính toán Với góc nhìnphần cứng, không gian ở đây là các tài nguyên tính toán mà thiết bị có Chúng
ta tiếp tục khảo sát ví dụ về phép tích chập 1 chiều ở Hình 2.10 để tiếp cận
kỹ thuật này Trong Hình 2.11.a, ta giữ thứ tự thực hiện phép tính như thứ tựthông thường được thể hiện ở Hình 2.10.b, tuy nhiên ở đây sử dụng 5 PE đểthực hiện song song hóa việc tính toán Như đã được đề cập, thứ tự thực hiệncác toán tử MAC trong phép tích chập là không quan trọng, do đó, việc songsong hóa không gây ảnh hưởng tới kết quả sau cùng Quan sát Hình 2.11.a,
ta thấy giá trị của các trọng số được sử dụng trong các PE giống nhau ở cùngmột thời điểm thể hiện kỹ thuật tái sử dụng dữ liệu theo không gian
Với kỹ thuật sử dụng dữ liệu theo không gian như trên, một giá trị trọng
số được giữ trong nhiều PE để thực hiện tính toán trong 1 đơn vị thời giansau đó sẽ không còn được dùng nữa Cứ mỗi bước tính toán, ta có thể hoàntoàn thực hiện hết các phép tính trên một dữ liệu Tuy nhiên, không phải lúcnào ta cũng có đủ tài nguyên làm việc này Bằng một cách sắp xếp thứ tự cácphép tính khác như ví dụ ở Hình 2.11.b, đây là kết quả của việc song songhóa thứ tự tính toán ở Hình 2.10.c Ta có thể thấy, chỉ có 3 PE được sử dụng.Tuy thời gian hoàn thành phép tính có phần chậm hơn, nhưng có thể thấy, cứmỗi bước, ta đã hoàn thành việc tính toán cho một vị trí của véc-tơ đầu ra, tức
Trang 31độ trễ đã được giảm xuống, tuy thông lượng có giảm đôi chút.
Bằng việc sắp xếp lại thứ tự thực hiện các phép tính MAC trong phép tíchchập, nhân ma trận, ta có thể tận dụng các kỹ thuật tái sử dụng sử dữ liệu đểsong song hóa việc tính toán, chia sẻ dữ liệu giữa các tài nguyên, qua đó tănghiệu năng tính toán
Phần cứng khả cấu hình (FPGA) đã liên tục phát triển trong nhiều nămqua và đạt được hiệu quả tương đương với các vi mạch tích hợp chuyên dụng(ASIC) Lợi thế lớn của FPGA là thời gian đưa sản phẩm ra thị trường (time
to market) ngắn hơn rất nhiều so với ASIC Bên cạnh đó, với khả năng có thểtái cấu hình để nâng cấp, thay đổi chức năng của mạch giúp cho FPGA ngàycàng được sử dụng nhiều trong các ứng dụng xử lí dữ liệu Các phần cứngtăng tốc dựa trên FPGA này đặc biệt phù hợp với các ứng dụng trí tuệ nhântạo nhờ vào độ linh hoạt của nó so với các vi mạch chuyên dụng Bên cạnh
đó, hiệu quả về năng lượng trên hiệu năng của FPGA cho thấy phần cứng tăngtốc dựa trên nền tảng FPGA là một trong những lĩnh vực đầy tiềm năng Thực
tế, có rất nhiều nghiên cứu tăng tốc mạng nơ-ron nhân tạo dựa trên nền tảngnày
Khảo sát [6] cho thấy, các nghiên cứu về tăng tốc mạng nơ-ron nhân tạothường đi theo các hướng: tối ưu mạng nơ-ron sẵn có về mặt các phép tính
và sử dụng bộ nhớ, phát triển các khối tính toán hiệu năng cao cho các phéptính trong các giải thuật học máy, phát triển các giải thuật song song hóa cácphần tính toán trong mạng nơ-ron, Trong các giải pháp tối ưu phần cứng cóthể kể đến như tăng tính song song hóa, giảm độ phức tạp tính toán, khai thácviệc tái sử dụng dữ liệu,
Trang 33Các công trình về tăng tính song song hóa: các nghiên cứu theo hướngtiếp cận này thường sử dụng nhiều khối tính toán trong hệ thống, áp dụng môhình đường ống (pipeline) ở các mức độ tính toán khác nhau, áp dụng các hệthống phân cấp bộ nhớ nhằm cung cấp nhiều nguồn dữ liệu song song cho cáckhối tính toán Nghiên cứu [7] hiện thực phép tích chập dựa trên giải thuậtWinograd và phương pháp đường ống (pipeline) cho hiệu năng tăng 4 lần sovới cách tính tích chập thông thường Kết quả thí nghiệm cho thấy với mạngAlexNet đạt 854.6 GOP/s và VGG16 đạt 2940.7 GOP/s trên dòng ZCU102FPGA Mô hình gia tốc mạng tích chập trong nghiên cứu [8] với tất cả cáclớp hoạt động song song với nhau trong một cấu trúc đường ống áp dụngcho mạng AlexNet trên dòng Xilinx VC709 đã đạt hiệu năng 565.94 GOP/s
và 391 FPS Đồng thời, trong công trình này, một phương pháp để tìm chiếnlược tối ưu song song hóa cho mỗi lớp cũng được đưa ra Công trình [9] pháttriển một bộ gia tốc cho mạng CNN tích hợp phép tích chập theo chiều sâu(depthwise separable convolution) đạt hiệu năng 17.11 GOP/s cho phép tínhdấu chấm động đơn bằng cách dùng mô hình đường ống và bộ đệm theo cơchế ping-pong Đây là kết quả được thử nghiệm trên nền tảng Zynq với môhình mạng MobileNet + SSD
Các công trình về giảm độ phức tạp tính toán: Các nghiên cứu theo hướngtiếp cận này thường đưa ra các giải pháp tối ưu cho việc biểu diễn dữ liệu với
độ rộng bit thấp nhằm giảm sự phức tạp trong tính toán và lưu trữ, áp dụngcác phương pháp tính nhanh hoặc đề xuất các mô hình mạng nơ-ron phù hợpvới phần cứng Loại bỏ các tính toán không cần thiết do trùng lắp dữ liệu hoặckhông có kết nối trong mạng nơ-ron Các nghiên cứu [10, 11] đề xuất giảm
độ rộng bit các trọng số của mạng nơ-ron nhân tạo giúp giảm chi phí tính toán
và lưu trữ, trong khi đó giải pháp dùng bảng tra cho các giá trị này thay vìdịch chuyển, lưu trữ toàn bộ các giá trị trong mạng nơ-ron được đề xuất trong
Trang 34công trình [12] Trong một nghiên cứu khác, mạng nơ-ron nhị phân (BNN)với phép XNOR-MAC được hiện thực cho việc tính toán streaming được đềxuất trong [13] Nghiên cứu [14] đề xuất bộ tăng tốc với độ chính xác thấp.Một bộ tăng tốc mạng CNN lai với độ rộng bit rất thấp gọi là ELB-NN cũngđược đề xuất trong công trình [15] Ngoài ra, bộ tăng tốc phép tích chập 1 × 1Synnetgy với trọng số 1 bit và 4 bit dữ liệu trong nghiên cứu [16] cho kết quảrất tốt khi so sánh với các công trình tương tự Nghiên cứu [17] đề xuất lượtbớt các trọng số có giá trị tuyệt đối nhỏ trong các giai đoạn tính toán khácnhau với các tiêu chí khác nhau Công trình [18] đề xuất bộ tính toán áp dụngphép nhân ma trận phần tử và giải thuật Winograd để tăng tốc mạng CNN.
Các công trình khai thác khả năng tái sử dụng dữ liệu: trong hướng tiếpcận này, các công trình tập trung khai thác tính chất các phép tính và dữ liệuđầu vào Trong đó, các phép tích chập, nhân ma trận có thể thực hiện các bướctheo thứ tự khác nhau giúp các dữ liệu được sử dụng để tính toán có thể đượctận dụng trong khoảng thời gian tối đa, tránh việc truy cập nhiều lần vào hệthống bộ nhớ Ngoài ra, giá trị các vị trí gần nhau trong dữ liệu đầu vào vàtrọng số thường gần bằng hoặc bằng nhau, tận dụng điểm này, các tác giả đềxuất nhiều phương pháp nhằm giảm số lượng phép tính cần thực hiện, qua
đó giảm thời gian thực thi toàn bộ tính toán Một cách tiếp cận khác, côngtrình [19] khai thác mối tương quan giữa các điểm ảnh liền kề để giảm thiểukhối lượng tính toán trong phép tích chập, Mahmoud và các cộng sự đã pháttriển phần cứng tăng tốc Diffy đạt hiệu năng cao hơn 7.1 lần so với siêu máytính học máy DaDianNao [20] trong các thí nghiệm của họ và 1.41 lần sovới phương pháp tăng tốc dùng trực tiếp giá trị của ảnh đầu vào Với ý tưởngtương tự, công trình [21] áp dụng việc khai thác mối tương quan giữa cácđiểm ảnh tại cùng vị trí trên các khung ảnh liên tiếp Các phân tích cho thấy
có đến 60% các giá trị được lặp lại giữa các khung ảnh liên tiếp, kết quả làmtăng hiệu năng trung bình 3.5 lần và tiết kiệm 63% năng lượng tiêu thụ Công
Trang 35trình [22] hiện thực bộ tăng tốc neuFlow dựa trên nguyên lí cố định trọng số,giữa trọng số trong các khối tính toán, với 100 khối, hỗ trợ phép tích chập với
bộ lọc kích thước lên đến 10 × 10 Với nguyên lí cố định dữ liệu đầu ra, côngtrình [23] đề xuất bộ tăng tốc trong đó mỗi khối tính toán đảm nhận việc tínhtoán cho một phần tử của dữ liệu đầu ra
Từ các công trình đã khảo sát, một số vấn đề chính trong lĩnh vực tăng tốcmạng nơ-ron nhân tạo có thể kể đến như: giới hạn của bộ nhớ trong và ngoàichip trên các nền tảng FPGA cũng như các thiết bị nhúng, các thiết bị hoạtđộng ở tần số thấp mang lại hiệu quả năng lượng nhưng hiệu năng không cao,việc di chuyển dữ liệu trong hệ thống bộ nhớ và giao tiếp giữa các thành phầntrong hệ thống gây ra các điểm nghẽn khó tránh, ngoài ra, thời gian thiết kế
và hiện thực là rất lớn vì các ràng buộc trong thiết kế phần cứng, đặc biệtngười nghiên cứu, thiết kế phải có hiểu biết trên cả lĩnh vực học máy và thiết
kế phần cứng
Trang 364 KIẾN TRÚC HỆ THỐNG
Với cơ sở lý thuyết về mạng nơ-ron nhân tạo và một số phương pháp tối ưuviệc thực thi các phép tính trong mạng nơ-ron nhân tạo đã nêu, cùng với việctìm hiểu các công trình về tăng tốc mạng nơ-ron nhân tạo trên nền tảng FPGAcũng như khảo sát các hệ thống triển khai các ứng dụng của trí tuệ nhân tạotrong thực tế, tôi đề xuất một kiến trúc hệ thống dùng trong các hệ thống trênchip (SoC - System-on-a-chip) và bộ tính toán nhằm tăng tốc mạng nơ-ronhọc sâu Thiết kế của kiến trúc này được trình bày trong phần này theo hướngtiếp cận từ trên xuống: mô tả kiến trúc tổng quan của hệ thống, sau đó đi sâuvào kiến trúc của lõi tính toán và cách thức hoạt động của các thành phầntrong lõi
4.1 Kiến trúc tổng quan
Bằng việc áp dụng các kỹ thuật khai thác khả năng tái sử dụng dữ liệu vàthiết kế thích hợp với các SoC, kiến trúc hệ thống tăng tốc mạng nơ-ron họcsâu được thể hiện trong Hình 4.12
Với bất kỳ hệ thống trên chip nào cũng luôn có một bộ vi xử lý, có nhiệm
vụ điều khiển toàn bộ hệ thống Trên các nền tảng FPGA, thông thường bộ vi
xử lý này là một lõi cứng Ngoài việc điều khiển hoạt động của phần lõi tăngtốc, bộ xử lý còn đảm nhiệm các nhiệm vụ khác xoay quanh mạng nơ-ron vềmặt ứng dụng Về hoạt động của hệ thống, bộ xử lý sẽ truy xuất dữ liệu từ bộnhớ thứ cấp, thông thường với các thiết bị điện toán biên là từ thẻ nhớ SD, sau
đó tiến hành cấu hình cho lõi tăng tốc để có thể chạy với một mô hình mạngnơ-ron đã được huấn luyện thông qua các thanh ghi ở Register File Khi bắtđầu hoạt động, dữ liệu đầu vào được nạp vào bộ nhớ của bộ xử lý, tức bộ nhớbên ngoài chip (Off-chip memory) Thông thường, bộ nhớ là các thanh RAM(Random access memory) DDR (Double data rate) với dung lượng cao nhưng
Trang 37Channel PE
Kernel-#1
Channel PE
Hình 4.12: Kiến trúc hệ thống tăng tốc mạng nơ-ron học sâu
độ trễ cũng lớn, một phần vì cơ chế hoạt động, một phần vì nằm xa chip, nơi
xử lý dữ liệu Khi dữ liệu đã sẵn sàng, bộ xử lý thực hiện chuyển dữ liệu nàyvào bên trong chip để thực hiện tính toán Vì bộ xử lý hoạt động theo nguyên
lý tập lệnh nên việc di chuyển dữ liệu này sẽ rất chậm, thông lượng khôngcao và độ trễ cũng lớn nên chúng ta cần một phần cứng chuyên dụng cho việcnày, đó là DMA (Direct memory access) Bộ xử lý sẽ cấu hình cho bộ DMA
để di chuyển dữ liệu từ bộ nhớ ngoài chip vào bộ nhớ bên trong chip, sau đógửi một tín hiệu vào lõi tăng tốc để tiến hành thực hiện giảm tải (offload) việcthực hiện các phép toán tích chập cho bộ xử lý Phần việc chuẩn bị của bộ xử
Trang 38lý đến đây hoàn thành, phần còn lại của quá trình tính toán được thực hiệnhoàn toàn bởi phần cứng của lõi tăng tốc.
Phần lõi tăng tốc, bao gồm cả DMA và hệ thống bus và hệ thống bộ nhớphân cấp của chip nằm hoàn toàn trên phần logic khả cấu hình của các nềntảng FPGA Điều này cho phép dễ dàng nâng cấp, thay đổi cấu hình của hệthống khi có sự thay đổi về nhu cầu của ứng dụng Sau khi dữ liệu đã được dichuyển vào chip bởi DMA, lúc này các dữ liệu đầu vào được lưu trữ ở InputGlobal Buffer Trong khi đó Weight Global Buffer là nơi lưu trữ các giá trị củatrọng số Khi có tín hiệu bắt đầu, một phần trọng số sẽ được đọc từ bộ đệmvào bên trong lõi tính toán Tiếp theo dữ liệu đầu vào được dẫn vào lõi qua
cơ chế FIFO (First in - first out) Ngoài các bộ đệm đã đề cập (Input GlobalBuffer và Weight Global Buffer), bộ đệm Output Global Buffer cũng cần thiết
để lưu trữ dữ liệu đầu ra Các bộ đệm này sử dụng Block RAM (BRAM) cósẵn trên phần logic khả cấu hình của các nền tảng FPGA Phần quan trọngnhất đảm nhiện việc tính toán của hệ thống tăng tốc, phần lõi tính toán, gồmmột mảng các bộ xử lý tính toán theo bộ lọc và kênh, Kernel-Channel Pro-cessing Engine để thực hiện phép tích chập giữa dữ liệu đầu vào và trọng số
Số lượng các bộ xử lý này trong mảng phụ thuộc vào lượng tài nguyên màmột nền tảng FPGA cụ thể có được Chi tiết về lõi tính toán sẽ được bàn luậntrong các phần tiếp theo
Hệ thống tăng tốc này có thể hoạt động được với nhiều mô hình mạngnơ-ron học sâu khác nhau với các kích thước đặc trưng đầu vào và trọng sốkhác nhau bằng cách cấu hình các tham số cần thiết thông qua các thanh ghi
ở Register File Thiết kế cụ thể có thể được điều chỉnh để phù hợp với mộtmạng nơ-ron nhân tạo cụ thể để đạt được hiệu năng tốt nhất với lượng tàinguyên phù hợp
Trang 39Psum Accumulate Router
O 000
+
O 200
+
O 300
+
I c02
I c01
I c00
Hình 4.13: Kiến trúc lõi tính toán
Hình 4.13 thể hiện kiến trúc của lõi tính toán, thành phần chính của hệthống tăng tốc mạng nơ-ron học sâu Nguyên lý hoạt động của lõi tính toándựa trên nguyên lý cố định trọng số (Weight stationary), chúng ta sẽ bàn luậnsâu hơn khi khảo sát chi tiết các thành phần của lõi Ý tưởng chính là giữgiá trị trong số bên trong các bộ tính toán cho đến khi thực hiện xong cácphép tính cần thiết Số lượng các bộ xử lý Kernel-Channel Processing Engine(KCPE) tương ứng với số phần tử đầu ra được tính toán cùng một thời điểm.Cấu trúc bên trong mỗi KCPE cho phép tính toán song song các phép MACtrên nhiều bộ lọc và kênh cùng một lúc Kết quả của mỗi bước tính toán chưaphải là kết quả cuối cùng của các phần tử đầu ra mà chỉ là một phần và đượctích lũy dần Phần kết quả này được gọi là partial sum (psum) Các partialsum được tính toán từ các KCPE sẽ được khối Psum Accumulate Router cộnglại tương ứng với vị trí phần từ đầu ra mà nó thuộc về, sau đó được dẫn đường
Trang 40đến đúng địa chỉ cần lưu trữ ở bộ đệm Output Global Buffer Sau khi hoàn tấtquá trình tính toán, dữ liệu ở bộ đệm đầu ra sẽ được chuyển lên bộ nhớ của
vi xử lý chủ để thực hiện các thao tác tiếp theo của ứng dụng Đồng thời, giảiphóng bộ đệm để chuẩn bị cho các phần tính toán tiếp theo
4.3 Bộ xử lý đa bộ lọc-kênh
Kiến trúc cụ thể của bộ xử lý đa bộ lọc - kênh (KCPE) được thể hiện trongHình 4.14 Mỗi KCPE thực hiện các phép nhân vô hướng giữa một phần tửcủa đặc trưng đầu vào với phần tử tương ứng của trọng số trên nhiều kênh vàcho nhiều bộ lọc, tức trên chiều sâu của trọng số cùng một lúc Kết quả sẽđược tích lũy và lưu trữ ở bộ đệm Output Global Buffer như được đã đề cập ởphần trước
Mỗi KCPE bao gồm một ma trận các khối xử lý PE Kết nối giữa các PEnhằm đạt được sự hoạt động theo nguyên lý cố định trọng số như các lõi tăngtốc NVDLA [24] hay Google TPU [25] Trọng số được nạp vào bộ nhớ cục
bộ bên trong các khối PE, thường là các thanh ghi, để thực hiện tính toán chođến khi nó không còn được dùng nữa và được thay thế bởi các giá trị trọng số
kế tiếp Các khối PE được sắp xếp thành ma trận như Hình 4.14, chiều ngangtương ứng với từng bộ lọc, tức một phần hoặc toàn bộ chiều sâu của trọng số,chiều dọc tương ứng với số kênh được tính toán cùng lúc ở mỗi bước Giá trịtích giữa một phần tử đầu vào và phần tử trọng số tương ứng giữa các kênhđược cộng lại để tạo ra một phần kết quả của một phần tử đầu ra Sau khitrọng số đã sẵn sàng, giá trị của dữ liệu đầu vào được truyền vào và phân phốiđều theo chiều ngang và tương ứng theo từng kênh Bằng cách này, mỗi bướctính toán có thể tạo ra các partial sum của nhiều phần tử đầu ra và có thể thựchiện liên tục trên từng chu kỳ của xung clock Ở đây, các PE sẽ có độ trễ nhấtđịnh để thực hiện phép tính nhân Tuy nhiên với kỹ thuật đường ống, ta vẫn
có thể sản xuất kết quả đầu ra trên từng chu kỳ hoạt động