Tối đa hóa hiệu suất trong các ứng dụng Edge AI - KDnuggets

Tối đa hóa hiệu suất trong các ứng dụng Edge AI – KDnuggets

Nút nguồn: 2919295

Khi AI di chuyển từ đám mây sang Edge, chúng tôi nhận thấy công nghệ này đang được sử dụng trong nhiều trường hợp sử dụng ngày càng mở rộng – từ phát hiện sự bất thường đến các ứng dụng bao gồm mua sắm thông minh, giám sát, robot và tự động hóa nhà máy. Do đó, không có giải pháp nào phù hợp cho tất cả. Nhưng với sự phát triển nhanh chóng của các thiết bị hỗ trợ camera, AI đã được áp dụng rộng rãi nhất để phân tích dữ liệu video thời gian thực nhằm tự động hóa việc giám sát video nhằm nâng cao độ an toàn, cải thiện hiệu quả hoạt động và cung cấp trải nghiệm khách hàng tốt hơn, cuối cùng đạt được lợi thế cạnh tranh trong ngành của họ . Để hỗ trợ phân tích video tốt hơn, bạn phải hiểu các chiến lược tối ưu hóa hiệu suất hệ thống khi triển khai AI biên.

  • Chọn các công cụ tính toán có kích thước phù hợp để đáp ứng hoặc vượt quá mức hiệu suất cần thiết. Đối với ứng dụng AI, các công cụ tính toán này phải thực hiện các chức năng của toàn bộ quy trình thị giác (tức là xử lý trước và sau video, suy luận mạng thần kinh).

Có thể cần phải có bộ tăng tốc AI chuyên dụng, dù là rời rạc hay tích hợp vào SoC (trái ngược với việc chạy suy luận AI trên CPU hoặc GPU).

  • Hiểu sự khác biệt giữa thông lượng và độ trễ; trong đó thông lượng là tốc độ dữ liệu có thể được xử lý trong một hệ thống và độ trễ đo lường độ trễ xử lý dữ liệu trong hệ thống và thường liên quan đến khả năng phản hồi theo thời gian thực. Ví dụ: một hệ thống có thể tạo dữ liệu hình ảnh ở tốc độ 100 khung hình mỗi giây (thông lượng) nhưng phải mất 100 mili giây (độ trễ) để hình ảnh đi qua hệ thống.   
  • Xem xét khả năng dễ dàng mở rộng quy mô hiệu suất AI trong tương lai để đáp ứng nhu cầu ngày càng tăng, yêu cầu thay đổi và công nghệ đang phát triển (ví dụ: các mô hình AI tiên tiến hơn để tăng cường chức năng và độ chính xác). Bạn có thể thực hiện việc mở rộng quy mô hiệu suất bằng cách sử dụng bộ tăng tốc AI ở định dạng mô-đun hoặc với các chip tăng tốc AI bổ sung.

Các yêu cầu hiệu suất thực tế phụ thuộc vào ứng dụng. Thông thường, người ta có thể mong đợi rằng đối với phân tích video, hệ thống phải xử lý các luồng dữ liệu đến từ camera ở tốc độ 30-60 khung hình mỗi giây và có độ phân giải 1080p hoặc 4k. Một camera hỗ trợ AI sẽ xử lý một luồng duy nhất; một thiết bị biên sẽ xử lý song song nhiều luồng. Trong cả hai trường hợp, hệ thống AI biên phải hỗ trợ các chức năng xử lý trước để chuyển đổi dữ liệu cảm biến của máy ảnh sang định dạng phù hợp với yêu cầu đầu vào của phần suy luận AI (Hình 1).

Các chức năng tiền xử lý lấy dữ liệu thô và thực hiện các tác vụ như thay đổi kích thước, chuẩn hóa và chuyển đổi không gian màu trước khi đưa dữ liệu đầu vào vào mô hình chạy trên bộ tăng tốc AI. Quá trình xử lý trước có thể sử dụng các thư viện xử lý ảnh hiệu quả như OpenCV để giảm thời gian xử lý trước. Quá trình hậu xử lý bao gồm việc phân tích đầu ra của suy luận. Nó sử dụng các tác vụ như ngăn chặn không tối đa (NMS diễn giải đầu ra của hầu hết các mô hình phát hiện đối tượng) và hiển thị hình ảnh để tạo ra những hiểu biết sâu sắc có thể hành động, chẳng hạn như hộp giới hạn, nhãn lớp hoặc điểm tin cậy.

 

