Giới thiệu dự án

Trong kỷ nguyên bùng nổ của trí tuệ nhân tạo (AI) và thị giác máy tính (Computer Vision), các mô hình mạng nơ-ron tích chập (Convolutional Neural Networks - CNNs) đã trở thành nền tảng cốt lõi trong các bài toán nhận diện đối tượng, phân đoạn hình ảnh, xe tự hành và phân tích video thời gian thực. Tuy nhiên, việc đưa các mô hình CNN phức tạp lên các hệ thống nhúng (Embedded Systems), thiết bị bay không người lái (Drones), hay thiết bị cận biên (Edge Devices) gặp phải rào cản nghiêm trọng về giới hạn tài nguyên tính toán và dung lượng bộ nhớ.

+-----------------------------------------------------------------------------------+
|                              HỆ THỐNG EDGE AI                                     |
|  +-----------------------+     +-----------------------+     +-----------------+  |
|  |  Camera / Cảm biến   | --> |  IP ShuffleNet FPGA   | --> |  Quyết định     |  |
|  |  (Input 224x224x3)   |     |  (Xử lý INT8 @142MHz) |     |  Thời gian thực |  |
|  +-----------------------+     +-----------------------+     +-----------------+  |
+-----------------------------------------------------------------------------------+

Mặc dù các bộ xử lý đồ họa (GPU) mang lại năng lực tính toán dấu phẩy động vượt trội, công suất tiêu thụ điện năng lớn (thường vượt quá $100\text{ W} - 300\text{ W}$) khiến chúng không khả thi trên các thiết bị chạy bằng pin hoặc yêu cầu khắt khe về nhiệt năng. Do đó, các bộ tăng tốc phần cứng chuyên dụng dựa trên FPGA (Field Programmable Gate Arrays) và ASIC trở thành xu thế tất yếu nhờ khả năng xử lý song song ở cấp độ phần cứng, độ trễ thấp và hiệu quả năng lượng (Energy Efficiency) vượt trội.

Đề tài "Nghiên cứu và hiện thực IP ShuffleNet" do nhóm tác giả Trần Đăng Hậu và Lê Quang Phong (Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – ĐHQG-HCM), dưới sự hướng dẫn của ThS. Trương Văn Cương thực hiện, tập trung vào việc thiết kế một bộ lõi IP phần cứng (Hardware IP Core) tối ưu cho kiến trúc mạng ShuffleNet v2 bằng ngôn ngữ đặc tả phần cứng SystemVerilog, kết hợp kỹ thuật lượng tử hóa 8-bit (INT8 Quantization) nhằm tăng tốc suy luận trên nền tảng FPGA.

+------------------------------------------------------------------------------------+
|                               MỤC TIÊU DỰ ÁN                                       |
|  1. Thiết kế bộ IP lõi ShuffleNet v2 tham số hóa (Parameterized RTL)              |
|  2. Ứng dụng Static Quantization Aware Training (INT8) giữ độ chính xác           |
|  3. Tối ưu hóa bộ nhân DSP48E2 với kỹ thuật Dual-Multiplication                   |
|  4. Tần số hoạt động phần cứng đạt mức Fmax >= 100 MHz (Thực tế đạt 142 MHz)       |
+------------------------------------------------------------------------------------+

