Chương 1. TÌM HIEU TONG QUAN. Mục tiêu để tài. Tổng quan để tài.Cccrrtrrrrrei 3 Chương 2.
MÔ HÌNH THIET KE. Board Kria KV260 Vision AI Starter Kit Applications. Thiết kế phần mềm. Thiết kế phần cứng.-¿--22¿2222+2+t222Evvrtrrrkrrrerrree II Chương 3.
HIỆN THỰC THIẾT KÉ. Khối tích chập. Khối điều khiển. Thiết kế bộ đệm dữ liệu.
Thiết kế bộ pe_conv_ mạc. Thiết kế khối pe_conv_mac_buffer_in. Thiết kế khối pe_conv_ mac_datapath. Thiết kế khối pe_conv_buffer_out.
Thiết kế khối pe_conv_ mac_controller. Thiết kế khối pooling. Thiết kế khối linear. Thiết kế khối điều khiển.
Thiết kế khối pe_ linear_mac. _ Thiết kế hàm kích hoạt Sigmoid.---z+22sccz+ccxx# 4I Chương 4. KIEM TRA VÀ ĐÁNH GIA THIET KÉ. Kiểm tra khối sigmoid.
Kiểm tra thiết kế mô hình học sâu.-:---z+cssc+2 45 Chương 5. Kho khăn gặp phải. Hướng pháttriển.-----ccccc+ccccvrvvrrrrrrrrrrrvee 52 TÀI LIỆU THAM KHẢO. 56 DANH MỤC HÌNH Hình 2-1: Kiến trúc dòng chip ZynqTM UltraScale+TM MPSoC [6|.-- 4 Hình 2-2: Phân cấp giữa các hướng tiếp cận khi hiện thực trên board Kria.
5 Hình 2-3: Cây quyết định để chọn hướng tiếp cận phù hợp.-:-- 6 Hình 2-4: Quy trình thiết kế dựa trên Vitis Accelerafor.¿¿cscc5c++ 7 Hình 2-5: Kiến trúc phần cứng của Platform KV260 SOM.---- 8 Hình 2-6: Hệ thống tổng quan của dé ti.eeccccesccssseesssssseesssssseeesesseessssssveseesseeeeessseess 9 Hình 2-7: Kiến trúc phần mềm của Platform. „10 Hình 2-8: Lưu đồ khối cơ bản của một ứng dụng phan cứng 1 Hình 2-9: Tổng quan thiết kế phan cứng. 2 Hình 2-10: Mô hình CNN đối với bộ đữ liệu MNIST [7]. „14 Hình 2-11: Thiết kế khối CNN IP cho bộ dữ liệu MNIST.---------- 4 Hình 2-12: File json cấu hình mô hình cho bài toán MNIST.-- 5 Hình 3-1: Kỹ thuật lượng tử hóa.
7 Hình 3-2: Sơ đồ thực hiện khói tích chập với số chấm động.------ § Hình 3-3: Sơ đồ thực hiện khói tích chập với số 8 bit.c-:--sc+2 9 Hình 3-4: Kết nói fifo với khối tích chập.----¿¿+++22v+z++2vvvvzrsrrvscee 22 Hình 3-5: Thiết kế khối tích chập.-------c+z222222v2vc+zz+ttvvvvsccccez 23 Hình 3-6: Đệm dữ liệu với PADDING = Hình 3-7: Kết nối giữa khối tích chập với fifO.-:---:¿¿©v2c++2cv+zcrsrrvscee 26 Hình 3-8: Hoạt động của khối tích 00. 27 Hình 3-9: Khối đệm dữ liệu.c-c2c:cccccccc222222222222EEEEtrrrrrrrrrrrrree 27 Hình 3-10: Thiết kế khối pe_conv_ mac.:-¿--22222222++222EEEYvvrrrrrrrrrrrrrrrree 28 Hình 3-11: Thiết kế khối pe_conv_mac_buffer_in.---¿©cz+225sscezz 29 Hình 3-12: Cấu trúc cơ bản của DSP48E2 [10]. 2-52 Ssc2 2E errxerrxerree 30 Hình 3-13: Các bước thực hiện 2 phép nhân ac va be [ 12].---‹---------+-Í Hình 3-14: Thiết kế khối cộng dồn.----22--222£2V22++222ESE+etEEEErerrvrrrrrrr 32 Hình 3-15: Thiết kế khối pe_conv_ mac_ datapath. -- - -+55c+c+cscscczxscee 32 Hình 3-16: Thiết kế khối Adder Tree.2 Hình 3-17: Thiết kế khối pe_conv_ mac_buffer_ Out.- ¿5 <sc+ezx+cs+ 34 Hình 3-18: Khối max tree.ccccccccccccrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreoooÖÕ Hình 3-19: Thiết kế khối linear.--2¿©2++++2EE+++t2EEESEttEEEESrrrtrrvrrrrrrkrvee 39 Hình 3-20: Thiết kế khối pe_linear_mac.---¿:22222222vz++2vvvvzevcvsvreerz 40 Hình 3-21: Thiết kế khối pe_linear_mac_ datapath.- - + cscscexseexeeeeree 40 Hình 3-22: Biểu đồ hàm sigmoid.- --2¿-2+¿+222E+2+t2EEEEE2E22E22t2EEExrrrrkrvee 4I Hình 3-23: Biểu đồ sai số bằng phương pháp PLAN [17].--------« 42 Hình 3-24: Thiết kế khối sigmoid.-----¿--2+£©22+++22ESS++etEEvvrrevrvvrrrrrrrrree 43 Hình 4-1: Môi trường kiểm tra UVM.---22ccccc22222Svvvrrrrrrrrrrrrrrrrrrrrrrrrrev 44 Hình 4-2: Sai số của khối Sigmoid.-- 2¿©2222++22ES2++t2EEEErrrtrrkrrrrrrkrvee 45 Hình 4-3: Mô hình học sâu kiêm tra thiết kế [7].-c-:---2cccvcecccesrrerreeee 45 Hình 4-4: Thông số mạng mô hình học sâu kiểm tra.---------: 46 Hình 4-5: File nạp trong số của mô hình.
„47 Hình 4-6: File json cầu hình mạng mô hình học s 8 Hình 4-7: Waveform kiểm tra thiết kế. „40 DANH MUC BANG Bảng 2.1: Các port của khối CNN IP.1: Các port của khối tích CHAD.2: Các tham số của khối tích chập.--¿:-©2z++222++zt+222vzzrerrrseez 22 Bang 3.3: Các port của khối tích chập.4: Các tham số của khối tích chập.5: Các port của khối tích chập.6: Các tham số của khối tích chap.7: So sánh các phương pháp Sigmoid trên FPGA [17] Bang 3.8: Công thức tinh sigmoid theo phương pháp PLAN Bang 4.1: Kết quả lượng tử hóa mô hình.2: Kết quả độ chính xác.3: So sánh phần cứng sử dụng giữa dé tài và các công trình. 50 DANH MỤC TU VIET TAT Từ viết tắt Từ viết đầy đủ CNN Convolutional Nerural Network FPGA Field Programmable Gate Arrays FP Floating Point SoC System on Chip DSP Digital Signal Processing PS Processing System PL Programable Logic DSP Digital Signal Processing MAC Multiply - Accumulate AXI Advanced eXtensible Interface DPU Deep Learning Processor Unit TÓM TÁT KHÓA LUẬN Trong đề tài nhóm tập trung nghiên cứu và thiết kế các khối có trong mạng CNN (Convolutional Neural Network) bằng ngôn ngữ System Verilog, các khối này có thể cấu hình nhiều thông số khác nhau và kết nói lại dé có thé tạo thành nhiều mô hình học sâu khác nhau. Vì tài nguyên trên FPGA là có giới hạn và bộ nhớ hạn chế nên nhóm sử dụng kỹ thuật lượng tử hóa (quantization) dé tối ưu về phần cứng và tài nguyên sử dụng.
Ngoài ra nhóm cung cấp các cách thức dé người dùng có thé kiểm soát được tài nguyên sử dụng của từng tầng trong mô hình học sâu giúp cho thiết kế có thể sử dụng trên nhiều dòng FPGA. Để kiểm tra độ chính xác của thiết kế, nhóm hiện thực một mô hình học sâu giải quyết bài toàn phân loại hình ảnh trên bộ dữ liệu MNIST [1]. MNIST là bộ dữ liệu ảnh các chữ ký số viết tay từ 0 đến 9, các ảnh này có kích thước 28x28x1. Thiết kế mạng mô hình học sâu của nhóm đề xuất có độ chính xác 97.85% và kích thước trọng số là 3.10MB khi chạy với dữ liệu 32 bit số chấm động trên CPU.
Sau khi lượng tử hóa về kiêu dữ liệu 8 bit số nguyên thì độ chính xác là 97.58% và kích thước trọng số chỉ còn 802KB. Sau khi có mô hình lượng tử hóa nhóm tiến hành trích xuất trọng số và nạp xuống thiết kế được kết quả như sau: e_ Thiết kế chạy được ở tần số 200 MHz trên kit FPGA VC707. e Nang lượng tiêu thụ là 5. e Do chính xác khi kiểm tra với bộ dữ liệu test của MNIST (10000 test case): 97.
TÌM HIỂU TONG QUAN 1. Giới thiệu CNN (Convolutional Neural Network) là một trong những kiến trúc mang nơ-ron phô biến nhất trong lĩnh vực học sâu (Deep Learning), các ứng dụng của CNN rất đa dạng, bao gồm nhận diện khuôn mặt, phân loại ảnh, nhận diện chữ viết tay, phân tích văn bản và nhiều bài toán khác liên quan đến xử lý hình ảnh và video. Hiện nay, các mô hình CNN càng ngày càng trở nên lớn hơn và ngày càng phức tạp hơn, vi dụ như mạng LeNet-5 được đề xuất bởi Yann LeCun, Léon Bottou, Yoshua Bengio va Patrick Haffner vào năm 1998 dé giải quyết bài toán nhận dạng chữ số viết tay trong ảnh với số lượng tham số là 60 nghìn [2], trong khi mạng VGG16 được giới thiệu vào năm 2015 dùng trong bài toán nhận diện vật thể có số lượng tham số lên đến 143 triệu [3]. Dẫn việc triển khai mô hình CNN trên các nền tảng phần cứng truyền thống như CPU và GPU có thé gặp nhiều giới hạn về tốc độ và hiệu suất.
Do đó, việc chạy CNN trên FPGA (Field Programmable Gate Array) đang trở thành một xu hướng phát triển mới trong lĩnh vực học sâu và xử lý hình ảnh. FPGA có khả năng xử lý song song giúp cho nó có khả năng tính toán nhanh hơn đồng thời năng lượng tiêu thy ít hơn so với cả CPU và GPU, các nhiên cứu [4], [5] cho thấy việc sử dụng FPGA có thể tối ưu năng lượng tiêu thụ so với CPU và GPU lên đến 49%. Ngoài ra FPGA có thé được tùy chỉnh để phù hợp với yêu cầu của từng mạng CNN khác nhau. Mặc dù việc chạy mạng CNN trên FPGA có nhiều lợi ích, nhưng nó cũng đặt ra một số thách thức và khó khăn.
Đầu tiêu, dé sử dụng được FPGA một cách hiệu quả yêu cầu phải hiểu rõ các thành phần có trong nó như cácDSP, LUT, RAM,. để có thể phát huy tối đa sức mạnh của chúng. Ngoài ra việc thiết kế một mạng CNN chạy trên FPGA khó hơn nhiều so với chạy trên CPU và GPU, nó yêu cầu việc lập trình nhiều hơn và quan trọng nhất là bộ nhớ trên FPGA nhỏ hơn rất nhiều so với trên CPU và GPU. Vì vậy, cần có kỹ thuật và kiến thức về thiết kế hệ thống để triển khai mạng CNN trên FPGA một cách hiệu quả và đạt được hiệu suất tối ưu nhất.
Mục tiêu đề tài Mục tiêu của đề tài là thiết kế các khối sử dụng trong mạng mô hình học sâu dé có thé xây dựng và triển khai các mô hình học sâu khác nhau xuống kit FPGA: e Thiết kế các khối sử dụng trong mô hình học sâu (Convolutional. Pooling, Fully Connected) và hàm kích hoạt (Sigmoid). Mục tiêu của các khối này là có thé cấu hình các thông số trong quá trình Synthesis và có thể nạp trọng số sau khi triển khai trên kit FPGA. e Thiết kế mang CNN dé thực hiện bài toán nhận diện trên bộ dữ liệu chữ số viết tay MNIST [I] với độ chính xác lớn hơn 95%.
Huấn luyện và lượng tử hóa mô hình thành dang số nguyên 8 bit. ¢ Trích xuất trọng số của mô hình CNN đã lượng tử hóa và triển khai trên kit FPGA dé kiêm tra hoạt động của thiết kế. Mục tiêu của thiết kế là có thể chạy ở tần số > 200 MHz và năng lượng tiêu thụ < 10 W. Tổng quan đề tài Trong để tài này nhóm tập trung nghiên cứu và thiết kế các lớp có trong mô hình học sâu.
Để tối ưu tài nguyên và tăng tốc bộ cho mô hình học sâu, nhóm áp dụng kỹ thuật lượng tử hóa trong việc thiết kế các tầng trong mạng mô hình học sâu. Trong đề tài này nhóm tập trung vào thiết kế các khối Convolutional, Pooling, Fully Connected bằng kỹ thuật lượng tử hóa và viết testbench đề kiểm tra chức nang các khối đó. Sau khi thiết kế các khối ở trên, nhóm tìm hiểu và thiết kế mạng mô hình học sâu cho bài toán phân loại chữ số viết tay trên bộ dữ liệu MNIST [1]. Sau đó tiến hành huấn luyện, lượng tử hóa mô hình và trích xuất trọng số để nạp xuống thiết kế FPGA.
Cuối cùng tiếp hành mô phỏng trên tập dữ liệu test, synthesis và nạp xuống kit FPGA. MÔ HÌNH THIET KE Trong chương này nhóm trình bày tổng quan các thành phần có trong một con chip FPGA SoC và cách dé triển khai một thiết kế lên chip FPGA. Hiện nay trên thị trường đang phô biến dòng chip SoC (System on Chip). SoC là dòng chip gồm 2 thành phần chính là PS (Processing System) và PL (Programmable Logic).
Thành phần chính của PS là một lõi ARM Cortex, bộ nhớ cache, các thành phần xử lý được tích hợp sẵn và các ngoại vi dé kết nối, giao tiếp với thế giới xung quanh như USB, HDMI, PCLe,. PL chính là phần FPGA, trong đó bao gồm các LUT, các hard macro như Ultra RAM, Block RAM (dùng dé lưu trữ dữ liệu), DSP (chuyên xử lý tín hiệu số).