Ultralytics YOLO27:
Get Started

Các phương pháp tốt nhất để triển khai model#

Giới thiệu#

Triển khai model là bước trong một dự án thị giác máy tính đưa model từ giai đoạn phát triển vào ứng dụng thực tế. Có nhiều tùy chọn triển khai model: triển khai trên cloud mang lại khả năng mở rộng và dễ truy cập, triển khai edge giảm độ trễ bằng cách đưa model đến gần nguồn dữ liệu hơn, còn triển khai cục bộ đảm bảo quyền riêng tư và khả năng kiểm soát. Việc chọn chiến lược phù hợp phụ thuộc vào nhu cầu của ứng dụng, đồng thời cần cân bằng tốc độ, bảo mật và khả năng mở rộng.



Xem: Cách tối ưu hóa và triển khai model AI: các phương pháp tốt nhất, khắc phục sự cố và lưu ý về bảo mật

Việc tuân theo các phương pháp tốt nhất khi triển khai model cũng rất quan trọng, vì quá trình triển khai có thể ảnh hưởng đáng kể đến hiệu quả và độ tin cậy của model. Trong hướng dẫn này, chúng tôi sẽ tập trung vào cách đảm bảo quá trình triển khai model diễn ra suôn sẻ, hiệu quả và an toàn.

Các tùy chọn triển khai model#

Thông thường, sau khi model được huấn luyện, đánh giá và kiểm thử, model cần được chuyển đổi sang các định dạng cụ thể để triển khai hiệu quả trong nhiều môi trường như cloud, edge hoặc thiết bị cục bộ.

Với YOLO26, bạn có thể xuất model sang nhiều định dạng tùy theo nhu cầu triển khai. Ví dụ, xuất YOLO26 sang ONNX rất đơn giản và lý tưởng để chuyển model giữa các framework. Để khám phá thêm các tùy chọn tích hợp và đảm bảo triển khai suôn sẻ trên nhiều môi trường, hãy truy cập danh mục tích hợp model của chúng tôi.

Chọn môi trường triển khai#

Việc chọn nơi triển khai model thị giác máy tính phụ thuộc vào nhiều yếu tố. Mỗi môi trường có những lợi ích và thách thức riêng, vì vậy điều cần thiết là chọn môi trường phù hợp nhất với nhu cầu của bạn.

Triển khai trên cloud#

Triển khai trên cloud rất phù hợp với các ứng dụng cần mở rộng nhanh và xử lý lượng dữ liệu lớn. Các nền tảng như AWS, Google Cloud và Azure giúp bạn dễ dàng quản lý model từ khâu huấn luyện đến triển khai. Những nền tảng này cung cấp các dịch vụ như AWS SageMaker, Google AI Platform và Azure Machine Learning để hỗ trợ bạn trong suốt quá trình.

Tuy nhiên, sử dụng cloud có thể tốn kém, đặc biệt khi lưu lượng dữ liệu cao; bạn cũng có thể gặp vấn đề về độ trễ nếu người dùng ở xa các trung tâm dữ liệu. Để kiểm soát chi phí và hiệu năng, điều quan trọng là tối ưu hóa việc sử dụng tài nguyên và đảm bảo tuân thủ các quy định về quyền riêng tư dữ liệu.

Triển khai edge#

Triển khai edge phù hợp với các ứng dụng cần phản hồi theo thời gian thực và độ trễ thấp, đặc biệt tại những nơi có kết nối Internet hạn chế hoặc không có kết nối. Triển khai model trên các thiết bị edge như điện thoại thông minh hoặc thiết bị IoT giúp xử lý nhanh và lưu dữ liệu tại chỗ, từ đó tăng cường quyền riêng tư. Triển khai edge cũng tiết kiệm băng thông nhờ giảm lượng dữ liệu gửi lên cloud.

Tuy nhiên, thiết bị edge thường có năng lực xử lý hạn chế, vì vậy bạn cần tối ưu hóa model. Các công cụ như LiteRT và NVIDIA Jetson có thể hữu ích. Dù có nhiều lợi ích, việc bảo trì và cập nhật số lượng lớn thiết bị có thể là một thách thức.

