Mở khóa hiệu suất cao nhất bằng cách tối ưu hóa Yolo/resnet cho HiSilicon

Mục tiêu tối ưu hóa Yolo/resnet trên CPU Hisilicon đòi hỏi một quy trình làm việc tối ưu hóa cụ thể. Quy trình làm việc này tăng hiệu quả

Mở khóa

Mục tiêu tối ưu hóa Yolo/resnet trên CPU Hisilicon đòi hỏi một quy trình làm việc tối ưu hóa cụ thể. Quy trình làm việc này tăng hiệu suất và hiệu quả. Bạn sẽ sử dụng một bộ công cụ cốt lõi để chuẩn bị mô hình cho nền tảng Ascend.

Công cụ chính cho hiệu quả HiSilicon

  • Onnx:Định dạng trung gian cho mô hình được đào tạo của bạn.
  • Máy biên dịch lên tensor (ATC):Chuyển đổi mô hình onnx của bạn thành mô hình Ascend mạnh mẽ.
  • Định lượng in8:Tăng hiệu quả xử lý của mô hình.
  • Aipp:Tăng tốc mô hình của bạn trên Ascend npu để có hiệu quả tốt hơn.

Mô hình yolov7 là một ví dụ tuyệt vời. Bạn có thể đạt được hiệu quả cao cho mẫu yolov7 của mình trên phần cứng HiSilicon. Quá trình này mở ra toàn bộ sức mạnh của nền tảng HiSilicon Ascend cho mẫu Ascend của bạn.

Mang theo chìa khóa

  • Trước tiên chuyển đổi mô hình của bạn sang định dạng onnx. Điều này làm cho nó sẵn sàng cho nền tảng Ascend.
  • Sử dụng trình biên dịch Ascend tensor (ATC) để thay đổi mô hình onnx của bạn thành tệp đặc biệt '.om'. Tập tin này hoạt động tốt nhất trên chip Ascend.
  • Áp dụng định lượng int8 cho mô hình của bạn. Điều này làm cho nó chạy nhanh hơn nhiều và sử dụng ít năng lượng hơn.
  • Sử dụng tiền xử lý Ai (aipp). Nó giúp chip Ascend thực hiện nhiệm vụ hình ảnh, làm cho mô hình của bạn nhanh hơn.
  • Kiểm tra hiệu suất của mô hình của bạn. Đảm bảo tất cả các bộ phận đều chạy trênNpuĐể sử dụng tốc độ và năng lượng tốt nhất.

Tối ưu hóa Yolo/resnet cho HiSilicon:

Tối ưu hóa

Bước đầu tiên của bạn trong việc tối ưu hóa Yolo/resnet là sạch sẽDi chuyển mô hình. Bạn phải chuyển đổi mô hình pytorch hoặc tensorflow được đào tạo thành định dạng onnx (Open neural Network Exchange). Định dạng này hoạt động như một cầu nối phổ quát đến nền tảng Ascend.

Chuyển đổi mẫu sang onnx:

Bạn có thể xuất một mô hình pytorch bằng một tập lệnh Python đơn giản. Kịch bản này theo dõi hoạt động của mô hình của bạn và lưu chúng vào một đơn. OnnxHồ sơ.

# Sử dụng torch.onnx. Xuất khẩu để chuyển đổi mẫu của bạn
Torch. onnx. Export (
Mô hình, # mô hình pytorch của bạn
Sample_input, # A tensor nhập mẫu
"Model. onnx", # Output Tên tập tin
Opset_version = 17, # phiên bản onnx để sử dụng
Input_names =['input'],
Output_names =['output']
)

Sau khi xuất khẩu, bạn nên sử dụng một công cụ nhưOnnx-simplifierĐể làm sạch đồ thị. Người dùng tensorflow đôi khi phải đối mặt với những thách thức di chuyển. Các vấn đề phổ biến bao gồm:

  • Tên người vận hành không hợp lệ: Lỗi thíchValueerror: '/conv_in/conv_pad/' không phải là tên phạm vi gốc hợp lệCó thể xảy ra. Sử dụng các công cụ thay thế thường giải quyết điều này bằng cách đổi tên các nhà khai thác.
  • Kích thước tensor lớn: Mẫu cóTấm lợp lớn hơn 2GBCó thể khiến việc chuyển đổi thất bại. Bạn có thể cần phải điều chỉnh kiến trúc mô hình của bạn để xử lý điều này.

Các bước này đảm bảo di chuyển trơn tru cho mô hình của bạn.

Thích nghi với mẫu yolov7:

