Tối ưu hóa mô hình là gì? Hướng dẫn nhanh
Tìm hiểu cách các kỹ thuật tối ưu hóa mô hình như điều chỉnh siêu tham số (hyperparameter tuning), cắt tỉa mô hình (model pruning) và lượng tử hóa mô hình (model quantization) giúp các mô hình thị giác máy tính vận hành hiệu quả hơn.

Tối ưu hóa mô hình là quá trình nhằm cải thiện hiệu quả và performance của các mô hình machine learning. Bằng cách tinh chỉnh cấu trúc và chức năng của mô hình, quá trình tối ưu hóa giúp các mô hình mang lại kết quả tốt hơn với tài nguyên tính toán tối thiểu và giảm thời gian training cũng như evaluation.
Quá trình này đặc biệt quan trọng trong các lĩnh vực như computer vision, nơi các models thường đòi hỏi nguồn tài nguyên lớn để phân tích complex images. Trong các môi trường bị hạn chế tài nguyên như mobile devices hoặc hệ thống biên, các mô hình đã được tối ưu hóa có thể hoạt động tốt với nguồn tài nguyên giới hạn mà vẫn duy trì độ chính xác.
Một số kỹ thuật thường được sử dụng để đạt được quá trình tối ưu hóa mô hình bao gồm tinh chỉnh siêu tham số, cắt tỉa mô hình, lượng tử hóa mô hình và độ chính xác hỗn hợp. Trong bài viết này, chúng ta sẽ khám phá các kỹ thuật này và những lợi ích mà chúng mang lại cho computer vision applications. Hãy bắt đầu nào!
Tìm hiểu về tối ưu hóa model#
Computer vision models thường có deep layers và cấu trúc phức tạp rất phù hợp để nhận dạng các mẫu phức tạp trong hình ảnh, nhưng chúng cũng có thể đòi hỏi cao về processing power. Khi các mô hình này được deployed trên các thiết bị có phần cứng hạn chế, chẳng hạn như mobile phones hoặc edge devices, chúng có thể gặp phải một số thách thức hoặc hạn chế 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ề performance khi các mô hình phải vật lộn để theo kịp. Các kỹ thuật tối ưu hóa mô hình là chìa khóa để giải quyết những mối quan ngại này. Chúng giúp tinh giản mô hình, giảm computational needs và đảm bảo mô hình vẫn có thể hoạt động hiệu quả ngay cả với nguồn tài nguyên hạn chế. Tối ưu hóa mô hình có thể được thực hiện bằng cách đơn giản hóa model architecture, giảm precision của các phép tính hoặc loại bỏ các thành phần không cần thiết để làm cho mô hình nhẹ hơn và nhanh hơn.

