MỤC LỤC
Đồng thời, chúng ta có thể tạo nên một xu hướng dịch chuyển việc triển khai các ứng dụng của mạng nơ-ron nhân tạo từ các nền tảng phần mềm hiện tại sang các nền tảng phần cứng vốn hiệu quả hơn về việc sử dụng tài nguyên, năng lượng,. Điều này đồng nghĩa tiêu chuẩn giao tiếp giữa đơn vị xử lí phần mềm với phần cứng được dùng để hiện thực hệ thống tăng tốc mạng nơ-ron nhân tạo phụ thuộc vào thông số kỹ thuật của dòng FPGA này và không nằm trong phạm vi nghiên cứu.
Các công trình về giảm độ phức tạp tính toán: Các nghiên cứu theo hướng tiếp cận này thường đưa ra các giải pháp tối ưu cho việc biểu diễn dữ liệu với độ rộng bit thấp nhằm giảm sự phức tạp trong tính toán và lưu trữ, áp dụng các phương pháp tính nhanh hoặc đề xuất các mô hình mạng nơ-ron phù hợp với phần cứng. Một cách tiếp cận khác, công trình [19] khai thác mối tương quan giữa các điểm ảnh liền kề để giảm thiểu khối lượng tính toán trong phép tích chập, Mahmoud và các cộng sự đã phát triển phần cứng tăng tốc Diffy đạt hiệu năng cao hơn 7.1 lần so với siêu máy tính học máy DaDianNao [20] trong các thí nghiệm của họ và 1.41 lần so với phương pháp tăng tốc dùng trực tiếp giá trị của ảnh đầu vào. Từ các công trình đã khảo sát, một số vấn đề chính trong lĩnh vực tăng tốc mạng nơ-ron nhân tạo có thể kể đến như: giới hạn của bộ nhớ trong và ngoài chip trên các nền tảng FPGA cũng như các thiết bị nhúng, các thiết bị hoạt động ở tần số thấp mang lại hiệu quả năng lượng nhưng hiệu năng không cao, việc di chuyển dữ liệu trong hệ thống bộ nhớ và giao tiếp giữa các thành phần trong hệ thống gây ra các điểm nghẽn khó tránh, ngoài ra, thời gian thiết kế và hiện thực là rất lớn vì các ràng buộc trong thiết kế phần cứng, đặc biệt người nghiên cứu, thiết kế phải có hiểu biết trên cả lĩnh vực học máy và thiết kế phần cứng.
Bộ xử lý sẽ cấu hình cho bộ DMA để di chuyển dữ liệu từ bộ nhớ ngoài chip vào bộ nhớ bên trong chip, sau đó gửi một tớn hiệu vào lừi tăng tốc để tiến hành thực hiện giảm tải (offload) việc thực hiện các phép toán tích chập cho bộ xử lý. Phần quan trọng nhất đảm nhiện việc tớnh toỏn của hệ thống tăng tốc, phần lừi tớnh toỏn, gồm một mảng các bộ xử lý tính toán theo bộ lọc và kênh, Kernel-Channel Pro- cessing Engine để thực hiện phép tích chập giữa dữ liệu đầu vào và trọng số. Hệ thống tăng tốc này có thể hoạt động được với nhiều mô hình mạng nơ-ron học sâu khác nhau với các kích thước đặc trưng đầu vào và trọng số khác nhau bằng cách cấu hình các tham số cần thiết thông qua các thanh ghi ở Register File.
Sau khi hoàn tất quá trình tính toán, dữ liệu ở bộ đệm đầu ra sẽ được chuyển lên bộ nhớ của vi xử lý chủ để thực hiện các thao tác tiếp theo của ứng dụng. Đồng thời, giải phóng bộ đệm để chuẩn bị cho các phần tính toán tiếp theo.
UltraScale+ MPSoC ZU3EG với phần mềm được xử lớ bởi vi xử lớ lừi ARM và hệ thống tăng tốc cho mạng nơ-ron sẽ được cấu hình ở phần logic khả cấu hình trên chip này. + Application Processing Unit: Quad-core Arm Cortex-A53 MPCore + Real-Time Processing Unit: Dual-core Arm Cortex-R5F. Với các tham số kỹ thuật trên, hãng Avet và Xilinx khuyến nghị kit phát triển này cho các ứng dụng về Trí tuệ nhân tạo/ Học máy, Internet of Things,.
Cổng Master AXI của CDMA được kết nối với hệ thống bus và một trong số các cổng Master AXI của khối AXI SmartConnect được nối vào cổng Slave AXI HP của bộ vi xử lí, giúp CDMA kết nối được với bộ nhớ DRAM ngoài chip, cũng là bộ nhớ của khối vi xử lí này. Ngay khi việc ghi dữ liệu về số byte cần vận chuyển xuống thanh ghi BTT hoàn thành, CDMA ngay lập tức sẽ thực hiện hoạt động sao chép số byte dữ liệu tương ứng bắt đầu từ địa chỉ nguồn SA đến địa chỉ đích DA tương ứng theo giá trị được cấu hình trong các thanh ghi này. Sau đó, ta có thể thực hiện polling giá trị thanh ghi trạng thái hoặc đợi tín hiệu ngắt báo hiệu chuyển dữ liệu thành công từ CDMA để xác định quá trình sao chép dữ liệu đã hoàn thành.
Đối với bộ đệm này, về luận lý, 4 khối BRAM hoạt động như 1 khối độc lập, việc phân tách vật lớ thành 4 khối riờng biệt nhằm mục đớch cho phộp lừi tớnh toỏn cú thể vừa đọc, ghi vào bộ đệm cùng lúc, vừa cho phép bộ vi xử lí thực hiện chuyển dữ. Tín hiệu read enable được giữ lại với thời gian tương ứng với độ trễ của BRAM để tạo tín hiệu read valid (ovld) báo hiệu cho các khối sử dụng dữ liệu được đầu ra của bộ điều khiển rằng dữ liệu đọc cần đọc đã được trả về. Kết nối giữa bộ điều khiển BRAM đơn giản với BRAM thể hiện ở Hình 5.22 Đối với bộ đệm cho dữ liệu kết quả đầu ra, lừi tớnh toỏn cần phải đọc và ghi vào bộ đệm cùng một lúc, bên cạnh đó, bộ vi xử lí cũng có thể đọc dữ liệu ra bộ nhớ ngoài, vì thế sẽ không đủ cổng cho 3 dòng dữ liệu này.
+ 1 : Reset cỏc thanh ghi, bộ đếm sử dụng trong bộ điều khiển lừi tính toán về giá trị mặc định. Các thanh ghi này nhằm mục đích thực hiện các tác vụ đọc ghi thanh ghi theo phương thức gián tiếp.
Điều này đồng nghĩa với tính hiệu valid của tổng tích lũy một phần psum của tất cả các PE sẽ tích cực đồng thời giúp tạo tín hiệu valid cho psum ở đầu ra sau cùng, ta cũng có thể kiểm soát lỗi của bộ KCPE thông qua đặc tính này. Khi trọng số đã sẵn sàng trong KCPE, bộ điều khiển ngay lập tức đọc dữ liệu từ bộ đệm đầu vào cục bộ, với mỗi yêu cầu, đọc được 3 phần tử, tuy nhiên con trỏ đọc của FIFO này sẽ dịch chuyển một khoảng bằng với sải bước (stride). Trong lúc này, các kết quả partial sum cũng dần được bộ tích lũy Accumulator cộng dồn và ghi vào bộ đệm Output Global Buffer, khi hoàn thành việc ghi tất cả dữ liệu vào bộ đệm, bộ tích lũy cũng phát một tín hiệu hoàn thành.
PYNQ [26] là framework do Xilinx phát triển nhằm giúp tăng hiệu suất cụng việc của cỏc nhà phỏt triển ứng dụng nhỳng muốn tận dụng cỏc lừi IP và phần cứng nền tảng FPGA SoC của hãng. Đồng thời PYNQ hỗ trợ trích xuất các thông tin phần cứng liên quan đến thiết kế, đặc biệt đối với các IP core do Xil- inx phát triển dưới dạng các đối tượng. Việc sử dụng framework PYNQ giúp tăng hiệu năng làm việc khi phát triển ứng dụng, tuy nhiên ta vẫn có thể sử dụng ngôn ngữ C/C++ để phát triển các ứng dụng như cách làm truyền thống.
Riêng với bộ trọng số 16 bộ lọc, do kích thước kết quả đầu ra vượt quá khả năng lưu trữ của bộ đệm đầu ra nên sau khi thực hiện tính toán trên 8 bộ lọc đầu, kết quả được sao chép ra bộ nhớ DRAM bằng DMA rồi tiếp tục tính toán, do đó speed up giảm đáng kể. Qua các chỉ số, có thể thấy được hầu hết các công trình có phần hiện thực với số lượng đơn vị tính toán lớn và một số công trình sử dụng độ rộng bit nhỏ để giảm độ phức tạp tính toán nên đạt được hiệu năng tốt hơn, nhưng cũng vì vậy mà lượng tài nguyên sử dụng cũng rất lớn. Xét mối tương quan về độ rộng của các phép toán số học, lượng tài nguyên và hiệu năng giữa các công trình, có thể thấy kết quả về hiệu năng của hệ thống đã hiện thực không thua kém các công trình tương tự và vẫn có tiềm năng khai thác rất lớn vỡ lừi tớnh toỏn chỉ chiếm khoảng 6 % lượng tài nguyờn.
Các hướng phát triển trong lương lai sẽ điều chỉnh kiến trúc bộ tính toán để trở nên linh hoạt hơn, áp dụng thêm các giải pháp tăng tốc khác từ các công trình khoa học tiên tiến để cải thiện khả năng tính toán, ví dụ như phương pháp tận dụng sự sai khác nhỏ giữa các vị trí gần nhau trong dữ liệu đầu vào để giảm lượng phép tính cần thực hiện. Tóm lại, với khả năng tái cấu hình, nền tảng FPGA mang lại sự linh hoạt trong việc điều chỉnh các thiết kế, cùng với đó là khả năng song song hóa cao so với các ứng dụng dựa trên nền tảng phần mềm chạy trên vi xử lí, giúp cải thiện hiệu năng đáng kể cho các ứng dụng này. Dù còn nhiều hạn chế, nhưng các kết quả sơ bộ này không chỉ có ý nghĩa thực tiễn trong các ứng dụng của trí tuệ nhân tạo trên các thiết bị nhúng, di động, điện toán biên mà còn có ý nghĩa khoa học vì nó sẽ cung cấp thêm một minh chứng cho khả năng vượt trội của nền tảng FPGA trong lĩnh vực trí tuệ nhân tạo.