Bối cảnh và vấn đề nghiên cứu

Sự phát triển của các công nghệ trí tuệ nhân tạo (AI), đặc biệt là học sâu (Deep Learning) và học tăng cường (Reinforcement Learning - RL), đặt ra hai thách thức kỹ thuật lớn: tốc độ xử lý, truyền nhận dữ liệu và hiệu suất tiêu thụ năng lượng của hệ thống tính toán. Trong các bài toán học tăng cường, tác tử (agent) phải liên tục tương tác với môi trường thông qua cơ chế thử và sai (trial and error) để tối đa hóa hàm phần thưởng. Việc xử lý song song các tác vụ nơ-ron trên bộ xử lý đồ họa (GPU) tuy phổ biến nhưng tiêu tốn nhiều năng lượng và gặp hạn chế về độ trễ trong các ứng dụng thời gian thực. Công nghệ vi mạch lập trình mảng phần tử logic (FPGA) xuất hiện như một giải pháp phần cứng thay thế nhờ khả năng tùy biến cấu trúc song song, tiêu thụ ít điện năng, cung cấp băng thông bộ nhớ nội cao và có thể tái cấu hình linh hoạt theo kiến trúc mạng nơ-ron. Đề tài khóa luận được thực hiện nhằm tham gia cuộc thi thiết kế vi mạch quốc tế LSI Design Contest lần thứ 25 (tổ chức tại Okinawa, Nhật Bản) với chủ đề ứng dụng giải thuật Machine Learning trên phần cứng.