Hình 1. Lý do cần tối ưu hóa các model của bạn. Ảnh bởi tác giả.
Dưới đây là một số kỹ thuật optimization mô hình phổ biến nhất, mà chúng ta sẽ khám phá chi tiết hơn trong các phần tiếp theo:
- Hyperparameter tuning: Kỹ thuật này liên quan đến việc điều chỉnh có hệ thống các siêu tham số, chẳng hạn như tốc độ học và kích thước batch, để cải thiện hiệu suất mô hình.
- Model pruning: Kỹ thuật này loại bỏ các trọng số và kết nối không cần thiết khỏi mạng nơ-ron, làm giảm độ phức tạp và chi phí tính toán của mạng.
- Model quantization: Lượng tử hóa liên quan đến việc giảm độ chính xác của các trọng số và giá trị kích hoạt của mô hình, thường từ 32-bit xuống 16-bit hoặc 8-bit, giúp giảm đáng kể dung lượng bộ nhớ và yêu cầu tính toán.
- Precision adjustments: Còn được gọi là training độ chính xác hỗn hợp, kỹ thuật này liên quan đến việc sử dụng các định dạng độ chính xác khác nhau cho các phần khác nhau của mô hình và tối ưu hóa việc sử dụng tài nguyên mà không làm tổn hại đến độ chính xác.
Giải thích: Hyperparameters trong các model machine learning#
Bạn có thể giúp mô hình học tập và hoạt động tốt hơn bằng cách tinh chỉnh các siêu tham số của nó - các cài đặt định hình cách mô hình học từ dữ liệu. Hyperparameter tuning là một kỹ thuật để tối ưu hóa các cài đặt này, cải thiện hiệu quả và accuracy của mô hình. Không giống như các tham số mà mô hình học được trong quá trình training, siêu tham số là các giá trị được thiết lập trước nhằm định hướng quá trình training.
Hãy cùng xem qua một số ví dụ về hyperparameter có thể điều chỉnh:
- Learning rate: Tham số này kiểm soát kích thước bước mà mô hình thực hiện để điều chỉnh các trọng số nội bộ của nó. Tốc độ học cao hơn có thể tăng tốc độ học nhưng có nguy cơ bỏ lỡ giải pháp tối ưu, trong khi tốc độ thấp hơn có thể chính xác hơn nhưng chậm hơn.
- Batch size: Tham số này xác định có bao nhiêu mẫu dữ liệu được xử lý trong mỗi bước training. Kích thước batch lớn hơn mang lại quá trình học ổn định hơn nhưng cần nhiều bộ nhớ hơn. Các batch nhỏ hơn training nhanh hơn nhưng có thể ít ổn định hơn.
- Epochs: Bạn có thể xác định số lần mô hình nhìn thấy toàn bộ dataset bằng cách sử dụng tham số này. Nhiều epoch hơn có thể cải thiện độ chính xác nhưng có nguy cơ overfitting.
- Kernel size: Tham số này xác định kích thước bộ lọc trong Convolutional Neural Networks (CNN). Các kernel lớn hơn nắm bắt các mẫu rộng hơn nhưng cần xử lý nhiều hơn; các kernel nhỏ hơn tập trung vào các chi tiết tinh tế hơn.
Cách thức hoạt động của hyperparameter tuning#
Việc tinh chỉnh siêu tham số thường bắt đầu bằng việc xác định một phạm vi các giá trị khả thi cho từng siêu tham số. Sau đó, một thuật toán tìm kiếm sẽ khám phá các tổ hợp khác nhau trong các phạm vi này để xác định các cài đặt tạo ra best performance.
Các phương pháp tuning phổ biến bao gồm grid search, random search và Bayesian optimization. Grid search thử nghiệm mọi kết hợp giá trị có thể có trong phạm vi chỉ định. Random search chọn các kết hợp ngẫu nhiên, thường tìm thấy 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 triển vọng dựa trên kết quả trước đó. Cách tiếp cận này thường giúp giảm số lần thử nghiệm cần thiết.
Cuối cùng, đối với mỗi tổ hợp siêu tham số, hiệu suất của mô hình sẽ được evaluated. Quá trình này được lặp lại cho đến khi đạt được các kết quả mong muốn.
Hyperparameters so với model parameters#
Khi làm việc với việc tinh chỉnh siêu tham số, bạn có thể tự hỏi sự khác biệt giữa siêu tham số và model parameters là gì.
Siêu tham số là các giá trị được thiết lập trước khi training để kiểm soát cách model học, chẳng hạn như tốc độ học hoặc kích thước batch. Các cài đặt này được giữ cố định trong quá trình training và tác động trực tiếp đến quá trình học. Mặt khác, các tham số mô hình lại được chính mô hình học trong quá trình training. Chúng bao gồm trọng số và biases, những thứ điều chỉnh khi mô hình training và cuối cùng là định hướng các predictions của nó. Về bản chất, siêu tham số định hình hành trình học tập, trong khi tham số mô hình là kết quả của quá trình học tập đó.

