Tối ưu hóa model là gì? Hướng dẫn nhanh
Tìm hiểu cách các kỹ thuật tối ưu hóa model như tinh chỉnh hyperparameter, pruning model và quantization model có thể giúp các model computer vision hoạt động hiệu quả hơn.

Tối ưu hóa model là một quy trình nhằm cải thiện tính hiệu quả và hiệu năng của các model machine learning. Bằng cách tinh chỉnh cấu trúc và chức năng của model, quá trình tối ưu hóa giúp các model mang lại kết quả tốt hơn với ít tài nguyên tính toán hơn, đồng thời giảm thời gian training và đánh giá.
Quy trình này đặc biệt quan trọng trong các lĩnh vực như computer vision, nơi các model thường cần nhiều tài nguyên để phân tích hình ảnh phức tạp. Trong các môi trường bị giới hạn tài nguyên như thiết bị di động hoặc hệ thống edge, các model được tối ưu hóa vẫn có thể hoạt động tốt với tài nguyên hạn chế mà vẫn đảm bảo độ chính xác.
Một số kỹ thuật thường được sử dụng để tối ưu hóa model gồm tinh chỉnh hyperparameter, pruning model, quantization model và mixed precision. Trong bài viết này, chúng ta sẽ tìm hiểu các kỹ thuật đó cùng những lợi ích mà chúng mang lại cho các ứng dụng computer vision. Hãy bắt đầu!
Tìm hiểu về tối ưu hóa model#
Các model computer vision thường có nhiều layer và cấu trúc phức tạp, rất phù hợp để nhận diện các pattern tinh vi trong hình ảnh, nhưng cũng có thể yêu cầu đáng kể về năng lực xử lý. Khi được triển khai trên các thiết bị có phần cứng hạn chế, chẳng hạn như điện thoại di động hoặc thiết bị edge, các model này có thể gặp một số thách thức hoặc giới hạn nhất định.
Năng lực xử lý, bộ nhớ và năng lượng hạn chế trên các thiết bị này có thể dẫn đến sự sụt giảm đáng kể về hiệu năng, vì các model khó theo kịp yêu cầu xử lý. Các kỹ thuật tối ưu hóa model đóng vai trò then chốt trong việc giải quyết những vấn đề này. Chúng giúp tinh gọn model, giảm nhu cầu tính toán và đảm bảo model vẫn có thể hoạt động hiệu quả ngay cả khi tài nguyên hạn chế. Có thể tối ưu hóa model bằng cách đơn giản hóa kiến trúc model, giảm độ chính xác của phép tính hoặc loại bỏ các thành phần không cần thiết để model nhẹ hơn và nhanh hơn.