Các mục tiêu cụ thể của đề tài:

  1. Phân tích và mô hình hóa: Nghiên cứu cấu trúc ShuffleNet v2 ($0.5\times$), xây dựng luồng lượng tử hóa nhận biết tham số (Static Quantization Aware Training - QAT) từ số thực dấu phẩy động 32-bit (FP32) sang số nguyên 8-bit (INT8) trên PyTorch.
  2. Thiết kế vi kiến trúc RTL tham số hóa: Hiện thực toàn bộ các khối chức năng cốt lõi bằng SystemVerilog bao gồm: Standard Convolution, Depthwise Separable Convolution ($3\times3$ Depthwise Conv, $1\times1$ Pointwise Conv), Channel Shuffle, Max/Average Pooling, Fully Connected, Dequantization/Quantization Datapath và hàm kích hoạt ReLU.
  3. Tối ưu hóa tài nguyên phần cứng: Khai thác cấu trúc DSP48E2 trên FPGA thông qua kỹ thuật gộp 2 phép nhân 8-bit vào một khối DSP duy nhất, giảm 50% số lượng DSP tiêu thụ.
  4. Kiểm tra và đánh giá (Verification): Mô phỏng kiểm tra chức năng (Behavioral Simulation) và kiểm tra sau tổng hợp (Post-Synthesis Simulation) trên Vivado, đảm bảo dữ liệu phần cứng khớp hoàn toàn với mô hình phần mềm.

Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Triển khai mạng nơ-ron tích chập trên các thiết bị biên đòi hỏi sự đánh đổi giữa độ chính xác nhận dạng, độ trễ và tài nguyên phần cứng. Các mô hình truyền thống như AlexNet hay VGG tiêu tốn hàng trăm triệu tham số và hàng tỷ phép tính Multiply-Accumulate (MAC).

Tiêu chí so sánh GPU truyền thống (NVIDIA Jetson / Desktop) Bộ tăng tốc OpenCL / HLS trên FPGA IP RTL thuần (SystemVerilog - Đề tài)
Mức tiêu thụ điện năng Cao ($15\text{ W} - 150\text{ W}$) Trung bình ($10\text{ W} - 25\text{ W}$) Cực thấp ($2\text{ W} - 8\text{ W}$)
Hiệu suất / Watt Trung bình Tốt Xuất sắc (Tối ưu chu kỳ clock)
Mức độ kiểm soát phần cứng Thấp (Phụ thuộc driver/CUDA) Trung bình (Trình biên dịch tự động sinh RTL) Tuyệt đối (Thiết kế chi tiết từng pipeline register)
Tối ưu tài nguyên DSP Không áp dụng Khó can thiệp cấu trúc DSP sâu Tiết kiệm 50% DSP nhờ cấu trúc Dual Multiplier
Độ trễ xử lý (Latency) Biến thiên theo OS scheduler Thấp Cố định và có tính tiền định (Deterministic)

Phân tích yêu cầu chức năng (Phương pháp MoSCoW)

  • Must have (Bắt buộc): Thiết kế hoàn chỉnh các khối $3\times3$ Conv, Depthwise Conv, Pointwise Conv ($1\times1$), Channel Shuffle, Global Pooling, Linear; xử lý dữ liệu chuẩn INT8; hoạt động đúng tại tần số tối thiểu 100 MHz.
  • Should have (Nên có): Tham số hóa toàn bộ kích thước ma trận (pINPUT_WIDTH, pIN_CHANNEL, pOUT_CHANNEL, pKERNEL_SIZE, pSTRIDE, pOUTPUT_PARALLEL); tích hợp bộ chia và bộ cộng dồn pipeline tốc độ cao.
  • Could have (Có thể mở rộng): Tích hợp hàm kích hoạt Sigmoid xấp xỉ bằng phương pháp PLAN (Piecewise Linear Approximation of Nonlinearities); cơ chế nạp trọng số qua bus AXI.
  • Won't have (Chưa thực hiện): Huấn luyện trực tiếp trên chip FPGA (On-chip Training); hỗ trợ cấu trúc mạng biến đổi động trong thời gian thực.

Thiết kế hệ thống

Kiến trúc tổng thể của ShuffleNet IP được tổ chức dưới dạng luồng dữ liệu liên tục (Dataflow Architecture). Giữa các tầng tích chập và xử lý đặc trưng, hệ thống sử dụng các hàng đợi FIFO (First In, First Out) để đồng bộ hóa xung nhịp và chuyển tiếp dữ liệu mượt mà, hạn chế tắc nghẽn đường truyền (backpressure).

                  +-------------------------------------------------------------+
                  |                      SHUFFLENET IP CORE                     |
                  |                                                             |