Tối đa hóa hiệu suất trong các ứng dụng Edge AI
Hình 1. Đối với suy luận mô hình AI, các chức năng trước và sau xử lý thường được thực hiện trên bộ xử lý ứng dụng.
 

Suy luận mô hình AI có thể gặp thêm thách thức trong việc xử lý nhiều mô hình mạng thần kinh trên mỗi khung, tùy thuộc vào khả năng của ứng dụng. Các ứng dụng thị giác máy tính thường liên quan đến nhiều tác vụ AI đòi hỏi một hệ thống gồm nhiều mô hình. Hơn nữa, đầu ra của một mô hình thường là đầu vào của mô hình tiếp theo. Nói cách khác, các mô hình trong một ứng dụng thường phụ thuộc lẫn nhau và phải được thực thi tuần tự. Tập hợp chính xác các mô hình cần thực thi có thể không tĩnh và có thể thay đổi linh hoạt, thậm chí trên cơ sở từng khung hình. 

Thử thách chạy nhiều mô hình một cách linh hoạt đòi hỏi một bộ tăng tốc AI bên ngoài có bộ nhớ chuyên dụng và đủ lớn để lưu trữ các mô hình. Thông thường, bộ tăng tốc AI tích hợp bên trong SoC không thể quản lý khối lượng công việc đa mô hình do các ràng buộc do hệ thống con bộ nhớ dùng chung và các tài nguyên khác trong SoC áp đặt.

Ví dụ: theo dõi đối tượng dựa trên dự đoán chuyển động dựa vào việc phát hiện liên tục để xác định vectơ được sử dụng để xác định đối tượng được theo dõi ở vị trí trong tương lai. Hiệu quả của phương pháp này bị hạn chế vì nó thiếu khả năng tái nhận dạng thực sự. Với tính năng dự đoán chuyển động, dấu vết của một đối tượng có thể bị mất do bỏ sót phát hiện, bị che khuất hoặc đối tượng rời khỏi trường nhìn, dù chỉ trong giây lát. Một khi bị mất, không có cách nào để liên kết lại dấu vết của đối tượng. Việc thêm nhận dạng lại sẽ giải quyết được hạn chế này nhưng yêu cầu nhúng hình thức trực quan (tức là dấu vân tay hình ảnh). Việc nhúng giao diện yêu cầu mạng thứ hai tạo ra vectơ đặc trưng bằng cách xử lý hình ảnh chứa bên trong hộp giới hạn của đối tượng được mạng đầu tiên phát hiện. Việc nhúng này có thể được sử dụng để xác định lại đối tượng, bất kể thời gian hay không gian. Vì các phần nhúng phải được tạo cho từng đối tượng được phát hiện trong trường xem nên yêu cầu xử lý sẽ tăng lên khi cảnh trở nên bận rộn hơn. Theo dõi đối tượng bằng tính năng nhận dạng lại yêu cầu cân nhắc cẩn thận giữa việc thực hiện phát hiện tốc độ khung hình cao/độ chính xác cao/độ phân giải cao và dành đủ chi phí cho khả năng mở rộng nhúng. Một cách để giải quyết yêu cầu xử lý là sử dụng bộ tăng tốc AI chuyên dụng. Như đã đề cập trước đó, công cụ AI của SoC có thể bị thiếu tài nguyên bộ nhớ dùng chung. Tối ưu hóa mô hình cũng có thể được sử dụng để giảm yêu cầu xử lý, nhưng nó có thể ảnh hưởng đến hiệu suất và/hoặc độ chính xác.

