Tải bản đầy đủ (.pdf) (85 trang)

hệ thống tăng tốc mạng nơ ron học sâu trên nền tảng fpga

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.02 MB, 85 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

ĐẠI HỌC QUỐC GIA TP.HCM

<b>TRƯỜNG ĐẠI HỌC BÁCH KHOA</b>

<b>NGUYỄN XUÂN QUANG</b>

<b>HỆ THỐNG TĂNG TỐC MẠNG NƠ-RON HỌC SÂUTRÊN NỀN TẢNG FPGA</b>

Chuyên ngành: Khoa học Máy tínhMã số: 8480101

<b>LUẬN VĂN THẠC SĨ</b>

TP. HỒ CHÍ MINH, tháng 8 năm 2021

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<small>-CƠNG TRÌNH ĐƯỢC HOÀN THÀNH TẠITRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG -HCM</small>

<small>Cán bộ hướng dẫn khoa học: PGS.TS. Phạm Quốc Cường(Ghi rõ họ, tên, học hàm, học vị và chữ ký)</small>

<small>Cán bộ chấm nhận xét 1: PGS. TS. Đinh Đức Anh Vũ(Ghi rõ họ, tên, học hàm, học vị và chữ ký)</small>

<small>Cán bộ chấm nhận xét 2: TS. Bùi Trọng Tú(Ghi rõ họ, tên, học hàm, học vị và chữ ký)</small>

<small>Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG TP.HCM ngày 05tháng 08 năm 2021 (trực tuyến).</small>

<small>Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:</small>

<small>(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ĩ)</small>

<small>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 saukhi luận văn đã được sửa chữa (nếu có).</small>

<small>KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH</small>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<small>ĐẠI HỌC QUỐC GIA TP.HCM</small> <b><small>CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM</small></b>

<b>NHIỆM VỤ LUẬN VĂN THẠC SĨ</b>

<b><small>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 FPGAII. NHIỆM VỤ VÀ NỘI DUNG:</small></b>

<small>+ 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ấuhình trong các cơng bố khoa học;</small>

<small>+ 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ảngphần cứng tái cấu hình;</small>

<small>+ 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.</small>

<b><small>III. NGÀY GIAO NHIỆM VỤ: 21 / 09 / 2020</small></b>

<b><small>IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 13 / 06 / 2021V. CÁN BỘ HƯỚNG DẪN: PGS.TS. Phạm Quốc Cường</small></b>

<i><small>Tp. HCM, ngày .... tháng .... năm 2021</small></i>

<b><small>TRƯỞNG KHOA</small></b>

<b><small>KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH</small></b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<i><b>Lời cảm ơn</b></i>

<i>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ơnKỹ thuật Máy tính, khoa Khoa học và Kỹ thuật Máy tính, trường Đại học BáchKhoa - ĐHQG - HCM đã tạo điều kiện cho tôi được tham gia chương trìnhthạc sĩ nghiên cứu và giúp đỡ tơi trong q trình thực hiện đề tài luận vănthạc sĩ. Xin cảm ơn các anh chị em, bạn bè đang tham gia cơng tác nghiêncứ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ênmôn cũng như hỗ trợ tôi trong các cơng tác khác của phịng thí nghiệm. Đồngthờ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. Ngồ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ữngkinh 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ũngphải kể đến các thầy cơ và các bạn, các anh chị học viên cao học đã đồnghà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ứchọc được từ các thầy, cơ thực sự q báu, và nếu khơng có các bạn, các anh,tơi sẽ rất khó khăn để hồn thành chương trình học cũng như luận văn này.</i>

<i>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ữngngườ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ẽ ln trân q những tình cảm và sự giúp đỡ mà mọi người đã dành chotơ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.</i>

<i>Xin trân trọng cảm ơn./.</i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<i><b>Tóm tắt luận văn</b></i>