Hình 1. Các lý do cần tối ưu hóa model. Hình ảnh của tác giả.
Dưới đây là một số kỹ thuật tối ưu hóa model phổ biến nhất, sẽ được tìm hiểu chi tiết hơn trong các phần tiếp theo:
- Tinh chỉnh hyperparameter: Bao gồm việc điều chỉnh có hệ thống các hyperparameter, chẳng hạn như learning rate và batch size, để cải thiện hiệu năng của model.
- Pruning model: Kỹ thuật này loại bỏ các weight và connection không cần thiết khỏi neural network, từ đó giảm độ phức tạp và chi phí tính toán.
- Quantization model: Quantization làm giảm độ chính xác của weight và activation trong model, thường từ 32-bit xuống 16-bit hoặc 8-bit, qua đó giảm đáng kể dung lượng bộ nhớ và yêu cầu tính toán.
- Điều chỉnh độ chính xác: Còn được gọi là mixed precision training, kỹ thuật này sử dụng các format độ chính xác khác nhau cho từng phần của model và tối ưu hóa việc sử dụng tài nguyên mà không ảnh hưởng đến độ chính xác.
Giải thích: Hyperparameter trong model machine learning#
Bạn có thể giúp model học và hoạt động tốt hơn bằng cách tinh chỉnh hyperparameter — các thiết lập định hình cách model học từ dữ liệu. Tinh chỉnh hyperparameter là một kỹ thuật tối ưu hóa các thiết lập này, giúp cải thiện tính hiệu quả và độ chính xác của model. Khác với các parameter mà model học được trong quá trình training, hyperparameter là các giá trị được thiết lập sẵn để định hướng quy trình training.
Hãy cùng xem qua một số ví dụ về hyperparameter có thể được tinh chỉnh:
- Learning rate: Parameter này kiểm soát kích thước bước mà model sử dụng để điều chỉnh các weight nội bộ. Learning rate cao hơn có thể đẩy nhanh quá trình học nhưng có nguy cơ bỏ qua nghiệm tối ưu, trong khi learning rate thấp hơn có thể cho độ chính xác cao hơn nhưng chậm hơn.
- Batch size: Xác định số lượng mẫu dữ liệu được xử lý trong mỗi bước training. Batch size lớn hơn giúp quá trình học ổn định hơn nhưng cần nhiều bộ nhớ hơn. Batch nhỏ hơn training nhanh hơn nhưng có thể kém ổn định hơn.
- Epoch: Bạn có thể xác định số lần model xử lý toàn bộ dataset bằng parameter này. Nhiều epoch hơn có thể cải thiện độ chính xác nhưng làm tăng nguy cơ overfitting.
- Kích thước kernel: Xác định kích thước filter trong Mạng nơ-ron tích chập (CNNs). Kernel lớn hơn nắm bắt được các pattern rộng hơn nhưng cần nhiều xử lý hơn; kernel nhỏ hơn tập trung vào các chi tiết tinh vi hơn.
Cách thức hoạt động của việc tinh chỉnh hyperparameter#
Tinh chỉnh hyperparameter thường bắt đầu bằng việc xác định một khoảng các giá trị khả dĩ cho từng hyperparameter. Sau đó, một thuật toán tìm kiếm sẽ khám phá các tổ hợp khác nhau trong những khoảng này để xác định các thiết lập tạo ra hiệu năng tốt nhất.
Các phương pháp tinh chỉnh phổ biến gồm grid search, random search và Bayesian optimization. Grid search kiểm thử mọi tổ hợp giá trị có thể trong các khoảng đã chỉ định. Random search chọn các tổ hợp một cách ngẫu nhiên và thường tìm được các thiết lập hiệu quả nhanh hơn. Bayesian optimization sử dụng một model xác suất để dự đoán các giá trị hyperparameter tiềm năng dựa trên những kết quả trước đó. Cách tiếp cận này thường làm giảm số lần thử cần thiết.
Cuối cùng, hiệu năng của model được đánh giá đối với từng tổ hợp hyperparameter. Quy trình được lặp lại cho đến khi đạt được kết quả mong muốn.
Hyperparameter và parameter của model#
Trong quá trình tinh chỉnh hyperparameter, bạn có thể thắc mắc sự khác biệt giữa hyperparameter và parameter của model là gì.
Hyperparameter là các giá trị được thiết lập trước training, kiểm soát cách model học, chẳng hạn như learning rate hoặc batch size. Các thiết lập này được cố định trong quá trình training và ảnh hưởng trực tiếp đến quy trình học. Ngược lại, parameter của model được chính model học trong quá trình training. Chúng bao gồm weight và bias, được điều chỉnh khi model training và cuối cùng định hướng cho dự đoán của model. Về bản chất, hyperparameter định hình quá trình học, còn parameter của model là kết quả của quá trình đó.

Hình 2. So sánh parameter và hyperparameter.
Tại sao pruning model quan trọng trong deep learning#
Pruning model là một kỹ thuật giảm kích thước, loại bỏ các weight và parameter không cần thiết khỏi model để model hoạt động hiệu quả hơn. Trong computer vision, đặc biệt với các neural network sâu, số lượng lớn parameter như weight và activation (các output trung gian giúp tính toán output cuối cùng) có thể làm tăng độ phức tạp và nhu cầu tính toán. Pruning giúp tinh gọn model bằng cách xác định và loại bỏ các parameter đóng góp rất ít vào hiệu năng, tạo ra một model nhẹ và hiệu quả hơn.

Hình 3. Trước và sau khi pruning model.
Sau khi model được training, các kỹ thuật như pruning dựa trên độ lớn hoặc phân tích độ nhạy có thể đánh giá tầm quan trọng của từng parameter. Sau đó, các parameter có tầm quan trọng thấp sẽ được prune bằng một trong ba kỹ thuật chính: pruning weight, pruning neuron hoặc structured pruning.
Pruning weight loại bỏ các connection riêng lẻ có ảnh hưởng tối thiểu đến output. Pruning neuron loại bỏ toàn bộ neuron có output đóng góp ít cho chức năng của model. Structured pruning loại bỏ các phần lớn hơn, chẳng hạn như filter tích chập hoặc neuron trong các layer fully connected, qua đó tối ưu hóa hiệu quả của model. Sau khi hoàn tất pruning, model được training lại để fine-tune các parameter còn lại, đảm bảo model vẫn giữ được độ chính xác cao ở dạng rút gọn.
Giảm latency trong model AI bằng quantization#
Quantization model làm giảm số bit được sử dụng để biểu diễn weight và activation của model. Kỹ thuật này thường chuyển đổi các giá trị dấu phẩy động 32-bit có độ chính xác cao sang độ chính xác thấp hơn, chẳng hạn như số nguyên 16-bit hoặc 8-bit. Bằng cách giảm độ chính xác theo bit, quantization làm giảm đáng kể kích thước model, dung lượng bộ nhớ và chi phí tính toán.
Trong computer vision, float 32-bit là tiêu chuẩn, nhưng chuyển sang 16-bit hoặc 8-bit có thể cải thiện hiệu quả. Có hai loại quantization chính: quantization weight và quantization activation. Quantization weight làm giảm độ chính xác của weight trong model, cân bằng giữa việc giảm kích thước và độ chính xác. Quantization activation làm giảm độ chính xác của activation, tiếp tục giảm nhu cầu về bộ nhớ và tính toán.

