Logo Zephyrnet

Đi sâu vào lượng tử hóa mô hình để triển khai quy mô lớn

Ngày:

Giới thiệu

Trong AI, hai thách thức riêng biệt đã xuất hiện: triển khai các mô hình lớn trong môi trường đám mây, phát sinh chi phí tính toán khổng lồ cản trở khả năng mở rộng và lợi nhuận, đồng thời cung cấp các thiết bị biên bị hạn chế về tài nguyên đang cố gắng hỗ trợ các mô hình phức tạp. Điểm chung giữa những thách thức này là bắt buộc phải thu nhỏ kích thước mô hình mà không ảnh hưởng đến độ chính xác. Lượng tử hóa mô hình, một kỹ thuật phổ biến, đưa ra một giải pháp tiềm năng nhưng làm dấy lên mối lo ngại về sự đánh đổi độ chính xác tiềm ẩn.

Lượng tử hóa mô hình

Đào tạo nhận thức lượng tử hóa nổi lên như một câu trả lời hấp dẫn. Nó tích hợp liền mạch lượng tử hóa vào quá trình đào tạo mô hình, cho phép giảm đáng kể kích thước mô hình, đôi khi từ hai đến bốn lần hoặc hơn, trong khi vẫn duy trì độ chính xác quan trọng. Bài viết này đi sâu vào lượng tử hóa, so sánh lượng tử hóa sau đào tạo (PTQ) và đào tạo nhận biết lượng tử hóa (QAT). Hơn nữa, chúng tôi cung cấp những hiểu biết thực tế, chứng minh cách cả hai phương pháp có thể được triển khai hiệu quả bằng cách sử dụng SuperGradients, một thư viện đào tạo nguồn mở do Deci phát triển.

Ngoài ra, chúng tôi khám phá việc tối ưu hóa Mạng lưới thần kinh chuyển đổi (CNN) dành cho nền tảng di động và nhúng, giải quyết những thách thức đặc biệt về quy mô và nhu cầu tính toán. Chúng tôi tập trung vào lượng tử hóa, kiểm tra vai trò của việc biểu diễn số trong việc tối ưu hóa các mô hình cho nền tảng di động và nhúng.

Mục tiêu học tập

  • Hiểu khái niệm lượng tử hóa mô hình trong AI.
  • Tìm hiểu về các mức lượng tử hóa điển hình và sự cân bằng của chúng.
  • Phân biệt giữa Lượng tử hóa-Đào tạo nhận thức (QAT) và Lượng tử hóa sau đào tạo (PTQ).
  • Khám phá những lợi thế của lượng tử hóa mô hình, bao gồm hiệu quả bộ nhớ và tiết kiệm năng lượng.
  • Khám phá cách lượng tử hóa mô hình cho phép triển khai mô hình AI rộng hơn.

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Mục lục

Hiểu nhu cầu lượng tử hóa mô hình

Cần lượng tử hóa mô hình

Lượng tử hóa mô hình, một kỹ thuật cơ bản trong học sâu, nhằm giải quyết các thách thức quan trọng liên quan đến kích thước mô hình, tốc độ suy luận và hiệu quả bộ nhớ. Nó thực hiện điều này bằng cách chuyển đổi các trọng số mô hình từ các biểu diễn dấu phẩy động có độ chính xác cao, thường là 32 bit (FP32), sang các định dạng dấu phẩy động (FP) hoặc số nguyên (INT) có độ chính xác thấp hơn, chẳng hạn như 16 bit hoặc 8 bit .

Lợi ích của lượng tử hóa là gấp đôi. Thứ nhất, nó làm giảm đáng kể dung lượng bộ nhớ của mô hình và cải thiện tốc độ suy luận mà không gây ra sự suy giảm đáng kể về độ chính xác. Thứ hai, nó tối ưu hóa hiệu suất mô hình bằng cách giảm yêu cầu băng thông bộ nhớ và tăng cường sử dụng bộ đệm.

Biểu diễn INT8 thường được gọi một cách thông tục là “lượng tử hóa” trong bối cảnh mạng nơ-ron sâu, nhưng các định dạng khác như UINT8 và INT16 cũng được sử dụng, tùy thuộc vào kiến ​​trúc phần cứng. Các mô hình khác nhau đòi hỏi các phương pháp lượng tử hóa riêng biệt, thường đòi hỏi kiến ​​thức trước và tinh chỉnh tỉ mỉ để cân bằng độ chính xác và giảm kích thước mô hình.

