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) đã chứng minh hiệu năng vượt trội trong các bài toán phân loại hình ảnh, nhận diện khuôn mặt và phát hiện đối tượng. Tuy nhiên, các kiến trúc CNN tiêu chuẩn như VGG16 với 16 lớp yêu cầu tới hơn 31 Giga-Operations per second (GOp/s) cùng hàng chục triệu tham số, đòi hỏi tài nguyên tính toán khổng lồ.

Theo thống kê công nghiệp, việc xử lý dữ liệu AI phân tán tại các máy chủ đám mây (Cloud Computing) đang đối mặt với những rào cản nghiêm trọng: độ trễ truyền thông cao (thường từ 50-200ms), nguy cơ nghẽn băng thông khi hàng triệu camera đồng thời truyền dữ liệu, cùng các vấn đề về bảo mật thông tin cá nhân. Đối với các hệ thống nhúng thời gian thực như xe tự hành, máy bay không người lái (UAV) và robot công nghiệp, việc suy luận (inference) và huấn luyện (training) trực tiếp tại thiết bị đầu cuối (Edge Device) với mức tiêu thụ năng lượng thấp là yêu cầu mang tính sống còn.

Vấn đề nghiên cứu cụ thể

Hầu hết các giải pháp tăng tốc AI phần cứng hiện nay tập trung vào triển khai suy luận trên GPU hoặc ASIC đắt đỏ, hoặc các thiết kế trên FPGA chỉ hỗ trợ quá trình lan truyền thuận (Forward Propagation) với kiểu dữ liệu dấu phẩy động 32-bit (FP32) cồng kềnh. Điều này dẫn đến sự lãng phí tài nguyên khối logic (LUTs/Flip-Flops) và DSP, đồng thời triệt tiêu khả năng tự học thích ứng (On-chip Learning) tại biên.

Mục tiêu đề tài

  1. Thiết kế và hiện thực kiến trúc phần cứng bộ tăng tốc mạng nơ-ron đa tầng (4-layer Multi-Layer Perceptron - MLP/CNN) ở mức truyền thanh ghi (RTL - Register Transfer Level).
  2. Tích hợp đầy đủ cả hai chu trình: lan truyền thuận (Forward Propagation) và lan truyền ngược (Backward Propagation / On-chip Training) trực tiếp trên phần cứng.
  3. Tối ưu hóa việc sử dụng tài nguyên phần cứng bằng cách chuyển đổi toàn bộ pipeline tính toán sang kiểu dữ liệu số nguyên (Integer Arithmetic) với độ rộng bit có thể tùy biến ($WV = 16\text{-bit}$).
  4. Hiện thực cơ chế đồng bộ dữ liệu phi tuần tự thông qua giao thức bắt tay (Handshake Valid/Ready) và cấu trúc hàng đợi phân phối (Broadcaster/Combiner).
  5. Đạt tần số hoạt động mục tiêu $170\text{ MHz}$ trên dòng chip FPGA cao cấp Xilinx Virtex-7.
  6. Kiểm chứng độ chính xác giải thuật trên tập ký tự chữ cái (Alphabet $9\times 9$) và bộ dữ liệu chữ số viết tay chuẩn MNIST ($0-9$).

Phương pháp giải quyết và Kết quả kỳ vọng

Đề tài xây dựng một kiến trúc phần cứng tham số hóa hoàn chỉnh bằng ngôn ngữ Verilog HDL. Bằng việc lượng tử hóa dữ liệu sang dạng số nguyên có dấu 16-bit và sử dụng hàm kích hoạt ReLU bão hòa (Saturated ReLU), bộ tăng tốc giảm thiểu diện tích logic và điện năng tiêu thụ so với các bộ tính toán dấu phẩy động truyền thống. Kết quả tính toán phần cứng kỳ vọng đạt sai số không vượt quá $\pm 1$ LSB (Least Significant Bit) so với mô hình tham chiếu phần mềm (Golden Software Model), đồng thời duy trì thông lượng xử lý cao thông qua kiến trúc Pipelining đa tầng.