Trong máy ảnh thông minh hoặc thiết bị biên, SoC tích hợp (tức là bộ xử lý máy chủ) thu nhận các khung hình video và thực hiện các bước xử lý trước mà chúng tôi đã mô tả trước đó. Các chức năng này có thể được thực hiện bằng lõi CPU hoặc GPU của SoC (nếu có), nhưng chúng cũng có thể được thực hiện bằng các bộ tăng tốc phần cứng chuyên dụng trong SoC (ví dụ: bộ xử lý tín hiệu hình ảnh). Sau khi hoàn tất các bước tiền xử lý này, bộ tăng tốc AI được tích hợp vào SoC có thể truy cập trực tiếp vào đầu vào lượng tử hóa này từ bộ nhớ hệ thống hoặc trong trường hợp bộ tăng tốc AI rời rạc, đầu vào sau đó sẽ được phân phối để suy luận, thường là qua Giao diện USB hoặc PCIe. 

Một SoC tích hợp có thể chứa nhiều đơn vị tính toán, bao gồm CPU, GPU, bộ tăng tốc AI, bộ xử lý thị giác, bộ mã hóa/giải mã video, bộ xử lý tín hiệu hình ảnh (ISP), v.v. Các đơn vị tính toán này đều chia sẻ cùng một bus bộ nhớ và do đó truy cập vào cùng một bộ nhớ. Hơn nữa, CPU và GPU cũng có thể phải đóng một vai trò trong quá trình suy luận và các đơn vị này sẽ bận chạy các tác vụ khác trong hệ thống được triển khai. Đây chính là ý nghĩa của chi phí cấp hệ thống (Hình 2).

Nhiều nhà phát triển đánh giá nhầm hiệu suất của bộ tăng tốc AI tích hợp trong SoC mà không xem xét ảnh hưởng của chi phí cấp hệ thống đến tổng hiệu suất. Ví dụ: hãy cân nhắc việc chạy điểm chuẩn YOLO trên bộ tăng tốc AI 50 TOPS được tích hợp trong SoC, có thể thu được kết quả điểm chuẩn là 100 suy luận/giây (IPS). Nhưng trong một hệ thống được triển khai với tất cả các đơn vị tính toán khác đang hoạt động, 50 TOPS đó có thể giảm xuống khoảng 12 TOPS và hiệu suất tổng thể sẽ chỉ mang lại 25 IPS, giả sử hệ số sử dụng rộng rãi là 25%. Chi phí hệ thống luôn là một yếu tố nếu nền tảng liên tục xử lý các luồng video. Ngoài ra, với bộ tăng tốc AI riêng biệt (ví dụ: Kinara Ara-1, Hailo-8, Intel Myriad X), mức sử dụng ở cấp hệ thống có thể lớn hơn 90% vì khi SoC máy chủ khởi tạo chức năng suy luận và chuyển đầu vào của mô hình AI dữ liệu, bộ tăng tốc chạy tự động bằng cách sử dụng bộ nhớ chuyên dụng để truy cập các trọng số và tham số của mô hình.

 

Tối đa hóa hiệu suất trong các ứng dụng Edge AI
Hình 2. Bus bộ nhớ dùng chung sẽ chi phối hiệu suất cấp hệ thống, được hiển thị ở đây với các giá trị ước tính. Giá trị thực sẽ thay đổi tùy theo mô hình sử dụng ứng dụng của bạn và cấu hình đơn vị điện toán của SoC.

Cho đến thời điểm này, chúng ta đã thảo luận về hiệu suất AI xét về số khung hình trên giây và TOPS. Nhưng độ trễ thấp là một yêu cầu quan trọng khác để mang lại khả năng phản hồi theo thời gian thực của hệ thống. Ví dụ: trong trò chơi, độ trễ thấp rất quan trọng để có trải nghiệm chơi trò chơi liền mạch và phản hồi nhanh, đặc biệt là trong các trò chơi điều khiển bằng chuyển động và hệ thống thực tế ảo (VR). Trong các hệ thống lái xe tự động, độ trễ thấp rất quan trọng để phát hiện vật thể theo thời gian thực, nhận dạng người đi bộ, phát hiện làn đường và nhận dạng biển báo giao thông để tránh ảnh hưởng đến sự an toàn. Hệ thống lái xe tự động thường yêu cầu độ trễ từ đầu đến cuối dưới 150 mili giây từ khi phát hiện đến hành động thực tế. Tương tự, trong sản xuất, độ trễ thấp là điều cần thiết để phát hiện lỗi theo thời gian thực, nhận dạng bất thường và hướng dẫn bằng robot phụ thuộc vào phân tích video có độ trễ thấp để đảm bảo vận hành hiệu quả và giảm thiểu thời gian ngừng hoạt động sản xuất.

