# Khắc phục sự cố và Câu hỏi thường gặp

1. Làm cách nào để gỡ lỗi ứng dụng mẫu bằng debug logs?

    Để khắc phục lỗi thực thi khi chạy ứng dụng mẫu AI hoặc gst-launch-1.0, hãy bật debug logs.

    Để bật debug logs trong ứng dụng mẫu GStreamer, hãy dùng biến môi trường `GST_DEBUG` để đặt debug level.

    Biến môi trường `GST_DEBUG` kiểm soát độ chi tiết của debug output. Bạn có thể đặt các mức khác nhau cho biến này, chẳng hạn như:

    - 0: None (không có thông tin gỡ lỗi)
    - 1: ERROR (ghi lại tất cả các lỗi nghiêm trọng)
    - 2: WARNING (ghi lại tất cả các cảnh báo)
    - 3: FIXME (ghi lại các đường dẫn mã không đầy đủ)
    - 4: INFO (ghi lại các thông báo cung cấp thông tin)
    - 5: DEBUG (ghi lại các thông báo gỡ lỗi chung)
    - 6: LOG (ghi lại mọi bản tin log)
    - 7: TRACE (ghi lại các bản tin trace)
    - 9: MEMDUMP (ghi lại memory dumps)

    Ví dụ: để đặt mức gỡ lỗi thành ERROR, bạn có thể dùng lệnh sau trong cửa sổ dòng lệnh:

export GST_DEBUG=2
        Copy to clipboard

    Nếu muốn lọc debug logs cho các danh mục cụ thể, bạn có thể chỉ định chúng trong biến `GST_DEBUG`. Ví dụ: để bật debug logs cho plugin suy luận ML và FPS, bạn có thể dùng:

export GST_DEBUG=qtiml*:fps*:5
        Copy to clipboard
2. Những vấn đề phổ biến nào ngăn cản trải nghiệm sử dụng ngay lập tức cho các ứng dụng mẫu AI?

    Các ứng dụng mẫu AI được thiết kế để đem lại trải nghiệm ngay lập tức rất nhanh chóng. Tuy nhiên, sau đây là những vấn đề thường gặp nhất ngăn cản trải nghiệm này.

    - Không tải được tệp model

0:00:00.042355885 4275 0x5579b9f760 ERROR ml-tflite-engine ml-tflite-engine-c-api.cc:578:gst_ml_tflite_engine_new: Failed to load model file '/etc/models/googlenet_quantized.tflite'!
            Copy to clipboard

        Vấn đề này phát sinh khi tệp model bị thiếu hoặc không ở đúng định dạng.

        Hãy sao chép tệp model vào đúng đường dẫn và đảm bảo bạn đang dùng chính phiên bản SDK được dùng để chuyển đổi định dạng/lượng tử hóa model và trên thiết bị đích.
    - Không giải tuần tự được các nhãn

0:00:00.543394063 4676 0x55aca865e0 ERROR mlmodule gstmlmodule.c:301:gst_ml_parse_labels: Failed to deserialize labels!
            Copy to clipboard

        Vấn đề này xảy ra khi tệp nhãn được chỉ định tại đường dẫn không tồn tại. Hãy đảm bảo rằng tệp nhãn được sao chép vào thiết bị và đường dẫn được chỉ định là chính xác.
    - Không thiết lập được tùy chọn mô-đun

