Trang Chủ

Sử dụng TensorRT để suy luận nhanh hơn và giảm độ trễ cho Mô hình đào sâu

TensorRT là gì ?

TensorRT là một thư viện được phát triển bởi NVIDIA nhằm cải thiện tốc độ inference, giảm độ trì truệ trên các thiết bị đồ họa NVIDIA(GPU). Nó có thể cải thiện tốc độ suy luận lên đến 2-4 lần so với các dịch vụ real-time và nhanh hơn gấp 30 lần so với hiệu suất của CPU.

Nội dung bài này chúng ta tập trung một số vấn đề sau đây:

TensorRT cải thiện việc tối ưu như thế nào ?

TensorRT sẽ thực hiện 5 loại tối ưu để tăng hiệu suất inference. Chúng ta sẽ thỏa luận 5 loại này ở bên dưới.

 

1. Precision Calibration

Trong suốt quá trình training, các tham số và hàm kích hoạt activations trong độ chính xác FP32(Float Point 32) sẽ được convert về độ chính xác FP16 hoặc INT8. Việc tối ưu nó sẽ giảm độ trì truệ và tăng tốc độ suy luận nhưng phải trả một cái giá là phải giảm độ chính xác của model mặc dù không đáng kể. Trong nhận diện real-time thì đôi khi vịệt đánh đổi độ chính xác so với tốc độ suy luận là cần thiết.

2. Layer & Tensor Fusion

TensorRT nó sẽ gộp layer and tensor để tối ưu hóa bộ nhớ GPU và băng thông bởi việc gộp các nodel theo chiều dọc, chiều ngang hoặc cả hai.

3. Kernel auto-tuning

Trong quá trình tối ưu model, một vài kernel riêng dành cho việc tối ưu sẽ thực thi trong suốt tiến trình.

4. Dynamic Tensor Memory

5. Multiple Stream Execution

Workflow

Để áp dụng TensorRT trên deep learning thì chúng ta cần phải convert model tới model-TRT theo như luồng biểu đồ sao đây.

Code

1. Cài đặt môi trường TensorRT

Để cài đặt TensorRT trên hệ thống của bạn thì cần một số yêu cầu sau đây:

2. Convert model ResNet-50 to TF-TRT

Các bạn có thể convert các model khác tới TensorRT, ở đây mình lấy ví dụ là ResNet-50.

3. Load lại model đã convert

Kết quả

Để so sánh kết quả của việc sử dụng TensorRT với việc inference native thì mình Inference ResNet-50 trên TF-TRT FP32, FP16, INT8 và native.

FP16 FP32 Native
Average step time: 2.1 msec Average step time: 2.5 msec Average step time: 4.1 msec
Average throughput: 244248 samples/sec Average throughput: 240145 samples/sec Average throughput: 126328 samples/sec

Qua đó ta thấy được việc khi convert model sang TensorRT sẽ tăng tốc độ inference và giảm độ trì truệ khá đáng kể so với inference truyền thống.

Tài liệu tham khảo

Toàn bộ code : https://colab.research.google.com/drive/15m95GzznIoCRn1XnMQXd9L-onpJiCWM3?usp=sharing
Link tài liệu tham khảo :

Chia sẻ bài viết ngay