Fig 2. So sánh Tham số và Siêu tham số.
Tại sao model pruning lại quan trọng trong deep learning#
Model pruning là một kỹ thuật giảm kích thước nhằm loại bỏ các trọng số và tham số không cần thiết khỏi mô hình, giúp mô hình hiệu quả hơn. Trong computer vision, đặc biệt là với các neural networks sâu, một số lượng lớn các tham số, chẳng hạn như trọng số và giá trị kích hoạt (các đầu ra trung gian giúp tính toán đầu ra cuối cùng), có thể làm tăng cả độ phức tạp lẫn yêu cầu tính toán. Quá trình cắt tỉa giúp tinh giản mô hình bằng cách xác định và loại bỏ các tham số đóng góp ít nhất vào hiệu suất, mang lại một mô hình nhẹ hơn và hiệu quả hơn.

Fig3. Trước và sau khi cắt tỉa mô hình.
Sau khi model được train, các kỹ thuật như magnitude-based pruning hoặc phân tích độ nhạy có thể đánh giá mức độ quan trọng của từng parameter. Các parameter có tầm quan trọng thấp sau đó sẽ được cắt tỉa, sử dụng một trong ba kỹ thuật chính: weight pruning, neuron pruning hoặc structured pruning.
Cắt tỉa trọng số loại bỏ các kết nối cá nhân với tác động tối thiểu đến đầu ra. Cắt tỉa nơ-ron loại bỏ toàn bộ các nơ-ron có đầu ra đóng góp ít vào chức năng của mô hình. Cắt tỉa có cấu trúc loại bỏ các phần lớn hơn, như bộ lọc tích chập hoặc nơ-ron trong các lớp kết nối đầy đủ, tối ưu hóa hiệu quả của mô hình. Sau khi quá trình cắt tỉa hoàn tất, mô hình được training lại để fine-tune các tham số còn lại, đảm bảo mô hình vẫn giữ được độ chính xác cao ở dạng rút gọn.
Giảm độ trễ trong các model AI với quantization#
Model quantization làm giảm số lượng bit được sử dụng để biểu diễn trọng số và giá trị kích hoạt của mô hình. Kỹ thuật này thường chuyển đổi các giá trị dấu phẩy động 32-bit độ chính xác cao thành độ 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 của bit, lượng tử hóa làm giảm đáng kể model's size, dung lượng bộ nhớ và chi phí tính toán.
Trong computer vision, các giá trị dấu phẩy động 32-bit là tiêu chuẩn, nhưng việc chuyển đổi sang 16-bit hoặc 8-bit có thể cải thiện hiệu quả. Có hai loại lượng tử hóa chính: lượng tử hóa trọng số và lượng tử hóa giá trị kích hoạt. Lượng tử hóa trọng số làm giảm độ chính xác của trọng số mô hình, cân bằng giữa việc giảm kích thước và độ chính xác. Lượng tử hóa giá trị kích hoạt làm giảm độ chính xác của các giá trị kích hoạt, giúp giảm hơn nữa các yêu cầu về bộ nhớ và tính toán.

Fig 4. Ví dụ về lượng tử hóa từ số thực dấu phẩy động 32-bit sang số nguyên 8-bit.
Cách mixed precision tăng tốc độ suy luận (inference) cho AI#
Mixed precision là một kỹ thuật sử dụng các độ chính xác số khác nhau cho các phần khác nhau của một neural network. Bằng cách kết hợp các giá trị độ chính xác cao hơn, chẳng hạn như số thực dấu phẩy động 32-bit, với các giá trị độ chính xác thấp hơn, chẳng hạn như số thực dấu phẩy động 16-bit hoặc 8-bit, độ chính xác hỗn hợp giúp các computer vision models tăng tốc quá trình training và giảm mức sử dụng bộ nhớ mà không làm hy sinh độ chính xác.
Trong quá trình training, mixed precision đạt được bằng cách sử dụng độ chính xác thấp hơn ở các lớp cụ thể trong khi vẫn giữ độ chính xác cao hơn ở những nơi cần thiết trong toàn bộ mạng. Điều này được thực hiện thông qua việc ép kiểu (casting) và chia tỷ lệ tổn thất (loss scaling). Casting chuyển đổi các kiểu dữ liệu giữa cá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 chặn hiện tượng tràn số (numerical underflow), đảm bảo quá trình training ổn định. Mixed precision đặc biệt hữu ích cho các model lớn và các batch size lớn.