Mục tiêu và nhiệm vụ nghiên cứu của đề tài được tác giả xác định cụ thể như sau:

  1. Nghiên cứu, phân tích cơ sở lý thuyết về học tăng cường (Reinforcement Learning), mạng nơ-ron nhân tạo (Neural Network), giải thuật Deep Q-Network (DQN) và thuật toán lan truyền ngược (Backpropagation) dựa trên tối ưu hóa Gradient Descent.
  2. Thiết kế khối lõi phần cứng IP Core hiện thực giải thuật Deep Q-Network cơ bản (gồm một lớp ẩn - hidden layer) bằng ngôn ngữ mô tả phần cứng Verilog HDL, sử dụng định dạng số thực dấu chấm động 32-bit độ chính xác đơn (Single Precision Floating-Point).
  3. Xây dựng môi trường đồng mô phỏng (CO-Simulation) sử dụng nền tảng cocotb nhằm kết nối và trao đổi dữ liệu hai chiều giữa mô hình phần cứng RTL và môi trường mô phỏng phần mềm viết bằng Python.
  4. Hiện thực, kiểm thử và tổng hợp thiết kế trên kit FPGA Xilinx Virtex-7 VC707; tiến hành huấn luyện mô hình điều khiển bài toán con lắc ngược (Cartpole) đạt điểm số tối đa (200 điểm).

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Giải thuật Deep Q-Network, thuật toán tính đạo hàm lan truyền ngược, hàm kích hoạt phi tuyến Tanh(x), cấu trúc phần cứng của khối tính toán mạng nơ-ron (Neural Network Core) và khối cập nhật trọng số (Update Core); môi trường điều khiển cân bằng con lắc ngược Cartpole.
  • Phạm vi không gian và nền tảng công nghệ: Thiết kế vi mạch số bằng ngôn ngữ Verilog HDL; mô phỏng logic bằng trình biên dịch Icarus Verilog kết hợp framework cocotb; tổng hợp thiết kế và phân tích tài nguyên trên nền tảng chip FPGA Xilinx Virtex-7 XC7VX485T-2FFG1761C (Kit VC707) thông qua phần mềm Xilinx Vivado; kết nối vi xử lý nhúng MicroBlaze qua giao tiếp UART để tạo thành hệ thống trên vi mạch (System-on-Chip - SoC).
  • Phạm vi thời gian và dữ liệu: Quá trình huấn luyện phần cứng được đánh giá trong 50.000 bước thời gian (Max_num_step) dựa trên tập dữ liệu tương tác sinh ra từ thư viện OpenAI Gym; khóa luận được bảo vệ vào tháng 06/2022 tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng trên các nền tảng lý thuyết và mô hình toán học:

  • Môi trường Cartpole (OpenAI Gym): Bài toán con lắc ngược có trọng tâm nằm trên trục quay, mục tiêu là tác dụng lực thích hợp để giữ cân bằng con lắc. Không gian hành động (Action Space) gồm 2 giá trị rời rạc: 0 (đẩy xe sang trái - Push cart to the left) và 1 (đẩy xe sang phải - Push cart to the right). Không gian quan sát (Observation Space) gồm 4 biến trạng thái liên tục: vị trí xe (Cart Position, phạm vi [-4.8, 4.8]), vận tốc xe (Cart Velocity, [-Inf, Inf]), góc lệch con lắc (Pole Angle, khoảng [-0.418 rad, 0.418 rad] tương đương [-24°, 24°]) và vận tốc góc đỉnh con lắc (Pole Angular Velocity, [-Inf, Inf]). Môi trường cung cấp các hàm tiêu chuẩn step(), render(), reset().
  • Giải thuật Deep Q-Learning: Kết hợp mạng nơ-ron sâu để xấp xỉ hàm giá trị hành động Q(s, a). Agent tương tác với môi trường, lưu bộ trải nghiệm $[s, a, r, s']$ vào bộ nhớ đệm (Experience Replay Memory) và trích xuất ngẫu nhiên các mini-batch để huấn luyện mạng.
  • Hàm mất mát (Loss Function): Sử dụng sai số toàn phương trung bình (Mean Square Error - MSE / L2 Loss) đo độ lệch giữa giá trị Q dự đoán và giá trị mục tiêu $y = r + \gamma (1 - done) \max_{a'} Q'(s', a')$.
  • Thuật toán Gradient Descent và Backpropagation: Tối ưu trọng số theo công thức cập nhật: $$W_{new} = W_{old} + \alpha \left[ r + \gamma(1 - done) \max_{a'} Q'(s', a') - Q(s, a) \right] \frac{\partial H}{\partial W}$$ Trong đó $\alpha$ là hệ số học (learning rate), $\gamma$ là hệ số chiết khấu (discount factor), $r$ là điểm thưởng, $done$ là cờ báo trạng thái kết thúc.
  • Hàm kích hoạt Tanh(x): Chuyển đổi giá trị thực về khoảng $(-1, 1)$, đối xứng qua gốc tọa độ 0 giúp mạng hội tụ thuận lợi. Phần cứng triển khai hàm Tanh(x) dựa trên lý thuyết khai triển liên phân số của Lambert (Lambert's continued fraction).
  • Cấu trúc Mạng Nơ-ron (Fully Connected): Gồm 1 lớp đầu vào (4 nodes), 1 lớp ẩn (4 nodes sử dụng hàm kích hoạt Tanh) và 1 lớp đầu ra (2 nodes tuyến tính tương ứng với 2 giá trị Q-value). Tổng số tham số gồm 24 trọng số (weights) và 6 độ lệch (biases).

Phương pháp nghiên cứu và công cụ thực nghiệm:

  • Phương pháp thiết kế phần cứng ở mức chuyển thanh ghi (RTL Design): Xây dựng các khối chức năng tính toán số thực dấu chấm động (Floating-Point Add/Sub, Floating-Point Mul), khối xấp xỉ hàm phi tuyến và các máy trạng thái hữu hạn (FSM) tuần tự hóa tài nguyên.
  • Phương pháp đồng mô phỏng Co-simulation: Ứng dụng công cụ cocotb (Coroutine-based Cosimulation Testbench thuộc FOSSi Foundation) cho phép mã kiểm thử Python điều khiển trực tiếp các tín hiệu vào/ra của khối DUT (Design Under Test) trên trình mô phỏng HDL (Icarus Verilog) mà không cần viết testbench thuần bằng HDL.
  • Phương pháp phân tích tài nguyên và tổng hợp mạch: Sử dụng phần mềm Xilinx Vivado để phân tích diện tích phần cứng (LUT, FF, DSP, BRAM), tần số hoạt động cực đại và mức tiêu thụ công suất trên dòng chip Xilinx Virtex-7.

Nguồn dữ liệu nghiên cứu:

  • Dữ liệu tương tác thực nghiệm thời gian thực tạo ra từ môi trường Gym Cartpole-v0 với bộ nhớ trải nghiệm (Memory size) chứa các vector trạng thái, hành động, phần thưởng và trạng thái kế tiếp.

Thiết kế và triển khai

Hệ thống phần cứng DQN Core IP được thiết kế gồm 3 khối chức năng chính: khối Neural Network, khối Update và khối Control.

Khối chức năng Nhiệm vụ kỹ thuật
Control Điều phối toàn bộ hoạt động của IP, chuyển đổi các pha nhận dữ liệu, tính toán lan truyền tiến, tính toán lan truyền ngược và xuất dữ liệu ra bus.
Neural Network Nhận vector trạng thái và tập trọng số/bias để tính toán lan truyền tiến (Forwardpropagation), xuất ra 2 giá trị Q ($q_0, q_1$), chọn hành động cực đại $Q_{max}$ và giá trị hàm kích hoạt Tanh của 4 node ẩn.
Update Thực hiện thuật toán Gradient Descent và chuỗi đạo hàm (Chain rule) để tính toán cập nhật 24 trọng số và 6 bias dấu chấm động 32-bit cho trạng thái tiếp theo.
Tanh_func Khối xấp xỉ hàm phi tuyến dựa trên liên phân số Lambert, sử dụng 2 máy trạng thái tính toán đa thức tử số $a(x)$ và mẫu số $b(x)$.

Giao tiếp I/O của khối DQN Core IP:

  • Tín hiệu đầu vào: clk (1 bit, xung nhịp hệ thống), nrst (1 bit, reset bất đồng bộ tích cực thấp), start (1 bit, tín hiệu khởi động tính toán), data_in (32 bit, đường nạp dữ liệu số thực dấu chấm động), lastAct (1 bit, hành động thực hiện ở trạng thái trước), mode (1 bit, chọn chế độ: 0 = dự đoán hành động, 1 = cập nhật trọng số), done (1 bit, báo hiệu tập huấn luyện kết thúc).
  • Tín hiệu đầu ra: act (1 bit, hành động tiếp theo được dự đoán: 0 hoặc 1), valid_out (1 bit, cờ báo dữ liệu ngõ ra hợp lệ), data_out (32 bit, dữ liệu trọng số/bias mới sau khi cập nhật).

Cơ chế tuần tự hóa và tối ưu hóa tài nguyên phần cứng:

  • Tại lớp ẩn thứ nhất, giá trị đầu vào của mỗi node $H_y$ được tính theo công thức tuyến tính: $H_y = \sum_{x=0}^3 (in_x \cdot w_{xy}^{[1]}) + b_y^{[1]}$. Sau 34 chu kỳ xung nhịp nạp dữ liệu (4 inputs, 24 weights, 6 biases), khối điều khiển kích hoạt các bộ nhân và cộng dấu chấm động tuần tự, lưu kết quả trung gian vào các khối RAM nội bộ (Result_add_block, Result_mul_block, Result_tanh_block).
  • Sau khi qua khối Tanh_func, 4 giá trị $outH_0, outH_1, outH_2, outH_3$ được đưa vào lớp đầu ra để tính: $y_0 = \sum_{y=0}^3 (outH_y \cdot w_{y0}^{[2]}) + b_0^{[2]}$ và $y_1 = \sum_{y=0}^3 (outH_y \cdot w_{y1}^{[2]}) + b_1^{[2]}$.
  • Khối Update nhận giá trị $Q_{max}^{next}$ từ mạng nơ-ron trạng thái kế tiếp và giá trị Q hiện tại tương ứng với hành động đã thực hiện. Khi cập nhật tầng ra, khối chỉ cập nhật 4 trọng số và 1 bias trực tiếp liên kết với hành động $a$ đã chọn, 4 trọng số và 1 bias không liên quan được giữ nguyên. Sau đó, thuật toán tiếp tục lan truyền ngược để cập nhật đồng loạt 16 trọng số và 4 bias của tầng ẩn thông qua vòng lặp FSM tích hợp.
  • Tích hợp SoC: IP Core được kết nối với bộ xử lý mềm MicroBlaze trên kit FPGA Virtex-7 VC707, sử dụng bộ nhớ DDR3 SODIMM 1 GB và cổng UART để giao tiếp dữ liệu với máy tính chủ.

Các tham số cấu hình hệ thống phần mềm và phần cứng:

Tham số Giá trị Ý nghĩa kỹ thuật
Max_epsilon 1.0 (100%) Tỷ lệ khám phá (exploration) chọn hành động ngẫu nhiên ban đầu
Min_epsilon 0.01 (1%) Tỷ lệ khám phá tối thiểu
Epsilon_decay_intervals Tự động giảm dần Khoảng bước giảm tuyến tính từ Max_epsilon về Min_epsilon
Memory_size Mảng đệm lớn Kích thước hàng đợi lưu trữ các trải nghiệm $[s, a, r, s']$
Min_replay_size 1.000 Số lượng trải nghiệm ngẫu nhiên thu thập tối thiểu trước khi bắt đầu huấn luyện
Batch_size 32 Số lượng mẫu kinh nghiệm lấy ngẫu nhiên cho mỗi lần cập nhật trọng số
Target_update_frequency 1.000 Chu kỳ bước lặp cập nhật trọng số sang mạng đích (Target Network)
Max_num_step 50.000 Tổng số bước huấn luyện tối đa của mô hình
Data Format IEEE 754 32-bit Định dạng dấu chấm động đơn cho toàn bộ tính toán số học phần cứng

Nội dung chính theo từng chương

Chương 1. Giới thiệu tổng quan đề tài

Chương 1 trình bày tổng quan về sự phát triển của trí tuệ nhân tạo, vai trò của Deep Learning và Reinforcement Learning trong việc giải quyết các bài toán tối ưu hóa quyết định thông qua cơ chế thử - sai và nhận thưởng/phạt. Tác giả phân tích tính cấp thiết của việc tăng tốc giải thuật học máy trên phần cứng chuyên dụng FPGA nhằm vượt qua giới hạn về băng thông, độ trễ và điện năng của GPU. Chương này cũng giới thiệu bối cảnh cuộc thi thiết kế vi mạch quốc tế LSI Design Contest tại Nhật Bản (do Đại học Kỹ thuật Ryukyus và KyuTech tổ chức, IEICE và Synopsys bảo trợ), xác định mục tiêu thiết kế IP Core cho thuật toán DQN bằng Verilog và đồng mô phỏng qua cocotb để giải quyết bài toán Cartpole.

Chương 2. Môi trường Cartpole

Chương 2 tập trung trình bày chi tiết cơ sở lý thuyết và các công cụ nền tảng:

  • Cài đặt và cấu trúc không gian trạng thái, không gian hành động của môi trường Cartpole trong thư viện OpenAI Gym.
  • Nguyên lý toán học của học tăng cường: định nghĩa Agent, Environment, State, Action, Reward, Policy, Episode và cơ chế cập nhật Q-learning.
  • Hàm mất mát sai số toàn phương trung bình (MSE), giải thuật tối ưu hóa Gradient Descent và phân tích ảnh hưởng của tốc độ học (Learning rate - các trường hợp quá nhỏ, hợp lý, quá lớn gây overshoot).
  • Lý thuyết xấp xỉ liên phân số Lambert dùng cho hàm kích hoạt Tanh(x).
  • Kiến trúc mạng nơ-ron Fully Connected (4 node input, 4 node hidden, 2 node output), chi tiết công thức toán học cho quá trình lan truyền tiến (Forwardpropagation) và lan truyền ngược (Backpropagation) tính đạo hàm riêng cho từng trọng số $w_{xy}^{[1]}, w_{y0}^{[2]}, w_{y1}^{[2]}$.
  • Công cụ đồng mô phỏng cocotb: cơ chế Testbench điều khiển RTL bằng Python thông qua coroutine và từ khóa await.
  • Khảo sát phần cứng kit FPGA Xilinx Virtex-7 VC707 (chip XC7VX485T-2FFG1761C), các khối ngoại vi DDR3 1 GB, cổng UART, xung nhịp dao động 200 MHz và lý do lựa chọn kit nhờ hỗ trợ vi xử lý mềm MicroBlaze.

Chương 3. Thiết kế hệ thống

Chương 3 mô tả toàn bộ kiến trúc vi kiến trúc phần cứng của hệ thống:

  • Sơ đồ tổng quan quy trình hoạt động giữa phần mềm Python và phần cứng RTL. Quy trình bắt đầu bằng việc thu thập 1.000 trải nghiệm ngẫu nhiên, trích xuất mini-batch 32 mẫu, đưa trạng thái $s'$ vào mạng nơ-ron để tìm $Q_{max}^{next}$, chuyển dữ liệu vào khối Update để tính toán 32 tập trọng số/bias, sau đó lấy trung bình cộng để nạp lại cho mạng nơ-ron ở bước tiếp theo.
  • Sơ đồ quy trình thiết kế 6 bước: Nghiên cứu thuật toán DQN $\rightarrow$ Hiện thực RTL code $\rightarrow$ Cài đặt cấu hình cocotb $\rightarrow$ Cài đặt môi trường Cartpole $\rightarrow$ Kiểm thử độ chính xác trên Vivado $\rightarrow$ Tiến hành huấn luyện mô hình.
  • Thiết kế chi tiết DQN Core IP: Đặc tả giao tiếp tín hiệu I/O, sơ đồ khối, máy trạng thái chuyển đổi hoạt động (FSM) giữa các chế độ dự đoán (mode = 0) và cập nhật trọng số (mode = 1).
  • Thiết kế khối Neural Network: Sơ đồ khối tích hợp các module Mul_FP, Add_FP, Tanh_func, các thanh ghi/RAM lưu kết quả trung gian, mã giả điều khiển tuần tự hóa các phép tính nhân - cộng trên 34 chu kỳ nạp dữ liệu.
  • Thiết kế khối Tanh_func: Cấu trúc 2 máy trạng thái tính toán tử số $a(x)$ và mẫu số $b(x)$ dấu chấm động theo công thức liên phân số Lambert.
  • Thiết kế khối Update: Kiến trúc giao tiếp tín hiệu, thuật toán tính toán đạo hàm riêng và cập nhật có chọn lọc cho các trọng số liên quan trực tiếp đến hành động thực hiện.

Chương 4. Quá trình hiện thực, kết quả mô phỏng và đánh giá

Chương 4 cung cấp các kết quả thực nghiệm chi tiết:

  • Mô phỏng khối Tanh(x): Thực hiện đồng mô phỏng 50.000 mẫu ngẫu nhiên giữa Icarus Verilog và Python qua cocotb. Kết quả cho thấy sai số lớn nhất của khối Tanh phần cứng so với tính toán phần mềm là $0.017254768067457$, sai số nhỏ nhất bằng $0$. Dạng sóng waveform trích xuất từ Icarus Verilog xác thực tính chính xác của các giá trị hexadecimal và dấu chấm động đơn (ví dụ: tanh1 = 0x3F290A34).
  • Mô phỏng khối Neural Network và khối Update: Kiểm tra sự tương thích tuyệt đối của các phép toán nhân/cộng lan truyền tiến và đạo hàm lan truyền ngược. Sai số lớn nhất khi cập nhật trọng số sau 50.000 lần huấn luyện đạt mức tuyệt đối bằng $0$.
  • Kết quả huấn luyện giải thuật DQN: Mô hình huấn luyện trên phần cứng điều khiển môi trường Cartpole đạt điểm số tối đa là 200 điểm (giữ cân bằng con lắc trọn vẹn trong suốt ván chơi, so với trạng thái ban đầu khi chưa huấn luyện con lắc bị đổ nhanh chóng).
  • Kết quả tổng hợp trên FPGA Virtex-7 VC707: Thiết kế đạt tần số xung nhịp tối đa là 172 MHz. Đánh giá tài nguyên phần cứng (LUT, FF, DSP, BRAM) và công suất tiêu thụ (Power Resources) sau khi tạo bitstream cho cả lõi DQN IP riêng biệt và hệ thống SoC tích hợp MicroBlaze.
  • So sánh hiệu năng và kiến trúc với các công trình nghiên cứu liên quan.

Chương 5. Kết luận và hướng phát triển đề tài

Chương 5 tổng kết các kết quả đạt được của khóa luận, chỉ ra các khó khăn kỹ thuật gặp phải trong quá trình thiết kế số thực dấu chấm động trên FPGA và đề xuất các hướng nghiên cứu mở rộng trong tương lai.

Kết quả và đóng góp

Khóa luận ghi nhận các kết quả kỹ thuật định lượng cụ thể:

  • Hiệu năng điều khiển: Sau quá trình huấn luyện 50.000 bước với giải thuật DQN trên phần cứng, mô hình điều khiển con lắc ngược Cartpole đạt điểm số 200/200 (mức điểm tuyệt đối theo quy chuẩn của môi trường Cartpole OpenAI Gym).
  • Độ chính xác toán học phần cứng:
    • Khối Tanh(x) xấp xỉ liên phân số Lambert: Sai số lớn nhất ghi nhận được qua 50.000 mẫu kiểm thử là $0.017254768067457$, sai số nhỏ nhất là $0$.
    • Khối Update cập nhật trọng số: Sai số tính toán phần cứng so với phần mềm qua 50.000 chu kỳ cập nhật bằng $0$, đảm bảo độ tin cậy tuyệt đối của thuật toán Backpropagation số thực 32-bit.
  • Thông số vi mạch trên FPGA Xilinx Virtex-7 VC707: Tần số hoạt động cực đại (Maximum Frequency) của IP đạt 172 MHz. Hệ thống tích hợp thành công vào kiến trúc SoC với vi xử lý MicroBlaze và giao tiếp UART.
  • Đóng góp khoa học và giải thưởng: Đề tài đạt thành tích Top 10 tại cuộc thi thiết kế vi mạch quốc tế LSI Design Contest lần thứ 25 tổ chức ngày 04/03/2022 tại Okinawa, Nhật Bản.

Bảng tổng hợp các chỉ số kỹ thuật chính của thiết kế:

Tiêu chí Thông số đạt được
Môi trường ứng dụng OpenAI Gym Cartpole-v0 (Điểm tối đa: 200/200)
Kiến trúc mạng nơ-ron Fully Connected 4 - 4 - 2 (1 lớp ẩn, 24 weights, 6 biases)
Định dạng dữ liệu Single Precision 32-bit Floating-Point (IEEE 754)
Sai số khối Tanh(x) Max error: 0.017254768067457; Min error: 0
Sai số khối Update trọng số Max error: 0 (qua 50.000 lần huấn luyện)
Tần số hoạt động tối đa 172 MHz
Dòng chip FPGA mục tiêu Xilinx Virtex-7 XC7VX485T-2FFG1761C (Kit VC707)
Phương pháp đồng mô phỏng cocotb Testbench + Icarus Verilog + Python
Kiến trúc hệ thống DQN Core IP tích hợp SoC MicroBlaze
Thành tích học thuật Top 10 Cuộc thi LSI Design Contest lần thứ 25 (Okinawa, Nhật Bản, 2022)

Đóng góp của đề tài:

  • Xây dựng thành công quy trình đồng mô phỏng RTL-Python hoàn chỉnh bằng cocotb cho các bài toán học tăng cường, giúp loại bỏ sự phức tạp khi viết testbench thuần HDL.
  • Hiện thực thành công kiến trúc phần cứng tuần tự hóa tài nguyên cho mạng DQN dấu chấm động 32-bit, cân bằng giữa tốc độ xử lý (172 MHz) và tài nguyên logic trên FPGA.
  • Chứng minh tính khả thi của việc huấn luyện học tăng cường trực tiếp trên phần cứng với độ chính xác số học tương đương tuyệt đối với mô hình toán học phần mềm.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế của đề tài:

  • Quy mô mạng nơ-ron còn giới hạn ở mức cơ bản với 1 lớp ẩn gồm 4 node và lớp ra gồm 2 node, chưa hỗ trợ cấu hình động số lớp và số node cho các không gian quan sát/hành động lớn hơn.
  • Việc sử dụng hoàn toàn định dạng dấu chấm động 32-bit (Floating-Point) đòi hỏi nhiều chu kỳ tính toán và tiêu tốn tài nguyên DSP/LUT hơn so với các phương pháp lượng tử hóa số nguyên/dấu chấm cố định (Fixed-Point Quantization).
  • Quá trình đồng mô phỏng và truyền dữ liệu mini-batch (batch size 32) vẫn phụ thuộc vào máy tính chủ thông qua giao tiếp UART và framework cocotb, chưa độc lập hoàn toàn môi trường (Environment Engine) trên chip FPGA.

Hướng nghiên cứu và phát triển tiếp theo:

  • Mở rộng kiến trúc DQN Core IP để hỗ trợ mạng nơ-ron nhiều lớp ẩn hơn và cấu hình linh hoạt số lượng node đầu vào/đầu ra nhằm ứng dụng cho các bài toán điều khiển phức tạp hơn.
  • Nghiên cứu chuyển đổi kiểu dữ liệu sang định dạng dấu chấm cố định (Fixed-Point) hoặc các kỹ thuật lượng tử hóa trọng số (Quantization) để tối ưu hóa diện tích phần cứng và giảm công suất tiêu thụ.
  • Thiết kế phần cứng hóa hoàn toàn môi trường mô phỏng (Hardware-based Environment) trực tiếp trên FPGA, loại bỏ phụ thuộc vào giao tiếp máy chủ nhằm tạo ra hệ thống học tăng cường nhúng độc lập hoàn toàn theo thời gian thực.
  • Nâng cao tính toán song song (Pipelining) trong khối Neural Network và khối Update để giảm số chu kỳ xung nhịp thực thi.

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo chuyên môn cho các nhóm đối tượng:

  • Sinh viên và kỹ sư ngành Kỹ thuật máy tính, Thiết kế vi mạch (IC Design / FPGA Design): Cung cấp tài liệu tham khảo chi tiết về quy trình thiết kế phần cứng cho giải thuật học máy, cấu trúc máy trạng thái FSM tuần tự hóa tài nguyên tính toán số thực dấu chấm động 32-bit và kiến trúc khối xấp xỉ hàm phi tuyến Tanh(x) bằng liên phân số Lambert.
  • Người nghiên cứu về tăng tốc phần cứng cho trí tuệ nhân tạo (AI Hardware Acceleration / Edge AI): Tham khảo phương pháp xây dựng luồng đồng mô phỏng Co-simulation giữa Python và Verilog thông qua framework cocotb, giúp rút ngắn thời gian xác minh thiết kế mạch số phức tạp.
  • Người thực hiện đồ án, đề tài về Học tăng cường (Reinforcement Learning): Tham khảo cách thức ánh xạ các công thức toán học Gradient Descent, Backpropagation và chuỗi đạo hàm (Chain rule) của DQN từ giải thuật phần mềm sang sơ đồ khối và vi kiến trúc phần cứng cụ thể.

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

1. Khối Tanh(x) trên phần cứng được thiết kế theo phương pháp toán học nào và độ sai số thực nghiệm là bao nhiêu?

Khối Tanh(x) được thiết kế dựa trên lý thuyết khai triển liên phân số của Lambert (Lambert's continued fraction), sử dụng hai máy trạng thái hữu hạn (FSM) để tính toán đa thức tử số $a(x)$ và mẫu số $b(x)$ với định dạng số thực dấu chấm động 32-bit. Khi tiến hành đồng mô phỏng kiểm thử 50.000 mẫu ngẫu nhiên bằng Icarus Verilog và Python qua cocotb, khối Tanh phần cứng đạt sai số lớn nhất là $0.017254768067457$ và sai số nhỏ nhất bằng $0$.

2. DQN Core IP xử lý và truyền nhận bao nhiêu dữ liệu đầu vào trong mỗi chu kỳ tính toán?

Trong mỗi lượt hoạt động, mạch nhận tổng cộng 34 giá trị dữ liệu đầu vào 32-bit qua 34 chu kỳ xung nhịp clock đầu tiên. Tập dữ liệu này bao gồm 4 giá trị vector trạng thái môi trường ($x_0, x_1, x_2, x_3$), 24 trọng số (16 trọng số tầng ẩn $w_0 - w_{15}$ và 8 trọng số tầng ra $w_{16} - w_{23}$) cùng 6 giá trị bias (4 bias tầng ẩn $b_0 - b_3$ và 2 bias tầng ra $b_4 - b_5$).

3. Khối Update trên phần cứng thực hiện cơ chế cập nhật trọng số như thế nào đối với các hành động?

Khi nhận được dữ liệu trải nghiệm và hành động $a$ đã thực thi, khối Update áp dụng công thức Gradient Descent để cập nhật có chọn lọc: chỉ có 4 trọng số và 1 bias ở tầng ra liên quan trực tiếp đến hành động $a$ được tính toán giá trị mới, trong khi 4 trọng số và 1 bias không liên quan được giữ nguyên. Sau đó, mạch lan truyền ngược để cập nhật đồng loạt các trọng số và bias của tầng ẩn thông qua vòng lặp FSM tích hợp. Kết quả thực nghiệm cho thấy sai số cập nhật trọng số sau 50.000 bước huấn luyện đạt mức bằng $0$ so với phần mềm.

4. Môi trường đồng mô phỏng (CO-Simulation) được thiết lập bằng công cụ nào và có ưu điểm gì?

Đề tài sử dụng framework cocotb (Coroutine-based Cosimulation Testbench) phối hợp với trình mô phỏng Icarus Verilog và ngôn ngữ Python. Cơ chế này cho phép viết testbench trực tiếp bằng Python để gửi dữ liệu từ môi trường OpenAI Gym vào phần cứng và giám sát ngõ ra RTL thông qua các coroutine với từ khóa await, giúp kiểm thử linh hoạt, tận dụng được hệ sinh thái thư viện AI có sẵn của Python mà không cần viết testbench phức tạp bằng Verilog hay SystemVerilog.

5. Thiết kế phần cứng đạt được các chỉ số hiệu năng và tần số hoạt động nào trên kit FPGA?

Thiết kế IP Core được tổng hợp trên chip FPGA Xilinx Virtex-7 XC7VX485T-2FFG1761C (Kit VC707) đạt tần số xung nhịp tối đa là 172 MHz. Sau quá trình huấn luyện trực tiếp trên phần cứng, hệ thống điều khiển môi trường con lắc ngược Cartpole đạt điểm số tối đa 200 điểm, đồng thời công trình đã đạt giải Top 10 tại cuộc thi LSI Design Contest lần thứ 25 tại Nhật Bản.

Kết luận

Khóa luận tốt nghiệp của tác giả Dương Minh Tâm và Lê Trường Thịnh đã hiện thực thành công giải thuật Deep Q-Network trên phần cứng FPGA Xilinx Virtex-7 VC707 để giải quyết bài toán điều khiển cân bằng con lắc ngược Cartpole. Thiết kế vi mạch số sử dụng ngôn ngữ Verilog HDL với kiểu dữ liệu dấu chấm động 32-bit, đạt tần số hoạt động cực đại 172 MHz và điều khiển môi trường Cartpole đạt điểm số tối đa 200/200. Hệ thống đồng mô phỏng cocotb được xây dựng hoàn chỉnh, cho phép xác minh tính chính xác tuyệt đối của thuật toán cập nhật trọng số phần cứng so với mô hình phần mềm và đưa đề tài đạt thành tích Top 10 tại cuộc thi thiết kế vi mạch quốc tế LSI Design Contest 2022.