<i>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ântạo đã đạt được nhiều thành tựu và ứng dụng trong cuộc sống. Các mạngnơ-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ặttính tốn. Vì thế, rất khó khăn để triển khai các ứng dụng của chúng trên cácthiết bị điện tốn biên, nơi có nguồn tài ngun tính tốn hạn hẹp. Luận vănnà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ềntả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 tốn học và việc triển khai mạngnơ-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ăngtố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 nhanhhơn bộ xử lí ARM 4 nhân 15.7 lần và bộ xử lí Intel 6 nhân 2.8 lần.</i>

<i>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 theirapplications on edge devices which have limited computing resources. Thisthesis studies and implements a solution to accelerate deep neural networkson FPGA-based SoC platform to improve the performance of neural networkapplications on edge computing devices. Based on analyzes on mathematicaloperations of neural networks as well as their inference on different platforms,this thesis proposes an architecture that accelerates convolution in terms ofparallelism, data reuse. Experimental results show that the implementationoutperforms a 4-core ARM processor a 6-core Intel CPU 15.7 and 2.8 timesrespectively.</i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<i><b>net-Lời cam đoan</b></i>

<i>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 qtrì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ẩmnà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ệutừ các thí nghiệm được thực hiện khách quan theo các phương pháp khoa họcvà chưa từng được công bố trong công trình nào khác.</i>

<i>Tơi xin chịu trách nhiệm hồn tồn về lời cam đoan này.</i>

<i>Học viên thực hiện</i>

<i>Nguyễn Xuân Quang</i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>MỤC LỤC</b>

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

<b>2CƠ SỞ LÝ THUYẾT5</b>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 tốn . 16<b>3CÁC CƠNG TRÌNH LIÊN QUAN194KIẾN TRÚC HỆ THỐNG24</b>4.1 Kiến trúc tổng quan . . . . 24

4.2 Lõi tính tốn . . . . 27

4.3 Bộ xử lý đa bộ lọc-kênh . . . . 28

<b>5HIỆN THỰC HỆ THỐNG30</b>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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

5.8 Khối xử lí đa bộ lọc-kênh . . . . 47

5.9 Lõi tính tốn và bộ điều khiển lõi tính tốn . . . . 48

5.10 Khối tích lũy . . . . 51

5.11 Phần mềm . . . . 52

<b>6KẾT QUẢ THỰC NGHIỆM55</b>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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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 tố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 345.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 tố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, ghitừ 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 tốn . . . . 50

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

5.27 Các khối chức năng bộ điều khiển lõi tính tố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ứngtăng tốc (HWAcc) so với bộ xử lí Intel (SWInt) và ARM

(SWArm) . . . . 62

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>DANH SÁCH BẢNG</b>

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 tốn . . . . 59

6.8 Bảng thời gian thực thi phép tích chập 2 chiều trong 3 trườnghợ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ườnghợp thí nghiệm với cùng kích thước dữ liệu, khác đệm, sải bước 626.10 Bảng so sánh kết quả với các cơng trình tương tự . . . . 63

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

<b>DANH SÁCH CÁC TỪ VIẾT TẮT</b>

<b>Từ viết tắt Diễn giải</b>

ASIC Application Specific Integrated Circuit

BRAM Block RAM - Block Random Access MemoryCDMA Central Direct Memory Access

CLB Configurable Logic BlockCNN Convolutional Neural NetworkConv Convolution

CPU Central Processing UnitDDR Double Data Rate

DMA Direct Memory AccessDNN Deep Neural Network

DRAM Dynamic Random Access MemoryDSP Digital Signal Processing

ECC Error Checking and Correction

FIFO First-In First-Out

FPGA Field-Programmable Gate ArrayGOPS Giga Operations Per SecondIP Intellectual Property

KCPE Kernel-Channel Processing EngineLPDDR Low-Power Double Data RateLUT Look-up Table

MAC Multiply–AccumulatePE Processing ElementPsum Partial Sum