Lượng tử hóa đặt ra những thách thức, đặc biệt với các định dạng số nguyên có độ chính xác thấp như INT8, do phạm vi động hạn chế của chúng. Việc nén phạm vi động mở rộng của FP32 thành 255 giá trị của INT8 có thể dẫn đến mất độ chính xác. Để giảm thiểu thách thức này, việc chia tỷ lệ trên mỗi kênh hoặc mỗi lớp sẽ điều chỉnh tỷ lệ và giá trị điểm XNUMX của trọng số và tensor kích hoạt để phù hợp hơn với định dạng lượng tử hóa.

Ngoài ra, đào tạo nhận thức lượng tử hóa mô phỏng quá trình lượng tử hóa trong quá trình đào tạo mô hình, cho phép mô hình thích ứng với độ chính xác thấp hơn một cách duyên dáng. Việc nén hoặc ước tính phạm vi là một khía cạnh quan trọng của quá trình này, đạt được thông qua hiệu chuẩn.

Về bản chất, lượng tử hóa mô hình là không thể thiếu để triển khai các mô hình AI hiệu quả, tạo ra sự cân bằng tinh tế giữa độ chính xác và hiệu quả tài nguyên, đặc biệt là trên các thiết bị biên có tài nguyên tính toán hạn chế.

Kỹ thuật lượng tử hóa mô hình

Mức độ lượng tử hóa

Lượng tử hóa chuyển đổi các trọng số và kích hoạt dấu phẩy động có độ chính xác cao của mô hình thành các giá trị điểm cố định có độ chính xác thấp hơn. “Mức lượng tử hóa” đề cập đến số bit đại diện cho các giá trị điểm cố định này. Các mức lượng tử hóa điển hình là lượng tử hóa 8 bit, 16 bit và thậm chí nhị phân (1 bit). Việc chọn mức lượng tử hóa phù hợp phụ thuộc vào sự cân bằng giữa độ chính xác của mô hình và bộ nhớ, khả năng lưu trữ cũng như hiệu quả tính toán.

Đào tạo nhận thức lượng tử hóa (QAT) chi tiết

Đào tạo nhận thức lượng tử hóa (QAT) là một kỹ thuật được sử dụng trong quá trình đào tạo mạng lưới thần kinh để chuẩn bị cho lượng tử hóa. Nó giúp mô hình học cách vận hành hiệu quả với dữ liệu có độ chính xác thấp hơn. Đây là cách QAT hoạt động:

  • Trong QAT, mô hình được huấn luyện với các ràng buộc lượng tử hóa. Những ràng buộc này bao gồm việc mô phỏng các loại dữ liệu có độ chính xác thấp hơn (ví dụ: số nguyên 8 bit) trong quá trình truyền tiến và lùi.
  • Hàm mất nhận thức lượng tử hóa được sử dụng, hàm này xem xét lỗi lượng tử hóa để xử phạt những sai lệch so với hành vi của mô hình có độ chính xác đầy đủ.
  • QAT giúp mô hình học cách đối phó với sự mất độ chính xác do lượng tử hóa gây ra bằng cách điều chỉnh trọng số và kích hoạt của nó cho phù hợp.

Lượng tử hóa sau đào tạo (PTQ) so với Đào tạo nhận biết lượng tử hóa (QAT)

PTQ và QAT là hai cách tiếp cận riêng biệt để lượng tử hóa mô hình, mỗi cách đều có những ưu điểm và ý nghĩa riêng.

Lượng tử hóa sau đào tạo (PTQ) so với Đào tạo nhận biết lượng tử hóa (QAT)

Lượng tử hóa sau đào tạo (PTQ)

PTQ là một kỹ thuật lượng tử hóa được áp dụng sau khi một mô hình đã trải qua quá trình đào tạo đầy đủ với độ chính xác tiêu chuẩn, điển hình là biểu diễn dấu phẩy động. Trong PTQ, trọng số và kích hoạt của mô hình được lượng tử hóa thành các định dạng có độ chính xác thấp hơn, chẳng hạn như số nguyên 8 bit hoặc số float 16 bit, để giảm mức sử dụng bộ nhớ và cải thiện tốc độ suy luận. Mặc dù PTQ mang lại sự đơn giản và khả năng tương thích với các mô hình có sẵn nhưng nó có thể dẫn đến giảm độ chính xác ở mức độ vừa phải do chuyển đổi sau đào tạo.

