Bối cảnh và vấn đề nghiên cứu
Trong bối cảnh phát triển của cuộc Cách mạng Công nghiệp 4.0, các kỹ thuật máy học (Machine Learning) ngày càng giữ vai trò quan trọng trong việc tự động hóa xử lý và ra quyết định. Trong các phân nhánh của máy học, học tăng cường (Reinforcement Learning - RL) tập trung nghiên cứu cơ chế giúp một tác nhân (agent) tự học cách tương tác với môi trường thông qua việc thử nghiệm các hành động nhằm tối đa hóa tổng phần thưởng nhận về. Khác với học có giám sát cần tập dữ liệu gán nhãn sẵn hoặc học không giám sát nhằm trích xuất cấu trúc dữ liệu, học tăng cường yêu cầu tác nhân phải tự tích lũy kinh nghiệm thông qua quá trình tương tác liên tục.
Hầu hết các hệ thống học tăng cường hiện nay phụ thuộc vào phần cứng hiệu năng cao như CPU, GPU hoặc các máy chủ (server) nhằm xử lý các mô hình nơ-ron phức tạp. Tuy nhiên, việc phụ thuộc vào nền tảng tính toán quy mô lớn gây ra thách thức khi triển khai trên các thiết bị biên (edge devices) hoặc các hệ thống nhúng có tài nguyên tính toán giới hạn. Bên cạnh đó, các thuật toán học tăng cường dạng bảng truyền thống như Q-learning bộc lộ hạn chế lớn: chỉ hoạt động trên không gian trạng thái hữu hạn đã biết trước và đòi hỏi người lập trình phải mã hóa các cặp trạng thái - hành động. Khi chuyển sang môi trường thực tế với không gian trạng thái liên tục và phức tạp, phương pháp biểu diễn bảng không thể đáp ứng được do bùng nổ bộ nhớ. Giải pháp tích hợp mạng nơ-ron nhân tạo vào Q-learning (Deep Q-Network - DQN) cho phép xấp xỉ giá trị Q, nhưng việc huấn luyện trực tiếp trên phần cứng chuyên biệt như FPGA vẫn còn ít công trình khảo sát đầy đủ về tính ổn định và độ chính xác tính toán.
Khóa luận xác định các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:
- Nghiên cứu, thiết kế kiến trúc phần cứng mô hình học tăng cường Deep Q-Network (DQN) trên nền tảng FPGA, có khả năng tương tác với môi trường và tự củng cố kinh nghiệm thông qua bộ đệm phát lại (Experience Replay), thuật toán lan truyền xuôi (Feedforward) và thuật toán lan truyền ngược (Backpropagation).
- Xây dựng môi trường đồng mô phỏng (Co-simulation) bằng công cụ Cocotb để kết nối mô hình phần cứng trên FPGA với môi trường mô phỏng
cartpole-v0 thuộc thư viện OpenAI Gym, từ đó đánh giá độ chính xác, đường cong đào tạo (training curve), tài nguyên phần cứng tiêu hao và tần số hoạt động.
Đối tượng và phạm vi nghiên cứu của đề tài:
- Đối tượng nghiên cứu: Kiến trúc phần cứng tăng tốc thuật toán Deep Q-Network xử lý dữ liệu số chấm động 32-bit (Single Precision FP-32 theo chuẩn IEEE-754); thuật toán tối ưu hóa cập nhật trọng số và bộ nhớ đệm phát lại.
- Phạm vi không gian và thời gian: Nghiên cứu được thực hiện tại Khoa Kỹ thuật Máy tính, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh năm 2022; kiểm thử và đánh giá trên dòng vi mạch FPGA Xilinx Virtex-7 (mã thiết bị
xc7vx485tffg1927-1) tương tác với môi trường chuẩn cartpole-v0.
| Thông số mục tiêu đề ra |
Giá trị chỉ tiêu |
| Kiến trúc |
Deep Q-Network (DQN) |
| Nền tảng phần cứng mục tiêu |
Xilinx Virtex-7 |
| Kỹ thuật thiết kế |
Đường ống (Pipelining) |
| Tần số hoạt động mục tiêu |
150 MHz |
| Định dạng kiểu dữ liệu |
Dấu chấm động chính xác đơn (FP-32 bit) |
| Công suất tiêu thụ ước tính |
< 10 W |
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:
- Thuật toán Q-Learning và Deep Q-Network (DQN): Mô hình học tăng cường không chính sách (off-policy). Thay vì sử dụng bảng tra $Q(s, a)$, DQN sử dụng mạng nơ-ron nhân tạo (ANN) làm hàm xấp xỉ giá trị $Q(s, a; \theta)$. Hàm mục tiêu sử dụng sai số sai biệt thời gian (Temporal Difference - TD error) theo công thức:
$$TD = r_{t+1} + \gamma \max_{a} Q(s_{t+1}, a; \theta^{-}) - Q(s_t, a_t; \theta)$$
Trong đó $\theta$ là trọng số của Mạng chính (Main Network), $\theta^{-}$ là trọng số của Mạng mục tiêu (Target Network), $\gamma$ là hệ số chiết khấu và $r$ là phần thưởng.
- Mạng nơ-ron nhân tạo và giải thuật huấn luyện: Cấu trúc ANN gồm các lớp kết nối đầy đủ; thuật toán lan truyền xuôi tính toán tổng có trọng số kèm độ lệch (bias) $z = \sum w_i x_i + b$; hàm kích hoạt phi tuyến; thuật toán lan truyền ngược (Backpropagation) sử dụng quy tắc chuỗi (chain rule) để tính gradient đạo hàm riêng $\frac{\partial E}{\partial w}$ và cập nhật trọng số bằng thuật toán hạ độ dốc ngẫu nhiên (SGD).
- Phân tích hàm kích hoạt và giải pháp chống tràn số: Tác giả phân tích các hạn chế của Sigmoid, Tanh (gặp hiện tượng triệt tiêu đạo hàm - Vanishing Gradient), ReLU (gặp hiện tượng Dying ReLU và bùng nổ gradient - Exponent Gradient). Từ đó, lựa chọn hàm Leaky ReLU cải tiến nhằm tránh Dying ReLU và triệt tiêu nguy cơ tràn số (overflow) trên số chấm động 32-bit.
- Kỹ thuật ổn định mô hình: Bộ đệm phát lại (Experience Replay) lưu trữ các bộ chuyển trạng thái $(s_t, a_t, r_t, s_{t+1})$ và lấy mẫu ngẫu nhiên để xóa bỏ mối tương quan chuỗi; Mạng mục tiêu (Target Network) đóng vai trò nhãn động định kỳ đồng bộ hóa (Soft-Update); Chính sách khám phá $\epsilon$-greedy kết hợp giữa hành động ngẫu nhiên và hành động tối ưu; Bộ điều chỉnh tốc độ học động (Changing Learning Rate).
Phương pháp nghiên cứu và thực nghiệm:
- Mô hình hóa phần mềm: Hiện thực thuật toán DQN bằng mã nguồn Python để tạo đường cong đào tạo chuẩn và xuất bộ trọng số tham chiếu.
- Thiết kế phần cứng RTL: Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL, thiết kế tham số hóa (parameterized) thông qua chỉ thị
generate, áp dụng triệt để kỹ thuật đường ống hóa (pipeline) để tối ưu thời gian trễ.
- Phương pháp kiểm thử và nguồn dữ liệu: Môi trường đồng mô phỏng CO-Simulation xây dựng trên nền tảng thư viện Cocotb kết nối môi trường
cartpole-v0 (OpenAI Gym). Dữ liệu đầu vào gồm vector 4 trạng thái đo lường từ con lắc: vị trí xe ($x \in [-2.4, 2.4]$), vận tốc xe ($v$), góc lệch con lắc ($\theta \in [-41.8^\circ, 41.8^\circ]$), và vận tốc góc ($w$). Hành động đầu ra là nhị phân (0: đẩy trái, 1: đẩy phải).
Thiết kế và triển khai hệ thống phần cứng
Hệ thống được tổ chức thành hai phân vùng chính: Môi trường phần mềm (Software) và Kiến trúc phần cứng (Hardware) tương tác thông qua cơ chế đồng mô phỏng.
+-----------------------------------------------------------------------------------+
| SOFTWARE ENVIRONMENT (Python / Cocotb) |
| [OpenAI Gym: Cartpole-v0] <---> [Convert BIN2DEC / DEC2BIN] <---> [Cocotb Co-Sim] |
+-----------------------------------------------------------------------------------+
+-----------------------------------------------------------------------------------+
| HARDWARE ACCELERATOR (FPGA Verilog RTL) |
| |
| [DQN TOP Controller] |
+---------------------------------------------------------------------------------+--+
Kiến trúc phân tầng phần cứng chi tiết
-
Khối DQN TOP và DQN Datapath:
DQN TOP tiếp nhận các tín hiệu điều khiển chung, điều phối luồng nạp trọng số ban đầu (valid_in_data_w), nhận trạng thái môi trường (state_env) và trả về hành động tương tác (action).
DQN Datapath quản lý các khối chức năng chính: Main Network, Target Network, Experience Replay, Temporal Difference, Target Update, Epsilon Greedy, Counter Train.
-
Khối Main Network và Xử lý tính toán (PE - Perceptron Element):
- Mạng chính bao gồm 2 lớp ẩn có thể cấu hình số lượng node thông qua tham số.
- Để tối ưu hóa tài nguyên phần cứng trên FPGA, khối PE không thiết kế song song toàn bộ các node (vốn tốn tài nguyên gấp bội), mà áp dụng mô hình tính toán tuần tự theo pipeline: sử dụng 1 bộ nhân FP-32 kết hợp khối chuyển đổi nối tiếp sang song song (Serial-to-Parallel - S2P) và cây cộng (Adder Tree).
- Với cấu hình 8 node liên kết với 8 node lớp trước, kiến trúc PE tuần tự đường ống thực thi trong 108 chu kỳ xung nhịp (thay vì 44 chu kỳ khi chạy song song hoàn toàn nhưng tiết kiệm được 8 lần tài nguyên tính toán).
-
Cải tiến hàm kích hoạt Leaky ReLU trên phần cứng:
- Để khắc phục lỗi tràn số phần cứng trên định dạng FP-32 khi kích hoạt giá trị dương, nhóm nghiên cứu cải tiến công thức hàm Leaky ReLU thành:
$$f(x) = \begin{cases} b \cdot x & \text{khi } x > 0 \ a \cdot x & \text{khi } x \le 0 \end{cases} \quad \text{với } 0 < b < a < 1$$
- Cấu trúc phần cứng gồm một bộ nhân FP-32, một bộ dồn kênh MUX 2-1 và mạch kiểm tra bit dấu (MSB) của dữ liệu đầu vào.
-
Khối lan truyền ngược (Backpropagation):
- Bao gồm các khối tính sai số tại node trước hàm kích hoạt CEN (Calculate Error on Node) và khối tính toán độ biến thiên, cập nhật trọng số CDUW (Calculator Delta and Update Weight).
- Dữ liệu lỗi từ lớp cuối được khối Temporal Difference đưa vào, truyền ngược qua các PE của mạng Backward và cập nhật vào bộ nhớ trọng số mà không cần can thiệp của CPU máy chủ.
-
Khối sinh số ngẫu nhiên chấm động (RNG-FP) và Đồng bộ Target Network:
- Khối RNG-FP tích hợp các giải thuật thanh ghi dịch phản hồi tuyến tính (LFSR), Fibonacci và Galois để tạo số ngẫu nhiên phục vụ chính sách $\epsilon$-greedy và lấy mẫu ngẫu nhiên từ Experience Replay.
- Khối
Target Update đảm bảo cập nhật trọng số sang mạng mục tiêu theo chu kỳ định sẵn nhằm duy trì tính hội tụ ổn định.
Nội dung chính theo từng chương
Chương 1. Giới thiệu tổng quan đề tài
Trình bày tổng quan về lĩnh vực máy học, vị trí của học tăng cường và sự khác biệt căn bản so với học có giám sát và học không giám sát. Tác giả phân tích các ứng dụng thực tế (trò chơi, tự động hóa, điều khiển giao thông, quản lý tài nguyên) và chỉ ra hạn chế của các hệ thống tính toán dựa trên CPU/GPU cồng kềnh. Đặt ra bài toán thiết kế kiến trúc phần cứng chuyên dụng trên FPGA xử lý số chấm động IEEE-754 cho mô hình DQN. Xác định 2 mục tiêu nghiên cứu và phương pháp triển khai bằng Verilog theo kiến trúc pipeline.
Chương 2. Cơ sở lý thuyết
Hệ thống hóa toàn bộ lý thuyết toán học liên quan: giải thuật Q-learning dạng bảng; cấu trúc mạng nơ-ron nhân tạo (ANN); thuật toán Feed-forward và Back-propagation; khảo sát ưu nhược điểm của các hàm kích hoạt (Sigmoid, Tanh, ReLU, Leaky ReLU) đối với hiện tượng bão hòa và bùng nổ gradient. Phân tích chi tiết 5 thành phần cấu tạo nên mô hình Deep Q-Network: Main Network, Target Network, Temporal Difference, Experience Replay, Policy ($\epsilon$-greedy) và vai trò của tốc độ học (Learning Rate). Giới thiệu đặc tả bài toán cân bằng con lắc trong môi trường Cartpole-v0 cùng các ngưỡng biên vật lý.
Chương 3. Đề xuất kiến trúc thiết kế
Đưa ra sơ đồ khối và lưu đồ chuyển trạng thái của toàn bộ hệ thống từ mức tổng quan đến chi tiết từng module. Cung cấp bảng đặc tả giao tiếp (interface, số bit, hướng I/O) và cấu trúc mạch cho: DQN TOP, DQN DATAPATH, Main Network, Target Network, Target Update, Experience Replay Memory, Epsilon Greedy, Changing Learning Rate, Temporal Difference, PE, CEN, CDUW, Leaky ReLU, RNG-FP, cùng các bộ tính toán dấu chấm động đơn Multiplier FP-32bit và Adder FP-32bit. Trình bày giải pháp thiết kế tuần tự kết hợp cây cộng (Adder Tree) trong PE và sửa đổi công thức Leaky ReLU để phù hợp với định dạng FP-32 trên phần cứng.
Chương 4. Kết quả mô phỏng - Tổng hợp tài nguyên
Trình bày phương pháp đánh giá thông qua môi trường đồng mô phỏng Cocotb kết nối Python và Vivado Simulator. Đưa ra các dạng sóng mô phỏng kiểm tra từng khối tính toán riêng lẻ (mạch nhân, mạch cộng FP-32, PE, CDUW, Target Update, Experience Replay...) và mô phỏng toàn hệ thống DQN ở các chế độ: nạp trọng số (Load Weight Init), tương tác (Interactive Mode) và huấn luyện (Train Mode). Trình bày kết quả tổng hợp tài nguyên trên chip Xilinx Virtex-7, đánh giá sai số giữa phần cứng và phần mềm, phân tích đường cong huấn luyện qua 500 phiên (episodes) và so sánh với các công trình nghiên cứu phần cứng liên quan.
Chương 5. Kết luận và hướng phát triển đề tài
Tổng kết các kết quả đạt được so với mục tiêu ban đầu về tần số xung nhịp, công suất, khả năng hội tụ và độ chính xác tính toán. Nêu rõ các khó khăn gặp phải trong quá trình thiết kế mạch số chấm động và dung lượng bộ nhớ mô phỏng. Định hướng các giải pháp mở rộng và nâng cấp kiến trúc cho các nghiên cứu tiếp theo.
Kết quả và đóng góp
Kết quả đo lường và thực nghiệm
Các kết quả mô phỏng và tổng hợp phần cứng trên chip Xilinx Virtex-7 (xc7vx485tffg1927-1) được trích xuất cụ thể từ văn bản:
| Chỉ số đánh giá |
Chỉ tiêu đặt ra |
Kết quả thực tế đạt được |
| Tần số hoạt động tối đa ($F_{max}$) |
150 MHz |
212.7 MHz |
| Công suất tiêu thụ tĩnh và động |
< 10 W |
1.353 W |
| Sai số tính toán lớn nhất (FPGA vs Software) |
- |
$3.547 \times 10^{-5}$ (qua 1000 mẫu kiểm thử) |
| Khả năng hoàn thành nhiệm vụ Cartpole |
Đạt 200 tương tác/phiên |
Đạt ngưỡng ổn định trong 500 phiên huấn luyện |
Mô hình phần cứng hoàn thành đầy đủ chu trình: nhận dữ liệu trạng thái từ môi trường cartpole-v0, ra quyết định hành động qua chính sách $\epsilon$-greedy, lưu trữ dữ liệu vào bộ đệm phát lại và tự động kích hoạt quá trình huấn luyện Backpropagation để cập nhật trọng số.
Đóng góp của đề tài
- Thiết kế hoàn chỉnh kiến trúc DQN on-chip: Hiện thực hóa toàn bộ quá trình suy diễn (Inference) và huấn luyện (Training on-chip) của mô hình Deep Q-Network trên FPGA mà không cần máy chủ host can thiệp trong quá trình lan truyền ngược.
- Tối ưu hóa kiến trúc phần cứng cho giải thuật AI: Đề xuất cấu trúc PE tuần tự kết hợp Adder Tree giúp tiết kiệm đáng kể tài nguyên logic so với thiết kế song song thuần túy, đồng thời đảm bảo thông lượng tính toán nhờ kỹ thuật đường ống hóa (pipeline).
- Cải tiến số học dấu chấm động: Hiệu chỉnh hàm kích hoạt Leaky ReLU và chuẩn hóa các khối nhân, cộng FP-32 giúp triệt tiêu hiện tượng tràn số (overflow) và bùng nổ gradient khi xử lý số thực trên mạch số.
- Xây dựng giải pháp đồng mô phỏng chuẩn xác: Kết hợp thành công Cocotb, Python và trình mô phỏng phần cứng để kiểm thử trực tiếp mô hình phần cứng với môi trường tương tác OpenAI Gym.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận ghi nhận các khó khăn và hạn chế thực tế trong quá trình triển khai:
- Quá trình mô phỏng toàn hệ thống với tệp ghi nhận dạng sóng (
dumpfile) tạo ra dung lượng dữ liệu rất lớn, làm chậm thời gian kiểm thử toàn diện trên máy tính.
- Kiến trúc phần cứng hiện tại được tối ưu hóa cho mạng nơ-ron có cấu trúc vừa phải tương thích với không gian trạng thái của môi trường
cartpole-v0; khi mở rộng cho các bài toán có không gian trạng thái và hành động lớn hơn, dung lượng bộ nhớ BRAM/LUTRAM trên FPGA sẽ chịu áp lực lớn.
- Giới hạn kích thước của bộ đệm phát lại (Experience Replay Memory) trên chip FPGA so với các hệ thống máy tính dùng RAM ngoài.
Hướng phát triển được tác giả đề xuất:
- Tối ưu hóa sâu hơn việc chia sẻ tài nguyên tính toán giữa các khối con (tái sử dụng khối nhân/cộng FP-32 giữa mạng Feedforward và Backward) nhằm giảm diện tích chiếm dụng trên vi mạch.
- Mở rộng kiến trúc phần cứng để hỗ trợ các không gian hành động liên tục và thử nghiệm trên các môi trường học tăng cường phức tạp hơn.
- Triển khai thực tế trên bo mạch phần cứng SoC-FPGA vật lý kết hợp giao tiếp với các hệ thống chấp hành thực tế thay vì môi trường giả lập qua phần mềm.
Giá trị tham khảo
Tài liệu khóa luận mang lại giá trị tham khảo chuyên môn trong các lĩnh vực:
- Đối tượng thụ hưởng: Sinh viên, học viên cao học và kỹ sư thuộc các chuyên ngành Kỹ thuật Máy tính, Thiết kế Vi mạch (IC Design), Điện tử - Viễn thông và Khoa học Dữ liệu định hướng triển khai AI trên thiết bị biên (Edge AI).
- Các nội dung đáng tham khảo:
- Thiết kế chi tiết các khối tính toán số dấu chấm động 32-bit (FP-32 Multiplier, Adder) theo chuẩn IEEE-754 bằng Verilog RTL.
- Kỹ thuật thiết kế phần cứng cho mạng nơ-ron: module hóa PE, khối tính toán sai số CEN và cập nhật trọng số CDUW.
- Quy trình thiết lập môi trường đồng mô phỏng phần cứng - phần mềm (Co-simulation) sử dụng Cocotb để tương tác trực tiếp với các framework máy học chuẩn (OpenAI Gym).
Câu hỏi thường gặp
1. Khóa luận giải quyết bài toán tràn số (overflow) của số dấu chấm động FP-32 trong hàm Leaky ReLU như thế nào?
Tác giả đã điều chỉnh công thức Leaky ReLU trên phần cứng bằng cách nhân cả phần dương ($x > 0$) với một hệ số $b$ nhỏ hơn 1 ($0 < b < a < 1$, với giá trị thực nghiệm $a=0.5, b=0.25$), giúp giá trị đầu ra của nơ-ron luôn được co cụm trong khoảng an toàn, ngăn chặn hiện tượng bùng nổ trọng số và tràn bit trên định dạng FP-32.
2. Điểm khác biệt giữa khối PE trong mạng lan truyền xuôi (Feedforward) và mạng lan truyền ngược (Backward) là gì?
Về mặt cấu trúc, PE ở hai mạng đều gồm bộ nhân FP-32, khối S2P và Adder Tree. Tuy nhiên, PE trong mạng Backward hoạt động theo chiều ngược lại (lan truyền lỗi từ lớp sau về lớp trước) và không thực hiện cộng độ lệch (bias) như ở mạng Feedforward.
3. Tại sao tác giả lựa chọn thiết kế PE tuần tự thay vì song song cho các node trên cùng một lớp?
Thiết kế song song hoàn toàn (mỗi node một bộ tính toán riêng) tiêu tốn tài nguyên phần cứng gấp nhiều lần (vượt quá dung lượng FPGA). Thiết kế tuần tự sử dụng 1 PE kết hợp kỹ thuật đường ống (pipeline) xử lý 8 node chỉ mất 108 chu kỳ (so với 44 chu kỳ của song song), giúp tiết kiệm 8 lần tài nguyên tính toán nhưng vẫn đảm bảo hiệu năng xử lý cao.
4. Môi trường đồng mô phỏng (Co-simulation) của đề tài được cấu hình ra sao?
Hệ thống sử dụng Cocotb (viết bằng Python) làm cầu nối. Cocotb nhận trạng thái thực từ môi trường Cartpole-v0 (OpenAI Gym), chuyển đổi sang mã nhị phân 32-bit (DEC2BIN) rồi truyền vào cổng DQN TOP trong trình mô phỏng Verilog. Sau khi FPGA tính toán xong và trả về action, Cocotb chuyển đổi ngược lại (BIN2DEC) để điều khiển xe đẩy trong môi trường Cartpole.
5. Kết quả thực nghiệm về tần số và công suất của thiết kế trên chip Xilinx Virtex-7 đạt được là bao nhiêu?
Thiết kế đạt tần số hoạt động tối đa là 212.7 MHz (vượt chỉ tiêu ban đầu là 150 MHz), công suất tiêu thụ ước tính là 1.353 W (thấp hơn nhiều so với ngưỡng giới hạn đặt ra là dưới 10 W), và sai số tối đa so với mô hình phần mềm là $3.547 \times 10^{-5}$.
Kết luận
Khóa luận tốt nghiệp của Huỳnh Xuân Min và Trần Văn Khoa đã thiết kế và thực thi thành công kiến trúc tăng tốc phần cứng cho thuật toán học tăng cường Deep Q-Network trên vi mạch FPGA Xilinx Virtex-7. Bằng việc kết hợp kiến trúc đường ống hóa, cải tiến hàm kích hoạt Leaky ReLU và áp dụng định dạng số chấm động 32-bit IEEE-754, hệ thống đạt tần số hoạt động 212.7 MHz với mức công suất tiêu thụ chỉ 1.353 W. Công trình cung cấp giải pháp toàn diện từ thiết kế RTL, tối ưu hóa phần cứng cho đến đồng mô phỏng với môi trường OpenAI Gym, đóng góp một tài liệu tham khảo kỹ thuật giá trị cho hướng nghiên cứu tích hợp trí tuệ nhân tạo trên các thiết bị nhúng và thiết bị biên.