- GPU: 128-core MaxwellTM GPU
- CPU: quad-core ARM® Cortex®-A57 CPU
- RAM: 4GB 64-bit LPDDR4
- _ Bộ nhớ: khe căm thé microSD (devkit) hoặc 16GB eMMC flash (Từ nha
sản xuất)
- Kha năng sử lí video:
o Encode: 4K @ 30 (H.264/H.265)
o Decode: 4K @ 60 (H.264/H.265)
- Cac công giao tiếp:
o Ethernet: 10/100/1000BASE-T self-negotiation
o Camera: 12-ch (3x4 OR 4x2) MIPI CSI-2 DPHY 1.1 (1.5Gbps)
o Display: HDMI 2.0, DP (DisplayPort)
o USB: 4x USB 3.0, USB 2.0 (Micro USB)
o Others: GPIO, I2C, I2S, SPI, UART
- Nguồn cấp:
o Micro USB (5V 2.5A)
o DC Jack (5V 4A)
28
Hinh 16. Kit NVIDIA Jetson Nano
2.6.3. CUDA trén kit NVIDIA Jetson Nano
NVIDA Jetson Nano là một trong những máy tính nhúng có giá thành rẻ
nhưng có hỗ GPU và đặc biệt là CUDA.
CUDA là một nền tang tính toán song song và mô hình lập trình được phát triển bởi NVIDIA dé tính toán chung trên các đơn vị xử lý đồ hoa (GPU). Với CUDA, các nhà phát triển có thé tăng tốc đáng ké các ứng dụng điện toán bằng cách khai thác sức mạnh của GPU.
CUDA cho phép các nhà phát triển truy nhập vào tập các chỉ lệnh ảo và bộ nhớ của các phần tử tính toán song song trong đơn vị xử lý đồ họa của CUDA (CUDA GPU). Sử dụng CUDA, các GPU do NVIDIA sản xuất có thé dé dàng thực hiện các tính toán như những CPU. Tuy nhiên, không giống như các CPU, các GPU có kiến trúc song song trên toàn bộ giúp cho sự tập trung vào khả năng thực thi một cách chậm rãi nhiều luồng dữ liệu một lúc, hơn là thực thi rất nhanh một luồng dữ liệu. Cách tiếp cận giải quyết các van
đề có mục đích tổng quát này trên các GPU được gọi là GPGPU.
29
2.7. Tìm hiểu về thư viện TensorRT"!
2.7.1. Giới thiệu TensorRT
TensorRT là một thư viện C++ giúp cho việc xử lý hiệu năng cao trên các
đơn vị xử lý đồ họa GPU của NIVIA. Nó được thiết kế để hoạt động theo kiểu bổ sung vào các fameworks như TensorFlow, Caffe, PyTorch, MXNet,
... Đặc biệt TensorRT giúp các mạng đã được dao tạo hoạt động nhanh chóng
và hoạt động hiệu quả trên GPU dé tạo ra kết quả tốt hơn.
Một số framework như TensorFlow đã tính hợp TensorRT dé có thé tăng tốc khả năng suy luận của mô hình. Ngoài ra, TensorRT có thể được sử dụng làm thư viện trong ứng dụng người dùng. Nó bao gồm các trình phân tích cú pháp để nhập các mô hình hiện có từ Caffee, ONNX hoặc TensorFlow và API C++, Python dé xây dựng các mô hình theo chương trình.
Hình 17. Tổng quan quy trình toi wu model với TensorRT
2.7.2. Tổng quan quy trình phát triển deep learning kết hợp TensorRT
Dé phát triển dự án deep learning kết hợp với TensorRT thì nhìn chung có 3
giai đoạn:
e Giai đoạn 1: Đào tạo mô hình
30
Nhà phát triển sẽ phải triển khai van dé, xác định đầu vào, đầu ra dé phát triển mô hình training mong muốn. Trong quá trình này, để có một model training tốt thì cần phải làm thực hiện thu thập di liệu, tăng cường quản lý gán nhãn các bộ dữ liệu dé dao tạo. Sau đó thiết kế cấu trúc của mạng và đảo tạo mô hình. Trong quá trình đào tạo cần phải giám sát quá trình training để
có thé tăng cường chỉnh sửa chức năng hoặc thu thập thêm dữ liệu, tăng chất lượng model theo mong muốn.
Ở quá trình này thì TensorRT không được sử dụng để đào tạo.
e_ Giai đoạn 2: Phát triển giải pháp và triển khai
Trong quá trình này, nhà phát triển sẽ thực hiện việc ứng dụng mô hình đào tạo trong một hệ thong nào đó như có thê nói:
- Hé thống nhận diện khuôn mặt, hay vật thé
- Hé thống lái xe tự động
- Hé thống an ninh video trong khuôn viên công ty
TensorRT sẽ cung cấp một công cụ suy luận, module nhỏ gọn mạnh mẽ đáng
tin cậy đê ho trợ các công việc suy luận của kiên trúc đã trién khai.
Sau khi xác định những việc cần thiết để thực hiện, nhà phát triển sẽ xây dựng công cụ suy luận từ model đã được training từ lúc trước bằng cách sử dụng TensorRT để tạo ra một model mới. Nói cách khác, là chúng ta sẽ lấy model đã training trước đó phát triển phân tích thành TensorRT model bằng
trình cú pháp ONNX, trình phân tích Caffe hoặc trình phân tích TensorRT/UFF như hình 18.
31
ONNX Workflow V1
ONNX & Model
PYTORCH @xnet
Framework TỶ Tnnn
Integration
+ au k eo ryđô
Tensort iow e9 e
`
Network
Custom —— |
Framework
Hình 18. TensorRT tối wu hóa các mô hình mang than kinh được đào tạo dé tạo ra
một công cụ suy luận thời gian TensorRT Runtime
Tiếp theo, sẽ xem xét các tùy chọn dé tối ưu hóa như bath size, kích thước
workspace, độ chính xác hỗn hơp (mixed precision). Các tùy chọn và chỉ
định này như là một phần để triển khai TensorRT nơi mà thực sự xây dựng một công cụ tối ưu model của mình.
Cuối cùng tiễn hành tối ưu model thành định dạng TensorRT.
e Giai đoạn 3: Triển khai giải pháp
Giai đoạn này có nghĩa là hệ thống sẽ thực thi và chương trình xây dựng
được thực thi cùng với TensoRT.
32
2.7.3. Lợi ích khi triển khai TensorRT
Giải thích ngắn gọn và dé dễ hiểu, với việc không sử dụng TensorRT thì mỗi model sẽ thực hiện đơn lẻ trên mỗi GPU, điều này có thé dẫn dé việc không
sử dụng tốt nguồn tài nguyên của GPU trên các máy tính AI chuyên dụng như hiện nay được hỗ trợ với nhiều GPU.
Như hình 19 bên dưới làm ví dụ việc điều phối các model đơn lẽ trên mỗi
GPU.
ằ * Single model / framework per GPU
cpu s Utilization is low
ĩ
* Peak load requires adding GPUs
Hình 19. Phân bo luông các model cho GPU
33
Total Utilization
jImages P
Demai| 121242)
Delivered: 4436 Ä(E& “4-16:
GPU GPU2 GPU3 — 6PU6 6PU7 0PUð
19% 19% 14%
Model #3 Model #3 Model #á
Hình 20. Hiệu suất khi thực thi models trên GPU
Ở hình 20 thì ta có thể thấy tông tài nguyên được sử dụng không được quá cao, không sử dụng tốt nguồn tài nguyên của hệ thống dẫn đến GPUI và GPU2 quá tải so với các GPU khác thì được sử dụng rất ít gây ra lãng phí tài nguyên đáng kê.
Khi chúng ta tích hợp TensorRT có các model thì việc điều phối GPU giúp cân bằng được các nguồi tài nguyên như hình 21 và hình 22 bên dưới.
34
With TensorRT Inference Server
Every GPU runs multiple
models / frameworks
Higher utilization
Absorb peak loads more easily
Utilization
[Images Per Sec:
| Dema
ị __Deliver,
6PU1 GPU2 GPU 3 GPU4 GPUS GPU 6 GPU7 GPU 8
All Models All Models All Models All Models All Models All Models All Models All Models
Pao,
Hình 22. Hiệu suất điều phối của GPU khi sử dụng TensorRT
2.7.4. Dùng TensorRT để tối ưu file Tensorflow
Từ các kiến thức nhóm đã tìm hiểu về TensorRT ở trên, giải pháp tích hợp TensorRT vào Tensorflow có thê được áp dụng vào một số model ứng dụng như nhận diện được đối tượng, dịch thuật, ... Gia sử khi đã có được mô hình Tensorflow có khả năng nhận diện được vật thể, chúng ta có thể sử dụng
35
model đó dé thực thi các chương trình dự đoán bằng cách đóng băng lại biểu
đồ mô hình được đã được train bởi Tensorflow và xuất file đưới dạng *.pb. Tiếp theo đó, ta chuyên đổi định dạng file *.pb sang định dạng *.uff, phố biến hơn và được hỗ trợ bởi TensorRT để xây dựng một engine có thể chạy
trên nhân GPU của kit NVIDIA Jetson Nano. Sau đó từ file *.uff ta sử dụng
thư viện pyCuda và TensorRT để tiến hành build một engine và lưu engine
đó thành một file *.bin, điều này sẽ giúp chúng ta đỡ mất thời gian build engine khi thực hiện chương trình lại nhiều lần. Trong quá trình build engine, chúng ta sẽ cấu hình phần cứng của GPU dé thực hiện model trên, một số
thuộc tính như workspace_size hay batch size, những thuộc tinh này sẽ ảnh
hưởng đến hiệu suất cũng như độ chính xác của model khi chạy trên nhân GPU. Bên cạnh đó chúng ta cũng cần cấu hình kích thước input và kết quả output mong đợi sao cho phù hợp với model. Sơ đồ dưới đây sẽ cho thấy được quá trình áp dụng bộ tối ưu của TensorRT vào biểu đồ trong
Tensorflow khi áp dụng phương pháp này.
File graph *.pb — File uff *.uff > Fle enine "on
Hình 23. Quá trình build một file engine dé thực hiện chương trình
36