Triển khai cục bộ#

Triển khai cục bộ là lựa chọn tốt nhất khi quyền riêng tư dữ liệu là yếu tố then chốt hoặc khi kết nối Internet không ổn định hay không khả dụng. Chạy model trên máy chủ hoặc máy tính để bàn cục bộ giúp bạn toàn quyền kiểm soát và bảo vệ dữ liệu. Cách này cũng có thể giảm độ trễ nếu máy chủ ở gần người dùng.

Tuy nhiên, việc mở rộng quy mô cục bộ có thể khó khăn và bảo trì có thể tốn nhiều thời gian. Dùng các công cụ như Docker để đóng gói container và Kubernetes để quản lý có thể giúp triển khai cục bộ hiệu quả hơn. Cần cập nhật và bảo trì thường xuyên để mọi thứ vận hành ổn định.

Đóng gói container để đơn giản hóa triển khai#

Đóng gói container là một phương pháp mạnh mẽ, đóng gói model cùng tất cả dependency thành một đơn vị tiêu chuẩn gọi là container. Kỹ thuật này đảm bảo hiệu năng nhất quán trên các môi trường khác nhau và đơn giản hóa quy trình triển khai.

Lợi ích của việc dùng Docker để triển khai model#

Docker đã trở thành tiêu chuẩn ngành cho việc đóng gói container trong triển khai machine learning vì một số lý do sau:

  • Tính nhất quán của môi trường: Container Docker đóng gói model cùng tất cả dependency, loại bỏ vấn đề "chạy được trên máy của tôi" bằng cách đảm bảo hành vi nhất quán giữa các môi trường phát triển, kiểm thử và production.
  • Cách ly: Container cách ly các ứng dụng với nhau, ngăn xung đột giữa các phiên bản phần mềm hoặc thư viện khác nhau.
  • Tính di động: Container Docker có thể chạy trên mọi hệ thống hỗ trợ Docker, giúp bạn dễ dàng triển khai model trên nhiều nền tảng mà không cần sửa đổi.
  • Khả năng mở rộng: Có thể dễ dàng tăng hoặc giảm quy mô container theo nhu cầu, đồng thời các công cụ điều phối như Kubernetes có thể tự động hóa quy trình này.
  • Kiểm soát phiên bản: Có thể quản lý phiên bản image Docker, cho phép bạn theo dõi thay đổi và quay lại phiên bản trước khi cần.

Triển khai YOLO26 bằng Docker#

Để đóng gói model YOLO26 trong container, bạn có thể tạo Dockerfile chỉ định tất cả dependency và cấu hình cần thiết. Dưới đây là ví dụ cơ bản:

FROM ultralytics/ultralytics:latest

WORKDIR /app

# Copy your model and any additional files
COPY ./models/yolo26n.pt /app/models/
COPY ./scripts /app/scripts/

# Set up any environment variables
ENV MODEL_PATH=/app/models/yolo26n.pt

# Command to run when the container starts
CMD ["python", "/app/scripts/predict.py"]

Phương pháp này đảm bảo quá trình triển khai model có thể tái lập và nhất quán giữa các môi trường phát triển, kiểm thử và production.

Các kỹ thuật tối ưu hóa model#

Tối ưu hóa model thị giác máy tính giúp model hoạt động hiệu quả, đặc biệt khi triển khai trong môi trường có tài nguyên hạn chế như thiết bị edge. Dưới đây là một số kỹ thuật chính để tối ưu hóa model.

Cắt tỉa model#

Cắt tỉa giúp giảm kích thước model bằng cách loại bỏ các trọng số ít đóng góp vào đầu ra cuối cùng. Phương pháp này làm model nhỏ hơn và nhanh hơn mà không ảnh hưởng đáng kể đến độ chính xác. Cắt tỉa bao gồm việc xác định và loại bỏ các tham số không cần thiết, tạo ra model nhẹ hơn, đòi hỏi ít năng lực tính toán hơn. Phương pháp này đặc biệt hữu ích khi triển khai model trên thiết bị có tài nguyên hạn chế.