Fig 5. Training độ chính xác hỗn hợp sử dụng cả hai kiểu số thực dấu phẩy động 16-bit (FP16) và 32-bit (FP32).
Cân bằng giữa độ chính xác và hiệu quả của model#
Bây giờ chúng ta đã thảo luận qua một số kỹ thuật tối ưu hóa mô hình, hãy cùng bàn luận về cách quyết định kỹ thuật nào nên được sử dụng dựa trên nhu cầu cụ thể của bạn. Sự lựa chọn phụ thuộc vào các yếu tố như hardware có sẵn, các ràng buộc về tính toán và bộ nhớ của deployment environment, cũng như mức độ chính xác cần thiết.
Ví dụ, các mô hình nhỏ hơn, nhanh hơn sẽ phù hợp hơn cho các thiết bị di động có tài nguyên hạn chế, trong khi các mô hình lớn hơn, chính xác hơn có thể được sử dụng trên các hệ thống hiệu suất cao. Dưới đây là cách mỗi kỹ thuật phù hợp với different goals:
- Pruning: Lý tưởng để giảm kích thước model mà không làm ảnh hưởng đáng kể đến độ chính xác, khiến nó trở nên hoàn hảo cho các thiết bị bị hạn chế về tài nguyên như điện thoại di động hoặc các thiết bị Internet of Things (IoT).
- Quantization: Một lựa chọn tuyệt vời để thu gọn kích thước mô hình và tăng tốc inference, đặc biệt là trên các thiết bị di động và embedded systems có bộ nhớ và năng lực xử lý hạn chế. Kỹ thuật này hoạt động tốt cho các ứng dụng mà việc giảm độ chính xác nhẹ là có thể chấp nhận được.
- Mixed precision: Được thiết kế cho các mô hình quy mô lớn, kỹ thuật này làm giảm mức sử dụng bộ nhớ và tăng tốc quá trình training trên phần cứng như GPU và TPUs hỗ trợ các thao tác độ chính xác hỗn hợp. Phương pháp này thường được sử dụng trong các tác vụ hiệu suất cao nơi hiệu quả là yếu tố quan trọng.
- Hyperparameter tuning: Mặc dù tốn nhiều tài nguyên tính toán, kỹ thuật này lại rất cần thiết cho các ứng dụng đòi hỏi độ chính xác cao, chẳng hạn như medical imaging hoặc autonomous driving.
Các điểm chính cần lưu ý#
Tối ưu hóa model là một phần quan trọng trong machine learning, đặc biệt là đối với việc triển khai AI trong các ứng dụng thực tế. Các kỹ thuật như hyperparameter tuning, model pruning, quantization và mixed precision giúp cải thiện hiệu suất, hiệu quả và mức sử dụng tài nguyên của các computer vision models. Những tối ưu hóa này làm cho model nhanh hơn và ít tiêu tốn tài nguyên hơn, điều này rất lý tưởng cho các thiết bị có bộ nhớ và tốc độ xử lý hạn chế. Các model đã tối ưu hóa cũng dễ dàng mở rộng và triển khai trên các nền tảng khác nhau hơn, cho phép tạo ra các giải pháp AI vừa hiệu quả vừa có khả năng thích ứng với nhiều mục đích sử dụng khác nhau.
Hãy truy cập Ultralytics GitHub repository và tham gia community của chúng tôi để tìm hiểu thêm về các ứng dụng AI trong lĩnh vực manufacturing và agriculture.