Đào tạo nhận thức lượng tử hóa (QAT)

Mặt khác, QAT là một cách tiếp cận lượng tử hóa nhiều sắc thái hơn. Nó liên quan đến việc tinh chỉnh mô hình PTQ có lưu ý đến lượng tử hóa. Trong QAT, quá trình lượng tử hóa, bao gồm chia tỷ lệ, cắt bớt và làm tròn, được tích hợp liền mạch vào quy trình đào tạo. Điều này cho phép mô hình được đào tạo một cách rõ ràng để duy trì độ chính xác ngay cả sau khi lượng tử hóa. QAT tối ưu hóa trọng số mô hình để mô phỏng lượng tử hóa thời gian suy luận một cách chính xác. Trong quá trình đào tạo, nó sử dụng các mô-đun lượng tử hóa “giả” để bắt chước hành vi của giai đoạn thử nghiệm hoặc suy luận, trong đó các trọng số được làm tròn hoặc được gắn vào các biểu diễn có độ chính xác thấp. Cách tiếp cận này mang lại độ chính xác cao hơn trong quá trình suy luận trong thế giới thực, vì mô hình nhận thức được lượng tử hóa ngay từ đầu.

Thuật toán lượng tử hóa

Có nhiều thuật toán và phương pháp khác nhau để lượng tử hóa mạng lưới thần kinh. Một số kỹ thuật lượng tử hóa tiêu chuẩn bao gồm:

  • lượng tử hóa trọng lượng liên quan đến việc lượng tử hóa trọng số của mô hình thành các giá trị có độ chính xác thấp hơn (ví dụ: số nguyên 8 bit). Lượng tử hóa trọng lượng có thể làm giảm đáng kể dung lượng bộ nhớ của mô hình.
  • Lượng tử hóa kích hoạt: Bên cạnh việc lượng tử hóa các trọng số, các kích hoạt có thể được lượng tử hóa trong quá trình suy luận. Điều này làm giảm yêu cầu tính toán và sử dụng bộ nhớ hơn nữa.
  • Lượng tử hóa động: Thay vì sử dụng thang đo lượng tử hóa cố định, lượng tử hóa động cho phép chia tỷ lệ động các phạm vi lượng tử hóa trong quá trình suy luận, giúp giảm thiểu tình trạng mất độ chính xác.
  • Đào tạo nhận thức lượng tử hóa (QAT): Như đã đề cập trước đó, QAT là một phương pháp đào tạo kết hợp các ràng buộc lượng tử hóa và cho phép mô hình học cách vận hành với dữ liệu có độ chính xác thấp hơn.
  • Lượng tử hóa chính xác hỗn hợp: Kỹ thuật này kết hợp lượng tử hóa chính xác khác nhau cho trọng lượng và kích hoạt, tối ưu hóa độ chính xác và hiệu quả.
  • Lượng tử hóa sau đào tạo với hiệu chuẩn: Trong lượng tử hóa sau đào tạo, hiệu chuẩn được sử dụng để xác định phạm vi lượng tử hóa của trọng số và kích hoạt nhằm giảm thiểu việc mất độ chính xác.

Tóm lại, sự lựa chọn giữa Lượng tử hóa sau đào tạo và Đào tạo nhận thức lượng tử hóa (QAT) phụ thuộc vào nhu cầu triển khai cụ thể và sự cân bằng giữa hiệu suất và hiệu quả của mô hình. PTQ cung cấp một cách tiếp cận đơn giản hơn để giảm kích thước mô hình. Tuy nhiên, nó có thể bị mất độ chính xác do sự không khớp cố hữu giữa mô hình có độ chính xác hoàn toàn ban đầu và đối tác lượng tử hóa của nó. Mặt khác, QAT tích hợp trực tiếp các ràng buộc lượng tử hóa vào quá trình đào tạo, đảm bảo rằng mô hình học cách vận hành hiệu quả với dữ liệu có độ chính xác thấp hơn ngay từ đầu.

Điều này dẫn đến việc duy trì độ chính xác tốt hơn và kiểm soát tốt hơn quá trình lượng tử hóa. Khi việc duy trì độ chính xác cao là điều tối quan trọng thì QAT thường là lựa chọn ưu tiên. Nó trao quyền cho các mô hình học sâu để đạt được sự cân bằng tinh tế giữa hiệu suất tối ưu và sử dụng hiệu quả tài nguyên phần cứng. Nó đặc biệt phù hợp để triển khai trên các thiết bị có nguồn lực hạn chế, nơi độ chính xác không thể bị ảnh hưởng.

