Một kiếntrúc CNN chuẩn bao gồm một số lớp tích chập và lớp phân loại, điều này đòi hỏi lênđến hàng tỷ phép toán cho mỗi ảnh đầu vào, vì vậy việc sử dụng GPU dé hỗ trợ quátrình huấn luyện
Trang 1ĐẠI HOC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA KY THUAT MAY TINH
TRAN ĐĂNG HẬU - 20521302
LÊ QUANG PHONG - 20521744
KHÓA LUẬN TÓT NGHIỆP
NGHIÊN CỨU VA HIỆN THỰC IP SHUFFLENET
RESEARCH AND DESIGN IP SHUFFLENET
CU NHAN KY THUAT MAY TINH
GIANG VIEN HUONG DAN THS TRUONG VAN CUONG
TP HO CHÍ MINH, 2024
Trang 2LỜI CẢM ƠN
Đầu tiên em muốn cảm ơn các thầy, cô tại Đại học Công nghệ Thông tin — Đại
học Quốc gia Thành phó Hồ Chí Minh đã giúp đỡ và chỉ day tận tình trong quá trìnhhọc tập và làm việc tại trường Từ đó, em nhận được những kiến thức, kinh nghiệmcũng như có những trải nghiệm quý báu trong thời gian học đại học cũng như để tiếp
bước cho cuộc sông sau này.
Tiếp theo, em xin cảm ơn các thầy cô thuộc Khoa Kỹ thuật Máy tính đã giúp đỡ,
chỉ bảo tận tình trong quá trình học tập và làm việc tại khoa Đặc biệt trong quá trình
thực hiện khóa luận tốt nghiệp đã nhận được sự quan tâm, giúp đỡ từ các thầy, cô dé
giúp hoàn thiện đề tài một cách tốt nhất Đề có thể hoàn thành tốt khoá luận tốt nghiệpnày, em xin cảm ơn thay Trương Văn Cương đã luôn giúp đỡ, chỉ day tận tình dé giúp
em có được những kinh nghiệm về chuyên môn cũng như kỹ năng mềm giúp ích cho
quá trình làm khóa luận cũng như cuộc sông sau này.
Sau cùng, em muôn gửi lời cảm ơn đên gia đình và bạn bẻ đã luôn ủng hộ, tin
tưởng, động viên nhiệt tình dé em có thé yên tâm, hoàn thành tốt khóa luận tốt nghiệp
Tp Hồ Chí Minh, ngày 02 tháng 08 năm 2024
Sinh viên thực hiện
Trần Đăng Hậu Lê Quang Phong
Trang 3MỤC LỤC
Chương 1 GIGI THIEU TONG QUAN 2-2222 E+2E£2£E+EEZEEEEkerrerrkrres 2
1.1 - Giới thiệu để ti eee eccsseeecessnnecessneccessneccesnnscessnsscesnnsceesanecesnneeeesnneeeesens 2
1.2 Cac nghiên cứu liÊn Qua1 - Ă c 3331831183313 1118 11 811 111 1 kg 2
1.3 Tổng quan d6 tài ©-+-©2++22t22k22112211221211 2112111211122 crerreg 41.4 Mục tiêu để tài ch nhieu 4Chương 2 CO SỞ LÝ THUYÊẾT 2-2 2+SE+EE+EE2EE2EEEEE2EEEEEEEEEEEEErkerrerree 5
2.1 Mơ hình mạng ShuffleNet v2 - - - c1 HS HH ng HH rệt 5 2.2 Convolution Layer — Lớp tích Chap - +5 * + xssveseeeresersrres 8 2.3 Depthwise Separable ConvỌufIOT - - << s ke ksikseekeesereeeee 9
2.10 Lượng tử hĩa L- Ăn TH HH ngư 15
2.11 Tap dữ liệu hình ảnh ImageÌNet - 5 S5 + sseersseerreeree 17
Chương 3 MO HÌNH THIET KÊ - 2-2 ©5¿+<+EE+E£+EE£EE++EEerxerxezrxerxee 19
3.1 Hién thực lượng tử HO eee eeceeeneeesceceeeceeeeeaeceaceeeeeceaeceseeceeeeseeeenees 19
3.2 Kiến trúc tổng Quam oecceceecceceescssessessessessessessessessessessessesscssesuessesscsscsseaveaeeaee 213.3 Thiết kế bộ đệm dữ liệu +-¿-++++trtEkkrtttkkirttrirrrriiierrirree 233.4 Khối Convolution c+-+©+++ctEEkrtttrkkrrttrtirrtrrirrrrrirerrrrre 24
3.4.1 Khối conv_controller -: 5e 5z se St SEeE+ESESESESESESEEEEEEEEErererersrssee 26
Trang 43.442 Khối PC_CONV_IMAC 11177 293.5 Khối Depthwise Convolution -¿ s¿©+2++2x++£x++zx++rxesrxrsrxrrrxee 36
3.5.1 Khối DWconv_controller c+cc++crerkkerrtrkkrrrrrkrrrre 373.52 Khối 0 588À9/,9ià 08:12 1177 383.6 Khối 1x1 Convolution ::++++2cxxttttkttrtrrrtrrttrtrrrrrrrrrrrrrrree 40
3.6.1 Khối cnn_controller _convlxI -. c+c+s+k+s+E+E+szszssessrsressrssse 423.6.2 Khối pe_convlxI_ ma -©¿+-<+k+£Et2EE£EEtEEE+EEerkerrserkrree 433.7 Khối Pooling :- ket ke xEE1E1121111121121121111 1.1.1 xe 44
3.7.1 Khối cnn_controller_pOỌITIE - - << **+£++eExeeeeeeeseeereeexs 463.7.2 Khối pe_poolingsecccecceccsscessessessecsecsessecseeseesessessessessessessessesssssssssssesseess 473.8 Khối Linear G/,sếco À À 49
3.8.1 Khối linear_controller -¿-¿ 5: cs+E+E+E+ESESESEtEtErErErerererersrssee 513.8.2 Khối IS00115208012 8n Tẽn a 513.9 Khối Channel Shuffle csccssesccssseessseecsssecessseecessneeesssneecssneeessnesessseess 53Chương 4 KIEM TRA VÀ ĐÁNH GIÁ THIET KỂ -: -¿52©55+¿ 55
4.1 Kiểm tra khối Convolution -.-:-+¿22xvtttxxvrsrtrtersrrrtrrrrrrrrrrrk 57
4.1.1 Chạy behavioral simulafIOI - «xxx Ektskeerskrskesrske 58
4.1.2 Tài nguyên sau khi tổng hợp -: + ©++2x++cx++zx+zrxrzrxrzrxee 594.1.3 So sánh kết quả mơ phỏng phan cứng so với phần mềm 604.2 Kiểm tra khối MaxPOol : 5cctc2+vttEExtrtttkrtrtrtrtrrrrtrrrrtrrrrrrre 61
4.2.1 Chạy behavioral simulafIOT - <5 5s **xEsseEEeeereeeeereeree 61
4.2.2 Tai nguyên sau khi tong hợpp -¿- + ++++x+£x++zxvrxerrszrxeres 61
4.2.3 Chạy post-synthesis simulÌafIOT 5 52c + sekEseeseeerreeree 62
4.2.4 So sánh kết quả mơ phỏng phan cứng so với phần mềm 63
Trang 54.3 Kiểm tra khối 3x3 DWCONV S2- SE St St SESEEESEEEEEEEEEEEESErrrrrrererrree 64
4.3.1 Chạy behavioral simulafIONI - c5 SE **EsskEeekeserseers 64
4.3.2 Tai nguyên sau khi tong hop cccccscsssescsssessessessessessesessssssssseeseeseseess 654.3.3 So sánh kết quả mô phỏng phần cứng so với phần mềm 664.4 Kiểm tra khối IXICOnV -s+t222xvttEExtrtttktrrrttrrrrrtrrrrrtrrrrrr 67
4.4.1 Chạy behavioral simulatIOn <6 5s * SE sseeEseereeeeereeree 67
4.4.2 Tài nguyên sau khi tong hOp scccscsssesssesssesssecssecssecssecssecsssesessseesseesses 68
4.4.3 Chạy post-synthesis simulÌafIOI - 5 + ScS + svkseeseeerreeree 68
4.4.4 So sánh kết quả mô phỏng phan cứng so với phần mềm 694.5 Kiểm tra khối ShuffleUnit Spatial down sampling - 70
4.5.1 Chạy behavioral simulatIOn s5 5 3+ **xEsseeeseeeeeeeeeeeree 70
4.5.2 Tai nguyên sau khi tong hợp - 2-5 2 + ++££+££+£z£zEzrzrszes 71
4.5.3 Chạy post-synthesis sImulÌafIOI - 5 5+5 + +kkseeseeeereeres 72
4.6 Kiểm tra khối ShuffleUnit basic -.-¿ cc+©cc+eeecxverrrrreerrre 72
4.6.1 Chạy behavioral simulafIOTI - «5 5+ + + +*E£+kEesEeeeeseeeeers 72
4.6.2 Tai nguyên sau khi tong hợp -¿- + + ++++£++x++xzxzxzrezrsces 73
4.6.3 Chạy post-synthesis simulafiOI - -c- s xxx sseeerersrskrske 74
4.6.4 So sánh kết quả mô phỏng phan cứng và phần mềm - 744.7 Kiểm tra khối Global Pool c-c-c+c+c++ttttvrrtrrtrrrrrrkrrrrrtrrrrre 75
4.7.1 Chạy behavioral simulafIOII 5 5< + + sEeeersereeres 75
4.7.2 Tai nguyên sau khi tổng hợp -2- 2 2 + ++£++£++EzEzEzrzrszes 76
4.7.3 Chạy post-synthesis sImulafiOH - - 5 5S +*seseeEeesseeseee 77
4.7.4 So sánh kết quả mô phỏng phan cứng và phần mềm 774.8 Kiểm tra khối Fully connected - 5 s+cs+s++x++x++E+rzrzrxrrxrrerreee 79
Trang 64.8.1 Tài nguyên sau khi tong hợp -¿- 2 2 s+++£++£++Ezxzxzrszrezes 79
4.8.2 Chạy post-synthesis sImulafIOH 5+ 5 + + + ‡*+sskEeeesereeees 79
4.8.3 So sánh kết quả mô phỏng phần cứng và phần mềm 794.9 Kiểm tra mô hình ShuffleNet v2 -ccccccccxeerrrrrrirrrrrrirrree 81
4.9.1 Chạy behavioral simulafIOTI - 5 5 + SE Ereeesrrerre 81
4.9.2 Tai nguyên sau khi tong hợp - 2-2 2 ++£+£++E++E++EzEzrzrezes 84
4.9.3 Chay post-synthesis simulafiOI s5 + xe rrkt 85
Chương 5 TONG KẾT -:- 2 S2+S<+SE+EE9EE2EEEEE2E12E1211211211212212 1 eeU 86
5.1 Gt Ua occ eeccceeeescsssseecesssneeesssneeeecsssneeseesnnseesessnneecessnnnesessnneeseesnneseessnes 86
5.2 Khó khăn gap phat ce ccceccecceseeseceseeecceececceseceeeeseceseeeeeseeeeeeseeeeeeeeeees 87
5.3 Hướng phat triển đề tai cccecccccccccccsscesessessessessessessessessessessessesscsseseesseseeaee 87
Trang 7DANH MỤC HÌNH
Hình 2.1 (a) Shuffle Basic Unit; (b) Shuffle Unit spatial down sampling 7
Hình 2.2 Tổng quan kiến trúc của khối ShuffleNet v2 0.5Šx cecccccsssessesssessessessessesseesees 8
Hình 2.3 Pháp tích chập với kích thước bộ lọc là 3, Stride = 1, Padding = 1 9 Hình 2.4 Depthwise Separable COTIVỌIẨÏORN 5 << SE VE+*eEEeeeEeeeeeeeeresexs 10
Hình 2.5 Channel Shuffle trong ShuffleNet[ ] ] «+sc+svksseksseessseessees 10
Hình 2.6 Pooling với kích thước bộ lọc = 2, Stride = 2 «.cc+ssceesss 11
Hình 2.7 Ví du lớp Fully Connected với dau vào là 3 và đâu ra là 5 - 12Hình 2.8 Đồ thị hàm kích hoạt ĐeLU -c5ccesccE+terrrtrkteerrrrtrrrrrrie 12Hình 2.9 Do thị hàm kích hoạt sigiOid - +: 2-55 £+E£+EE+E‡E£EEE+Errrrrreres 13Hình 2.10 Biểu đơ sai số của phương pháp PLAINỊL19] - 2©cs+ce+cc+cczeezecres 14
Hình 2.11 Biểu đồ hàm Sojf†jMaxx - S252 E5 StSEEEEEEkEEEEerkerrkerkerrrkereee 15
Hình 2.12 Ví dụ về lượng tử hĩa từ số Floating Point sang số Integer 8 15
Hình 2.13 Dyamic Quantization Của PfOTCH - s«ssss+ss‡‡+++vEV+seeeExeeeeesssssxs 16 Hình 2.14 Static Quantization CUA PfOFCH ằẶ sec + S+sekEteeeereeeeessssesrs 16 Hình 2.15 Static Quantization Aware TTaÏHHÌNG c5 555555 3+ + s+ 17
Hình 2.16 Một số hình ảnh của tập dữ liệu ImageÌNet[ 2 Ï ] « «<=+<s«+++ 17Hình 3.1 Sơ đơ khối tích chập với số nguyên 8 Dit -©cc©cz+ce+cxccccscscces 21Hình 3.2 Kiến trúc tổng quan mơ hình phân 2711-280088n០22Hình 3.3 Khối ShuffleNet IP - - + <+k+EE‡E£EEEEEEEEEEE21E11E111E11211111111 11x11 xe 23Hình 3.4 Thiết kế khối ĐuƒÏ€F +- + ©tSE+E‡Sk‡EE+ESEEEEEEEEEEEEEEEEEEEEEEEEEEEEErkrrrrkerkes 24Hình 3.5 Kiến trúc khối ConnVỌHIiOH ccccecsesssessesssessessesssessesssessessesssessecsssssessessseesees 25Hình 3.6 Sơ do chuyển trạng thái ứng với padding != 0 và stride = 1 27Hình 3.7 Sơ do chuyển trạng thái ứng với padding != 0 và stride > 1 27Hình 3.8 Kiến trúc của khối conv_confrolÏeF cocceccscscsssescsesssssssssesesessvscscscssssscscsesesens 28Hình 3.9 Ví dụ về hình ảnh cĩ kích thước 7x7 và vùng đệm pPADDING = 1 28Hình 3.10 Kiến trúc khối D€_ COTIV_ THH(C co 000.0 29Hình 3.11 Kiến trúc khối 2/08/1772, n 30Hình 3.12 Kiến trúc khối pe_conv_ mac _ AfqJOdfÏ, - s cs<ss+sskk+sekkeseseeeee 30
Trang 8Hình 3.13 Cau trúc cơ bản của DSP48E2[22] coccscsssessesssessesssessessesssesseesesssessesssessecs 31
Hình 3.14 Các bước thực hiện 2 phép nhân ac và bc trên DSP[23] - 32
Hình 3.15 Kiến trúc khối Asp_uall Mult 80000n8 a 33Hình 3.16 Kiến trúc khối Adder Tree i.esssssssssssssssessssssesseessssesesssusessesssnesseannieseen 33Hình 3.17 Kiến trúc khối D€_ COTV_ ĐIH̓€T _ OHÍ 5< SE EESsekkeseesrekeree 35
Hình 3.18 Mơ tả tích chập depthwise s5 - <5 xxx ki kvkesvke 36
Hình 3.19 Khối Depthwise Convolution - 5S 1E key 36Hình 3.20 Kiến trúc controller của khối DWW€onV -s-©cz©5s+cs+csc>csecsees 38Hình 3.21 Kiến trúc khối ;88141-4/-8,/777PEE0007575AAee 38Hình 3.22 Kiến trúc khối D€_COHVIDẨWW, TC 5 c5 3+3 ESSEEESreeekseeeererseereee 39
Hình 3.23 Minh họa cho cách tích chập của lớp IxÏCOPVW «.« «<< << <<<++ 40
Hình 3.24 Kiến trúc khối 1X1 COn ecccccccccc:ccccccccxvtisrcxvrerrtrrrrrrtrrrrrrvee 4IHình 3.25 Sơ đồ chuyển trạng thái của khối xÏconV -s©-secce5ceecsee: 43Hình 3.26 Khối 2/06 708,., 00nẺn 43
Hình 3.27 Minh họa pool Kernel 3X3 - c5 SE +EEESeeeeeseeerseeerssreesrs 44
Hình 3.28 Kiến trúc khối PoOliHg - 2-52 52+St+EE‡EE‡EE+EE+EEEEErrrrrrerreres 46Hình 3.29 Sơ đồ chuyển trạng thái FSM của khối controller pooling . 46Hình 3.30 Kiến trúc cnn_controller Z72071ẺẼ5 46Hình 3.31 Kiến trúc khối pe_poolifig :- ¿52 5s+S++EE‡EE+EE+EE+EEEEErErrrrrreree 47Hình 3.32 Kiến trúc chỉ tiết của avg_pooÏifg c-c- s+ce+k+c+kerkexrkererereereee 48
Hình 3.33 Kiến trúc chỉ tiết của mỉn_pooÌing - s s+ce+xe+x+Ek+x+kerrrxrreres 48Hình 3.34 Kiến trúc chỉ tiết của IHAX_ DOỌÏH SG SE ng ke 48
Hình 3.35 Kiến trúc khối Liner cescecsesscessessesssessesssessessssssessesssessessesssessecsusssessessseeses 50Hình 3.36 Kiến trúc khối linear Controller ceccccccccccccscscscssssssssssvesesesevscscscssssscssscscsess 51
Hinh 3.38 Khoi Pe_linear_MaC_AAtaPAth ccccccccccccsccccessceeseesesseeeeseeeseeeesesseeeesneees 52Hình 3.39 Vi dụ Channel Shuffle với g = 3, số kênh đâu vào là 6 . - 53Hình 3.40 Khoi Channel Shuffle c.cceccesscsssesscsssessesssessessesssessessssssessesssessecsusssessesseeeses 54
Hình 4.1 Quy trình verify trong VÏVQO 5c SxvESESeeESeeekeserseeekeeereree 55
Trang 9Hình 4.2 Tổng quan phương thức verify thiết kế - + 5s s+c+ec+eczeereerreres 56
Hình 4.3 a) Hình ảnh ban dau; b) Hình ảnh sau khi tiền xử lí - 57
Hình 4.4 Tín hiệu load_weight cho phép nạp trọng số vào mô hình 58
Hình 4.5 Tín hiệu en cho phép đưa pixel ảnh vào tính tOđH ««<<s«<+ 58
Hình 4.6 Tín hiệu done cho biết khối tích chập đã tinh toán xong - 58Hình 4.7 Tai nguyên khối Convolution sau khi Systhesis c.cccccccescescscsscsseesesseseeseeees 59Hinh 4.8 Tai nguyén khối Convolution sau khi Implementation, - 59Hình 4.9 Báo cáo timing của khối CONVOLUTION esscscsessesssessessesssessessessessesssessessiessee 59Hình 4.10 Tài nguyên khối max pool sau khi Systhesis -.:©25-555cc5ccccscc: 62Hình 4.11 Tài nguyên khối max pool sau khi Implementation 5: 62Hình 4.12 Báo cáo timing của khối MAX ĐOOlL - 25+ 5s+52+E+E£+E££E+EE+Eererereereee 62Hình 4.13 Tín hiệu valid cho biết dữ liệu dau ra sẵn SỒHI Ăn, 63Hình 4.14 Kết quả đặc trưng đầu ra lớp maxpool từ phân mễMm - 63Hình 4.15 Kết quả đặc trưng đầu ra lớp maxpool từ Phan cứng - 64Hình 4.16 Nạp trọng số hoàn tat sau đó tín hiệu en = 1 -scscs+s+ecssz 64Hình 4.17 Tín hiệu en cho phép dua các điểm ảnh vào thực hiện tính toán 65Hình 4.18 Tín hiệu done báo hiệu khối thực hiện tính toán XOI Ă cà Si 65Hình 4.19 Kết quả khối 3x3 DWConv sau khi ŠystÏieSiS -2- 2-52 525252+52+s2 66Hình 4.20 Kết quả khối 3x3 DWConv sau khi Implementation -:-2-52-5s 66Hình 4.21 Báo cáo timing của khối 3x3 DWWCOnv -5-525Ss+c+esrerereereee 66
Hình 4.22 Kết quả đặc trưng dau ra lớp 3x3 DWConv từ phan mm 67Hình 4.23 Kết quả đặc trưng dau ra lớp 3x3 DWConv từ phan cứng - 67
Hình 4.24 Tài nguyên khối IxIConv sau khi SysthesiS :©25-555cc5ccccscc: 68Hình 4.25 Tài nguyên khối 1x1 Conv sau khi Implementatioh 5-5:-: 68Hình 4.26 Báo cáo timing của khối IxCOIV 2-52-525252+c+£+Eczezeezeres 68Hình 4.27 Nạp trọng số vào Khối TXT CONV vesessessssssessesssessesssessessesssecsessessessessseeses 69Hình 4.28 Tín hiệu done cho biết khối thực hiện tính toán xong - 69Hình 4.29 Kết quả đặc trưng đâu ra lóp 1xIConv từ Phan mễMm -. - 70Hình 4.30 Kết quả đặc trưng đâu ra lóp 1x1 Conv từ phần cứng - 70
Trang 10Hình 4.31 Kết quả khối ShuffleUnit stage2 sau khi SysthesiS 5-55-5552 71Hình 4.32 Tài nguyên khối ShuffleUnit stage 2 sau khi Implementation 71Hình 4.33 Báo cáo timing của khối ShuffleUnit stage? eccccecccsscessesssessessesssessesseessee 71Hinh 4.34 Tin hiéu en = 1 dé dua giá trị vào tính toán sau khi nap trong SỐ 72Hình 4.35 Giá trị đầu ra hợp lệ khi valid = l 2 2©55cs+cc+ec+eczeezeczrres 72Hình 4.36 Khối ShuffleUnit basic được nap trong TU 73Hình 4.37 Tài nguyên sau khi tổng NOP SYHẨÏ€SÏS SG Hit 73Hình 4.38.Tài nguyên sau khi tổng hop lmplermentatiOn - 2-52 25e 2+ce+ss 73Hình 4.39 Báo cáo timing của khối ShuffleUnit -.-©-2©2555c©c>c+ecxczceccseei 73
Hình 4.40 Delay giữa xung clock và tín hiệu VdÏHở - - 55 s+<<sss++ss++ss+ 74
Hình 4.41 Biểu đồ thé hiện chênh lệch giữa phần mém và phần cứng 74Hình 4.42 Tín hiệu en được bật để đưa pixed vào khói để tính toán . 75Hình 4.43 Tín hiệu en cho phép đưa dit liệu vào khối pool -z -s+-: 75Hình 4.44 Tín hiệu valid cho biết dữ liệu đầu ra SGN sàng -2 2- 25252 76Hình 4.45 Tài nguyên khối GlobalPool sau khi tong hợp Synthesis 76Hình 4.46 Tài nguyên khối GlobalPool sau khi tong hop implementation 76Hình 4.47 Báo cáo timing khối GlobalPool -+- + s+s++x+++z+erxezreerseei 76Hình 4.48 Bảng so sánh kết quả giữa software và hardware (avgpool) 78Hình 4.49 Biểu đô thể hiện sự chênh lệch qua tắt cả các kênh đầu ra (avgpool) 78Hình 4.50 Tài nguyên khối FullyConnected sau khi Šynthesis - 55-55: 79
Hình 4.51 Báo cáo timing của khối FullyConnieef€d - 55-5 5e+St+E+E+EzEeres 79Hình 4.52 Bảng so sánh kết quả giữa software và hardware (fC) «‹ 80
Hình 4.53 Biểu đô thể hiện sự chênh lệch qua tat cả các kênh đầu ra (ƒc) 80
Hình 4.54 Reset IP ShU[fl€ÌN@[ - «ch ng HH HH ng 81
Hình 4.55 Nap trọng số cho IP ShuffleNet ccccccccccsscsscescsssssssssssssssesessesesessesseeseesvees 81Hình 4.56 Sau khi IP đã nạp xong tất cả trong SỐ . -©cc©cc+ccccccrrcereeres 82
Hình 4.57 Đưa dữ liệu ảnh vào IP ShuƒƒleÌN©f cẶSĂ Khi, 82
Hình 4.58 Một số hình ảnh được sử dụng dé kiểm tra IP ShuffleNet 83Hình 4.59 Kết quả kiểm tra IP ShuffleNet c.ccecccsscsssessesssessessssssessesssessessesssessessseesecs 83
Trang 11Hình 4.60 Kết quả model ShuffleNet v2 sau khi Systh€SiS -s« «<< cssccss
Hình 4.61 Báo cáo timing cua model ShuffleNet v2
Trang 12DANH MỤC BANG
Bang 2.1: Kiến trúc tong thé của mơ hình ShuffleNet v2 - 2 e+ce+c+ee+eerxeei 5
Bang 2.2: So sánh các phương pháp Sigmoid trên FPGA[19] - «<<««+s 13 Bảng 2.3: Cơng thức tính hàm Sigmoid theo phương pháp PLANJI9] - 14
Bảng 3.1: Kết quả lượng tử hĩa mơ hÌnh 2-55 ©5£5+e2S++£+eExczx+rxerxrzreersees 19
Bảng 3.2: Các tín hiệu của khối M7122 PẼẼẺe -(‹(‹(‹((‹1Õ- 23
Bảng 3.3: Các tín hiệu của khối CONVOLUTION oecsesscsscsssessessesssessessesseessecsesssessesssessee 24Bảng 3.4: Các tham số cầu hình khối ConvoÏMiOn ©-2- 5c ©5e+cs+cscc+csccss 25Bảng 3.5: Các tín hiệu khối CONV_CONKIOLLED ceccccccccsssscsvscscscsvsvscscscscssscsssssssesssereseseees 26Bang 3.6: Cac tham số cầu hình khối conv_confrolÏer -: se se se sstsEsEstsessssa 26Bảng 3.7: Số lượng trong số khối ConnVOÌufÏOH - 5-55 2+£+S++E£+E+E+EeEEeEzEerkeree 35
Bang 3.8: Các tín hiệu cua khối Depthwise Convolution «s55 <ss+++s + 36
Bang 3.9: Các tham số cau hình khối Depthwise Convolution -:-2-5s 37
Bang 3.10: Số lượng trọng số của 3x3DWConv -5-©52©c<+cc+cscsrtezresrseei 39Bang 3.11: Các tín hiệu của khối XI COND -5-©22-55c©522c<+£tec£+rertezreerseei 41
Bảng 3.12: Các tham số cầu hình khối 1X1 CONV cecessescsssesssssssssstessessessssssssessesseessees 42Bảng 3.13: Số lượng trọng số khối 1X] Convolution ccccceccessesssecsesssessessessvessessessseeses 44Bảng 3.14: Các tín hiệu cua khối POỌÏT1Đ KH rc 44Bang 3.15: Các tham số cầu hình cho khối POỌÏH s5 ni, 45Bảng 3.16: Các tín hiệu của khối LiTi€AF - 5-52 52+s+EE+E+E+EE+EeEEeE+Eerkerrkereee 49Bảng 3.17: Các tham số cầu hình cho khối LiH€AF + 52 s+s+e+E+£s+£eztecsez 50
Bảng 5.1: Tĩm tắt kết quả đạt được hiỆn TqiÌ cv ksitssrkesrrssersse 86
Trang 13DANH MỤC TU VIET TAT
CNN Convolutional Neural Network
FPGA Field Programmable Gate Arrays
SoCs Systerm on Chips
ASIC Application-specific Integrated circuit GPU Graphics Processing Unit
ARM Advanced RISC Machine
HDL Hardware Description Language
VHDL VHSIC Hardware Description Language
FIFO First In, First Out
DSP Digital Signal Processing
ReLU Rectified Linear Unit
FSM Finite State Machine
MAC Multiply - Accumulate
Trang 14TÓ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ô hìnhmạng ShuffleNet bằng ngôn ngữ đặc tả phần cứng Systerm 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 dé có thé tạo thành nhiều mô hìnhmạng khác nhau Mô hình mạng ShuffleNet được thiết kế dé giảm bớt chi phí tínhtoán và bộ nhớ phù hợp cho thiết bi di động và nhúng có tài nguyên hạn chế nên nhóm
sử dụng kỹ thuật lượng tử hóa (quantization) dé tối ưu tài nguyên sử dụng, tăng tốc
độ xử lý mà vẫn đảm bảo được độ chính xác của mô hình.
Sau khi thiết kế phần cứng, tiến hành kiểm tra và đánh giá thiết kế dựa trên kết
quả mô phỏng So sánh cho thấy mô hình phần cứng hoạt động đúng như mong đợi,đảm bảo được tính chính xác cao tương ứng như mô hình phần mềm
Kết quả tóm tắt của khóa luận bao gồm:
s* Thiết kế được các khối trong mô hình mạng có thê thay đổi được tham sé
s* Các khói thiết kế phan cứng chạy được ở tan số 142 MHz
s* Kiểm tra các khối hoạt động đúng chức năng theo mô hình mạng
Trang 15Chương 1 GIỚI THIỆU TONG QUAN
1.1 Giới thiệu dé tài
Mạng Nơ-ron Tích Chập, hay CNNs, đã trở thành một phần quan trọng trong cácứng dụng liên quan đến thị giác máy tính, xử lí ảnh, nhận diện đối tượng, phân đoạnhình ảnh, nhận diện biển báo và chữ viết, phân tích cảm xúc cho đến phát hiện khuônmặt [1][2] Việc triển khai CNN đòi hỏi một lượng lớn tài nguyên vi cả dữ liệu trunggian và trọng số đều cần không gian lưu trữ lớn và quá trình tính toán phức tạp Trongthập kỷ vừa qua, sự đa dạng về đữ liệu và cấu trúc mạng được cải thiện dẫn đến độchính xác của các giải thuật dựa trên CNN đã được nâng cao hon rất nhiều Một kiếntrúc CNN chuẩn bao gồm một số lớp tích chập và lớp phân loại, điều này đòi hỏi lênđến hàng tỷ phép toán cho mỗi ảnh đầu vào, vì vậy việc sử dụng GPU dé hỗ trợ quátrình huấn luyện và suy luận trở nên phô biến [3] Tuy nhiên, mức tiêu thụ năng lượngcủa chúng (>100 W) quá cao, điều này đặt ra van dé với các ứng dụng nhúng, nơi mà
ở đó tiêu chuẩn hiệu quả năng lượng là cực kỳ quan trọng Do đó, các giải pháp về
bộ tăng tốc phần cứng dựa trên FPGA, SoCs, và ASICs đã được đề xuất như mộtphương án thay thế [4][5][6] Các bộ tăng tốc dựa trên FPGA được đánh giá cao vì
khả năng tái cau hình, thời gian chuyên đổi nhanh (so với ASICs), hiệu suất tốt và
tiêu thụ năng lượng ưu việt (so với GPU).
1.2 Các nghiên cứu liên quan
Các thiết bị nhúng như drone, smartphone, robot, có tài nguyên bị hạn chếnhưng lại đòi hỏi tốc độ cao Vậy nên có nhiều mô hình mạng nơ-ron được phát triển
để có thé đáp ứng được yêu cầu trên song cũng đạt được hiệu suất tốt Ví dụ,GoogLeNet [7] tăng độ sâu của mạng với độ phức tạp thấp hơn nhiều so với việc xếpchồng các lớp tích chập đơn giản SqueezeNet [8] giảm đáng ké các tham số và tínhtoán trong khi vẫn duy trì độ chính xác ResNet [9][10] sử dụng cấu trúc bottleneckhiệu qua dé đạt được hiệu suất ấn tượng SENet [11] giới thiệu một đơn vị kiến trúcgiúp nâng cao hiệu suất với chi phí tính toán thấp Mô hình NASNet di động được đề
Trang 16xuất đạt được hiệu suất tương đương với mô hình ShuffleNet (26,0% @ 564 MFLOPs
so với 26,3% @ 524 MFLOPs đối với lỗi phân loại ImageNet)
Một mô hình đã đạt được nhiều thành tích trong xu hướng này phải kế đếnMobileNet [12], mô hình này sử dụng kiến trúc Depthwise Separable Convolution
Depthwise Separable Convolution được giới thiệu lần đầu trong [12], nó bao gồm haiphần theo thứ tự là: Depthwise Convolution (Có ý tưởng tương tự grouped
convolution, nhưng khác ở chỗ nó chia features map đầu vào thành các nhóm có sốkênh cố định bằng 1) và Pointwise Convolution (Sau khi thực hiện DepthwiseConvolution, thì nhân tích chập tiếp với 1x1 Convolution để có thể tùy chỉnh số lượngkênh theo mong muốn) Kiến trúc này cực kỳ hiệu quả so với tích chập tiêu chuẩn.Tuy nhiên nó chỉ áp dụng bộ lọc với các kênh đầu vào chứ không kết hợp chúng détạo ra các đặc trưng mới Vì vậy, cần có một lớp bồ sung đề tính toán sự kết hợp tuyếntính đầu ra của tích chập theo chiều sâu thông qua | x 1 convolution dé tao ra các đặctrưng mới này MobileNet sử dụng các phép tích chập có thê phân tách theo chiều
sâu 3 x 3, sử dung tính toán ít hơn từ 8 đến 9 lần so với các phép tích chập tiêu chuẩn
và độ chính xác chỉ giảm một chút.
Sau đó, vào năm 2017 kiến trúc CNN tính toán cực kỳ hiệu quả được giới thiệu
có tên ShuffleNet [13], được thiết kế đặc biệt cho các thiết bị đi động có khả năng
tính toán rất hạn chế (ví dụ: 10-150 MFLOPs) Các thử nghiệm về phân loại ImageNet
và phát hiện đối tượng MS COCO chứng minh hiệu suất vượt trội của ShuffleNet so
với các câu trúc khác, vi dụ: lỗi top-1 thấp hơn (tuyệt đối 7,8%) so với MobileNet
[12] gần đây trong nhiệm vụ phân loại ImageNet, với ngân sách tính toán là 40 MFLOPs Trên thiết bị di động dựa trên ARM, ShuffleNet đạt được tốc độ thực tế
gấp ~13x so với AlexNet trong khi vẫn duy trì độ chính xác tương đương Dé hiệnthực thiết kế phần cứng hiện nay có nhiều hướng tiếp cận khác nhau, theo cách truyềnthống, HDL, giỗng như VHDL va Verilog, được sử dung dé mô tả một thiết kế Tuynhiên, đây là một quá trình tốn nhiều thời gian và lâu dài, đòi hỏi kiến thức chuyên
sâu về phân cứng cơ bản.
Trang 17Bài báo [14] đã triển khai mô hình ShuffleNet trên FPGA theo hướng sử dụngngôn ngữ lập trình mức cao bằng việc sử dụng framework OpenCL Sử dụng các
phương pháp mô hình song song được đề xuất, bài báo đã thiết kế bộ tăng tốc FPGA
song song cho ShuffleNet Khả năng tăng tốc FPGA bằng cách tính toán theopipeline, cơ chế kênh, đọc tổng hợp và vector hóa kernel Hưởng lợi từ những cáchtiếp cận này, kết quả thử nghiệm cho thấy bộ tăng tốc ShuffleNet FPGA song songcủa bài báo thé hiện mức độ song song mô hình cao trong khi vẫn duy trì độ chính
xác Khi sử dụng hai FPGA, nó đạt được tốc độ cao hơn 1,42x va mức tiêu thụ điệnnăng khoảng 20 W, đồng thời giảm 34% dung lượng bộ nhớ.
1.3 Tổng quan đề tài
Trong đề tài này, nhóm tập trung nghiên cứu về cách mà pytorch lượng tử hoá
mô hình, từ đó đề xuất ý tưởng thiết kế phần cứng Tiến hành thiết kế các lớp có trong
s* Hiểu cách hoạt động của mô hình mạng, cách truyền dt liệu
s* Thiết kế các khối có trong mô hình mạng ShuffleNet v2 (Convolution, Group
Convolution, Depthwise Separable Convolution, Pooling, Fully Connected,
Channel Shuffle, hàm kích hoạt ReLu) có thé thay đổi được tham số
s* Thiết kế mô hình chạy ở tần số > 100 Mhz.
Trang 18Chương2 CƠ SỞ LÝ THUYET
Trong bối cảnh ngày càng phát triển của học sâu và trí tuệ nhân tạo, việc tối ưu
mô hình mạng tích chập cho thiết bị di động ngày càng cấp thiết Thiết bị di độngthường gặp phải những hạn chế về tài nguyên tính toán và năng lượng, khiến việctriển khai một mô hình CNN phức tạp trở thành thách thức lớn
ShuffleNet ra đời là một giải pháp tối ưu đề giải quyết vấn đề này Mô hình nàykhông chỉ duy trì hiệu suất cao mà còn giảm thiểu đáng kể chi phí tính toán và yêucầu tài nguyên phần cứng, giúp nó trở thành sự lựa chọn lý tưởng cho các thiết bị di
động.
Nhóm áp dụng thêm kỹ thuật lượng tử hóa mô hình học dé trién khai cho mô hìnhhọc sâu Lượng tử hóa là kỹ thuật thực hiện tính toán và lưu trữ các trọng số theo kiểu
dữ liệu có số lượng bit thấp hơn số cham động Kỹ thuật lượng tử hóa giúp cho việc
xử lý phép tính nhanh hơn, tốn ít tài nguyên hơn, song độ chính xác của mô hình vẫn
được đảm bảo.
2.1 M6 hình mạng ShuffleNet v2
ShuffleNet v2[15] là một mạng kiến trúc mạng tích chập được thiết kế nhằm mụcđích giảm thiểu độ phức tạp tính toán nhưng vẫn duy trì được sự chính xác cao Mộtđặc điểm mau chốt dé ShuffleNet v2 đảm bao được điều ấy chính là khối ShuffleUnit, một khối cơ bản dé giúp các kênh có thé tăng cường khả năng truyền tải thôngtin giữa các phần khác nhau trong mạng Shuffle Unit được lặp lại ở các giai đoạnkhác nhau (Stage2, Stage3, Stage4) dé cải thiện khả năng biểu diễn và việc học của
mạng Việc lặp lại này giúp mô hình giúp mô hình học được các đặc trưng phức tạp
hơn và cải thiện hiệu suất nhận dạng hình ảnh
Bang 2.1: Kiến trúc tổng thể của mô hình ShuffleNet v2
Output Channel
Layer Output KSize | Stride | Repeat P
Size 0.5x 1x 1.5x 2x
Image | 224x224 | 3 3 3 3
Trang 19nhánh có thể giữ nguyên đầu vào, trong khi nhánh kia thực hiện phép tính convolution
phức tạp hơn điều này giúp giảm tông số phép tính cần thiết Khi hai nhánh thực hiệnhai nhiệm vụ khác nhau, tài nguyên phần cứng cũng được sử dụng hiệu quả hơn, đặcbiệt là những phần cứng có tài nguyên hạn chế như thiết bị di động
Sự kết hợp khéo léo giữa các kỹ thuật này không chỉ giúp giảm số lượng phép
tính toán mà còn duy trì độ chính xác cao trong việc nhận dạng và phân loại hình ảnh.
Với những ưu điểm vượt trội này, ShuffleNet v2 đã nhanh chóng được ứng dụng rộngrãi trong các lĩnh vực yêu cầu tính toán trên thiết bị di động, chăng hạn như nhận diện
khuôn mặt, phân loại ảnh và các ứng dụng AI khác.
Trang 20Hinh 2.1 (a) Shuffle Basic Unit; (b) Shuffle Unit spatial down sampling
ShuffleNet v2 không chỉ tập trung vào việc giảm thiêu số lượng phép tính toán
mà còn chú trọng về việc duy trì độ chính xác cao trong việc nhận dạng và phân loạihình ảnh Điều này được thực hiện thông qua kỹ thuật ChannelShuffle, giúp trộn lẫn
các kênh đâu vào đê tôi ưu việc học và xử lý thông tin của mạng.
Với mô hình mạng ShuffleNet v2 trên nhóm đã xây dựng kiến trúc phần cứng
như Hình 2.2 dưới đây:
Trang 21Shuffle Unit (b)
Output size 112x112x24
Output size 7x7x1024
Output size 1x1x1024
Output size 56x56x24 Output size
14x14x96
Output size
Hình 2.2 Tổng quan kiến trúc của khối ShuffleNet v2 0.5x
2.2 Convolution Layer - Lớp tích chap
Phép tích chập là một phép trượt qua các điểm trong tat cả điểm của hình anh détìm ra các đặc trưng của hình ảnh băng cách sử dụng các bộ lọc (kernel) Các bộ lọc
là một ma trận nhỏ thường có kích thước là 3x3 hoặc 5x5 được trượt qua các dữ liệu
đầu vào dé thực hiện phép toán convolution Phép tích chập còn có hai tham số Stride
và Padding Bộ lọc sẽ trượt qua từng điểm ảnh, các bước nhảy của điểm ảnh phụ
thuộc vào tham số Stride, đồng thời đữ liệu đầu ra cũng bị ảnh hưởng tới tham số này
Việc thực hiện phép toán convolution với bộ lọc kernel thông thường sẽ làm giảm
Trang 22kích thước nên tham số Padding sẽ tạo các điểm ảnh bằng 0 xung quanh dữ liệu đầuvào dé duy trì kích thước của ảnh.
Hình 2.3 Phép tích chập với kích thước bộ lọc là 3, Stride = 1, Padding = 1
Đầu ra của các lớp convolution được gọi là feature map, nó đại diện cho các đặctrưng đã học Các đặc trưng thường là những đặc trưng về cạnh, góc, hoặc có các mẫu
phức tạp hơn.
2.3 Depthwise Separable Convolution
Depthwise Separable Convolution là một kỹ thuật tối ưu hóa trong các mạng
nơ-ron tích chập, kỹ thuật này được chia thành hai bước chính:
s* Depthwise Convolution: Trong bước này, mỗi kênh (channel) của đầu vào
được tích chập với một bộ lọc riêng biệt và giữ nguyên số kênh đầu ra bằng
số kênh đầu vào Điều này có nghĩa là mỗi bộ lọc chỉ xử lý một kênh riêng lẻ,không phải toàn bộ kênh như trong tích chập truyền thống Mục đích là tríchxuất đặc trưng cho từng kênh một cách độc lập, giảm thiểu số lượng phép toán
tích chập so với phương pháp thông thường.
*
>~ Pointwise Convolution (1x1 Convolution): Ap dụng các bộ loc có kích thước
1x1 vào các kênh đầu ra của Depthwise Convolution giúp tổng hợp các kênh
đầu ra và thường làm thay đổi độ sâu của ảnh, cho phép mô hình học các biểu
diễn phức tạp hơn và tăng cường khả năng phân loại và nhận dạng hình ảnh.
Trang 23Separable Convolution).
Shuttle |
Hình 2.5 Channel Shuffle trong ShuffleNet[13]
10
Trang 242.5 Pooling Layer - Lớp tổng hop
Ham pooling layer làm giảm kích thước của feature map bang cách chọn các giátrị lớn nhất (max pooling), giá trị nhỏ nhất (min pooling), giá trị trung bình (averagepooling) của ảnh giúp giảm số lượng tính toán của dữ liệu, nhưng vẫn giữ được độsâu của ảnh Hơn nữa, lớp này còn lọc được những đặc trưng nỗi trội giúp mô hìnhhuấn luyện tốt hơn, đóng vai trò trong việc cải thiện hiệu suất và hiệu quả của môhình Lớp tổng hợp cũng có hai thông số Stride và Padding, Stride được định nghĩa
< a; —
` AVG POOLING(
Hình 2.6 Pooling với kích thước bộ loc = 2, Stride = 2
giống với Stride ở lớp tích chập
2.6 Fully Connected Layer - Lớp kết nối tổng hợp.
Lớp Fully Connected là một thành phần quan trọng của mô hình CNN Lớp nàythường ở cuối mô hình Chức năng chính của lớp này là chuyên đổi các feature mapđược tạo ra từ các lớp tích chập và pooling trước đó thành đầu ra cuối cùng phù hợp
với nhiệm vụ của mô hình, chảng hạn như phân loại, phát hiện vật thể hoặc nhận dạng
hình ảnh.
Đầu vào của lớp sẽ được làm phẳng thành ma trận một chiều, và tất cả các điểm
của ma trận được nhân với | trọng số để được 1 nốt đầu ra Hình 2.7 mô tả lớp Fully
Connected với 3 nôt đâu vào và 5 not dau ra.
11
Trang 25Input Output
Hình 2.7 Ví dụ lớp Fully Connected với dau vào là 3 và dau ra là 5
2.7 Ham kích hoạt ReLU
Hàm kích hoạt là một phần quan trọng trong mạng nơ-ron, giúp giới thiệu tính
phi tuyến tính vào mô hình, điều này là cần thiết dé mô hình có thé học và biểu diễncác quan hệ phi tuyến giữa các đầu vào và đầu ra
Một trong những hàm kích hoạt phổ biến nhất là ReLU (Rectified Linear Unit),được áp dụng nhiều trong các mô hình mạng tích chập Hàm ReLU có công thức đơngiản và dễ tính toán, giúp giảm thiêu thời gian tính toán của mô hình Công thức hàm
Trang 262.8 Ham kích hoạt Sigmoid
Ham kích hoạt Sigmoid là hàm nhận một giá trị thực và chuyền nó thành một giá
trị trong khoảng (0;1) Hàm kích hoạt Sigmoid có công thức như sau:
1
ƒŒœ) = (2.2)
D6 thi ham kich hoat Sigmoid:
Hinh 2.9 Do thi ham kich hoat sigmoidHiện nay có nhiều phương pháp dé hiện thực ham Sigmoid trên FPGA như Look-
up Table, A-law approximation, Alipi and Storti-Gajani Approximation [16], PLAN
approximation [17], Piecewise second-order approximation [18] Mỗi phương pháp
có những ưu và nhược điểm khác nhau được tổng hợp trong [19] với kết qua như sau:
Bang 2.2: So sánh các phương pháp Sigmoid trên FPGA[19]
Phương pháp | Maximum error(%) | Mean error(%) Số lượng gate
Trang 27Có thé thấy, phương pháp PLAN cho ra sai số ít cũng như tài nguyên sử dụng
khá ít.
Hình 2.10 Biểu do sai số của phương pháp PLAN[19]
Trên Hình 2.10 biểu thị sai số khi sử dụng fixed point 32 bit (16 bit phần thậpphân) chỉ có sai số khoảng 0.02 Vì vậy, nhóm sử dụng phương pháp PLAN để hiện
thực hàm sigmoid với công thức như sau:
Bang 2.3: Công thức tính hàm Sigmoid theo phương pháp PLAN[19]
PLAN(X) Điều kiện
1 IXI>5 0.03125IXI + 0.84375 2,375 <IXI< 5 0.0125IXI + 0.625 1 <IXI < 2.375
Trang 28Lượng tử hóa là kỹ thuật thực hiện tính toán và lưu trữ các đặc trưng bang kiéu
dữ liệu có độ chính xác thấp hơn so với độ chính xác của kiểu dữ liệu số cham động
Một mô hình được lượng tử hóa thực hiện tính toán trên số nguyên thay vì số chấmđộng trên một số giai đoạn tính toán hoặc cả quá trình của mô hình Điều này cho
phép lưu trữ mô hình nhỏ gọn hơn và thực hiện các phép toán vector hiệu quả hơn
trên nhiều loại phần cứng Kỹ thuật này đặc biệt hữu ích trong quá trình xử lý, vì nó
giảm thiểu chi phí tính toán rất nhiều mà không làm giảm độ chính xác của kết quả
quá nhiêu.
FP32 Quantization INT8
Hình 2.12 Ví dụ về lượng tử hóa từ số Floating Point sang số Integer 8
Kỹ thuật lượng tử hóa là việc ánh xạ từ một số Floating Point (Xfloat) thành một
số nguyên (xint) Công thức toán hoc của quá trình lượng tử hóa dữ liệu:
Xfloat = (ine — Z) * S (2.4)
Xing = RE + Z (2.5)
15
Trang 29Với S và Z lần lượt là hệ số Scale và Zero Point Hiện nay các thư viện lớn về
lĩnh vực AI đã hộ trợ kỹ thuật lượng tử hóa và giúp người dùng lượng tử hóa mô hình
học sâu và tìm ra các hệ số S, Z cho người dùng
Hiện nay có 3 phương pháp lượng tử hóa[20]:
** Dyamic Quantization: trong phương pháp nay chỉ tập trung vào việc
chuyên đồi trọng của mô hình trong khi giữ các giá trị kích hoạt ở độ chính
xác ban đầu Các hệ số Scale và Zeropoint bị thay đổi theo dữ liệu ảnh đầu
Next layer fp32
và
ao.
Previos layer fp32 Convolution fp32
Hinh 2.13 Dyamic Quantization cua Pytorch
s* Static Quantization: hay con được gọi là Post Training Quantization,
không giống với Dynamic Quantization các hệ số Scale va Zero Pointđược tinh trước và có giá trị cố định tai mỗi tang Các hệ số được tinh
chỉnh bằng cách xử lý một lượng lớn dữ liệu trong quá trình lượng tử hóa
Phương pháp này có ưu điểm là giảm kích thước trọng số là giảm số lượngphép tính tuy nhiên vì các hệ số Scale là Zero Point lúc này là cô định với
Next layer int8
mọi dau vào nên làm giảm độ chính xác.
Previos layer int8 Convolution int8
Weight int8
Hình 2.14 Static Quantization cua Pytorch
*
>* Static Quantization Aware Trainning: không giống với hai phương pháp
trên, phương pháp này được thực hiện trong quá trình huấn luyện mô hình
học sâu Sau khi huấn luyện mô hình băng số chấm động 32 bit sau đó ta
chèn các lớp Fake Quantization vào đê làm tròn các sô châm động gan
16
Trang 30băng với sô nguyên dé đạo hàm cho các hàm mat mát Các hệ sô Scale và
Zero Point ở dạng sô nguyên và được cô định từng kênh với mọi đâu vào.
Do đó, phương pháp này mang lại độ chính xác cao hơn hai phương pháp
Convolution fp32 Next layer fp32
phương pháp này bởi đảm bảo độ chính xác của mô hình sau khi lượng tử hóa và kích
thước mô hình được giảm đáng kẻ
atte BlRfos (ii mammal —- placental ——- carnivore canine — oo —Wiorlionditg — Imix
H5 iets cab es Boni was
1m.
craft —- watercraft — sailingvessel ———~ sailboat — trimaran
Hình 2.16 Một số hình ảnh của tập dữ liệu ImageNet[21]
17
Trang 31ImageNet là cở sở cho nhiều mô hình học sâu nổi tiếng như AlexNet, VGG,ResNet và ShuffleNet Các mô hình này đã đạt được thành tựu đáng kê trong việcnhận dạng hình ảnh và được áp dụng rộng rãi trong thực tế.
Trong thiết kế và quá trình huấn luyện mô hình như ImageNet đóng vai trò quan
trọng trong việc cung cấp dữ liệu phong phú và đa dạng để đảm bảo mô hình học
được những đặc trưng và đạt được hiệu suất cao trong quá trình nhận dạng hình ảnh
18
Trang 32Chương 3 MÔ HÌNH THIẾT KE
Thiết kế ShuffleNet bao gồm cả phần mềm và phần cứng Trên phần mềm,ShuffleNet được triển khai bằng các thư viện học sâu phổ biến như Pytorch, giúp dễdàng tiếp cận Về phần cứng, mô hình được tối ưu hóa đề chạy trên các thiết bị FPGA
sử dụng ngôn ngữ đặc tả phần cứng Systerm Verilog dé thực hiện các phép tính song
song và giảm thiêu độ trễ cho mô hình.
3.1 Hiện thực lượng tử hóa
Nhóm quyết định chọn mô hình ShuffleNet_v2_x0.5 dé triển khai, hiện Pytorch
có cung cấp sẵn mô hình đã lượng tử hóa Kết quả độ chính xác sau khi lượng tử hóa
bằng kỹ thuật quantization-aware training được trình bày trong bảng bên dưới
Bảng 3.1: Kết quả lượng tử hóa mô hình
Acc@] Acc@S Total params | File size
32-bit float 60.552 81.746 1366792 5.3MB
8-bit quant 57.972 79.78 1366792 1.5MB
Có thé thấy việc chuyền từ số floating point 32-bit xuống số nguyên 8-bit nhưng
độ chính xác của mô hình không bị giảm quá nhiều Kiến trúc phần cứng của nhómthiết kế sẽ phần lớn sử dụng các phép tính trên số nguyên 8-bit cho việc nhân tíchchập Tính toán số thực fix point (16-bit phan nguyén va 16-bit phan thap phan) trén
các tính toán quantize, bias, dequantize, va ham kích hoạt.
Trong quá trình huấn luyện và lượng tử hóa bằng phương pháp StaticQuantization Aware Trainning, các trọng số sẽ được làm tròn đến các giá trị lượng tử
hóa, nhưng phép tính thực tế vẫn được thực hiện ở dạng floating-point Khi đó, thực
hiện phép tích chập trên phần cứng ở dạng số nguyên cần phải có bước chuyền đổitrọng số về dạng số fixed-point dé thực hiện
19
Trang 33Gọi X,, X; là pixel ảnh, S, và Z, là scale và zeropoint của đặc trưng anh đầu ra
từ lớp trước Yị, Y là giá tri weight, Sy va Zz là scale và zeropoint của lớp hiện tai.
X,, Xz, Yị, Yo ở dạng số nguyên 8-bit, xị, x2, yị, y; ở dang số thực floating point
32-bít.
Xa Sth, (3.1) Yast, (3.2)
Ä;= +Zi (3.3) Y= 2+5; (3.4)
Nếu tính toán tích chập thông thường trên số floating point thì phương trình nhân
tích chập như sau:
X‡.ÿ¡ + X;.y;+::=a (3.5)
Phép tích chập được thực hiện số nguyên 8-bit sẽ có phương trình như sau:
X1.¥, + X;.Y¿ + =A (3.6)
Bây giờ, can tìm môi quan hệ và biên đôi từ A sang a, thực hiện phép biên đôi
trên phương trình số nguyên ta được:
Trang 34Sau khi biến đổi, giá trị thực a có thé được chuyền đổi bởi những tham số hiện
có khi làm việc với tính toán tích chập SỐ nguyên 8-bit Dựa vào biểu thức (3.12) sẽxây dựng được kiến trúc cho khối dequantize như Hình 3 1
convolutional 8 bit
MAC kernel
Zero_point (feature_map)
di đúng thứ tự mà không bị mất đi trong quá trình xử lý
21
Trang 36Tin hiéu ƯO Mô tả
clk I | Tín hiệu xung clock
rst I | Tín hiệu reset tích cực mức cao
en I Tín hiệu cho phép khối convolutional hoạt
động
load_ weight I | Tín hiệu cho phép nạp trọng số
weight_addr[31:0] I | Dia chỉ của trọng s6
weight_data[63:0] I | Dữ liệu trong SỐ
data_in [8*3-1:0] L | Dữ liệu đầu vào
data_out [31:0] O | Dữ liệu đầu ra
valid O | Tín hiệu thông báo kết quả dau ra sẵn sàng
3.3 Thiết kế bộ đệm dữ liệu
Trước khi thực hiện tích chập thì dữ liệu pixel phải đảm bảo đủ số lượng và cóthứ tự chính xác, nhóm thiết kế một bộ đệm có hình dạng mô phỏng tương tự như bêndưới Cấu tạo gồm các D Flip Flop nối tiếp nhau theo dạng shift register, ở đây sốlượng DFF có thé thay đổi dựa trên các tham số pKERNEL SIZE va
pDATA_ WIDTH Chính vì vậy việc sử dung kernel có kích thước 3x3 hay 5x5,
có thê được đáp ứng bởi thiết kế này
23
Trang 37Hình 3.4 Thiết kế khối buffer
Sau khi có đầy đủ dữ liệu, ta tiến hành thực hiện phép tích chap
3.4 Khối Convolution
Khối tích chập thực hiện chức năng của tầng tích chập trong mạng mô hình học
sâu Khôi tích chập của nhóm bao gôm những tín hiệu sau:
Bảng 3.3: Các tín hiệu của khói Convolution
Tín hiệu VO Mô tả
clk I | Tín hiệu xung clock
rst I | Tín hiệu reset tích cực mức cao
en I Tín hiệu cho phép khôi convolutional hoạt
động
rd_en O | Tín hiệu dé đọc dữ liệu từ FIFO
data_valid I Tin hiệu trả lại từ FIFO báo dữ liệu đầu vào
đã san sang
load_weight I | Tín hiệu cho phép nạp trọng số
weight_addr[31:0] I | Dia chỉ của trọng sỐ
weight_data[63:0] I | Dữ liệu trọng số
ie “pIN_CHANNEL-1:0) | 1 | Piligu đầu vào
8 pIN_ CHANNEL" g} | O | Dữ leu dau ra
valid O | Tín hiệu thông báo kết qua đầu ra sẵn sàng
24
Trang 38Đề sử dụng khối tích chập, ta cần phải cấu hình những tham số sau:
Bang 3.4: Các tham số cau hình khối Convolution
Tham số Mô tảpINPUT_WIDTH Chiều rộng đặc trưng đầu vàopINPUT_HEIGHT Chiêu cao đặc trung đầu vàopIN CHANNEL Số lượng kênh đầu vào
pOUT_CHANNEL Số lượng kênh đầu ra
pKERNEL_SIZE Kích thước bộ loc pPADDING Kích thước vùng đệm pSTRIDE Bước nhảy
pOUTPUT_PARALLEL Số lượng kênh đầu ra tính cùng một lúcpWEIGHT_DATA_WIDTH | Chiều rộng của trọng số
pWEIGHT_ADDR Địa chỉ trọng số
pACTIVATION Hàm kích hoạt Relu
Thanh phan khối Convolution bao gồm một khối cnn_buffer dé đệm dữ liệu đầuvào, một khối thực hiện phép tích chập (pe_conv_mac) và một khối điều khiển(conv_controller) dé điều khiên hai khối trên
Trang 393.4.1 Khối conv_controller
Khôi điêu khiên cnn_controller có những tín hiệu sau:
Bảng 3.5: Các tín hiệu khối conv_controller
Tín hiệu ƯO Mô tả
clk I | Tín hiệu xung clock
rst I | Tin hiệu reset tích cực mức cao
en I | Tín hiệu cho phép khối controller hoạt động
Tín hiệu thông báo hoạt động của khối
pe_ready I
pe_conv_mac
rd_en O | Tín hiệu doc dữ liệu từ FIFO
is_padding 0 Tin hiệu đê dựa chọn dữ liệu đệm hay đặc
trưng đâu vào buffer en O | Tín hiệu cho phép buffer hoạt động
pe_en O Tin hiệu cho phép khôi pe_conv_mac hoạt
động
Các tham sô của khôi conv_controller là:
Bảng 3.6: Các tham số cấu hình khối conv_controller
pINPUT_ WIDTH Chiều rộng đặc trưng đầu vào
pINPUT_ HEIGHT Chiêu cao đặc trung đâu vào
pKERNEL_SIZE Kích thước bộ lọc
pPADDING Kích thước vùng đệm
Vi khôi controller có những tham sô có thê câu hình theo nhu câu của người dùng
nên máy trang thái có thé thay đồi tùy theo cấu hình như Hình 3.6 và Hình 3.7 mô ta.Khối conv_controller sẽ có 2 trạng thái hoạt động chính:
26
Trang 40++ Trang thái IDLE: ở trạng thái này, các giá tri padding (nếu có) và giá trị pixel
đọc từ fifo sẽ được đưa vào khối cnn_buffer cho đến khi đủ dit liệu để phục
vụ cho việc trượt kernel nhân tích chập Việc này được xác định dựa trên hai
bộ đêm col_cntr_r và row_cntr_r.
pPADDING != 0 pSTRIDE ==
l(col_cntr_r == pKERNEL_ SIZE -1 &&
row_cntr_r >= pKERNEL_SIZE-1 && l((pe_cntr_r == pOUTPUT_WIDTH-1) &&
pe_ready pe_ready)
col_cntr_r == pKERNEL_SIZE -1 &&
row_cntr_r >= pKERNEL_SIZE-1 &&
pe_ready
S1 (COMPUTATION)
row_cntr_r >= pKERNEL_SIZE-1 && !((pe_cntr_r == pOUTPUT_WIDTH)
pe_ready && stride_row_cntr_r == 0) && pe_ready)
col_cntr_r == pKERNEL_SIZE -1 &&
row_ cntr_r >= pKERNEL_SIZE-1 &&
pe_ready && stride row_ cntr_r ==
S1 (COMPUTATION)
computation = 1
pe_en =
computation = 0
pe_en=0
(pe_cntr_r == pOUTPUT_WIDTH) computation &&
&& pe_ready stride_col_cntr_r ==0 &&
stride_row_cntr_r == 0
Hình 3.7 Sơ do chuyển trạng thái ứng với padding != 0 va stride > 1
s* Trạng thai COMPUTATION: sau khi có đủ dữ liệu thì tín hiệu computation
bật lên 1, tín hiệu pe_en sẽ được quyết định không chỉ dựa vào computation
mà còn phụ thuộc stride_col_cntr_r, stride_row_cntr_r (hai tín hiệu này giúp
cho việc xác định kernel đang trượt theo stride nào) Khi pe_en băng một, cho
phép toàn bộ khối pe_conv_ mac hoạt động.
27