Neural network pruning workflow

Lượng tử hóa model#

Lượng tử hóa chuyển đổi trọng số và activation của model từ độ chính xác cao (chẳng hạn số thực 32 bit) sang độ chính xác thấp hơn (chẳng hạn số nguyên 8 bit). Việc giảm kích thước model giúp tăng tốc độ suy luận. Huấn luyện có nhận biết lượng tử hóa (QAT) là phương pháp huấn luyện model có tính đến lượng tử hóa, giúp duy trì độ chính xác tốt hơn so với lượng tử hóa sau huấn luyện. Bằng cách xử lý lượng tử hóa trong giai đoạn huấn luyện, model học cách thích ứng với độ chính xác thấp hơn, duy trì hiệu năng đồng thời giảm nhu cầu tính toán.

Optimized model efficiency for deployment

Chưng cất tri thức#

Chưng cất tri thức bao gồm việc huấn luyện một model nhỏ hơn, đơn giản hơn (model học sinh) để bắt chước đầu ra của một model lớn hơn, phức tạp hơn (model giáo viên). Model học sinh học cách ước lượng gần đúng các dự đoán của model giáo viên, tạo ra model gọn nhẹ nhưng vẫn giữ được phần lớn độ chính xác của model giáo viên. Kỹ thuật này hữu ích khi tạo các model hiệu quả để triển khai trên thiết bị edge có tài nguyên hạn chế.

Knowledge distillation training process

Khắc phục sự cố triển khai#

Bạn có thể gặp thách thức khi triển khai các model thị giác máy tính, nhưng hiểu rõ những vấn đề thường gặp và giải pháp có thể giúp quá trình này diễn ra suôn sẻ hơn. Sau đây là một số mẹo khắc phục sự cố và thực tiễn tốt nhất để giúp bạn xử lý các vấn đề khi triển khai.

Model của bạn kém chính xác hơn sau khi triển khai#

Model giảm độ chính xác sau khi triển khai có thể khiến bạn nản lòng. Vấn đề này có thể bắt nguồn từ nhiều yếu tố. Sau đây là một số bước giúp bạn xác định và giải quyết vấn đề:

  • Kiểm tra tính nhất quán của dữ liệu: Kiểm tra để bảo đảm dữ liệu mà model xử lý sau khi triển khai nhất quán với dữ liệu dùng để huấn luyện model. Khác biệt về phân phối, chất lượng hoặc định dạng dữ liệu có thể ảnh hưởng đáng kể đến hiệu năng.
  • Xác thực các bước tiền xử lý: Xác minh rằng mọi bước tiền xử lý được áp dụng trong quá trình huấn luyện cũng được áp dụng nhất quán khi triển khai. Những bước này bao gồm thay đổi kích thước ảnh, chuẩn hóa giá trị pixel và các phép biến đổi dữ liệu khác.
  • Đánh giá môi trường của model: Bảo đảm cấu hình phần cứng và phần mềm dùng khi triển khai khớp với cấu hình dùng trong quá trình huấn luyện. Khác biệt về thư viện, phiên bản và khả năng phần cứng có thể gây ra sai lệch.
  • Giám sát quá trình suy luận của model: Ghi nhật ký đầu vào và đầu ra ở nhiều giai đoạn trong pipeline suy luận để phát hiện bất thường. Việc này có thể giúp xác định các vấn đề như dữ liệu bị hỏng hoặc xử lý đầu ra của model không đúng cách.
  • Xem xét việc xuất và chuyển đổi model: Xuất lại model và bảo đảm quá trình chuyển đổi duy trì tính toàn vẹn của trọng số và kiến trúc model.
  • Kiểm thử với bộ dữ liệu được kiểm soát: Triển khai model trong môi trường kiểm thử bằng bộ dữ liệu do bạn kiểm soát, rồi so sánh kết quả với giai đoạn huấn luyện. Bạn có thể xác định vấn đề nằm ở môi trường triển khai hay dữ liệu.