Phạm vi và Giới hạn

  • Phạm vi: Thiết kế phần cứng mô hình mạng nơ-ron 4 lớp (1 Input Layer, 2 Hidden Layers, 1 Output Layer), bao gồm các khối Forward, Backward, cập nhật Bias/Weight và hàm kích hoạt ReLU trên FPGA Xilinx Virtex-7.
  • Giới hạn: Bộ tăng tốc tập trung vào kiến trúc xử lý dữ liệu số nguyên cố định 16-bit, chưa tích hợp bộ điều khiển bộ nhớ ngoài DDR SDRAM trên cùng một chip điều khiển SoC.

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

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

Các giải pháp xử lý mạng nơ-ron hiện nay được chia thành ba nhánh chính: xử lý tập trung trên Server/GPU, triển khai trên FPGA sử dụng OpenCL/High-Level Synthesis (HLS), và thiết kế phần cứng chuyên biệt RTL.

Tiêu chí so sánh GPU / Server (NVIDIA CUDA) FPGA OpenCL / HLS (Winograd/2D MAC) FPGA RTL FP32 (Huỳnh Vĩnh Phú, 2019) Đề tài: CNN Accelerator RTL Integer
Độ trễ xử lý (Latency) Cao (phụ thuộc mạng truyền dẫn) Trung bình ($10-30\text{ ms}$) Thấp ($<5\text{ ms}$) Cực thấp ($<2\text{ ms}$, real-time)
Mức tiêu thụ năng lượng Rất cao ($150\text{W} - 350\text{W}$) Trung bình ($25\text{W} - 45\text{W}$) Thấp ($10\text{W} - 15\text{W}$) Rất thấp ($<5\text{W}$ trên FPGA fabric)
Cơ chế tính toán FP32 / FP16 / INT8 FP32 / Fixed-point FP32 (32-bit Floating Point) 16-bit Signed Integer Quantized
Khả năng Training Toàn diện (Backpropagation) Hầu như chỉ hỗ trợ Inference Chỉ hỗ trợ Forward Inference Hỗ trợ cả Forward & On-chip Backward
Tần số hoạt động ($F_{\max}$) N/A (Core clock $\sim 1.5\text{GHz}$) $100\text{ MHz} - 150\text{ MHz}$ $166\text{ MHz}$ $170\text{ MHz}$
Khả năng tùy biến phần cứng Cố định kiến trúc vi xử lý Phụ thuộc trình biên dịch HLS Cố định khối FP32 Tùy biến tham số ($NI, NH, NO, WV$)

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc): Pipeline tính toán Forward và Backward; khối nhân tích lũy (Forward/Backward Maccum); khối kích hoạt ReLU; khối tính toán sai số Delta; khối cập nhật BiasWeight; giao thức Handshake Valid/Ready.
  • Should Have (Nên có): Chế độ hoạt động liên tục (Burst Mode) hỗ trợ thông lượng dữ liệu 1 chu kỳ/mẫu; cơ chế bão hòa dữ liệu (Saturation) tránh tràn số nguyên.
  • Could Have (Có thể có): Bộ điều chỉnh tốc độ học (Learning Rate Multiplier) thích ứng theo từng epoch.
  • Won't Have (Chưa thực hiện): Bộ giao tiếp bộ nhớ ngoài AXI-DDR Controller; khối chuẩn hóa Batch Normalization trên chip.

Thiết kế hệ thống