SoC System-on-a-Chip

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>1GIỚI THIỆU ĐỀ TÀI1.1Giới thiệu</b>

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 q 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 tố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 tốntrên các mạng nơ-ron nhân tạo. Sự phức tạp trong tính tố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 ngun tính tố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 tố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 tố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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

nhằ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 tốn trênsố ngun 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 tố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òncả 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 tố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:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="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.

<b>1.3Giới hạn nghiên cứu</b>

Đề 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âuvà 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 tố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 tốn trên mạng nơ-ron học sâu hiện hữu.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>1.5Nội dung trình bày</b>

<b>Chương 1 – Giới thiệu đề tài: Đặt vấn đề, giới thiệu tổng quan đề tài,</b>

mục tiêu, tính cấp thiết, ý nghĩa khoa học và thực tiễn. Ngồi ra cịn trình bàycấu trúc nội dung luận văn.

<b>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</b>

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.

<b>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</b>

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.

<b>Chương 4 – Kiến trúc hệ thống: Trình bày thiết kế kiến trúc hệ thống đề</b>

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.

<b>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</b>

khối trong hệ thống.

<b>Chương 6 – Kết quả thực nghiệm: Nêu các kết quả thực nghiệm của hệ</b>

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.

<b>Chương 7 – Kết luận: Nêu ra kết luận về khả năng và mức độ hiệu quả</b>

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.

<b>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>

bố từ luận văn.

<b>Danh mục tài liệu tham khảo: Trích dẫn các tài liệu được tham khảo.</b>

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

<b>2CƠ SỞ LÝ THUYẾT</b>

<b>2.1.1Thuật toán perceptron</b>

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.

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

theo 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ỳ.

<b>2.1.2Các thành phần của mạng nơ-ron nhân tạo</b>

Với 1 perceptron, ta đã có một mạng nơ-ron nhân tạo giải quyết được bàitốn phân loại tuyến tính. Đối với các bài tố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

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

<b>2.2.1Phép tích chập</b>

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.

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

ta 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, jlà 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ố.

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

<small>*</small> <sup>=</sup>

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ập2 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.

</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">

<small>*</small> <sup>=</sup>

Hì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 vng 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 tốn, dữ liệu đặc trưng đầu vào cũng thường được cấu tạo thành ma trậnvng 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ậnbộ 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 tố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ểnbộ 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.

</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24">

tươ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.

q= n + 2P − mS

Hình 2.7: Phép tích chập hai chiều với đệm P = 1, sải bước S = 3

</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">

<b>2.2.3Mạng nơ-ron tích chập CNN</b>

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 tố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ăngtự độ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 tốn đầu ra cho bài tốn.

Lúc này, khối lượng tính tốn trong mạng tăng lên rất nhiều. Bên cạnh đó,các bài tố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àycó 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 = 0và sải bước được chọn bằng với kích thước của bộ lọc, S = m.

</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26">

<i>b) Average Pooling</i>

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 tố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 tố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 tốn của các mạng nơ-ron

</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">

nhâ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.

<small>Ảnh [224x224x3]Conv [96x11x11], S = 4MaxPooling [3x3], S = 2</small>

<small>Conv [256x5x5], P = 2MaxPooling [3x3], S = 2</small>

<small>Conv [384x3x3], P = 1Conv [384x3x3], P = 1Conv [384x3x3], P = 1MaxPooling [3x3], S = 2</small>

<small>FC [4096]FC [4096]FC [1000]</small>

Hình 2.9: Kiến trúc mạng nơ-ron AlexNet

</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">

<b>2.3Kỹ thuật khai thác tái sử dụng dữ liệu để tăng tốc tínhtốn</b>

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ọngsố đượ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). Tốntử 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ácbộ 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 được2 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 tố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 tốntrên các mạng nơ-ron học sâu.

<b>2.3.1Tái sử dụng dữ liệu theo thời gian</b>

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 tố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 tố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 tố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