Lợi ích của lượng tử hóa mô hình

  1. Suy luận nhanh hơn: Các mô hình lượng tử hóa có tốc độ triển khai và chạy nhanh hơn, khiến chúng trở nên lý tưởng cho các ứng dụng thời gian thực như nhận dạng giọng nói, xử lý hình ảnh và xe tự lái. Độ chính xác giảm cho phép tính toán nhanh hơn, dẫn đến độ trễ thấp hơn.
  2. Chi phí triển khai thấp hơn: Kích thước mô hình nhỏ hơn giúp giảm yêu cầu về bộ nhớ và lưu trữ, giảm đáng kể chi phí triển khai các giải pháp AI, đặc biệt là trong các dịch vụ dựa trên đám mây, nơi chi phí lưu trữ và tính toán là những vấn đề đáng cân nhắc.
  3. Tăng khả năng tiếp cận: Lượng tử hóa cho phép AI được triển khai trên các thiết bị có nguồn lực hạn chế như điện thoại thông minh, thiết bị IoT và nền tảng điện toán biên. Điều này mở rộng phạm vi tiếp cận của AI đến nhiều đối tượng hơn và mở ra những cơ hội mới cho các ứng dụng ở các khu vực xa xôi hoặc kém phát triển.
  4. Cải thiện quyền riêng tư và bảo mật: Bằng cách giảm kích thước của mô hình, lượng tử hóa có thể tạo điều kiện thuận lợi cho quá trình xử lý AI trên thiết bị, giảm nhu cầu gửi dữ liệu nhạy cảm đến các máy chủ tập trung. Điều này tăng cường quyền riêng tư và bảo mật bằng cách giảm thiểu khả năng tiếp xúc dữ liệu với các mối đe dọa bên ngoài.
  5. Tác động môi trường: Kích thước mô hình nhỏ hơn giúp giảm mức tiêu thụ điện năng, giúp trung tâm dữ liệu và cơ sở hạ tầng đám mây tiết kiệm năng lượng hơn. Điều này giúp giảm thiểu tác động môi trường của việc triển khai AI quy mô lớn.
  6. Khả năng mở rộng: Các mô hình lượng tử hóa dễ phân phối và triển khai hơn, cho phép mở rộng hiệu quả các dịch vụ AI để đáp ứng nhu cầu và lưu lượng ngày càng tăng của người dùng mà không cần đầu tư cơ sở hạ tầng đáng kể.
  7. Khả năng tương thích: Các mô hình lượng tử hóa thường tương thích hơn với nhiều loại phần cứng hơn, giúp việc triển khai các giải pháp AI trên nhiều thiết bị và nền tảng khác nhau trở nên dễ tiếp cận hơn.
  8. Ứng dụng thời gian thực: Kích thước mô hình giảm và khả năng suy luận nhanh hơn giúp các mô hình lượng tử hóa phù hợp với các ứng dụng thời gian thực như thực tế tăng cường, thực tế ảo và chơi game, trong đó độ trễ thấp rất quan trọng để mang lại trải nghiệm liền mạch cho người dùng.

Những lợi ích này cùng nhau làm cho việc lượng tử hóa mô hình trở thành một kỹ thuật quan trọng để tối ưu hóa AI triển khai, đảm bảo cả hiệu quả và khả năng truy cập trên nhiều ứng dụng và thiết bị.

Lợi ích của lượng tử hóa mô hình