Khi triển khai YOLO26, một số yếu tố có thể ảnh hưởng đến độ chính xác của model. Việc chuyển đổi model sang các định dạng như TensorRT bao gồm các bước tối ưu hóa như lượng tử hóa trọng số và hợp nhất layer, có thể gây giảm nhẹ độ chính xác. Dùng FP16 (độ chính xác bán phần) thay cho FP32 (độ chính xác đơn) có thể tăng tốc suy luận nhưng cũng có thể gây lỗi độ chính xác số. Ngoài ra, các giới hạn phần cứng, chẳng hạn như trên Jetson Nano, với số lượng CUDA core thấp hơn và băng thông bộ nhớ giảm, có thể ảnh hưởng đến hiệu năng.

Quá trình suy luận mất nhiều thời gian hơn dự kiến#

Khi triển khai các model machine learning, điều quan trọng là chúng phải chạy hiệu quả. Nếu quá trình suy luận mất nhiều thời gian hơn dự kiến, trải nghiệm người dùng và hiệu quả của ứng dụng có thể bị ảnh hưởng. Sau đây là một số bước giúp bạn xác định và giải quyết vấn đề:

  • Thực hiện các lượt chạy khởi động: Các lượt chạy ban đầu thường bao gồm chi phí thiết lập, có thể làm sai lệch phép đo độ trễ. Hãy thực hiện một vài lượt suy luận khởi động trước khi đo độ trễ. Loại trừ các lượt chạy ban đầu này giúp đo lường hiệu năng của model chính xác hơn.
  • Tối ưu hóa engine suy luận: Kiểm tra kỹ để bảo đảm engine suy luận được tối ưu hóa hoàn toàn cho kiến trúc GPU cụ thể của bạn. Sử dụng driver và phiên bản phần mềm mới nhất phù hợp với phần cứng để bảo đảm hiệu năng và khả năng tương thích tối đa.
  • Sử dụng xử lý bất đồng bộ: Xử lý bất đồng bộ có thể giúp quản lý workload hiệu quả hơn. Sử dụng các kỹ thuật xử lý bất đồng bộ để xử lý nhiều tác vụ suy luận đồng thời, qua đó phân bổ tải và giảm thời gian chờ.
  • Phân tích hiệu năng pipeline suy luận: Xác định các nút thắt trong pipeline suy luận có thể giúp tìm ra nguyên nhân gây chậm trễ. Sử dụng công cụ profiling để phân tích từng bước trong quy trình suy luận, xác định và xử lý mọi giai đoạn gây chậm trễ đáng kể, chẳng hạn như layer hoạt động kém hiệu quả hoặc vấn đề truyền dữ liệu.
  • Sử dụng độ chính xác phù hợp: Dùng độ chính xác cao hơn mức cần thiết có thể làm chậm quá trình suy luận. Hãy thử dùng độ chính xác thấp hơn, chẳng hạn FP16 (độ chính xác bán phần) thay cho FP32 (độ chính xác đơn). Dù FP16 có thể giảm thời gian suy luận, hãy lưu ý rằng lựa chọn này cũng có thể ảnh hưởng đến độ chính xác của model.

Nếu gặp vấn đề này khi triển khai YOLO26, hãy cân nhắc rằng YOLO26 có nhiều kích thước model, chẳng hạn YOLO26n (nano) dành cho thiết bị có dung lượng bộ nhớ thấp hơn và YOLO26x (cực lớn) dành cho GPU mạnh hơn. Chọn biến thể model phù hợp với phần cứng có thể giúp cân bằng mức sử dụng bộ nhớ và thời gian xử lý.

Ngoài ra, hãy lưu ý rằng kích thước ảnh đầu vào ảnh hưởng trực tiếp đến mức sử dụng bộ nhớ và thời gian xử lý. Độ phân giải thấp hơn giúp giảm mức sử dụng bộ nhớ và tăng tốc suy luận, trong khi độ phân giải cao hơn cải thiện độ chính xác nhưng đòi hỏi nhiều bộ nhớ và năng lực xử lý hơn.