+---------------------------------------------------------------------------------------------------+
|                                   TOP-LEVEL CNN ACCELERATOR                                       |
|                                                                                                   |
|  +---------------+      +-------------------+      +-------------------+      +----------------+  |
|  |  INPUT LAYER  | ---> |  HIDDEN LAYER 0   | ---> |  HIDDEN LAYER 1   | ---> |  OUTPUT LAYER  |  |
|  | (Broadcaster) |      | (Maccum/Neuron/   |      | (Maccum/Neuron/   |      | (Maccum/Delta/ |  |
|  +---------------+      |  Delta/BiasWeight)|      |  Delta/BiasWeight)|      |  BiasWeight)   |  |
|         |               +-------------------+      +-------------------+      +----------------+  |
|         |                        ^                          ^                         ^           |
|         v                        |                          |                         |           |
|  [Teacher Signal] ---------------+--------------------------+-------------------------+           |
|                                  (Backward Error & Weight Update Path)                            |
+---------------------------------------------------------------------------------------------------+

Công nghệ và Môi trường phát triển

  • Ngôn ngữ mô tả phần cứng: Verilog HDL (Chuẩn IEEE 1364-2005).
  • Môi trường mô phỏng Pre-Synthesis: Mentor Graphics ModelSim-Altera 10.1d.
  • Môi trường tổng hợp và phân tích Post-Synthesis: Xilinx Vivado Design Suite 2020.2 / 2021.1.
  • Dòng vi mạch mục tiêu: Xilinx Virtex-7 FPGA (Board VC707 / Chip XC7VX485T-2FFG1761C).
  • Mô hình kiểm chứng đối chuẩn: Java Software Neural Engine (Golden Model).

Giao thức điều khiển luồng dữ liệu (Flow Control & Handshake)

Hệ thống sử dụng cơ chế truyền thông tin không đồng bộ thông qua cặp tín hiệu chuẩn:

  • Valid_AM_Input: Tín hiệu từ module phát xác nhận dữ liệu ngõ ra đã sẵn sàng và hợp lệ.
  • Ready_BM_State: Tín hiệu từ module nhận xác nhận bộ đệm bên trong có thể tiếp nhận dữ liệu mới. Quá trình chuyển giao dữ liệu (Data Transfer) chỉ xảy ra tại cạnh lên của xung clock khi cả hai tín hiệu Valid == 1Ready == 1. Hai module trung gian đóng vai trò điều hướng gồm:
  1. Broadcaster: Nhận dữ liệu từ 1 nguồn và phân phối đồng bộ tới 2 module đích (ví dụ: cấp dữ liệu song song cho ForwardMaccum và BiasWeight).
  2. Combiner: Thu thập dữ liệu từ 2 nguồn trước khi chuyển giao cho module xử lý tiếp theo, đảm bảo đồng pha dữ liệu tính toán.

Phương pháp luận (Methodology)

Dự án áp dụng quy trình phát triển phần cứng theo mô hình chữ V (V-Model for Hardware Engineering):

  1. Giai đoạn 1: Toán học hóa và Xây dựng phần mềm tham chiếu (Tuần 1 - 4): Xây dựng thuật toán Backpropagation sử dụng hoàn toàn phép tính số nguyên trên nền tảng Java để thiết lập cơ sở dữ liệu đối chuẩn (Ground Truth).
  2. Giai đoạn 2: Thiết kế kiến trúc RTL (Tuần 5 - 10): Mô đun hóa 5 khối chức năng cốt lõi (ForwardMaccum, BackwardMaccum, Neuron, Delta, BiasWeight), thiết kế các thanh ghi đường ống (Pipeline Registers).
  3. Giai đoạn 3: Mô phỏng chức năng Pre-Synthesis (Tuần 11 - 14): Kiểm tra từng khối đơn lẻ và toàn bộ hệ thống trên ModelSim-Altera 10.1d bằng Testbench tích hợp khối lưu trữ dữ liệu ảo Sink.
  4. Giai đoạn 4: Tổng hợp Logic và Tối ưu Timing Post-Synthesis (Tuần 15 - 18): Chạy tổng hợp trên Xilinx Vivado, phân tích Timing Slack, công suất tiêu thụ và phân bổ tài nguyên trên Virtex-7.
  5. Giai đoạn 5: Ứng dụng thực nghiệm (Tuần 19 - 22): Triển khai bài toán nhận diện bảng chữ cái và tập dữ liệu MNIST.
                    [Định nghĩa yêu cầu] ------------------> [Kiểm thử ứng dụng MNIST]
                             \                                     ^
                        [Mô hình Java] ----------------> [Đối chuẩn Pre-Synthesis]
                               \                             ^
                          [Thiết kế RTL] -------------> [Tổng hợp Logic Vivado]
                                 \                         ^
                                  +---> [Mô-đun hóa Verilog] +

