3. QUÁ TRÌNH THỰC HIỆN
3.3. Tối ưu mơ hình Deep Learning
Tối ưu hố mơ hình là một việc rất quan trọng để có thể tận dụng hết hiệu năng của phần cứng (GPU) cho quá trình suy luận và giúp việc triển khai các mơ hình lên mơi trường production dễ dàng hơn. Công cụ mà chúng ta dùng để tối ưu hố mơ hình đã được giới thiệu ở phần trên đó là NVIDIA TensorRT [18].
3.3.1.!Tối ưu hố model EfficientDet
- Mục tiêu của việc tối ưu hố mơ hình EfficientDet là để so sánh hiệu năng với mơ hình YOLOv5 ở phần sau. Do mạng EfficientDet-D1 được xây dựng trên nền tảng TensorFlow được phát triển bởi Google, do đó có một số lớp mạng khơng thể thực hiện tối ưu bằng TensorRT. Chính vì vậy, hiện nay có một platform phục vụ cho việc tối ưu hố các mơ hình TensorFlow đó chính là TF-TRT.
- Ở mơ hình EfficientDet-D1, ta chỉ có thể tối ưu hố mơ hình về độ chính xác tính tốn là FP32, cịn với độ chính xác FP16 thì ta chưa thực hiện được do có một
+ Đầu tiên, file trọng số của model EfficientDet-D1 vừa huấn luyện sẽ được lưu dưới dạng file .ckpt. Ta cần chuyển file model_effd1.ckpt về dạng đóng băng (freeze) đó là file model_effd1.pd.
Hình 3.13. Q trình freeze model EfficientDet-D1
+ Sau đó ta sử dụng TF-TRT để tối ưu hố model hình EfficientDet-D1 với ngõ vào là file model_effd1.pd.
Hình 3.14. Q trình tối ưu hố mơ hình EfficientDet-D1
+ Trong quá trình tối ưu, ta có thể chọn batch_size cho ngõ vào mơ hình, độ chính xác tính tốn là FP32, FP16 hoặc INT8.
+ Do khơng thể chuyển mơ hình về dạng FP16, ta chỉ thu được một mơ hình EfficientDet-D1 đã tối ưu hoá về dạng FP32 được lưu dưới dạng file
model_effd1_fp32.pb.
3.3.2.!Tối ưu hoá model YOLOv5
- Với mơ hình YOLOv5-m được xây dựng trên Pytorch, việc tối ưu bằng NVIDIA TensorRT sẽ dễ dàng hơn. Ở đề tài luận văn này, quá trình tối ưu mơ hình sẽ sử dụng TensorRT phiên bản 7.0. Tham khảo một mã nguồn mở là TensorRTx [30] để tối ưu model.
- Ta tiến hành tối ưu mơ hình YOLOv5-m thành các mơ hình có độ chính xác tính tốn thấp hơn là FP32 và FP16 [19]. Ở đây ta khơng chuyển mơ hình về dạng INT8 vì kết quả của mơ hình khơng tốt và cần phải có q trình canh chỉnh (calibration). Quá trình tối ưu được miêu tả ở Hình 3.15, trong đó:
+ Mơ hình gốc của YOLOv5-m sau khi train có định dạng của Pytorch là yolov5_m.pt. Trước khi tối ưu mơ hình, ta cần chuyển mơ hình về dạng yolov5_m.wts theo hướng dẫn ở TensorRTx.
+ Sau đó ta tiến hành tối ưu hố mơ hình bằng NVIDIA TensorRT version 7.0, thơng thường mơ hình sau khi tối ưu cần cố định ngõ vào, vì thế ta cho batchsize của ngõ vào là 1, kích thước ảnh trùng với kích thước ngõ vào của model YOLOv5-m là 640x640x3. Độ chính xác tính tốn, ta sẽ chuyển mơ hình về cả hai mức là FP32 và FP16 để thực hiện so sánh.
Hình 3.15. Q trình tối ưu hố mơ hình YOLOv5-m
+ Sau khi đã tối ưu hố thành cơng mơ hình ta sẽ thu được các file
yolov5_m_fp32.engine (FP32) hoặc yolov5_m_fp16.engine (FP16) và file libmyplugins.so là file thư viện dùng cho việc triển khai mơ hình trên Triton Serving.
3.3.3.!Tối ưu hố model ResNet-50
- Với ResNet-50, mục tiêu của việc tối ưu mơ hình này là để tăng tốc quá trình suy luận phục vụ cho bài tốn phát hiện người khơng đội mũ bảo hộ.
- Vì cũng được xây dựng và huấn luyện bằng Pytorch nên quá trình tối ưu của mơ hình ResNet-50 cũng tương tự như YOLOv5-m, tuy nhiên ta cần chuyển mơ hình này về dạng ONNX model trước khi tối ưu hố bằng TensorRT. Để tương thích với mơ hình YOLOv5-m giúp dễ dàng cho q trình triển khai trên Triton Serving, ta cũng sử dụng TensorRT version 7.0.
đến batchsize ngõ vào của mơ hình ResNet-50 cũng cần phải khơng cố định thì mới tối ưu được q trình tính tốn.
- Chính vì thế trong trường hợp này ta không thể nào cố định batchsize của ResNet-50 khi tối ưu như của YOLOv5 ở phần trên. Thay vào đó, khi tạo ra mơ hình dưới dạng resnet50.onnx (ONNX file) ta phải chọn batchsize ngõ vào của mơ hình là khơng xác định [?,3,224,224] như Hình 3.16.
Hình 3.16. Q trình tối ưu hố mơ hình ResNet-50
- Sau đó tiến hành tối ưu hố mơ hình resnet50.onnx trên và thu được mơ hình
resnet50_fp16.engine. Để triển khai trên Triton Serving ta chuyển định dạng file lại
thành resnet50_fp16.plan.