Các cân nhắc về bảo mật khi triển khai model#

Một khía cạnh quan trọng khác của việc triển khai là bảo mật. Bảo vệ các model đã triển khai là yếu tố thiết yếu để bảo vệ dữ liệu nhạy cảm và tài sản trí tuệ. Sau đây là một số thực tiễn tốt nhất bạn có thể áp dụng để triển khai model an toàn.

Truyền dữ liệu an toàn#

Việc bảo đảm dữ liệu được gửi giữa client và server an toàn là rất quan trọng để ngăn dữ liệu bị chặn hoặc bị truy cập bởi các bên không được phép. Bạn có thể dùng các giao thức mã hóa như TLS (bảo mật tầng truyền tải) để mã hóa dữ liệu trong quá trình truyền. Ngay cả khi có người chặn được dữ liệu, họ cũng không thể đọc dữ liệu đó. Bạn cũng có thể sử dụng mã hóa đầu cuối để bảo vệ dữ liệu từ nguồn đến đích, nhờ đó không ai ở giữa có thể truy cập dữ liệu.

Kiểm soát truy cập#

Việc kiểm soát ai có thể truy cập model và dữ liệu của model là thiết yếu để ngăn chặn việc sử dụng trái phép. Sử dụng các phương thức xác thực mạnh để xác minh danh tính của người dùng hoặc hệ thống đang cố truy cập model, đồng thời cân nhắc bổ sung lớp bảo mật bằng xác thực đa yếu tố (MFA). Thiết lập kiểm soát truy cập dựa trên vai trò (RBAC) để cấp quyền theo vai trò người dùng, nhờ đó mọi người chỉ có quyền truy cập vào những gì họ cần. Duy trì nhật ký kiểm tra chi tiết để theo dõi mọi lượt truy cập và thay đổi đối với model và dữ liệu của model, đồng thời thường xuyên xem lại các nhật ký này để phát hiện hoạt động đáng ngờ.

Làm rối model#

Bạn có thể bảo vệ model khỏi việc bị thiết kế ngược hoặc sử dụng sai mục đích bằng cách làm rối model. Phương pháp này bao gồm mã hóa các tham số của model, chẳng hạn như trọng số và bias trong mạng nơ-ron, để khiến những người không được phép khó hiểu hoặc thay đổi model. Bạn cũng có thể làm rối kiến trúc model bằng cách đổi tên layer và tham số hoặc thêm layer giả, khiến kẻ tấn công khó thiết kế ngược model hơn. Phục vụ model trong một môi trường an toàn, chẳng hạn như vùng bảo mật hoặc môi trường thực thi đáng tin cậy (TEE), cũng có thể tạo thêm một lớp bảo vệ trong quá trình suy luận.

Kết luận và các bước tiếp theo#

Chúng ta đã điểm qua một số thực tiễn tốt nhất cần tuân theo khi triển khai model thị giác máy tính. Bằng cách bảo mật dữ liệu, kiểm soát quyền truy cập và làm rối thông tin chi tiết của model, bạn có thể bảo vệ thông tin nhạy cảm đồng thời duy trì hoạt động ổn định của các model. Chúng ta cũng đã thảo luận cách xử lý các vấn đề thường gặp như giảm độ chính xác và suy luận chậm bằng các chiến lược như chạy khởi động, tối ưu hóa engine, xử lý bất đồng bộ, profiling pipeline và chọn độ chính xác phù hợp.

Sau khi triển khai model, bước tiếp theo là giám sát, bảo trì và lập tài liệu cho ứng dụng. Việc giám sát thường xuyên giúp phát hiện và khắc phục vấn đề nhanh chóng, bảo trì giúp các model luôn cập nhật và hoạt động tốt, còn tài liệu đầy đủ giúp theo dõi mọi thay đổi và bản cập nhật. Những bước này sẽ giúp bạn đạt được mục tiêu của dự án thị giác máy tính.