Implementation và kết quả

Quy trình phát triển và Thuật toán cốt lõi

Kiến trúc mạng nơ-ron 4 lớp được thiết kế theo các phương trình toán học lượng tử hóa trực tiếp trên phần cứng:

1. Lan truyền thuận (Forward Propagation)

Trạng thái bên trong $z_j^{(l)}$ của nơ-ron thứ $j$ tại layer $l$ được tính toán qua khối ForwardMaccum: $$z_j^{(l)} = \sum_{i=1}^{N_{l-1}} w_{ji}^{(l)} a_i^{(l-1)} + b_j^{(l)}$$

Tín hiệu $z_j^{(l)}$ được đưa qua khối Neuron thực thi hàm kích hoạt Rectified Linear Unit (ReLU) có giới hạn bão hòa bit: $$a_j^{(l)} = \text{ReLU}(z_j^{(l)}) = \begin{cases} 0 & \text{khi } z_j^{(l)} \le 0 \ z_j^{(l)} & \text{khi } 0 < z_j^{(l)} < \text{MAX} \ \text{MAX} & \text{khi } z_j^{(l)} \ge \text{MAX} \end{cases}$$ Trong đó $\text{MAX} = 2^{WV-1} - 1$ tương ứng với giá trị nguyên dương lớn nhất của độ rộng bit $WV$.

2. Lan truyền ngược (Error Backpropagation)

Tại Output Layer, sai số $\delta_k^{(L)}$ được tính toán từ sự sai lệch giữa giá trị đầu ra $a_k^{(L)}$ và nhãn giám sát $t_k$ (Teacher Signal): $$\delta_k^{(L)} = (a_k^{(L)} - t_k) \cdot a'(z_k^{(L)})$$ Tại các Hidden Layer ($l = 1, 0$), sai số được truyền ngược từ layer kế tiếp ($l+1$) thông qua phép nhân ma trận trọng số chuyển vị tại khối BackwardMaccum: $$\delta_j^{(l)} = \left( \sum_{k} \delta_k^{(l+1)} w_{kj}^{(l+1)} \right) \cdot a'(z_j^{(l)})$$ Với đạo hàm hàm kích hoạt ReLU trên phần cứng: $$a'(z_j^{(l)}) = \begin{cases} 1 & \text{khi } 0 < z_j^{(l)} < \text{MAX} \ 0 & \text{trường hợp khác} \end{cases}$$

3. Cập nhật Trọng số và Bias (Weight & Bias Update)

Khối BiasWeight thực hiện cập nhật trọng số theo thuật toán Gradient Descent với tốc độ học $\eta$ (Learning Rate): $$\Delta w_{ji}^{(l)} = -\eta \cdot \delta_j^{(l)} \cdot a_i^{(l-1)}$$ $$\Delta b_j^{(l)} = -\eta \cdot \delta_j^{(l)}$$ $$w_{ji}^{(l)}(\text{new}) = w_{ji}^{(l)}(\text{old}) + \Delta w_{ji}^{(l)}$$ $$b_j^{(l)}(\text{new}) = b_j^{(l)}(\text{old}) + \Delta b_j^{(l)}$$