Nói chung, có ba thành phần độ trễ trong ứng dụng phân tích video (Hình 3):

  • Độ trễ thu thập dữ liệu là thời gian từ khi cảm biến camera ghi lại khung hình video cho đến khi khung hình đó có sẵn để hệ thống phân tích xử lý. Bạn có thể tối ưu hóa độ trễ này bằng cách chọn máy ảnh có cảm biến nhanh và bộ xử lý có độ trễ thấp, chọn tốc độ khung hình tối ưu và sử dụng các định dạng nén video hiệu quả.
  • Độ trễ truyền dữ liệu là thời gian để dữ liệu video được ghi và nén di chuyển từ máy ảnh đến các thiết bị biên hoặc máy chủ cục bộ. Điều này bao gồm sự chậm trễ xử lý mạng xảy ra ở mỗi điểm cuối.
  • Độ trễ xử lý dữ liệu đề cập đến thời gian để các thiết bị biên thực hiện các tác vụ xử lý video như thuật toán phân tích và giải nén khung hình (ví dụ: theo dõi đối tượng dựa trên dự đoán chuyển động, nhận dạng khuôn mặt). Như đã chỉ ra trước đó, độ trễ xử lý thậm chí còn quan trọng hơn đối với các ứng dụng phải chạy nhiều mô hình AI cho mỗi khung hình video.

 

Tối đa hóa hiệu suất trong các ứng dụng Edge AI
Hình 3. Quy trình phân tích video bao gồm thu thập dữ liệu, truyền dữ liệu và xử lý dữ liệu.
 

Độ trễ xử lý dữ liệu có thể được tối ưu hóa bằng cách sử dụng bộ tăng tốc AI với kiến ​​trúc được thiết kế để giảm thiểu chuyển động dữ liệu trên chip và giữa điện toán và các cấp độ khác nhau của hệ thống phân cấp bộ nhớ. Ngoài ra, để cải thiện độ trễ và hiệu quả ở cấp hệ thống, kiến ​​trúc phải hỗ trợ thời gian chuyển đổi bằng XNUMX (hoặc gần bằng XNUMX) giữa các mô hình để hỗ trợ tốt hơn cho các ứng dụng đa mô hình mà chúng ta đã thảo luận trước đó. Một yếu tố khác giúp cải thiện hiệu suất và độ trễ liên quan đến tính linh hoạt của thuật toán. Nói cách khác, một số kiến ​​trúc được thiết kế để hoạt động tối ưu chỉ trên các mô hình AI cụ thể, nhưng với môi trường AI thay đổi nhanh chóng, các mô hình mới có hiệu suất cao hơn và độ chính xác cao hơn đang xuất hiện dường như hàng ngày. Do đó, hãy chọn bộ xử lý AI biên không có hạn chế thực tế về cấu trúc liên kết mô hình, toán tử và kích thước.

Có nhiều yếu tố cần được xem xét trong việc tối đa hóa hiệu suất trong thiết bị AI biên, bao gồm các yêu cầu về hiệu suất và độ trễ cũng như chi phí hệ thống. Một chiến lược thành công nên xem xét sử dụng bộ tăng tốc AI bên ngoài để khắc phục các hạn chế về bộ nhớ và hiệu suất trong công cụ AI của SoC.
 
 
C.H. chee là một giám đốc điều hành quản lý và tiếp thị sản phẩm thành đạt, Chee có nhiều kinh nghiệm trong việc quảng bá sản phẩm và giải pháp trong ngành bán dẫn, tập trung vào AI, kết nối và giao diện video dựa trên tầm nhìn cho nhiều thị trường bao gồm cả doanh nghiệp và người tiêu dùng. Là một doanh nhân, Chee đồng sáng lập hai công ty khởi nghiệp về bán dẫn video đã được một công ty bán dẫn đại chúng mua lại. Chee lãnh đạo các nhóm tiếp thị sản phẩm và thích làm việc với một nhóm nhỏ tập trung vào việc đạt được kết quả tuyệt vời.
 

Dấu thời gian:

Thêm từ Xe đẩy