Các mô hình phát hiện đối tượng hiện đại như mô hình yolov7 đòi hỏi sự chú ý đặc biệt. Kiến trúc yolov7 có nhiều lớp độc đáo. Bạn phải điều chỉnh mô hình yolov7 cho nền tảng HiSilicon. Sự thích nghi này rất quan trọng đối với sự di chuyển của mô hình yolov7. Xử lý đúng cách mẫu yolov7 đảm bảo phát hiện độ chính xác cao. Quá trình này chuẩn bị mô hình yolov7 cho nền tảng Ascend. Mục tiêu của bạn là di chuyển thành công mô hình yolov7 để phát hiện đối tượng dựa trên học tập sâu. Mô hình yolov7 là một công cụ phát hiện đối tượng mạnh mẽ. Mô hình di chuyển yolov7 này là chìa khóa cho hiệu suất. Mô hình yolov7 giúp tìm từng đối tượng. Điều chỉnh mô hình yolov7 là một phần của quá trình xác nhận.

Phân Tích hỗ trợ vận hành npu:

Bước di chuyển tiếp theo của bạn là xác nhận điều hành. HiSilicon npu có thể không hỗ trợ mọi nhà điều hành trong mô hình của bạn. Bạn phải kiểm tra các nhà khai thác nào phần cứng Ascend hỗ trợ. Phân Tích này rất quan trọng để tối ưu hóa Yolo/resnet trên HiSilicon.Bộ công cụ cann của HuaweiĐối với nền tảng Ascend Cung Cấp Các công cụ cho sản phẩm này.

  • The Máy kiểm tra khả năng sử dụng mô hìnhCó thể xác định các nhà khai thác không được hỗ trợ trong mô hình của bạn.
  • Nó cho thấy mô hình sẽ được phân chia giữa npu và CPU như thế nào. Nhiều phần chia có thể làm tổn thương hiệu suất.

Phân Tích này giúp bạn tối đa hóa hiệu quả trên phần cứng HiSilicon. Nếu bạn tìm thấy các nhà khai thác không được hỗ trợ, bạn có thể cần phảiViết lại đồ thị người mẫu của bạn. Điều này đảm bảo mọi bộ phận của mô hình đều chạy trên Ascend npu. Di chuyển đồ thị này cải thiện hiệu suất và hiệu quả. Việc tải đầy đủ npu trên nền tảng Ascend là đối tượng chính. Bước di chuyển cuối cùng này mở ra toàn bộ sức mạnh của nền tảng HiSilicon Ascend cho các mẫu phát hiện đối tượng của bạn. Điều này giúp ứng dụng yolov7 của bạn hiệu quả tốt hơn trên HiSilicon và Ascend. Hiện tại mô hình yolov7 có thể phát hiện nhanh bất kỳ đối tượng nào. Hiệu suất của mô hình yolov7 trên Ascend sẽ rất tuyệt vời. Mẫu yolov7 đã sẵn sàng. Mô hình yolov7 phát hiện rất tốt. Mô hình yolov7 được tối ưu hóa. Mô hình yolov7 đã hoàn tất.

Tối ưu hóa và hiệu suất cốt lõi:

Lõi

Bạn có một mẫu onnx sạch sẽ. Bước di chuyển tiếp theo của bạn là chuyển đổi nó cho nền tảng Ascend. Giai đoạn này tập trung vào việc tăng hiệu suất cốt lõi. Bạn sẽ sử dụng trình biên dịch Ascend tensor (ATC) và định lượng để mở khóa hiệu quả tối đa và hiệu suất năng lượng cho các mô hình phát hiện đối tượng của bạn trên phần cứng HiSilicon. Quá trình này rất cần thiết choTối ưu hóa hiệu suất Yolo/resnet.

Chuyển đổi mô hình ATC:

Trình biên dịch Ascend tensor (ATC) là công cụ chính của bạn cho việc di chuyển này. Nó biến mô hình onnx của bạn thành một. OmHồ sơ. Tệp này được tối ưu hóa cao cho Bộ xử lý Ascend. Bạn chạy ATC từ dòng lệnh.

Một lệnh ATC điển hình như thế này:

ATC -- Model = yolov7.onnx \
-- Khung = 5 \
-- Output = yolov7_bs1 \
-- Input_format = nchw \
-- Input_shape = "hình ảnh: 1,3,640,640" \
-- Soc_version = ascend310 \
-- Log = info

Các thông số chính hướng dẫn chuyển đổi cho Bộ xử lý Ascend:

  • -- Model: Chỉ định đầu vào của bạn. OnnxTập tin mô hình.
  • -- Khung: Sử dụng5Dành cho mẫu onnx.
  • -- Output: Xác định tên cho đầu ra của bạn. OmMẫu.
  • -- Soc_version: Nhắm mục tiêu một HiSilicon Soc cụ thể, nhưAscend310. Điều này rất quan trọng đối với hiệu suất.
  • -- Input_shape: Đặt Kích thước đầu vào cố định cho mẫu.