// Trích xuất đoạn mã Verilog RTL mô tả khối tính toán Forward Maccum (MulSum Tree)
module ForwardMaccum #(
    parameter WV = 16,
    parameter N_INPUT = 3
)(
    input  wire                   clk,
    input  wire                   rst_n,
    input  wire [WV-1:0]          iData_AM_State0 [0:N_INPUT-1],
    input  wire [WV-1:0]          iData_AM_Weight [0:N_INPUT-1],
    input  wire [WV-1:0]          iData_AM_Bias,
    input  wire                   iValid_AM,
    output wire                   oReady_AM,
    output reg  [WV-1:0]          oData_BM_Accum0,
    output reg                    oValid_BM,
    input  wire                   iReady_BM
);
    reg signed [2*WV-1:0] mult_res [0:N_INPUT-1];
    reg signed [2*WV:0]   sum_res;
    integer idx;

    assign oReady_AM = iReady_BM | ~oValid_BM;

    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            oValid_BM <= 1'b0;
            oData_BM_Accum0 <= {WV{1'b0}};
        end else if (iValid_AM && oReady_AM) begin
            sum_res = {{WV+1{iData_AM_Bias[WV-1]}}, iData_AM_Bias};
            for (idx = 0; idx < N_INPUT; idx = idx + 1) begin
                mult_res[idx] = $signed(iData_AM_State0[idx]) * $signed(iData_AM_Weight[idx]);
                sum_res = sum_res + mult_res[idx];
            end
            // Saturation logic to fit WV bit-width
            if (sum_res > 32767)
                oData_BM_Accum0 <= 16'h7FFF;
            else if (sum_res < -32768)
                oData_BM_Accum0 <= 16'h8000;
            else
                oData_BM_Accum0 <= sum_res[WV-1:0];
            oValid_BM <= 1'b01;
        end else if (iReady_BM) begin
            oValid_BM <= 1'b0;
        end
    end
endmodule

Kiểm thử và Đánh giá kết quả

1. Mô phỏng chức năng (Pre-synthesis Verification)

Quá trình kiểm thử được thực hiện trên ModelSim-Altera 10.1d với cấu hình thử nghiệm: $NI = 3, NH0 = 2, NH1 = 3, NO = 2, WV = 16\text{-bit}$, tốc độ học $\eta = \text{16'h0040}$ ($0.25$ dưới biểu diễn số nguyên dịch bit).

Test Case Index Dữ liệu đầu vào (Input Vector) Trọng số ban đầu (Initial Weight/Bias) Kết quả Mô hình Java (Software) Kết quả RTL Hardware (ModelSim) Sai số sai lệch ($\Delta$) Trạng thái
Case 01 [0x4000, 0x8000, 0xC000] Seed: 0x0032352685 0x0114 0x0114 0 LSB Khớp hoàn toàn
Case 02 [0x1200, 0x3400, 0x5600] Seed: 0x1628063272 0x0A2B 0x0A2A 1 LSB Đạt tiêu chuẩn
Case 03 [0x7FFF, 0x8000, 0x1000] Seed: 0x3496660372 0x1E5C 0x1E5C 0 LSB Khớp hoàn toàn
Case 04 [0x0500, 0x0A00, 0x0F00] Random Seed Matrix 0x02FB 0x02FA 1 LSB Đạt tiêu chuẩn

Nhận xét: Sai số tối đa giữa phần cứng và phần mềm không vượt quá 1 đơn vị số nguyên nhỏ nhất ($1\text{ LSB}$), xuất phát từ cơ chế làm tròn cắt cụt (truncation) trong các bộ nhân tích lũy số nguyên.

2. Kết quả Tổng hợp Logic Post-Synthesis trên Xilinx Virtex-7

+-----------------------------------------------------------------------+
|                 VIVADO RESOURCE UTILIZATION SUMMARY                   |
| Target Device: xc7vx485tffg1761-2                                     |
| Target Frequency: 170.0 MHz (Clock Period T = 5.882 ns)               |
+------------------------------------+-----------------+----------------+
| Resource Type                      | Used Resource   | Utilization %  |
+------------------------------------+-----------------+----------------+
| Slice LUTs (Look-Up Tables)        | 12,450          | 4.10%          |
| Slice Registers (Flip-Flops)       | 18,210          | 2.99%          |
| DSP48E1 Slices                     | 64              | 2.28%          |
| Block RAM (RAMB36E1)               | 16              | 1.55%          |
| Global Clock Buffers (BUFG)        | 4               | 12.50%         |
+------------------------------------+-----------------+----------------+
| Dynamic Power Consumption          | 1.42 W                           |
| Static Device Power                | 0.38 W                           |
| Total On-Chip Power                | 1.80 W                           |
| Worst Negative Slack (WNS)         | +0.412 ns (Timing Met)          |
+------------------------------------+----------------------------------+

Kết quả đạt được từ ứng dụng thực nghiệm

  1. Bài toán phát hiện ký tự "X" trong bảng chữ cái ($9\times 9$ pixels):
    • Kích thước ngõ vào: $NI = 81$ nơ-ron (ma trận ảnh nhị phân $9\times 9$).
    • Kết quả: Sau 200 chu kỳ huấn luyện on-chip, hệ thống đạt độ chính xác phát hiện $100%$ đối với ký tự "X" và không bị nhầm lẫn với các chữ cái khác trong bảng Alphabet.
  2. Bài toán nhận diện chữ số viết tay MNIST ($0-9$):
    • Dữ liệu đầu vào: Ảnh xám chuẩn hóa kích thước trích xuất ma trận đặc trưng.
    • Cấu hình mạng: $NI = 64, NH0 = 32, NH1 = 16, NO = 10$.
    • Tốc độ suy luận: Đạt 170 triệu mẫu/giây ở chế độ Burst Mode khi hoạt động tại xung nhịp $170\text{ MHz}$.

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

  1. Tích hợp đồng thời kiến trúc Huấn luyện và Suy luận trên cùng vi mạch (Dual-Mode On-Chip Engine): Khác biệt với đa số các bộ tăng tốc FPGA chỉ hỗ trợ Forward Inference, thiết kế tích hợp hoàn chỉnh khối BackwardMaccum, DeltaBiasWeight, cho phép thiết bị tự thích ứng và tái huấn luyện dữ liệu tại chỗ mà không cần giao tiếp máy chủ.
  2. Lượng tử hóa Số nguyên Tối ưu hóa Diện tích: Thay vì sử dụng bộ dấu phẩy động 32-bit (FP32) tiêu tốn nhiều tài nguyên như đề tài của Huỳnh Vĩnh Phú (2019), giải pháp sử dụng số nguyên có dấu 16-bit giúp tiết kiệm hơn $62%$ diện tích Slice LUTs và giảm $54%$ công suất tiêu thụ tĩnh, đồng thời tăng tần số hoạt động từ $166\text{ MHz}$ lên $170\text{ MHz}$.
  3. Cơ chế Điều khiển Bắt tay Chống Nghẽn (Elastic Handshake Pipelining): Việc áp dụng cặp tín hiệu Valid/Ready cùng các mô-đun Broadcaster/Combiner tạo ra kiến trúc luồng dữ liệu tự cân bằng (Self-timed Dataflow), triệt tiêu hoàn toàn hiện tượng tranh chấp bus hoặc mất mát dữ liệu khi hoạt động ở chế độ Burst Mode.
  4. Trình tạo mã RTL Tham số hóa Tự động (Parameterized Generator): Cung cấp khả năng cấu hình linh hoạt số lớp, số nơ-ron trên mỗi lớp ($NI, NH0, NH1, NO$) và độ rộng bit ($WV$), cho phép dễ dàng đóng gói và tái cấu hình phần cứng cho nhiều bài toán thị giác máy tính khác nhau.

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

Kịch bản ứng dụng thực tế

  • Hệ thống Camera Giám sát Biên (Smart Edge Security Cameras): Tích hợp trực tiếp bộ tăng tốc CNN vào bo mạch FPGA kết nối với cảm biến CMOS để nhận diện tức thời biển số xe, hành vi xâm nhập mà không phụ thuộc đường truyền Internet.
  • Robot Tự hành và Xe không người lái (AGVs/Drones): Đóng vai trò là bộ vi xử lý phản xạ nhanh (Coprocessor) giúp phát hiện chướng ngại vật trong thời gian thực với độ trễ dưới $2\text{ ms}$.
  • Hệ thống Kiểm tra Sản phẩm Công nghiệp (Defect Inspection): Phân loại sản phẩm lỗi trên băng chuyền sản xuất với tốc độ hàng nghìn khung hình/giây.
+------------------+      +-----------------------+      +-------------------------+
| Camera Sensor    | ---> | Xilinx Virtex-7 FPGA  | ---> | Actuator / Alert System |
| (Raw Frame Data) |      | (CNN Accelerator RTL) |      | (Zero Latency Action)   |
+------------------+      +-----------------------+      +-------------------------+

Phân tích Hiệu quả Đầu tư và Triển khai (Cost-Benefit Analysis)

  • Chi phí vận hành: Giảm $85%$ chi phí thuê băng thông máy chủ Cloud và điện năng vận hành trung tâm dữ liệu.
  • Độ tin cậy: Hoạt động liên tục 24/7 trong môi trường công nghiệp khắc nghiệt, không bị ảnh hưởng bởi sự cố đứt cáp quang hoặc nghẽn mạng viễn thông.
  • Thời gian hoàn vốn (ROI): Ước tính từ 6 - 9 tháng khi ứng dụng vào dây chuyền kiểm thử chất lượng tự động trong nhà máy.

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

Hạn chế kỹ thuật

  1. Do sử dụng kiểu dữ liệu số nguyên 16-bit, nếu tốc độ học $\eta$ hoặc trọng số ban đầu quá lớn có thể dẫn đến hiện tượng bão hòa tín hiệu sớm tại các lớp ẩn.
  2. Thiết kế hiện tại mới tối ưu cho các lớp kết nối đầy đủ (Fully Connected/MLP) và phép tích chập phẳng, chưa tích hợp khối tính toán tích chập 2D trượt (Sliding 2D Convolution Engine) chuyên sâu cho các kernel $3\times 3$ hoặc $5\times 5$.

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

  1. Tích hợp cấu trúc tăng tốc thuật toán phát hiện vật thể YOLO (You Only Look Once) lên nền tảng phần cứng đã phát triển.
  2. Nghiên cứu cơ chế lượng tử hóa thích ứng động (Dynamic Fixed-Point / INT8/INT4 Quantization) để tăng gấp đôi mật độ nơ-ron trên cùng một diện tích chip.
  3. Tích hợp giao tiếp bus chuẩn công nghiệp AXI4-Stream và bộ điều khiển DMA để truyền dữ liệu trực tiếp với bộ nhớ DDR3/DDR4 trên các dòng SoC như Xilinx Zynq-7000 hoặc Zynq UltraScale+.

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

  • Sinh viên & Học viên chuyên ngành Kỹ thuật Máy tính / Điện tử: Nguồn tài liệu học thuật thực chứng về quy trình chuyển đổi giải thuật AI từ toán học thuần túy sang kiến trúc phần cứng số Verilog HDL.
  • Kỹ sư Thiết kế Vi mạch (RTL/FPGA Engineers): Cung cấp mẫu thiết kế chuẩn về giao thức Handshake Valid/Ready, cấu trúc Pipeline Maccum Tree và phương pháp quản lý độ trễ trong tính toán nơ-ron song song.
  • Doanh nghiệp Sản xuất Thiết bị Thông minh (IoT/Edge AI): Khung kiến trúc phần cứng tiết kiệm năng lượng, độ trễ thấp để thương mại hóa các dòng camera AI và cảm biến công nghiệp tự động.
  • Các nhà nghiên cứu (Academic Researchers): Nền tảng mở để phát triển các thuật toán học máy trực tiếp trên phần cứng (On-chip Online Learning Algorithms).

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

1. Yêu cầu phần cứng và công cụ để triển khai thiết kế này là gì?

Hệ thống yêu cầu bo mạch FPGA Xilinx có tối thiểu 15,000 LUTs và 64 khối DSP (khuyến nghị dòng Kintex-7 hoặc Virtex-7 trở lên). Về phần mềm, cần cài đặt Xilinx Vivado (phiên bản 2018.x đến 2022.x) để tổng hợp nạp chip và ModelSim để chạy mô phỏng waveform.

2. Thiết kế số nguyên 16-bit có làm giảm độ chính xác nhận diện so với dấu phẩy động 32-bit không?

Thực nghiệm cho thấy trên các bộ dữ liệu tiêu chuẩn như MNIST và nhận diện ký tự, sự suy giảm độ chính xác là không đáng kể ($< 0.5%$), trong khi tiết kiệm được hơn $60%$ tài nguyên phần cứng và tăng đáng kể tốc độ xử lý do loại bỏ được các khối tính toán Floating Point phức tạp.

3. Hệ thống có thể mở rộng lên bao nhiêu lớp và bao nhiêu nơ-ron?

Thiết kế được tham số hóa toàn diện thông qua các hằng số NI, NH0, NH1, NO, WV. Quy mô mở rộng phụ thuộc hoàn toàn vào dung lượng Slice LUTs và Block RAM của dòng chip FPGA mục tiêu. Trên Virtex-7 XC7VX485T, hệ thống có thể mở rộng lên hàng nghìn nơ-ron mỗi lớp.

4. Giao thức Valid/Ready giải quyết vấn đề gì trong hệ thống pipeline?

Giao thức này giải quyết hiện tượng lệch pha thời gian (Timing Skew) giữa các giai đoạn tính toán có độ trễ khác nhau. Nó đảm bảo các khối chỉ nhận dữ liệu khi dữ liệu trước đó đã xử lý xong, ngăn ngừa hiện tượng mất mát dữ liệu (Data Corruption) hoặc bế tắc hệ thống (Deadlock).

5. Khả năng tích hợp của bộ tăng tốc này vào các vi xử lý nhúng (như ARM Cortex) như thế nào?

Bộ tăng tốc có thể được đóng gói dưới dạng IP Core chuẩn trong Vivado IP Integrator, kết nối thông qua giao tiếp AXI4-Lite (cho việc cấu hình tham số) và AXI4-Stream (cho việc truyền nhận dữ liệu hình ảnh streaming tốc độ cao).


Kết luận

Đồ án khóa luận tốt nghiệp "Thiết kế bộ tăng tốc tính toán CNN" (Design CNN Accelerator) của nhóm tác giả Trần Quang Diệu và Trương Anh Hào đã giải quyết thành công bài toán tăng tốc phần cứng mạng nơ-ron tại biên. Bằng việc xây dựng kiến trúc RTL Verilog tham số hóa, tối ưu hóa kiểu dữ liệu số nguyên 16-bit và tích hợp toàn diện cả hai pha Lan truyền thuận và Lan truyền ngược, công trình đã đạt tần số hoạt động ấn tượng $170\text{ MHz}$ trên FPGA Xilinx Virtex-7 với độ tin cậy phần cứng cao (sai số $\le 1\text{ LSB}$).

Giải pháp không chỉ mở ra tiềm năng ứng dụng to lớn cho các hệ thống nhúng trí tuệ nhân tạo thời gian thực mà còn là tài liệu tham khảo kỹ thuật giá trị cao cho cộng đồng nghiên cứu thiết kế vi mạch trong nước. Để tìm hiểu sâu hơn về mã nguồn Verilog và kiến trúc chi tiết, các nhà phát triển và doanh nghiệp có thể kết nối với nhóm nghiên cứu để cùng mở rộng các tính năng tăng tốc chuyên sâu cho mạng tích chập thế hệ mới.