+----------+      |  +-------------+    +---------------+    +---------------+  |      +-----------+
| data_in  | ---> |  | Conv Layer  | -> | FIFO Buffer 1 | -> | Shuffle Unit  |  | ---> | data_out  |
| [23:0]   |      |  | (Stride 2)  |    +---------------+    | Stage 2, 3, 4 |  |      | [31:0]    |
+----------+      |  +-------------+                         +---------------+  |      +-----------+
                  |         ^                                        |          |            ^
+----------+      |         |                                        v          |            |
| Trọng số | ---> |  +-------------+                         +---------------+  |            |
| Weights  |      |  | Memory/Regs |                         | Global Pooling|  |            |
+----------+      |  +-------------+                         +---------------+  |            |
                  |                                                  |          |            |
                  |                                                  v          |            |
                  |                                          +---------------+  |            |
                  |                                          | Fully Connect | -+------------+
                  |                                          +---------------+  |
                  +-------------------------------------------------------------+

Công thức toán học và chuyển đổi lượng tử hóa

Mô hình chuyển đổi kiểu dữ liệu thực $x_{\text{float}}$ sang số nguyên 8-bit $x_{\text{int}}$:

$$x_{\text{float}} = (x_{\text{int}} - Z) \times S$$

Trong đó $S$ là hệ số tỉ lệ (Scale factor) và $Z$ là điểm không (Zero-point). Trong tầng tích chập phần cứng, phép nhân giữa ma trận đầu vào $X$ và trọng số $Y$ được ánh xạ về miền nguyên:

$$\sum (X_i + Z_1)(Y_i + Z_2) \cdot S_1 S_2 = \left( \sum X_i Y_i + Z_2 \sum X_i + Z_1 \sum Y_i + N \cdot Z_1 Z_2 \right) S_1 S_2$$

Đầu ra sau khi cộng Bias và đi qua hàm phi tuyến ReLU được chuyển đổi ngược về dạng lượng tử hóa của tầng tiếp theo:

$$x_{\text{next_int}} = \text{Clamp}\left(\left\lfloor \frac{x_{\text{dequant}}}{S_{\text{out}}} \right\rceil + Z_{\text{out}}, -128, 127\right)$$

+-----------------------------------------------------------------------------------------+
|                                    DATAPATH PIPELINE                                    |
|                                                                                         |
| +-----------+     +------------+     +-------------+     +--------+     +-------------+ |
| | 8-bit MAC | --> | Adder Tree | --> | Dequantize  | --> |  ReLU  | --> |  Quantize   | |
| | (DSP48E2) |     |  (Sum INT) |     | (Fixed Pnt) |     | (Act.) |     | (Out INT8)  | |
| +-----------+     +------------+     +-------------+     +--------+     +-------------+ |
+-----------------------------------------------------------------------------------------+

Bảng thông số giao tiếp của khối ShuffleNet IP

Tín hiệu Hướng (I/O) Độ rộng bit Chức năng chi tiết
clk Input 1 Xung clock hệ thống (Tần số kiểm tra 142 MHz)
rst Input 1 Tín hiệu Reset đồng bộ mức cao
en Input 1 Tín hiệu cho phép khối IP bắt đầu quá trình tính toán
load_weight Input 1 Tín hiệu kích hoạt nạp tham số trọng số từ bộ nhớ ngoài
weight_addr Input 32 Địa chỉ thanh ghi nạp trọng số
weight_data Input 64 Bus dữ liệu trọng số đầu vào (Nạp song song 8 tham số INT8)
data_in Input 24 Dữ liệu pixel đầu vào (3 kênh RGB $\times$ 8-bit)
data_out Output 32 Kết quả nhãn phân loại hoặc xác suất đầu ra
valid Output 1 Báo hiệu kết quả suy luận tại data_out hợp lệ

Methodology

Quy trình phát triển tuân thủ phương pháp thiết kế đồng bộ Phần mềm - Phần cứng (Hardware-Software Co-Design):