Bạn phải cung cấp một cố địnhInput_shapeCho mẫu của bạn. Các mô hình để phát hiện đối tượng đôi khi có kích thước đầu vào thay đổi. Công cụ ATC cần một hình dạng tĩnh để có hiệu suất tốt nhất trên Bộ xử lý Ascend. Bước này đảm bảo di chuyển thành công và ngăn ngừa lỗi trong quá trình suy luận trên nền tảng HiSilicon.

Định lượng in8:

Lượng hóa làm giảm độ chính xác của mô hình từ điểm nổi 32 bit (fp32) thành số nguyên 8 bit (int8). Sự thay đổi này cải thiện đáng kể tốc độ suy luận và hiệu quả năng lượng. Việc di chuyển đến độ chính xác int8 là một bước quan trọng để triển khai mô hình yolov7 trên HiSilicon. Bạn có hai lựa chọn chính cho việc di chuyển này.

Phương phápMô tảTốt nhất cho
Định lượng sau đào tạo (ptq)Áp dụng định lượng sau khi mô hình đã được đào tạo. Nó làĐơn giản và nhanh chóng.Triển khai nhanh khi có sự sụt giảm độ chính xác nhỏ là chấp nhận được.
Đào tạo nhận thức lượng hóa (qat)Mô phỏng lượng hóa trong quá trình đào tạo. Mô hình học cách thích ứng với độ chính xác thấp hơn.Kịch bản yêu cầuĐộ chính xác cao nhất có thể sau khi định lượng.

Đối với nhiều mô hình phát hiện đối tượng yolov7, ptq mang lại sự cân bằng tuyệt vời. Nó có thểTăng gấp đôi tốc độ suy luận của bạnVà cải thiện hiệu suất năng lượng cho Bộ xử lý Ascend ai. Điều này giúp ứng dụng yolov7 của bạn nhanh hơn để phát hiện bất kỳ vật thể nào trong thời gian thực. Sự đánh đổi nhỏ về độ chính xác thường được chấp nhận để tăng hiệu suất và hiệu suất năng lượng cho các bộ xử lý Ascend. Mô hình di chuyển cuối cùng này chuẩn bị mô hình yolov7 của bạn để có hiệu suất cao nhất trên bộ xử lý Hisilicon Ascend, sẵn sàng tìm từng đối tượng với tốc độ. Hiệu suất phát hiện của mô hình yolov7 trên Ascend sẽ rất tuyệt vời.

Kỹ thuật điều chỉnh nâng cao:

Bạn có thể tăng hiệu suất mô hình của mình hơn nữa với điều chỉnh nâng cao. Những Kỹ thuật này tinh chỉnh mô hình yolov7 của bạn cho nền tảng HiSilicon. Chúng giúp bạn đạt được hiệu quả tối đa và hiệu suất cao cho các ứng dụng thời gian thực.

Tiền xử lý aipp:

Bạn có thể tăng tốc mô hình của mình bằng cách sử dụng tiền xử lý Ai (aipp). Aipp giảm tải các tác vụ xử lý trước hình ảnh từ CPU trực tiếp đến phần cứng Ascend. Đây là bước quan trọng để có hiệu quả năng lượng tốt hơn.

Aipp xử lý các tác vụ như:

  • Thay đổi kích thước hình ảnh
  • Chuyển đổi không gian màu (ví dụ, BGR sang RGB)
  • Trừ trung bình và bình thường hóa

Quá trình này giải phóng CPU của bạn. Nó cho phép Bộ xử lý Ascend xử lý toàn bộ đường ống suy luận. Mô hình yolov7 của bạn đạt được sự suy luận thời gian thực nhanh hơn với việc quản lý năng lượng tốt hơn. Điều này mang lại cho mô hình của bạn hiệu quả vượt trội trên HiSilicon.

Bộ nhớ và bộ nhớ:

Thích hợpBộ nhớQuản lý là điều cần thiết cho hiệu suất cao. Bạn nên cấu hình mô hình yolov7 của mình để sử dụng bộ nhớ hiệu quả trên nền tảng Ascend. Trạm trộn là một kỹ thuật mạnh mẽ cho sản phẩm này. Nó liên quan đến việc xử lý nhiều hình ảnh trong một thẻ suy luận duy nhất.

Kích thước lôThông lượngĐộ trễ
Nhỏ (ví dụ: 1)Thấp hơnNhanh hơn trên mỗi hình ảnh
Lớn (ví dụ, 8, 16)Cao hơnChậm hơn trên mỗi hình ảnh

Tăng kích thước lô cải thiện thông lượng tổng thể của mô hình của bạn trên Bộ xử lý Ascend. Điều này dẫn đến quản lý năng lượng và hiệu quả tốt hơn. Bạn phải tìm ra sự cân bằng phù hợp với mẫu yolov7 của mình để có được hiệu suất phát hiện thời gian thực tốt nhất. Tối ưu hóa này là chìa khóa choMô hình ai hiệu suất caoTrên HiSilicon.