Ví dụ trong thế giới thực

  • Chăm sóc sức khỏe: Trong lĩnh vực chăm sóc sức khỏe, lượng tử hóa mô hình đã cho phép triển khai các giải pháp hình ảnh y tế được hỗ trợ bởi AI trên các thiết bị biên. Máy siêu âm di động và ứng dụng điện thoại thông minh hiện sử dụng các mô hình lượng tử hóa để chẩn đoán bệnh tim và phát hiện khối u. Điều này giúp giảm nhu cầu về thiết bị chuyên dụng, đắt tiền và cho phép các chuyên gia chăm sóc sức khỏe cung cấp chẩn đoán kịp thời và chính xác ở những nơi có nguồn lực hạn chế hoặc từ xa.
  • Xe tự hành: Các mô hình lượng tử hóa đóng một vai trò quan trọng trong các phương tiện tự hành, trong đó việc ra quyết định theo thời gian thực là bắt buộc. Xe tự lái có thể hoạt động hiệu quả trên phần cứng nhúng bằng cách giảm kích thước của các mô hình học sâu cho các nhiệm vụ nhận thức và kiểm soát. Điều này giúp nâng cao độ an toàn, khả năng phản hồi và khả năng điều hướng trong các môi trường phức tạp, biến việc lái xe tự động thành hiện thực.
  • Xử lý ngôn ngữ tự nhiên (NLP): Trong lĩnh vực NLP, các mô hình lượng tử hóa đã cho phép triển khai các mô hình ngôn ngữ trên loa thông minh, chatbot và thiết bị di động. Điều này cho phép hiểu và tạo ngôn ngữ theo thời gian thực, giúp trợ lý giọng nói và ứng dụng dịch ngôn ngữ dễ tiếp cận hơn và phản hồi nhanh hơn với các truy vấn của người dùng.
  • Tự động trong công nghiệp: Tự động hóa công nghiệp tận dụng các mô hình lượng tử hóa để dự đoán bảo trì và kiểm soát chất lượng. Các thiết bị biên được trang bị mô hình lượng tử hóa có thể theo dõi tình trạng máy móc và phát hiện lỗi trong thời gian thực, giảm thiểu thời gian ngừng hoạt động và nâng cao hiệu quả sản xuất trong các nhà máy sản xuất.
  • Bán lẻ và thương mại điện tử: Các nhà bán lẻ sử dụng mô hình lượng tử hóa để quản lý hàng tồn kho và tương tác với khách hàng. Các mô hình nhận dạng hình ảnh theo thời gian thực được triển khai trên camera trong cửa hàng có thể theo dõi tình trạng sẵn có của sản phẩm và tối ưu hóa bố cục cửa hàng. Tương tự, hệ thống đề xuất lượng tử hóa cung cấp trải nghiệm mua sắm được cá nhân hóa trên nền tảng thương mại điện tử, cải thiện sự hài lòng của khách hàng và doanh số bán hàng.

Những ví dụ thực tế này minh họa tính linh hoạt và tác động của lượng tử hóa mô hình trong các ngành khác nhau, giúp các giải pháp AI trở nên dễ tiếp cận, hiệu quả và tiết kiệm chi phí hơn.

Những thách thức và cân nhắc

Trong lượng tử hóa mô hình, một số thách thức và cân nhắc quan trọng sẽ định hình bối cảnh triển khai AI hiệu quả. Một thách thức cơ bản nằm ở việc đạt được sự cân bằng tinh tế giữa độ chính xác và hiệu quả. Lượng tử hóa mạnh mẽ, trong khi nâng cao hiệu quả tài nguyên, có thể dẫn đến mất độ chính xác đáng kể, khiến việc điều chỉnh phương pháp lượng tử hóa cho phù hợp với nhu cầu cụ thể của ứng dụng là bắt buộc.

Hơn nữa, không phải tất cả các mô hình AI đều có khả năng lượng tử hóa như nhau, trong đó độ phức tạp của các mô hình đóng vai trò then chốt trong độ nhạy của chúng đối với việc giảm độ chính xác trong quá trình lượng tử hóa. Điều này đòi hỏi phải đánh giá cẩn thận xem lượng tử hóa có phù hợp với một mô hình và trường hợp sử dụng nhất định hay không. Sự lựa chọn giữa lượng tử hóa sau đào tạo (PTQ) và đào tạo nhận thức lượng tử hóa (QAT) cũng quan trọng như nhau. Quyết định này tác động đáng kể đến độ chính xác, độ phức tạp của mô hình và tiến trình phát triển, nhấn mạnh sự cần thiết của các nhà phát triển trong việc đưa ra những lựa chọn sáng suốt phù hợp với yêu cầu triển khai dự án và nguồn lực sẵn có của họ. Những cân nhắc này nhấn mạnh chung tầm quan trọng của việc lập kế hoạch và đánh giá tỉ mỉ khi triển khai lượng tử hóa mô hình, vì chúng ảnh hưởng trực tiếp đến sự cân bằng phức tạp giữa độ chính xác của mô hình và hiệu quả sử dụng tài nguyên trong các ứng dụng AI.