+-----------------------------------------------------------------------------------+
|                         QUY TRÌNH CO-DESIGN & CO-VERIFICATION                     |
|                                                                                   |
|  [PyTorch Model Training]                                                         |
|           |                                                                       |
|           v                                                                       |
|  [Quantization-Aware Training (INT8)] ---> [Trích xuất Weight, Scale, ZeroPoint]  |
|           |                                                      |                |
|           v                                                      v                |
|  [Sinh tập Golden Output Vectors]                       [SystemVerilog RTL Code]  |
|           |                                                      |                |
|           +------------------> [So sánh Bit-True] <--------------+                |
|                                (Khớp 100% INT8)                                   |
+-----------------------------------------------------------------------------------+
  • Giai đoạn 1: Chuẩn hóa mô hình (PyTorch 2.1): Huấn luyện mô hình ShuffleNet v2 trên tập dữ liệu ImageNet, chèn các khối Fake-Quantization để thực hiện Static Quantization Aware Training (QAT). Trích xuất ma trận trọng số, hệ số Scale và Zero-point cố định cho từng kênh.
  • Giai đoạn 2: Đặc tả kiến trúc phần cứng (SystemVerilog IEEE 1800-2017): Thiết kế mô hình phần cứng tham số hóa, chia nhỏ thành các module controller FSM (Finite State Machine) và datapath pipeline.
  • Giai đoạn 3: Tối ưu mức cổng và DSP: Áp dụng kỹ thuật ghép kênh DSP48E2, thiết kế bộ đệm dòng (Line Buffer) bằng thanh ghi dịch (Shift Register D-Flip-Flop) để tối ưu luồng trượt của kernel $3\times3$.
  • Giai đoạn 4: Xác thực và đánh giá (Vivado 2022.2): Thực hiện mô phỏng Bit-True Verification giữa kết quả RTL Simulation và kết quả dự đoán của PyTorch.

Implementation và kết quả

Development process

1. Thiết kế bộ điều khiển (Controller FSM) và bộ đệm (Buffer)

Khối conv_controller quản lý trạng thái nạp dữ liệu và tính toán. FSM chuyển đổi giữa trạng thái IDLE (nạp dữ liệu đệm từ FIFO và xử lý padding nếu pPADDING != 0) sang COMPUTATION (kích hoạt pe_en để tính toán tích chập theo stride).

                      +-------------------+
                      |       IDLE        | <---+
                      +-------------------+     |
                        | (Đủ dữ liệu ban đầu)  |
                        v                       | (Kết thúc ma trận)
                      +-------------------+     |
                      |    COMPUTATION    | ----+
                      |   (pe_en = 1)     |
                      +-------------------+

2. Kỹ thuật ghép đôi phép nhân trên khối DSP48E2 (DSP Dual-Multiplication)

Trong kiến trúc Xilinx 7-Series và UltraScale+, DSP48E2 hỗ trợ bộ nhân $27\times18$-bit. Vì dữ liệu đầu vào và trọng số chỉ có độ rộng 8-bit, ta có thể đóng gói 2 phép nhân độc lập $a \times c$ và $b \times c$ vào cùng một khối DSP:

// Trích xuất giải thuật đóng gói 2 phép nhân 8-bit vào 1 DSP48E2
module dsp_dual_mult (
    input  logic signed [7:0]  a, // Trọng số Kernel 1
    input  logic signed [7:0]  b, // Trọng số Kernel 2
    input  logic signed [7:0]  c, // Điểm ảnh đầu vào (Feature Map)
    output logic signed [15:0] ac, // Kết quả phép nhân a * c
    output logic signed [15:0] bc  // Kết quả phép nhân b * c
);
    logic signed [26:0] dsp_in_a;
    logic signed [17:0] dsp_in_d;
    logic signed [44:0] dsp_out;

    // Gán dữ liệu với kỹ thuật dịch bit để cách ly miền kết quả
    assign dsp_in_a = {a, 18'b0};
    assign dsp_in_d = {{19{b[7]}}, b};

    // Phép nhân DSP: (dsp_in_a + dsp_in_d) * c
    always_comb begin
        dsp_out = (dsp_in_a + dsp_in_d) * c;
        ac      = dsp_out[33:18] + dsp_out[15]; // Tách kết quả ac
        bc      = dsp_out[15:0];                // Tách kết quả bc
    end
endmodule

+------------------------------------------------------------------------------------+
|                       CƠ CHẾ GHÉP 2 PHÉP NHÂN TRÊN 1 DSP                           |
|                                                                                    |
|           a [7:0]  --> Dịch trái 18-bit -------------------+                       |
|                                                            v                       |
|           b [7:0]  --> Sign-extend -----------------> (Bộ cộng) -> [* c] -> dsp_out|
|                                                                                |   |
|           ac = dsp_out[33:18] + dsp_out[15] <----------------------------------+   |
|           bc = dsp_out[15:0]                <----------------------------------+   |
+------------------------------------------------------------------------------------+

Testing và validation

Quá trình kiểm thử được thực hiện theo quy trình nghiêm ngặt từ từng module đơn lẻ (Unit Test) đến toàn bộ mô hình hoàn chỉnh (Top-level Test).

+-----------------------------------------------------------------------------------+
|                            QUY TRÌNH KIỂM THỬ TỪNG CẤP ĐỘ                         |
|                                                                                   |
|   +-----------------------+     +-----------------------+     +----------------+  |
|   | 1. Unit Test Khối đơn | --> | 2. Shuffle Unit Stage | --> | 3. Toàn bộ IP  |  |
|   | (Conv, Pool, FC, DW)  |     | (Stage 2, 3, 4)       |     | (ShuffleNet v2)|  |
|   +-----------------------+     +-----------------------+     +----------------+  |
+-----------------------------------------------------------------------------------+
  1. Unit Test từng khối: Kiểm tra các khối $3\times3$ Convolution, $3\times3$ Depthwise Conv, $1\times1$ Conv, MaxPool, Global Average Pooling và Fully Connected.
  2. So sánh Bit-True: So sánh trực tiếp từng giá trị ma trận đầu ra giữa kết quả mô phỏng phần cứng (SystemVerilog Testbench) với ma trận tensor tính toán từ PyTorch.
  3. Phân tích Timing và Tài nguyên sau tổng hợp (Post-Implementation Timing Analysis): Đảm bảo không vi phạm thời gian thiết lập (Setup time) và thời gian giữ (Hold time) ở tần số mục tiêu.
Khối chức năng Chu kỳ nạp trọng số Chu kỳ tính toán (Cycles) Trạng thái xác thực phần cứng vs phần mềm
Convolution Layer ($3\times3$) 118 163,652 Khớp 100% từng điểm ảnh
$3\times3$ Depthwise Conv 27 38,416 Khớp 100% từng kênh đặc trưng
$1\times1$ Pointwise Conv 144 75,264 Khớp 100% ma trận đầu ra
ShuffleUnit Stage 2 288 113,680 Khớp 100% phân nhánh và shuffle
Global Avg Pooling 0 3,136 Khớp chính xác với sai số fixed-point $\le 0.01%$
Fully Connected Layer 1,000 1,024 Khớp 100% nhãn phân loại Top-1

Kết quả đạt được

  • Tần số hoạt động cực đại ($F_{\text{max}}$): Đạt 142 MHz trên FPGA (vượt xa mục tiêu thiết kế ban đầu đặt ra là $> 100\text{ MHz}$).
  • Độ chính xác mô hình: Sau khi lượng tử hóa QAT INT8, mô hình đạt độ chính xác tương đương phiên bản FP32 trên tập ImageNet (chênh lệch Top-1 Accuracy $< 0.8%$).
  • Thời gian trễ suy luận: Xử lý một khung hình $224\times224\times3$ hoàn chỉnh trong thời gian thực, đáp ứng tốc độ xử lý trên 30 FPS.
+-----------------------------------------------------------------------------------+
|                             TỔNG KẾT HIỆU NĂNG ĐẠT ĐƯỢC                           |
|                                                                                   |
|   [Tần số hoạt động]      : 142 MHz (Mục tiêu > 100 MHz -- Vượt 42%)              |
|   [Tiết kiệm DSP]         : Giảm 50% số lượng DSP48E2 nhờ kỹ thuật Dual Multiplier|
|   [Độ chính xác phần cứng]: Khớp 100% kết quả lượng tử hóa INT8 PyTorch           |
|   [Dung lượng mô hình]    : Giảm ~4x so với lưu trữ FP32                          |
+-----------------------------------------------------------------------------------+

Đổi mới và đóng góp

  1. Kiến trúc phần cứng tối ưu cho ShuffleNet v2: Thiết kế thành công toàn bộ kiến trúc mạng ShuffleNet v2 bằng SystemVerilog nguyên bản (RTL thuần), không phụ thuộc vào các công cụ sinh mã tự động HLS, mang lại khả năng kiểm soát pipeline tối ưu ở mức chu kỳ clock.
  2. Kỹ thuật Dual-Multiplication trên DSP48E2: Khai thác đặc tính phần cứng DSP của FPGA để nhân đồng thời 2 trọng số 8-bit với 1 điểm ảnh đầu vào chỉ trong một khối DSP48E2. Cải tiến này giúp giảm 50% số lượng DSP cần sử dụng so với thiết kế truyền thống:

$$\text{Số DSP tiêu thụ} = \frac{N_{\text{channels_in}} \times N_{\text{channels_out}}}{2} \times p\text{OUTPUT_PARALLEL}$$

  1. Tham số hóa linh hoạt (High Parameterization): Toàn bộ các module được thiết kế với generic parameters, cho phép người dùng tùy biến kích thước ảnh, kích thước bộ lọc, stride, padding, và số kênh song song một cách linh hoạt cho các mô hình CNN khác.
  2. Hiện thực hàm kích hoạt Sigmoid bằng phương pháp PLAN: Nhóm nghiên cứu tích hợp phương pháp xấp xỉ tuyến tính từng đoạn PLAN (Piecewise Linear Approximation of Nonlinearities), giúp giảm sai số xuống dưới $0.05%$ mà không làm bùng nổ tài nguyên logic LUT như phương pháp Look-up Table (LUT ROM).

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng trong đời sống

                      +------------------------------------------+
                      |       HỆ THỐNG GIÁM SÁT GIAO THÔNG       |
                      +------------------------------------------+
                                           |
                                           v
+-----------------------+     +--------------------------+     +--------------------+
| Camera giao thông     | --> | IP ShuffleNet FPGA       | --> | Nhận diện biển số, |
| (Hình ảnh thực tế)    |     | (Phân loại phương tiện)  |     | Vi phạm tức thì    |
+-----------------------+     +--------------------------+     +--------------------+
  • Hệ thống giám sát giao thông thông minh (ITS): Triển khai IP ShuffleNet trên các camera thông minh gắn tại giao lộ để đếm xe, phân loại phương tiện và phát hiện vi phạm với độ trễ dưới $20\text{ ms}$.
  • Thiết bị bay không người lái (UAV/Drone): Nhận diện địa hình, tránh vật cản tự động trong điều kiện năng lượng pin giới hạn.
  • Robot công nghiệp và IoT: Kiểm tra lỗi sản phẩm trên dây chuyền sản xuất tốc độ cao (Smart Factory Inspection).

Kiến trúc tích hợp hệ thống SoC (System-on-Chip)

IP ShuffleNet được thiết kế để kết nối trực tiếp với vi xử lý điều khiển (ARM Cortex-A53/A72 trên dòng Xilinx Zynq-7000 hoặc Zynq UltraScale+) qua giao tiếp tiêu chuẩn công nghiệp AXI:

+-----------------------------------------------------------------------------------+
|                        KIẾN TRÚC TÍCH HỢP HỆ THỐNG TRÊN SOC                       |
|                                                                                   |
|   +------------------------------------+                                          |
|   |       Processing System (PS)       |                                          |
|   |         (ARM CPU Core)             |                                          |
|   +------------------------------------+                                          |
|                     |                                                             |
|          AXI-Lite Control Bus (Điều khiển nạp tham số & kích hoạt)                |
|                     |                                                             |
|                     v                                                             |
|   +------------------------------------+                                          |
|   |       Programmable Logic (PL)      |                                          |
|   |  +------------------------------+  |        +------------------------------+  |
|   |  |        AXI DMA Engine        | <=======> |   Bộ nhớ DDR ngoài (DRAM)    |  |
|   |  +------------------------------+  | (Ảnh & | (Chứa ảnh gốc & tập trọng số)|  |
|   |                 ||                 | Weights|                              |  |
|   |          AXI4-Stream Bus           | Data)  +------------------------------+  |
|   |                 vv                 |                                          |
|   |  +------------------------------+  |                                          |
|   |  |     IP SHUFFLENET CORE       |  |                                          |
|   |  |  (142 MHz, INT8 Datapath)    |  |                                          |
|   |  +------------------------------+  |                                          |
|   +------------------------------------+                                          |
+-----------------------------------------------------------------------------------+

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Kiến trúc hiện tại tối ưu tốt nhất cho kích thước lô bằng một ($\text{Batch Size} = 1$), phù hợp cho tác vụ suy luận thời gian thực trên từng khung hình từ camera nhưng chưa tối ưu cho suy luận xử lý dữ liệu hàng loạt (Batch Processing).
  • Băng thông truy xuất trọng số phụ thuộc vào độ rộng bus dữ liệu nạp ban đầu; cần bố trí cấu trúc bộ nhớ đệm On-chip BRAM lớn hơn khi mở rộng lên mô hình ShuffleNet $2.0\times$.

Hướng phát triển tiếp theo

  • Tích hợp giao tiếp chuẩn AXI4-Stream & DMA Controller: Đóng gói IP hoàn chỉnh với giao diện AXI-DMA để cắm trực tiếp vào hệ sinh thái Xilinx Vivado IP Integrator.
  • Mở rộng hỗ trợ cấu trúc mạng linh hoạt: Nâng cấp controller để hỗ trợ thêm các khối Residual Block (ResNet), Squeeze-and-Excitation (SENet) và MobileNet v3.
  • Kỹ thuật nén trọng số nâng cao: Thử nghiệm lượng tử hóa phi đối xứng INT4/FP8 và kỹ thuật cắt tỉa trọng số thưa (Weight Pruning) để tối ưu băng thông bộ nhớ hơn nữa.

Đối tượng hưởng lợi

+-----------------------------------------------------------------------------------+
|                             ĐỐI TƯỢNG HƯỞNG LỢI                                   |
|                                                                                   |
|  [Sinh viên & Nghiên cứu sinh]  --> Tài liệu tham khảo chuẩn RTL SystemVerilog    |
|  [Kỹ sư phần cứng FPGA]         --> Kỹ thuật tối ưu hóa DSP48E2 & Memory Line Buff|
|  [Doanh nghiệp Edge AI & IoT]   --> Giải pháp tăng tốc AI tiết kiệm năng lượng    |
+-----------------------------------------------------------------------------------+
  • Sinh viên và Nghiên cứu sinh ngành Kỹ thuật Máy tính / Điện tử: Nguồn tài liệu thực tế về phương pháp thiết kế phần cứng cho mạng học sâu từ lý thuyết thuật toán đến mã nguồn SystemVerilog và kiểm thử Bit-True.
  • Kỹ sư thiết kế vi mạch và FPGA: Kỹ thuật khai thác tối đa tài nguyên DSP48E2 và thiết kế bộ đệm dòng (Line Buffer) dịch chuyển cho các phép tích chập $3\times3$.
  • Doanh nghiệp phát triển sản phẩm Edge AI: Kiến trúc IP Core hoàn chỉnh, tiết kiệm năng lượng, sẵn sàng tích hợp trên các dòng FPGA tầm trung và giá rẻ để thương mại hóa giải pháp camera AI.

Câu hỏi thường gặp

1. Yêu cầu tài nguyên phần cứng FPGA tối thiểu để triển khai IP ShuffleNet này là gì?

Hệ thống yêu cầu các dòng FPGA có tối thiểu $20\text{K} - 50\text{K}$ Logic Cells (LUTs/FFs), khoảng $100 - 250$ khối DSP48E2/DSP48E1 và $2 - 5\text{ MB}$ On-chip Block RAM (BRAM). Các dòng chip như Xilinx Zynq-7020, Artix-7 XC7A100T, hoặc Zynq UltraScale+ ZU3EG hoàn toàn đáp ứng tốt.

2. Độ chính xác nhận dạng có bị suy giảm nghiêm trọng khi chuyển từ FP32 sang INT8 không?

Nhờ áp dụng kỹ thuật Static Quantization Aware Training (QAT) trên PyTorch, các sai số làm tròn được mô hình tự động bù đắp trong quá trình huấn luyện. Kết quả thực nghiệm cho thấy độ chính xác Top-1 trên tập ImageNet chỉ giảm dưới $0.8%$ so với mô hình số thực 32-bit nguyên bản, trong khi dung lượng bộ nhớ giảm tới $75%$.

3. Làm thế nào để nạp bộ trọng số mới khi thay đổi tập dữ liệu huấn luyện?

IP được thiết kế chân tín hiệu load_weight, weight_addrweight_data riêng biệt. Người dùng chỉ cần huấn luyện mô hình mới trên phần mềm, xuất mảng trọng số dạng nhị phân/hex và kích hoạt tín hiệu nạp trọng số vào các thanh ghi/BRAM nội bộ mà không cần phải tổng hợp lại toàn bộ thiết kế phần cứng.

4. Tại sao đề tài chọn ngôn ngữ SystemVerilog thay vì sử dụng High-Level Synthesis (C/C++ HLS)?

Thiết kế trực tiếp bằng SystemVerilog (RTL thuần) cho phép kỹ sư can thiệp chính xác vào cấu trúc từng thanh ghi pipeline, kiểm soát chi tiết trạng thái FSM, tối ưu luồng dữ liệu của bộ đệm dòng và đặc biệt là áp dụng được kỹ thuật ghép 2 phép nhân vào 1 DSP48E2 — điều mà các trình biên dịch HLS tự động rất khó tối ưu tương đương.

5. Khả năng tương thích của IP với các kiến trúc CNN khác như MobileNet hoặc ResNet ra sao?

Các khối phần cứng cốt lõi trong đề tài ($3\times3$ Convolution, $3\times3$ Depthwise Conv, $1\times1$ Pointwise Conv, Max/Avg Pooling, ReLU) đều được tham số hóa toàn diện thông qua các parameters. Do đó, có thể tái sử dụng trực tiếp các khối này để ghép nối thành mạng MobileNet v1/v2 hoặc ResNet Bottleneck blocks một cách dễ dàng.


Kết luận

Đề tài "Nghiên cứu và hiện thực IP ShuffleNet" đã giải quyết trọn vẹn bài toán tối ưu hóa và tăng tốc phần cứng cho mạng nơ-ron tích chập trên nền tảng FPGA. Bằng sự kết hợp chặt chẽ giữa thuật toán lượng tử hóa Static Quantization Aware Training (INT8) và nghệ thuật thiết kế vi kiến trúc trên SystemVerilog, nghiên cứu đã chứng minh tính khả thi vượt trội của việc triển khai Deep Learning trên các hệ thống nhúng có tài nguyên hạn chế.

Những đóng góp nổi bật về vi kiến trúc — đặc biệt là giải pháp tối ưu hóa bộ nhân DSP48E2 Dual-Multiplication giúp tiết kiệm 50% tài nguyên DSP và đạt tần số hoạt động thực tế 142 MHz — khẳng định năng lực tự chủ trong thiết kế vi mạch và lõi IP xử lý AI chuyên dụng. Đây là nền tảng vững chắc để tiếp tục mở rộng phát triển các dòng vi xử lý trí tuệ nhân tạo (NPU/AI Accelerator) hiệu năng cao phục vụ cho các ứng dụng công nghệ tương lai.