</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29">

gian 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á

</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">

trị được giữ trong PE khi tính tốn thay đổi liên tục theo thời gian và cứ cách3 đơ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 tốn.

<b>2.3.2Tái sử dụng dữ liệu theo không gian</b>

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 tốn. Với góc nhìnphần cứng, khơng gian ở đây là các tài ngun tính tốn mà thiết bị có. Chúngta 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ậnkỹ 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 tố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ọngsố được giữ trong nhiều PE để thực hiện tính tố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 tốn, ta có thể hồntồ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 tốn ở Hình 2.10.c. Ta có thể thấy, chỉ có 3 PE được sử dụng.Tuy thời gian hồ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 đã hồn thành việc tính tốn cho một vị trí của véc-tơ đầu ra, tức

</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="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 tốn, chia sẻ dữ liệu giữa các tài ngun, qua đó tănghiệu năng tính tố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 (timeto 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ựctế, 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ínhvà sử dụng bộ nhớ, phát triển các khối tính tố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 tố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 tốn, khai thácviệc tái sử dụng dữ liệu, ...

</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">

Cá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 tốn trong hệ thống, áp dụng mơhình đường ống (pipeline) ở các mức độ tính tố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 tố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/svà 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 tố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 tố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 tố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 tốnvà 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

</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">

cơ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 tố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]. Ngồ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 tốn khácnhau với các tiêu chí khác nhau. Cơng trình [18] đề xuất bộ tính tố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 tố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 tồn bộ tính tố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 tố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ấycó đế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

</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">

trì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 tốn, với 100 khối, hỗ trợ phép tích chập vớibộ lọc kích thước lên đến 10 × 10. Với ngun 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 tốn đảm nhận việc tínhtố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, ngồ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ếtkế phần cứng.

</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36">

<b>4KIẾN TRÚC HỆ THỐNG</b>

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 tố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 tốn và cách thức hoạt động của các thành phầntrong lõi.

<b>4.1Kiến trúc tổng quan</b>

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 ln có một bộ vi xử lý, có nhiệmvụ điều khiển toàn bộ hệ thống. Trên các nền tảng FPGA, thông thường bộ vixử 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 ngồ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

</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">

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ơixử 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 tốn. Vì bộ xử lý hoạt động theo ngunlý 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 tốn tích chập cho bộ xử lý. Phần việc chuẩn bị của bộ xử

</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">

lý đến đây hồn thành, phần cịn lại của q trình tính tốn được thực hiệnhồn tồ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 hồn tồ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 tốn. Tiếp theo dữ liệu đầu vào được dẫn vào lõi quacơ 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 tốn của hệ thống tăng tốc, phần lõi tính tốn, gồmmột mảng các bộ xử lý tính tố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 tố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.

</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">

<b>4.2Lõi tính tốn</b>

<small>Psum Accumulate RouterKCPE</small>

<small>Output BufferO</small>

Hình 4.13: Kiến trúc lõi tính tốn

Hình 4.13 thể hiện kiến trúc của lõi tính tốn, thành phần chính của hệthống tăng tốc mạng nơ-ron học sâu. Ngun lý hoạt động của lõi tính tốndựa trên ngun 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 tố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 tốn cùng một thời điểm.Cấu trúc bên trong mỗi KCPE cho phép tính tố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 tố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 tố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

</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">

đến đúng địa chỉ cần lưu trữ ở bộ đệm Output Global Buffer. Sau khi hồn tấtq trình tính tốn, dữ liệu ở bộ đệm đầu ra sẽ được chuyển lên bộ nhớ củavi 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 tốn tiếp theo.

<b>4.3Bộ xử lý đa bộ lọc-kênh</b>

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ụcbộ bên trong các khối PE, thường là các thanh ghi, để thực hiện tính tố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 tố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 tố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ẫncó thể sản xuất kết quả đầu ra trên từng chu kỳ hoạt động.

</div>

×