Sự đánh đổi độ chính xác

  • Kiểm tra chi tiết về sự cân bằng giữa độ chính xác của mô hình và lượng tử hóa: Phần này đi sâu vào sự cân bằng phức tạp giữa việc duy trì độ chính xác của mô hình và đạt được hiệu quả tài nguyên thông qua lượng tử hóa. Nó khám phá mức độ lượng tử hóa mạnh mẽ có thể dẫn đến mất độ chính xác và những cân nhắc cần thiết để đưa ra quyết định sáng suốt về mức độ lượng tử hóa phù hợp với các ứng dụng cụ thể.

Những thách thức đào tạo về lượng tử hóa-nhận thức

  • Những thách thức chung gặp phải khi triển khai QAT và các chiến lược để vượt qua chúng: Chúng tôi giải quyết những trở ngại mà các nhà phát triển gặp phải khi tích hợp đào tạo nhận thức lượng tử hóa (QAT) vào quy trình đào tạo mô hình. Chúng tôi cũng cung cấp thông tin chuyên sâu về các chiến lược và phương pháp hay nhất để vượt qua những thách thức này, đảm bảo triển khai QAT thành công.

Hạn chế phần cứng

  • Thảo luận về vai trò của bộ tăng tốc phần cứng trong việc triển khai mô hình lượng tử hóa: Phần này tìm hiểu vai trò của bộ tăng tốc phần cứng, chẳng hạn như GPU, TPU và phần cứng AI chuyên dụng, trong việc triển khai các mô hình lượng tử hóa. Nó nhấn mạnh tầm quan trọng của khả năng tương thích và tối ưu hóa phần cứng để đạt được khả năng suy luận hiệu quả và hiệu suất cao với các mô hình lượng tử hóa.

Phát hiện đối tượng theo thời gian thực trên Raspberry Pi bằng MobileNetV2 được lượng tử hóa

1: Thiết lập phần cứng

Thiết lập phần cứng
  • Giới thiệu mẫu Raspberry Pi của bạn (ví dụ: Raspberry Pi 4).
  • Mô-đun máy ảnh Raspberry Pi (hoặc webcam USB cho các mẫu cũ hơn)
  • Cung cấp năng lượng
  • Thẻ MicroSD với hệ điều hành Raspberry Pi
  • Cáp HDMI, màn hình, bàn phím và chuột (để thiết lập ban đầu)
  • Nhấn mạnh sự cần thiết phải triển khai một mô hình nhẹ trên Raspberry Pi do hạn chế về tài nguyên.

2: Cài đặt phần mềm

  • Thiết lập Raspberry Pi với Raspberry Pi OS (trước đây là Raspbian).
  • Cài đặt Python và các thư viện cần thiết:
sudo apt update
sudo apt install python3-pip
pip3 install opencv-python-headless
pip3 install opencv-python
pip3 install numpy
pip3 install tensorflow==2.7

3: Thu thập và tiền xử lý dữ liệu

  • Thu thập hoặc truy cập tập dữ liệu để phát hiện đối tượng (ví dụ: tập dữ liệu COCO).
  • Dán nhãn các đối tượng quan tâm trong hình ảnh bằng các công cụ như LabelImg.
  • Chuyển đổi chú thích sang định dạng bắt buộc (ví dụ: TFRecord) cho TensorFlow.

4: Nhập các thư viện cần thiết

import argparse # For command-line argument parsing
import cv2 # OpenCV library for computer vision tasks
import imutils # Utility functions for working with images and video
import numpy as np # NumPy for numerical operations
import tensorflow as tf # TensorFlow for machine learning and deep learning

5: Lượng tử hóa mô hình

  • Định lượng mô hình MobileNetV2 được đào tạo trước bằng TensorFlow:
import tensorflow as tf # Load the pre-trained model
model = tf.keras.applications.MobileNetV2(weights='imagenet', input_shape=(224, 224, 3)) # Quantize the model
converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quantized_model = converter.convert() # Save the quantized model
with open('quantized_mobilenetv2.tflite', 'wb') as f: f.write(tflite_quantized_model)Step 5: Deployment and Real-time Inference

6: Phân tích đối số

  • “argparse” được sử dụng để phân tích các đối số dòng lệnh. Ở đây, nó được định cấu hình để chấp nhận đường dẫn đến mô hình được đào tạo tùy chỉnh, tệp nhãn và ngưỡng tin cậy.