Hình 4. Ví dụ về quantization từ float 32-bit sang số nguyên 8-bit.
Mixed precision tăng tốc inference AI như thế nào#
Mixed precision là một kỹ thuật sử dụng các độ chính xác số khác nhau cho từng phần của một neural network. Bằng cách kết hợp các giá trị có độ chính xác cao hơn, chẳng hạn như float 32-bit, với các giá trị có độ chính xác thấp hơn như float 16-bit hoặc 8-bit, mixed precision cho phép các model computer vision tăng tốc training và giảm mức sử dụng bộ nhớ mà không làm giảm độ chính xác.
Trong quá trình training, mixed precision được thực hiện bằng cách sử dụng độ chính xác thấp hơn ở các layer cụ thể, đồng thời duy trì độ chính xác cao hơn ở những nơi cần thiết trong toàn bộ network. Quy trình này sử dụng casting và loss scaling. Casting chuyển đổi các kiểu dữ liệu giữa những mức độ chính xác khác nhau theo yêu cầu của model. Loss scaling điều chỉnh độ chính xác đã giảm để ngăn underflow số học, đảm bảo training ổn định. Mixed precision đặc biệt hữu ích cho các model lớn và batch size lớn.

Hình 5. Training mixed precision sử dụng cả kiểu dấu phẩy động 16-bit (FP16) và 32-bit (FP32).
Cân bằng độ chính xác và hiệu quả của model#
Bây giờ, sau khi đã tìm hiểu một số kỹ thuật tối ưu hóa model, hãy thảo luận cách quyết định nên sử dụng kỹ thuật nào dựa trên nhu cầu cụ thể của bạn. Lựa chọn này phụ thuộc vào các yếu tố như phần cứng hiện có, các giới hạn về tính toán và bộ nhớ của môi trường triển khai, cũng như mức độ chính xác cần thiết.
Chẳng hạn, các model nhỏ hơn và nhanh hơn phù hợp hơn với những thiết bị di động có tài nguyên hạn chế, trong khi các model lớn hơn và chính xác hơn có thể được sử dụng trên các hệ thống hiệu năng cao. Dưới đây là cách mỗi kỹ thuật phù hợp với các mục tiêu khác nhau:
- Pruning: Lý tưởng để giảm kích thước model mà không ảnh hưởng đáng kể đến độ chính xác, rất phù hợp với các thiết bị bị giới hạn tài nguyên như điện thoại di động hoặc thiết bị Internet of Things (IoT).
- Quantization: Một lựa chọn hiệu quả để thu nhỏ kích thước model và tăng tốc inference, đặc biệt trên các thiết bị di động và hệ thống nhúng có bộ nhớ và năng lực xử lý hạn chế. Kỹ thuật này phù hợp với các ứng dụng chấp nhận được việc giảm nhẹ độ chính xác.
- Mixed precision: Được thiết kế cho các model quy mô lớn, kỹ thuật này giảm mức sử dụng bộ nhớ và tăng tốc training trên phần cứng như GPU và TPU hỗ trợ các phép toán mixed precision. Kỹ thuật này thường được sử dụng trong các tác vụ hiệu năng cao, nơi hiệu quả là yếu tố quan trọng.
- Tinh chỉnh hyperparameter: Mặc dù đòi hỏi nhiều tài nguyên tính toán, kỹ thuật này rất cần thiết cho các ứng dụng yêu cầu độ chính xác cao, chẳng hạn như hình ảnh y tế hoặc xe tự hành.
Những điểm chính#
Tối ưu hóa model là một phần thiết yếu của machine learning, đặc biệt khi triển khai AI trong các ứng dụng thực tế. Các kỹ thuật như tinh chỉnh hyperparameter, pruning model, quantization và mixed precision giúp cải thiện hiệu năng, hiệu quả và mức sử dụng tài nguyên của các model computer vision. Những tối ưu hóa này giúp model nhanh hơn và ít tiêu tốn tài nguyên hơn, rất phù hợp với các thiết bị có bộ nhớ và năng lực xử lý hạn chế. Các model được tối ưu hóa cũng dễ mở rộng và triển khai hơn trên nhiều nền tảng khác nhau, cho phép xây dựng các giải pháp AI vừa hiệu quả vừa thích ứng với nhiều trường hợp sử dụng.
Truy cập repository GitHub của Ultralytics và tham gia cộng đồng của chúng tôi để tìm hiểu thêm về các ứng dụng AI trong sản xuất và nông nghiệp.