0:00:00.55129740 4958 0x5561019180 WARN  qtimlvclassification mlvclassification.c:986:gst_ml_video_classification_set_caps:<mlvideoclassification0> error: Failed to set module options!
            Copy to clipboard

        Vấn đề này xảy ra khi thiết lập hằng số cho các use case trực tiếp trên LiteRT/Qualcomm AI Engine. Hãy xem [Tích hợp model AI Hub trong ứng dụng](https://docs.qualcomm.com/doc/80-70020-15BV/topic/integrate-ai-hub-models.html) để biết các bước đọc và thiết lập chính xác hằng số model.
3. Làm cách nào để đo lường hiệu suất ứng dụng mẫu AI?

    - Thời gian tiền xử lý

        Trước khi đưa dữ liệu đầu vào vào plugin suy luận AI, đầu vào phải được tiền xử lý (bao gồm chuẩn hóa, thay đổi kích thước và đảo màu). Tác vụ này được xử lý bởi plugin tiền xử lý, `qtimlvconverter`. Bạn có thể đo lường thời gian tiền xử lý bằng cách thực hiện lệnh sau:

export GST_DEBUG=qtimlvconverter:6
            Copy to clipboard

        Thời gian tiền xử lý hiển thị trong log.

LOG   qtimlvconverter mlconverter.c:1830:gst\_ml\_video\_converter\_transform:&lt;qtimlvconverter&gt; Conversion took 2.743 ms
    - Thời gian suy luận model

        Qualcomm Intelligent Multimedia SDK hỗ trợ 3 plugin suy luận AI dùng các framework Qualcomm Neural Processing SDK, LiteRT và Qualcomm AI Engine Direct.

        - qtimlsnpe
        - qtimltflite
        - qtimlqnn

        Các plugin này có thể chạy suy luận trên nhiều phần cứng, chẳng hạn như CPU, GPU và HTP. Để xác định thời gian suy luận AI trên phần cứng, hãy dùng lệnh sau.

export GST_DEBUG=qtiml*:6
            Copy to clipboard

LOG qtimlvtflite mltflite.c:561:gst\_ml\_tflite\_transform:&lt;qtimltflite&gt; Execute took 3.445 ms
LOG qtimlvtflite mltflite.c:561:gst\_ml\_tflite\_transform:&lt;qtimltflite&gt; Execute took 3.555 ms
    - Thời gian hậu xử lý

        Đầu ra từ các plugin suy luận AI được xử lý bởi plugin hậu xử lý. Các plugin này lấy kết quả của model AI và tạo ra các phần tử có thể được chồng lên luồng đầu vào hoặc được dùng để tính toán thêm. Ví dụ: text boxes cho `qtimlvclassification`, segmentation masks cho `qtimlvsegmentation`, v.v.

        Để đo lường thời gian xử lý cho các plugin này, hãy dùng lệnh sau. .. code-block:

export GST_DEBUG=qtimlv*:6
            Copy to clipboard

        Thời gian hậu xử lý hiển thị trong log. Lệnh sau dùng các plugin `qtimlvclassification` làm ví dụ.

LOG    qtimlvclassification mlvclassification.c:1068:gst\_ml\_video\_classification\_transform:&lt;qtimlvclassification&gt; Categorization tookExecute took 1.962 ms
4. Làm thế nào để đo lường FPS của toàn bộ quy trình trong một use case?

    Để đo lường số khung hình trên giây (FPS) trong pipeline GStreamer, hãy dùng phần tử `fpsdisplaysink`. Phần tử này có thể hiển thị tốc độ khung hình hiện tại và trung bình dưới dạng overlay trên video hoặc bằng cách in tốc độ ra màn hình dòng lệnh (console).

    Ứng dụng mẫu dùng plugin `fpsdisplaysink` để hiển thị FPS của pipeline ngay trên HDMI display.
5. Cách dễ nhất để thay thế model hiện có bằng model tùy chỉnh trong ứng dụng tham chiếu là gì?

    Đảm bảo bạn đang dùng đúng model và tệp nhãn cho ứng dụng mẫu.

    Cung cấp model và đường dẫn tệp nhãn trong tệp cấu hình ứng dụng mẫu tương ứng.

    Ứng dụng mẫu sẽ dùng các tệp model và nhãn từ các vị trí đã chỉ định.

    Hãy xem [Tích hợp model AI Hub trong ứng dụng](https://docs.qualcomm.com/doc/80-70020-15BV/topic/integrate-ai-hub-models.html) để biết thêm thông tin.
6. Người dùng đã thay thế một model được hỗ trợ khác (được IMSDK hỗ trợ) trong ứng dụng tham chiếu. Làm cách nào để gỡ lỗi các vấn đề về hiệu suất và độ chính xác?

    Để đo lường các vấn đề về hiệu suất và độ chính xác của model, vui lòng dùng các công cụ AI SDK, bạn có thể làm theo các bước sau:

    - Đo lường hiệu suất:

        Dùng công cụ đánh giá điểm chuẩn SDK. Ví dụ: Nếu bạn đang sử dụng Qualcomm Neural Processing Engine SDK, hãy dùng [snpe-bench-py](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/tools.html#snpe-bench-py)
    - Trình gỡ lỗi độ chính xác:

        - Model AI Hub:

            1. Đảm bảo bạn đang dùng model mới nhất từ AI Hub.
            2. Điền chính xác các hằng số cho model bạn đã chọn. Hãy xem [Tích hợp model AI Hub trong ứng dụng](https://docs.qualcomm.com/doc/80-70020-15BV/topic/integrate-ai-hub-models.html) để biết thêm thông tin.
            3. Để được hỗ trợ thêm về các vấn đề liên quan đến độ chính xác của model AI Hub, hãy báo cáo vấn đề trên [Qualcomm AI Hub slack](https://qualcomm-ai-hub.slack.com/join/shared_invite/zt-2ur7psfuu-CygEMlDFjoHTbPKIRCVYuQ%23/shared-invite/email).
        - Model tùy chỉnh

            1. Lượng tử hóa model là nguyên nhân phổ biến khiến giảm độ chính xác. Đảm bảo bạn đang dùng đúng tập dữ liệu để lượng tử hóa model. Người dùng nên dùng một phần tập dữ liệu là giá trị gần đúng của môi trường triển khai thực tế để Lượng tử hóa sau huấn luyện (PTQ). Để PTQ mang lại kết quả tốt, người dùng cần cung cấp một lượng dữ liệu phù hợp để lượng tử hóa model, ví dụ: khoảng 25-30 ảnh RAW.
            2. Thử nghiệm với các độ chính xác model khác nhau, chẳng hạn như W8A16 và W16A16, để xem liệu độ chính xác của model có cải thiện hay không.
            3. Dùng AIMET cho các kỹ thuật Lượng tử hóa sau huấn luyện (PTQ) và Huấn luyện có nhận thức về lượng tử hóa (QAT) để lượng tử hóa nâng cao. Hãy xem [tài liệu về AIMET](https://quic.github.io/aimet-pages/releases/latest/user_guide/index.html) để biết thêm chi tiết.
7. Đâu là các phương pháp hay nhất để lượng tử hóa model bằng AI SDK?

    - Chuẩn bị dữ liệu hiệu chuẩn

        Dùng dữ liệu hiệu chuẩn có tính đại diện, tương đồng với dữ liệu mà model sẽ xử lý trong môi trường thật. Điều này giúp xác định chính xác các hệ số tỷ lệ và điểm gốc cho quá trình lượng tử hóa.
    - Chọn phương pháp lượng tử hóa phù hợp

        - Lượng tử hóa sau huấn luyện (PTQ): Phương pháp này đơn giản hơn và nhanh hơn. Phù hợp với các model chấp nhận sai lệch độ chính xác một chút. Phương pháp này chuyển đổi model dấu phẩy động được huấn luyện sẵn thành model lượng tử hóa mà không cần huấn luyện lại.
        - Huấn luyện có nhận thức về lượng tử hóa (QAT): Phương pháp này liên quan đến việc huấn luyện model có tính đến lượng tử hóa, nhờ đó duy trì độ chính xác cao hơn. Phương pháp này phức tạp hơn nhưng hữu ích với các model yêu cầu cao về độ chính xác.

        Hãy xem [tài liệu về AIMET](https://quic.github.io/aimet-pages/releases/latest/user_guide/index.html) để biết các bước chi tiết.
8. AI SDK cung cấp các công cụ để chuyển đổi LiteRT sang DLC. Người dùng có phải chuyển đổi các model LiteRT sang DLC hay các model LiteRT có thể tăng tốc trực tiếp trên NPU?

    Bạn không nhất thiết phải chuyển đổi các model LiteRT sang DLC để tăng tốc model trên NPU. AI SDK của Qualcomm hỗ trợ chạy các model LiteRT trực tiếp trên NPU bằng cách dùng delegate LiteRT. Điều này có nghĩa là bạn có thể tận dụng các khả năng của NPU mà không cần chuyển đổi các model LiteRT sang định dạng DLC.
9. AI SDK cung cấp công cụ để chuyển đổi các model PyTorch, Onnx và Tensorflow sang DLC. Trong số những cách sau, đâu là cách triển khai nhanh nhất?

    Thông thường, cách triển khai nhanh nhất và linh hoạt nhất là chuyển đổi các model sang ONNX trước rồi mới chuyển sang DLC.
10. Làm cách nào để người dùng biết liệu model có đang chạy trên NPU hay không?

    Hãy dùng các công cụ sau đây từ Qualcomm:

    1. [Công cụ lập hồ sơ của Qualcomm](https://docs.qualcomm.com/bundle/publicresource/topics/80-54323-2/command-line-interface.html)
    2. Sysmon (Liên kết sẽ thông báo sau)
11. Người dùng được hưởng lợi như thế nào từ các công cụ AI không đồng nhất của nền tảng Snapdragon? Người dùng làm cách nào để chạy các model AI khác nhau trên các lõi Phần cứng khác nhau? (GPU, NPU, v.v.)

    Các công cụ và API của SDK AI cung cấp các tùy chọn để chọn môi trường runtime (CPU, GPU hoặc DSP). Bạn có thể chọn môi trường runtime phù hợp làm tham số dòng lệnh hoặc dùng API C/C++ cụ thể. Hãy xem [snpe-net-run](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/tools.html#snpe-net-run) để biết thêm chi tiết.

    Theo mặc định, các ứng dụng mẫu AI dùng runtime DSP. Bạn có thể thay đổi runtime thông qua cấu hình ứng dụng mẫu.

    Ví dụ: trong ứng dụng mẫu `gst-ai-object-detection`, hãy sửa đổi tham số `runtime` trong tệp `config_detection.json`.

    Runtime:

    - `"cpu"`
    - `"gpu"`
    - `"dsp"`
12. Làm cách nào để tiếp tục nếu không chuyển đổi được model bằng AI SDK?

    Hãy liên hệ [Diễn đàn hỗ trợ của Qualcomm](https://mysupport.qualcomm.com/supportforums/s/) để được trợ giúp.
13. Model dấu phẩy động tùy chỉnh có độ chính xác tốt trên CPU, nhưng độ chính xác của model lượng tử hóa lại kém trên cả CPU và NPU. Làm cách nào để gỡ lỗi này?

    Có thể có vấn đề liên quan đến lượng tử hóa model, hãy xem Câu hỏi thường gặp về [model do người dùng thay thế](https://docs.qualcomm.com/doc/80-70020-15BV/topic/troubleshooting.html#user-replaced-model) để biết hướng dẫn về lượng tử hóa model
14. Model lượng tử hóa tùy chỉnh đang chạy như mong đợi trên CPU, nhưng model tương tự không chạy chính xác trên NPU. Làm cách nào để gỡ lỗi này?

    Chưa xác định
15. Khi chạy một ứng dụng mẫu, không có đầu ra nào trên HDMI display. Làm cách nào để gỡ lỗi này?

    Hãy làm theo [gỡ lỗi display](https://docs.qualcomm.com/bundle/publicresource/topics/80-70020-20/bring-up.html#debug-video) để gỡ các lỗi display HDMI.
16. Tôi có thể dùng TV HDMI thay vì HDMI display để chạy các ứng dụng mẫu không?

    Trong hầu hết trường hợp là được, nếu không được, vui lòng dùng HDMI display.
17. Làm cách nào để kiểm tra runtime phần cứng cho các ứng dụng mẫu AI?

    Nhiều ứng dụng mẫu GStreamer hỗ trợ suy luận trên nhiều runtime (CPU, GPU và DSP). Để xác định runtime mà ứng dụng sẽ dùng để suy luận, hãy quan sát log.

    - CPU

Chạy ứng dụng với model: /usr/models/inception\_v3\_quantized.tflite and labels: /usr/labels/classification.labels dùng CPU Delegate Thêm tất cả các thành phần vào pipeline...
    - GPU

Chạy ứng dụng với model: /usr/models/inception\_v3\_quantized.tflite and labels: /usr/labels/classification.labels dùng GPU Delegate Thêm tất cả các thành phần vào pipeline...
    - DSP

Chạy ứng dụng với model: /usr/models/inception\_v3\_quantized.tflite and labels: /usr/labels/classification.labels dùng DSP Delegate Thêm tất cả các thành phần vào pipeline...
18. Lỗi kiểm tra tính hợp lý của devtool là gì? Làm thế nào để gỡ các lỗi này?

    Thỉnh thoảng, bạn có thể thấy devtool hiển thị lỗi kiểm tra tính hợp lý.

    Hãy đảm bảo bạn có quyền truy cập sudo cho máy chủ. Nếu lỗi vẫn tiếp diễn, hãy thực hiện giải pháp thay thế sau:

    1. Cập nhật quyền.

umask a+rx
            Copy to clipboard
    2. Vô hiệu hóa kiểm tra tính hợp lý của BitBake trong tệp `$ESDK_ROOT/layers/poky/meta/conf/sanity.conf`.

BB_MIN_VERSION = "1.53.1"
            SANITY_ABIFILE = "${TMPDIR}/abi_version"
            SANITY_VERSION ?= "1"
            LOCALCONF_VERSION ?= "2"
            LAYER_CONF_VERSION ?= "7"
            SITE_CONF_VERSION ?= "1"
            
            #INHERIT += "sanity"
            Copy to clipboard
19. Các bước để cài đặt Snapdragon Neural Processing SDK Engine từ một nguồn bên ngoài trên thiết bị đích.

    1. Chuyển đến shell thiết bị đích rồi chạy các lệnh sau đây:

ssh root@<ip-address of target device>
            Copy to clipboard

mount -o rw,remount /usr
            Copy to clipboard

exit
            Copy to clipboard
    2. Chuyển đến thư mục gốc SNPE SDK trên máy chủ rồi chạy các lệnh sau đây:

        Các lệnh sau đây dành cho QCS6490.

        - For QCS8275: Thay `hexagon-v68` bằng `hexagon-v75`
        - For QCS9075: Thay `hexagon-v68` bằng `hexagon-v73`

scp lib/aarch64-oe-linux-gcc11.2/* root@<target-ip-address>:/usr/lib/
            Copy to clipboard

scp lib/hexagon-v68/unsigned/* root@<target-ip-address>:/usr/lib/rfsa/adsp/
            Copy to clipboard

scp bin/aarch64-oe-linux-gcc11.2/* root@<target-ip-address>:/usr/bin/
            Copy to clipboard

ssh root@<target-ip-address>
            Copy to clipboard

chmod -R 777 /usr/bin/
            Copy to clipboard
    3. Xác thực phiên bản SDK mới:

snpe-net-run --version
            Copy to clipboard

    Để biết thêm thông tin về việc tải xuống Qualcomm AI Runtime SDK, hãy xem [Qualcomm Package Manager](https://docs.qualcomm.com/doc/80-70020-15BV/topic/qairt-install.html#qairt-qpm).
20. Các bước gỡ lỗi để lấy tensor đã được tiền xử lý từ QIM SDK và suy luận bằng SNPE.

    1. Tạo các tensor thô đã được tiền xử lý từ một tệp video.

        1. Tạo một thư mục để lưu tensor thô.

mkdir -p /opt/frames/
                Copy to clipboard
        2. Bật giao diện display.

export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1
                Copy to clipboard
        3. Chạy chuỗi xử lý GStreamer để xuất tensor thô vào thư mục.

gst-launch-1.0 -v -e filesrc location=/etc/media/video.mp4  ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=4 output-io-mode=4 ! queue ! qtimlvconverter ! queue ! neural-network/tensors,type=FLOAT32,rate=30000/1000,dimensions="<<1,520,520,3>>" ! queue ! multifilesink location="/opt/frames/frame_%03d.raw"
                Copy to clipboard

Ghi chú

Điều chỉnh tốc độ (FPS của video đầu vào) và kích thước (kích thước đầu vào của model) khi cần cho video và model mà bạn đang dùng.
    2. Chạy suy luận bằng SNPE hoặc QNN.

        1. Tạo tệp `input_list.txt` chứa đường dẫn tuyệt đối đến các tệp thô như bên dưới.

            Quá trình suy luận được thực hiện trên từng tệp liệt kê trong tệp `input_list.txt`.

            Nội dung ví dụ trong `input_list.txt`

/opt/frames/frame_000.raw
                /opt/frames/frame_001.raw
                Copy to clipboard
        2. Chạy model SNPE DLC hoặc QNN trên backend HTP.

Tab SNPE
Tab QNN

snpe-net-run --container <model>.dlc --input_list input_list.txt --output_dir output_htp --use_dsp
                Copy to clipboard

qnn-net-run --model <model>.so --backend libQnnHtp.so --input_list input_list.txt --output_dir output_htp
                Copy to clipboard

        Để biết thêm chi tiết, hãy xem phần triển khai model bằng [Neural Processing Engine](https://docs.qualcomm.com/doc/80-70020-15BV/topic/run-models.html#snpe-run) hoặc [AI Engine Direct](https://docs.qualcomm.com/doc/80-70020-15BV/topic/run-models.html#qnn-run).

## Hỗ trợ thêm

Đặt câu hỏi trên [Diễn đàn hỗ trợ của Qualcomm](https://mysupport.qualcomm.com/supportforums/s/).

Last Published: Dec 23, 2025

[Previous Topic
Tăng độ phân giải hình ảnh bằng super resolution](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BV/topics/super-resolution.md) [Next Topic
Phương pháp thực hành chuyển đổi model tốt nhất](https://docs.qualcomm.com/bundle/publicresource/80-70020-15BV/topics/appx-export-yolov8.md)