# Parse command-line arguments
ap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", required=True, help="path to your custom trained model")
ap.add_argument("-l", "--labels", required=True, help="path to your class labels file")
ap.add_argument("-c", "--confidence", type=float, default=0.2, help="minimum probability to filter weak detections")
args = vars(ap.parse_args())

7: Tải mô hình và tải nhãn

  • Mã tải mô hình phát hiện đối tượng được đào tạo tùy chỉnh và nhãn lớp.
# Load your custom-trained model and labels
print("[INFO] loading model...")
model = tf.saved_model.load(args["model"]) # Load the custom-trained TensorFlow model
with open(args["labels"], "r") as f: CLASSES = f.read().strip().split("n") # Load class labels from a file

8: Khởi tạo luồng video

  • Nó thiết lập luồng video để ghi lại các khung hình từ camera mặc định.
# Initialize video stream
print("[INFO] starting video stream...")
cap = cv2.VideoCapture(0) # Initialize the video stream (0 for the default camera)
fps = cv2.getTickFrequency()
start_time = cv2.getTickCount()

9: Vòng lặp phát hiện đối tượng theo thời gian thực

  • Vòng lặp chính ghi lại các khung hình từ luồng video, thực hiện phát hiện đối tượng bằng mô hình tùy chỉnh và hiển thị kết quả trên khung.
  • Các đối tượng được phát hiện sẽ được vẽ dưới dạng các hộp giới hạn có nhãn và điểm tin cậy.
while True: # Read a frame from the video stream ret, frame = cap.read() frame = imutils.resize(frame, width=800) # Resize the frame for better processing speed # Perform object detection using the custom model detections = model(frame) # Loop over detected objects for detection in detections['detection_boxes']: # Extract bounding box coordinates startY, startX, endY, endX = detection[0], detection[1], detection[2], detection[3] # Draw bounding box and label on the frame label = CLASSES[0] # Replace with your class label logic confidence = 1.0 # Replace with your confidence score logic color = (0, 255, 0) # Green color for bounding box (you can change this) cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2) text = "{}: {:.2f}%".format(label, confidence * 100) cv2.putText(frame, text, (startX, startY - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) # Display the frame with object detection results cv2.imshow("Custom Object Detection", frame) key = cv2.waitKey(1) & 0xFF if key == ord("q"): break # Break the loop if 'q' key is pressed # Clean up
cap.release() # Release the video stream
cv2.destroyAllWindows() # Close OpenCV windows

10: Đánh giá hiệu suất

  • Đo tốc độ suy luận và mức sử dụng tài nguyên trên Raspberry Pi bằng các công cụ giám sát hệ thống và thời gian (htop).
  • Thảo luận về bất kỳ sự cân bằng nào giữa độ chính xác và hiệu quả được quan sát trong dự án.

11: Kết luận và hiểu biết sâu sắc

  • Tóm tắt những phát hiện cần thiết và nhấn mạnh cách lượng tử hóa mô hình cho phép phát hiện đối tượng theo thời gian thực trên một thiết bị có giới hạn tài nguyên như Raspberry Pi.
  • Làm nổi bật tính thực tiễn và ứng dụng trong thế giới thực của dự án này, chẳng hạn như triển khai tính năng phát hiện đối tượng trong camera an ninh hoặc robot.

Bằng cách làm theo các bước này và sử dụng mã Python được cung cấp, người học có thể xây dựng hệ thống phát hiện đối tượng theo thời gian thực trên Raspberry Pi, thể hiện lợi ích của việc lượng tử hóa mô hình cho các ứng dụng AI hiệu quả trên các thiết bị biên.

Kết luận

Lượng tử hóa mô hình là một kỹ thuật then chốt có ảnh hưởng sâu sắc đến bối cảnh triển khai AI. Nó trao quyền cho các thiết bị di động và thiết bị biên có giới hạn tài nguyên bằng cách cho phép chúng chạy các ứng dụng AI một cách hiệu quả, đồng thời nâng cao khả năng mở rộng và hiệu quả chi phí của các dịch vụ AI dựa trên đám mây. Tác động của lượng tử hóa lan tỏa khắp hệ sinh thái AI, giúp AI dễ tiếp cận hơn, phản ứng nhanh hơn và thân thiện với môi trường hơn.