Phân Tích suy luận:

Bạn phải xác định mô hình của bạn để tìm các nút chai hiệu suất. Công cụ lập hồ sơ cho bạn thấy mô hình của bạn chạy như thế nào trên bộ xử lý Ascend ai. Chúng giúp bạn đảm bảo mọi lớp đều chạy trên npu để có hiệu quả năng lượng và quản lý năng lượng tốt nhất.

Đôi khi,Một số lớp trong một mô hình rơi trở lại CPU. Điều này xảy ra khi Bộ xử lý Ascend không thể xử lý các hoạt động cụ thể, như lớp softmax hoặcNms hậu xử lý trong mô hình yolov7. Dự phòng này tạo ra một nút cổ chai đáng kể, làm chậm suy luận thời gian thực và làm tổn thương hiệu quả năng lượng. Hồ Sơ giúp bạn xác định những vấn đề này. Nó cho thấy nếu một khối lượng công việc lớn đang đè nặng CPU thay vì sử dụng phần cứng Ascend mạnh mẽ. Bằng cách phân tích các tiêu chuẩn hiệu suất, bạn có thể sửa đổi mô hình của mình để sử dụng các hoạt động được hỗ trợ bởi npu. Điều này đảm bảo phát hiện mô hình yolov7 của bạn chạy với độ chính xác và hiệu quả tối đa trên HiSilicon, mở khóa hiệu suất cao thực sự và quản lý năng lượng tuyệt vời để suy luận thời gian thực.


Mô hình của bạn có thể đạt được hiệu suất cao nhất trên HiSilicon. Quy trình làm việc tối ưu hóa này mở ra hiệu quả tối đa cho nền tảng Ascend.

  1. Xuất mẫu của bạn sang đồ thị onnx sạch.
  2. Chuyển đổi mô hình thành một. OmTệp tin cho nền tảng Ascend.
  3. Áp dụng định lượng int8 để có hiệu quả tốt hơn.
  4. Sử dụng aipp để giảm tải quá trình xử lý trước cho phần cứng Ascend.

Danh sách kiểm tra xác nhận cuối cùng📝

  • Xác nhận: Xác nhậnPhiên bản soc_Khớp với phần cứng HiSilicon mục tiêu.
  • Xác nhận đơn đăng ký: Đảm bảo hình dạng đầu vào mô hình của bạn chính xác cho nền tảng Ascend.
  • Xác nhận đơn đăng ký: Xác minh tất cả các nhà khai thác mô hình đều được hỗ trợ bởi Ascend npu.

Theo dõi quá trình này để tối ưu hóa Yolo/resnet là con đường đáng tin cậy nhất đến hiệu suất và hiệu quả cao trên HiSilicon. Xác nhận này mở ra toàn bộ sức mạnh của nền tảng Ascend cho phần cứng Hisilicon của bạn.

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

Làm thế nào để lựa chọn giữa ptq và qat?

Bạn nên sử dụng định lượng sau đào tạo (ptq) để triển khai nhanh chóng. Nó cung cấp một Tăng Tốc Độ tuyệt vời. Bạn có thể sử dụng đào tạo nhận thức lượng hóa (qat) khi bạn cần độ chính xác cao nhất có thể. Qat yêu cầu đào tạo lại mô hình của bạn nhưng mang lại kết quả tốt hơn và hiệu quả năng lượng tốt.

Điều gì sẽ xảy ra nếu mô hình của tôi có các nhà khai thác không được hỗ trợ?

Trước tiên, bạn phải xác định các nhà khai thác không được hỗ trợ bằng Bộ công cụ cann. Sau đó bạn có thể thử thay thế chúng bằng các lựa chọn thay thế được npu hỗ trợ. Điều này đảm bảo toàn Bộ mô hình của bạn chạy trên phần cứng Ascend, rất quan trọng cho hiệu suất và đạt được hiệu quả năng lượng tốt nhất.

Tại sao aipp lại quan trọng với mẫu của tôi?

Aipp giảm tải tiền xử lý hình ảnh từ CPU đến npu. Điều này giải phóng tài nguyên CPU. Toàn bộ đường ống của bạn chạy trên phần cứng Ascend, giảm độ trễ và cải thiện hiệu quả năng lượng tổng thể cho ứng dụng của bạn.

LiệuPhiên bản soc_Tham số thực sự quan trọng?

Vâng, điều này rất quan trọng. Bạn phải đặtPhiên bản soc_Để phù hợp với cụ thể của bạnChip Hisilicon(Ví dụ: G.,Ascend310). Công cụ ATC sử dụng thông tin này để tạo ra một tệp Mô hình được tối ưu hóa cao cho kiến trúc phần cứng chính xác đó.

Related Articles