Câu hỏi thường gặp#

  • Việc triển khai model machine learning, đặc biệt là với Ultralytics YOLO26, cần tuân theo một số thực tiễn tốt nhất để bảo đảm hiệu quả và độ tin cậy. Trước tiên, hãy chọn môi trường triển khai phù hợp với nhu cầu của bạn — cloud, edge hoặc cục bộ. Tối ưu hóa model bằng các kỹ thuật như cắt tỉa, lượng tử hóa và chưng cất tri thức để triển khai hiệu quả trong môi trường có tài nguyên hạn chế. Cân nhắc sử dụng đóng gói bằng Docker để bảo đảm tính nhất quán giữa các môi trường. Cuối cùng, hãy bảo đảm tính nhất quán của dữ liệu và các bước tiền xử lý phù hợp với giai đoạn huấn luyện để duy trì hiệu năng. Bạn cũng có thể tham khảo các tùy chọn triển khai model để xem hướng dẫn chi tiết hơn.

  • Có thể chia quy trình khắc phục sự cố triển khai thành một vài bước chính. Nếu độ chính xác của model giảm sau khi triển khai, hãy kiểm tra tính nhất quán của dữ liệu, xác thực các bước tiền xử lý và bảo đảm môi trường phần cứng/phần mềm khớp với môi trường dùng trong quá trình huấn luyện. Nếu thời gian suy luận chậm, hãy thực hiện các lượt chạy khởi động, tối ưu hóa engine suy luận, sử dụng xử lý bất đồng bộ và phân tích hiệu năng pipeline suy luận. Tham khảo hướng dẫn khắc phục sự cố triển khai để xem hướng dẫn chi tiết về các thực tiễn tốt nhất này.

  • Tối ưu hóa model Ultralytics YOLO26 cho thiết bị edge bao gồm các kỹ thuật như cắt tỉa để giảm kích thước model, lượng tử hóa để chuyển trọng số sang độ chính xác thấp hơn và chưng cất tri thức để huấn luyện model nhỏ hơn bắt chước model lớn hơn. Những kỹ thuật này giúp model chạy hiệu quả trên các thiết bị có năng lực tính toán hạn chế. Các công cụ như LiteRT và NVIDIA Jetson đặc biệt hữu ích cho những hoạt động tối ưu hóa này. Tìm hiểu thêm về các kỹ thuật này trong phần tối ưu hóa model của chúng tôi.

  • Bảo mật là yếu tố tối quan trọng khi triển khai model machine learning. Bảo đảm truyền dữ liệu an toàn bằng các giao thức mã hóa như TLS. Triển khai các biện pháp kiểm soát truy cập mạnh mẽ, bao gồm xác thực mạnh và kiểm soát truy cập dựa trên vai trò (RBAC). Các kỹ thuật làm rối model, chẳng hạn như mã hóa tham số model và phục vụ model trong môi trường an toàn như môi trường thực thi đáng tin cậy (TEE), mang lại khả năng bảo vệ bổ sung. Để xem các thực tiễn chi tiết, hãy tham khảo các cân nhắc về bảo mật.

  • Việc chọn môi trường triển khai tối ưu cho model Ultralytics YOLO26 phụ thuộc vào nhu cầu cụ thể của ứng dụng. Triển khai trên cloud mang lại khả năng mở rộng và dễ truy cập, phù hợp với các ứng dụng có khối lượng dữ liệu lớn. Triển khai trên edge phù hợp nhất với các ứng dụng có độ trễ thấp cần phản hồi theo thời gian thực, sử dụng các công cụ như LiteRT. Triển khai cục bộ phù hợp với các tình huống cần quyền riêng tư và khả năng kiểm soát dữ liệu nghiêm ngặt. Để có cái nhìn tổng quan đầy đủ về từng môi trường, hãy xem phần chọn môi trường triển khai của chúng tôi.

Bình luận