Hơn nữa, lượng tử hóa phù hợp với các xu hướng AI mới nổi, như học tập liên kết và AI ở biên, mở ra những biên giới đổi mới mới. Khi chúng ta chứng kiến ​​​​sự phát triển không ngừng của AI, lượng tử hóa mô hình đóng vai trò là một công cụ quan trọng, đảm bảo rằng AI có thể tiếp cận đối tượng rộng hơn, cung cấp thông tin chi tiết theo thời gian thực và thích ứng với nhu cầu ngày càng tăng của các ngành công nghiệp khác nhau. Trong bối cảnh năng động này, lượng tử hóa mô hình đóng vai trò là cầu nối giữa sức mạnh của AI và tính thực tế của việc triển khai nó, tạo ra con đường hướng tới các giải pháp AI hiệu quả, dễ tiếp cận và bền vững hơn.

Chìa khóa chính

  • Lượng tử hóa mô hình rất quan trọng để triển khai các mô hình AI lớn trên các thiết bị có nguồn lực hạn chế.
  • Mức lượng tử hóa, như 8 bit hoặc 16 bit, giảm kích thước mô hình và nâng cao hiệu quả.
  • Công cụ thúc đẩy Đào tạo nhận thức lượng tử hóa (QAT) Đào tạo nhận thức lượng tử hóa định lượng quá trình đào tạo trong quá trình đào tạo.
  • Lượng tử hóa sau đào tạo (PTQ) đơn giản hóa nhưng có thể làm giảm độ chính xác, cần phải tinh chỉnh.
  • Sự lựa chọn phụ thuộc vào nhu cầu triển khai cụ thể và sự cân bằng giữa độ chính xác và hiệu quả, điều này rất quan trọng đối với các thiết bị có nguồn lực hạn chế.

Những câu hỏi thường gặp

Câu 1: Lượng tử hóa mô hình trong AI là gì?

Trả lời: Lượng tử hóa mô hình trong AI là một kỹ thuật liên quan đến việc giảm độ chính xác về trọng số và kích hoạt của mô hình mạng thần kinh. Nó chuyển đổi các giá trị dấu phẩy động có độ chính xác cao thành các biểu diễn số nguyên hoặc điểm cố định có độ chính xác thấp hơn, giúp mô hình sử dụng bộ nhớ hiệu quả hơn và thực thi nhanh hơn.

Câu hỏi 2: Các mức lượng tử hóa tiêu chuẩn được sử dụng trong lượng tử hóa mô hình là gì?

Trả lời: Các mức lượng tử hóa phổ biến bao gồm lượng tử hóa 8 bit, 16 bit và nhị phân (1 bit). Việc lựa chọn mức độ lượng tử hóa phụ thuộc vào sự cân bằng giữa độ chính xác của mô hình và hiệu suất bộ nhớ/lưu trữ/tính toán cần thiết cho một ứng dụng cụ thể.

Câu hỏi 3: Đào tạo lượng tử hóa-nhận thức khác với lượng tử hóa sau đào tạo như thế nào?

Đáp: QAT kết hợp các ràng buộc lượng tử hóa trong quá trình đào tạo, cho phép mô hình thích ứng với các phép tính có độ chính xác thấp hơn. Mặt khác, PTQ lượng tử hóa một mô hình được đào tạo trước sau khi đào tạo tiêu chuẩn, có khả năng yêu cầu tinh chỉnh để lấy lại độ chính xác đã mất.

Câu hỏi 4: Lợi ích của việc sử dụng lượng tử hóa mô hình trong AI là gì?

Đáp: Lượng tử hóa mô hình mang lại những lợi ích như giảm dung lượng bộ nhớ, cải thiện tốc độ suy luận, tiết kiệm năng lượng, triển khai rộng hơn trên các thiết bị có giới hạn tài nguyên, tiết kiệm chi phí cũng như nâng cao quyền riêng tư và bảo mật do kích thước mô hình nhỏ hơn.

Câu hỏi 5: Khi nào tôi nên chọn Đào tạo nhận thức lượng tử hóa (QAT) thay vì PTQ?

Đáp: Chọn QAT khi duy trì độ chính xác của mô hình là ưu tiên hàng đầu. QAT đảm bảo duy trì độ chính xác tốt hơn bằng cách tích hợp các ràng buộc lượng tử hóa trong quá trình đào tạo, khiến nó trở nên lý tưởng khi độ chính xác là điều tối quan trọng. PTQ đơn giản hơn nhưng có thể yêu cầu tinh chỉnh bổ sung để khôi phục độ chính xác. Sự lựa chọn phụ thuộc vào nhu cầu triển khai cụ thể.

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img