Frequently Asked Questions

此文件旨在回答在 Qualcomm® AI Hub Workbench 中常見的問題以及作業失敗的原因。請將此文件作為參考,並隨時在 AI Hub Slack 中提出任何問題。

General

提交到 Qualcomm® AI Hub Workbench 的模型會在實體裝置上執行嗎?

是的,我們擁有數千台透過多個裝置農場託管的實體裝置。當您使用 Qualcomm® AI Hub Workbench 並在特定裝置上執行模型時,我們會取得該裝置,安裝作業系統以及執行模型所需的所有框架。接著,我們會在該裝置上執行您的模型,以擷取並呈現在 Workbench 上的所有效能指標。完成此流程後,我們會釋放該裝置。這個流程會針對每個提交到 Workbench 的作業重複執行。若要查看我們目前可用的所有裝置,您可以執行 qai-hub list-devices

如何在 Qualcomm® AI Hub Workbench 上進行裝置佈建?多位使用者是否可以同時在 Workbench 上於不同裝置執行模型?

是的,我們有許多設備,並且可以在所有這些設備上並行運行模型。當獲取到真實設備時,該設備上只會運行您的特定模型。

是的,當用戶提交任務時,會為每個任務分配單獨的設備,以提供準確的指標。

如何設定我的 API Token 以在 Qualcomm® AI Hub Workbench 上提交作業?

建立 Qualcomm MyAccount 後,登入 Qualcomm® AI Hub Workbench,並前往設定頁面以取得您專屬的 API Token。我們建議觀看 how-to video on this topic for detailed instructions 以獲得詳細操作說明。

如何新增我團隊或其他團隊的成員,以便在 Qualcomm® AI Hub Workbench 上檢視我的作業?

Qualcomm® AI Hub Workbench 的工作可以自動與您的組織共享。如果您希望將團隊中擁有 Workbench 帳號的開發人員新增至您的組織,請將電子郵件地址寄送至 ai-hub-support@qti.qualcomm.com

Qualcomm® AI Hub Workbench 的作業也可以與組織外部或 Qualcomm 共享以獲得支援。點擊任何作業右上角的「Share」按鈕,並指定一個 Workbench 使用者的電子郵件,該作業(以及相關的模型資產)將會被共享。您也可以透過從作業中移除電子郵件地址來撤銷存取權限。

我可以在哪裡找到已經使用 Qualcomm® AI Hub Workbench 優化過的模型?

您可以前往以下任意位置找到已經在 AI Hub 上預先優化的模型。我們目前有超過 150 個優化模型,並且不斷添加新的模型:

Qualcomm® AI Hub Models, Qualcomm's Hugging Face, Qualcomm® AI Hub Models

Qualcomm® AI Hub Workbench、Qualcomm® AI Hub Models 和 Qualcomm® AI Hub Apps 之間有什麼差異?

Qualcomm® AI Hub 有三個面向,Qualcomm® AI Hub Workbench 是我們的裝置端 AI 平台。您可以帶入任何模型、指定任何裝置,並使用任何執行環境,在幾分鐘內獲得優化且可部署的資產。Qualcomm® AI Hub Models 是我們預先優化的模型,當您尚未擁有模型時,可協助進行模型選擇。您可以檢視我們在各種 Qualcomm® 裝置上於 Qualcomm® AI Hub Workbench 執行每個模型的效能指標,並輕鬆下載模型資產。Qualcomm® AI Hub Apps 是我們的一組範例應用程式,讓您學習如何將您的模型或 Qualcomm® AI Hub Models 整合到應用程式中,並達到與 Qualcomm® AI Hub Workbench 所實現的優化效能相匹配的結果。

我可以將自己的模型帶到 Qualcomm® AI Hub Workbench 並在上面執行嗎?

是的,這個功能通常稱為「自帶模型」(Bring Your Own Model,簡稱 BYOM),任何人都可以使用!請注意,並非所有模型都能成功編譯,以下是可能導致編譯失敗的原因:

  • 這個模型檔案很大(i.e. > 2GB).

  • 模型在 PyTorch 中可能會失敗,請按照錯誤消息進行相應的模型更改:

    • 如果模型有分支(if/else),在 torch.jit.trace 過程中設置 check_trace=False 可以解決這個問題。

  • LLMs/GenAI 模型可能不適用:

    • 這些大型模型通常需要進行量化,才能在裝置上有效運行。請參考我們的 LLM 教學 以獲取指引。

  • Misc. conversion issues:

    • 轉換可能會在內部失敗,如果您遇到不明確的錯誤消息(例如內部設備錯誤),請告訴我們,我們將盡力及時調查問題。對更多模型的支持正在不斷增加!

    • 如果編譯作業失敗,請確保提供的輸入規格與模型兼容。

要在 Qualcomm® AI Hub Workbench 提交您的第一個工作,我們建議觀看 how-to video on this topic。如果在提交工作時遇到任何問題,請透過電子郵件聯絡我們:ai-hub-support@qti.qualcomm.com 或在 AI Hub Slack 聯絡我們!請務必包含您的 Job ID,以便我們進行調查。

我可以嘗試使用 HuggingFace 上未包含在 Qualcomm® AI Hub Models 的模型嗎?

是的!這些都是非常值得嘗試的模型。如果您有適合自己使用情境的模型而我們未列出,請前往 https://huggingface.co/models 選擇一個模型。接著,您可以匯入必要的套件並在提交編譯工作到 Qualcomm® AI Hub Workbench 之前先進行模型追蹤。以下列出提交工作時常見的錯誤。

我可以在真實裝置上於 Qualcomm® AI Hub Workbench 執行量化後的模型嗎?

是的。我們在 Qualcomm® AI Hub Models 中列出了一些量化模型,您可以在模型精度區段進行篩選,以查看它們的效能,因為我們已在多種 Qualcomm 裝置上執行過這些模型。這些模型是使用 AIMET 進行量化的。如果您找不到想要的模型,您可以自行量化並編譯模型,然後透過 Qualcomm® AI Hub Workbench 在真實裝置上進行推論。我們建議透過在 Qualcomm® AI Hub Workbench 提交工作並使用 量化 進行量化。此流程會將未量化的 ONNX 模型轉換為量化後的輸出,接著您可以重新編譯量化模型。

我該如何在 Qualcomm® AI Hub Workbench 上將我的模型執行於特定裝置?

當您提交模型時,您需要指定目標設備。若要獲取可用設備的列表,請運行 qai-hub list-devices。從可用設備列表,您可以透過設備的名稱或任何屬性來指定目標設備。例如,device = hub.Device(attributes="qualcomm-snapdragon-845") 將在任何具有 845 芯片的設備上運行,而 device=hub.Device("QCS6490 (Proxy)") 則會專門在 6490 代理設備上運行。我們還有設備系列,您會在列表中看到適用的設備旁邊顯示,例如 Google Pixel 3a 系列、Samsung Galaxy S21 系列等。這有助於設備配置時間,減少特定名稱設備的排隊時間。它將始終提供您指定芯片組的設備。請在適當時候使用此選項!我們建議觀看 有關此主題的操作視頻

一般使用AI Hub的工作流程為何?

步驟 1:為您的使用案例選擇模型,可以從 Qualcomm® AI Hub Models 中選擇,或者使用您自己的模型。

步驟 2:提交編譯任務,以便將您訓練的模型(PyTorch、ONNX、AIMET 量化模型)編譯到指定的設備上(使用 qai-hub list-devices 來確定可用的設備)以及 desired target runtime.

步驟 3:提交分析任務,在雲端託管的真實設備上運行您編譯的模型並分析其性能(例如,它是否達到您的延遲目標、內存限制,是否在所需的計算單元上運行)。在這裡,您將獲得大量關於模型性能的豐富指標,例如每層的計時、每層的可視化、加載和推理時間以及運行時日誌信息,這些信息在您的任務失敗時可能至關重要。

步驟 4:提交推理任務,上傳輸入數據,在真實設備上運行推理並下載輸出結果。

步驟 5:對設備上的輸出結果進行任何必要的後處理計算,以確認模型的準確性。

步驟 6:以編程方式下載優化後的模型,並將其整合到您的應用程序中。查看我們的 示例應用 程序以獲取將模型整合到應用程序的幫助。

../_images/Developer-Workflow.png

為什麼我的模型在推理任務中的延遲與分析任務中的延遲不同?

當您提交 profile job 時,指定裝置上會執行 100 次推論。這是為了提供準確的時間預估,以便在將其打包到應用程式中時有所了解。由於啟動時間、快取預熱等原因,第一次迭代通常是最慢的。profile job 中執行推論的次數可透過選項 max_profiler_iterations 進行自訂。然而,inference job 僅在指定裝置上執行一次,因為其核心目的在於進行準確度計算,以確認模型在數值上等效並準備好下載和部署。

我已經使用 Qualcomm® AI Hub Workbench 執行了我的模型並下載了優化後的模型,接下來該怎麼做?

好問題!下一步是將模型資產打包到您的應用程式中,以便部署到目標邊緣裝置(行動裝置、物聯網、運算設備等)。我們提供了一些 範例應用程式 說明如何操作,並持續新增更多內容。若要在使用 Qualcomm® AI Engine Direct 時整合 .bin 檔案,請參考 這些文件。我們正積極新增更多範例應用程式及相關資訊。針對 IOT 客戶在 RB3 Gen 2 上部署,我們建議 搭配使用 Foundries.io 與來自 AI Hub Models 的優化模型

AI Hub 上發布的模型的許可條款是什麼?我可以在我的應用程序中使用這些模型並將其發布給用戶嗎?

AI Hub 模型展示了一系列預先優化的開源模型。每個模型的許可證可以在相應的模型頁面上找到。

自帶的模型其許可條款會是什麼?這會成為 Qualcomm 的IP嗎?

Qualcomm® AI Hub Workbench 是一個用於針對裝置優化模型的平台。如果您「自行提供模型」,從 AI Hub 獲得的部署資產通常會與您的模型擁有相同的發佈授權。如果該模型是您的自有智慧財產權,那麼您可以自行分發。更多詳細資訊請參閱我們的服務條款。

在我的生產應用程式中使用 Qualcomm® AI Hub Workbench 或 Qualcomm® AI Hub Models,或將 Qualcomm® AI Hub Workbench 整合到模型測試流程中,是否會產生任何費用?

Qualcomm® AI Hub Workbench 平台目前完全免費使用。我們鼓勵您提交模型、進行編譯、效能分析與迭代,提交推論工作以檢查準確度,並下載目標資產以整合到您的應用程式中。

在我們的模型集合中,有一些特定的模型是由模型製作者提供的,根據其許可證需要購買。請聯繫我們以獲取更多信息。如果某個模型在 aihub.qualcomm.com 上標示為 'download now',則該模型是免費且開放使用的。請查看模型頁面上列出的許可證,並根據許可使用該模型。

如果 Qualcomm® AI Hub Workbench 在雲端執行模型,是否安全?其他使用者能看到我上傳的模型嗎?

您在 Qualcomm® AI Hub Workbench 上執行的所有操作都是私密且安全的,除非您明確與其他使用者分享。這包括所有上傳的資料集與模型,以及透過 Qualcomm® AI Hub Workbench 工作建立的任何模型、資料集或指標。客戶產生的檔案會在工作完成後,從實體裝置的暫存空間及其他雲端運算環境中清除。其他使用者無法查看您的私人資訊。

請參閱 Qualcomm privacy policy 以了解 Qualcomm 如何收集與使用資料。如有任何疑問,請透過電子郵件聯絡我們: email us

如何為我的組織增加新成員?

每個用戶都有自己的組織,用戶的模型和數據會安全地保存在他們的組織中,只有他們和他們添加到組織中的人才能訪問。如果您希望在 AI Hub 中添加任何人到您的組織,請告訴我們,這樣他們就可以看到您的工作,您也可以看到他們的工作。

如果您希望將某人添加到特定的工作中,我們建議使用任何工作右上角的分享按鈕,並添加他們的電子郵件地址

如何得知AI Hub的更新?

我們會在 AI Hub Slack 上即時發布 Qualcomm® AI Hub Workbench、Qualcomm® AI Hub Models 和 Qualcomm® AI Hub Apps 的版本更新說明!您也可以在 我們的文件 中找到相關資訊。

Model Formats

為何 Qualcomm® AI Hub Models 僅提供一些 TensorFlow Lite 模型的效能資訊?

如果您訪問我們超過100個預優化模型的集合,根據模型的不同,您可能只會看到 TensorFlow Lite 或 Qualcomm® AI Engine Direct 的結果。我們正在努力提供這兩種方面的性能結果,屆時您將在下拉選單中看到 TorchScript → TensorFlow Lite 和 TorchScript → Qualcomm® AI Engine Direct,您可以選擇想查看的性能數據。此外,如果您訪問我們的 Compute Models,在適用的情況下,您還會看到 TorchScript → ONNX Runtime 的性能結果。

如何挑選模型運行環境? TensorFlow Lite, ONNX Runtime or Qualcomm® AI Engine Direct?

有些已知問題會導致某些路徑比其他路徑更快,這取決於模型。我們的持續目標是跟蹤並解決這些問題,無論在哪條路徑上。隨著我們對大多數模型進行優化,您可以預期它們的性能會大致相同。最終,所有路徑都會通向相同的 QNN 和相同的硬件,因此沒有任何根本性的區別。TensorFlow Lite 將通過 TensorFlow Lite Delegate 訪問 Hexagon NPU,ONNX Runtime 將通過 ONNX 執行提供程序訪問 Hexagon NPU,而 Qualcomm® AI Engine Direct 當然會利用 Hexagon NPU。

我們建議 Android 開發者在部署到移動設備時使用 TensorFlow Lite,Windows 開發者和那些部署到筆記型電腦的開發者使用 ONNX Runtime,而 Qualcomm® AI Engine Direct 則取決於 SOC / 作業系統。我們強烈建議嘗試不同的runtime,並使用為您的目標設備提供最佳性能的路徑。

../_images/Runtimes.png

以下是我們的架構圖說明,無論選擇哪個路徑或指定哪個執行時環境,都會使用 QNN,並在適用時利用 Hexagon NPU。Workbench 會始終在最優化的運算單元上執行模型。

我應該使用哪種 Qualcomm® AI Engine Direct 模型格式?

The Qualcomm® AI Engine Direct SDK supports two formats for on-device execution: context binaries (.bin) and deep learning containers (.dlc). There are important differences between these that are likely to affect runtime performance.

  • Deep learning containers (DLCs) contain an SoC-agnostic representation of a network. Typically, this OS-agnostic format is used to drive QNN-level construction of graph data structures prior to further device-specific optimization.

  • Context binaries are an OS-agnostic, HTP-specific representation. Used to prepare a graph for a specific SoC (i.e., allowing QNN to invoke the Hexagon compiler for a specific HTP), and saving the resulting data structures. Since the Hexagon compiler makes assumptions about the HTP in use, context binaries only achieve the best possible performance when a specific HTP is targeted; it is often possible to use binaries built for older devices on newer chips, but performance may suffer.

  • 為了達到最佳效能,請務必在 qnn-context-binary-generator 中指定正確的 soc_model。您可以透過查閱 Qualcomm® AI Engine Direct 的 概覽 中支援的 Snapdragon 裝置表格找到正確的值,該資訊也可在 SDK 的 docs/QNN/index.html 中取得,並透過連結進入 Overview。此外,在針對具備 Qualcomm® SoC 的裝置執行 Qualcomm® AI Hub Workbench 時,每個執行時記錄檔的頂端也會列印此資訊。

Qualcomm® AI Engine Direct Model Format Summary

Format

Backends

OS Agnostic

SoC Agnostic

Time to Load

Inference Performance

Library

Any

No

Yes

Longer

Optimal

DLC

Any

Yes

Yes

Longer [1]

Optimal

Context Binary

HTP

Yes

No

Fastest

Optimal [2]

我可以將模型資產從代理設備部署到實際硬體上嗎?

TL;DR -- TensorFlow Lite 和 ONNX Runtime 資產應該沒問題,但 QNN 模型格式可能會有問題。

過去,AI Hub 的 Workbench 和 Models 曾新增代理裝置,作為提供效能分析與推論存取的一種方式,讓具備與熱門裝置類似效能特性的 SoC 裝置能被支援,即使這些裝置未直接受到 AI Hub 支援。例如,RB3 Gen 2 中的 QCS6490 本質上與多款行動裝置中的 SM7325 是相同的晶片。雖然這對於效能基準測試與準確度評估非常有用,但在產生 QNN 模型格式時可能會遇到挑戰:

  • 上下文二進制文件是 SoC 特定的。雖然我們預期針對代理設備會在真實設備上提供良好的性能,但這並不是一個保證。

  • 在某些情況下,會使用完全不同版本的 QNN SDK。例如,所有車用代理設備都是移動設備,但所有 Cockpit、ADAS 和 Flex 設備都需要使用特定的車用 SDK,該 SDK 了解同一代車用和移動芯片之間的差異(例如,SA8295P 的 V68 HTP 上的 fp16 支持)。

幸運的是,第三方框架通過在加載時進行優化,避免了所有這些問題,使得 TensorFlow Lite 和 ONNX Runtime 資產在這種情況下成為不錯的部署選擇。

Passing Options

如何指定運算處理器?

在 Qualcomm® AI Hub Workbench 提交任何類型的工作時,請使用選項 --compute_unit <units> 來指定您希望模型執行的運算單元。如果您想指定多個運算單元,請用逗號分隔,例如:--compute_unit npu,cpu。我們建議您觀看 此主題的操作影片

如何指定目標runtime?

Qualcomm® AI Hub Workbench supports TensorFlow Lite, ONNX Runtime, and Qualcomm® AI Engine Direct (context binary and Qualcomm® Deep Learning Container) as target runtimes. Use the --target_runtime <runtime> option when submitting a compile job to specify a runtime. We recommend checking out our how-to video on this topic.

如何確定NPU正在被使用?

每個目標runtime都有其自己的策略來充分利用可用的硬體。在性能和能力之間存在權衡:NPU 通常提供最佳性能,但在計算能力上最受限。相反,CPU 雖然不適合神經網絡推理,但可以執行任何操作。支援多個硬體後端的runtime通常會盡可能多地在 NPU 上運行網絡,然後再回退到 GPU 或 CPU。

要啟用 NPU 使用,運行時必須 (1) 配置為使用 NPU,並且 (2) 網絡應避免使用不支援的操作或參數。

By default, Qualcomm® AI Hub Workbench configures runtimes supporting fallback to use the NPU before degrading to GPU and/or CPU. To require use of the NPU, specify the compile/runtime option --compute_unit npu. Also consider using a QNN target runtime, such as qnn_dlc.

導致層無法部署至 NPU 的常見原因包括不支援的運算節點(op),或不支援的張量維度(rank),特別是在 rank ≥ 5 的情況下,支援度會相對較低。當這種情況發生在支援異質運算調度的執行環境(例如 TensorFlow Lite)時,這些層應會自動回退至 GPU 或 CPU 執行。在某些情況下,整個網路可能會從 NPU 上離開,這通常是因為在裝置端準備網路時發生了較為非預期的錯誤。此時,網路將會在 GPU 或 CPU 上執行。若發生此情況,請透過 AI Hub Slack 聯繫我們,我們將樂意協助檢視該任務。

如何指定優化選項?

預設情況下,Qualcomm® AI Hub Workbench 會始終針對執行時效能優化模型。有時,這可能會造成問題,尤其當所需時間過長:某些大型模型可能導致工作逾時,因為 Hexagon 編譯器需要處理過多工作。少數情況下,較高的最佳化等級反而會產生較差的程式碼。在這種情況下,降低最佳化等級可能更合理。如何降低取決於目標執行時環境。

  • For Qualcomm® AI Engine Direct targeting the NPU (e.g., --target_runtime=qnn_dlc --compute_unit all) use --qnn_options=default_graph_htp_optimization_value=x where x is 1 or 2. Note that Hexagon compilation happens on device when using qnn_lib_*, but runs ahead of time during model conversion when targeting qnn_context_binary.

  • 針對將 TensorFlow Lite 委派給 Qualcomm® AI Engine Direct (即 --target_runtime=tflite)並成功委派到NPU的情況,請使用 --tflite_options=kHtpOptimizeForPrepare,這會將 QNN 優化級別設置為 1。當針對 tflite 時,Hexagon 編譯始終在設備上進行。

常見的作業失敗以及已知的問題

我的編譯工作失敗,並顯示一個操作缺失的錯誤訊息。我該怎麼辦?

如果您收到類似 Failure occurred in the ONNX to Tensorflow conversion: Op 'xx' is not yet implemented 的錯誤,請隨時在 AI Hub Slack 上聯繫我們。我們可能會優先考慮添加操作支持(或者這項工作已經在進行中)。如果沒有,我們可以在適用的情況下提供解決方法。

即使我在文檔中傳遞了一個選項,我的任務仍然失敗了,我該怎麼辦?

確保您正在為正確的工作類型傳遞選項(例如,編譯與分析)。例如,--quantize_full_type 是一個編譯工作選項;將其傳遞給分析工作將導致失敗。如果您仍然遇到問題,請在 AI Hub Slack 上聯繫我們。

我的 Hugging Face 模型因為不支持 "DictConstruct" 而失敗。我該怎麼辦?

我們建議設定 model.config.return_dict = False。預設值為 true。Workbench 目前無法自動處理以字典作為輸出的情況,這項功能已在我們的待辦清單中。另一個暫時的替代方案是撰寫一個包裝模組,將字典轉換為 tuple。

我的分析任務失敗,顯示錯誤訊息為 "request feature arch with value [0-9]+ unsupported",這是什麼意思?

當上下文二進位檔為比目標設備支持的更新版本的 Hexagon 架構時,會出現此錯誤。要解決此問題,請使用將用於剖析或推理的設備重新編譯源模型。

我的分析作業失敗了, 並引用錯誤代碼 3110。為什麼會發生這種情況?

此錯誤表示無法為設備準備模型。可能發生這種情況的原因有幾個:

浮點數不支持。失敗的節點型態,錯誤代碼3110。當節點的輸入或輸出類型不被QNN後端支持時,會發生3110錯誤。這通常是由於節點未正確量化或未量化的張量,從而導致錯誤。要解決此問題,請量化(或重新量化)模型。操作符定義和約束可以在 HTP Backend Op Definition Supplement

  1. 不支持的維度。許多操作僅支持小於5維的數據。一些操作支持5維,但沒有操作支持大於5維的數據。

  2. 不支持的類型。許多操作不支持所有類型。這個錯誤在 [u]int32 層中相當常見。

我的分析作業失敗,錯誤代碼為 1002,位置在 qnn_model.cc:167 onnxruntime::qnn::QnnModel::FinalizeGraphs,我該怎麼做?

如果執行時日誌未提供有用資訊,我們建議使用以下選項重新進行分析:--runtime_debug=true --max_profiler_iterations=1。使用這些設定後,執行時日誌通常會提供更多有關問題原因的資訊。

Deployment

為什麼我的模型在裝置上執行時比在 Qualcomm® AI Hub Workbench 上慢?

在 Workbench 中,我們嘗試建立一個能讓模型以最快速度執行的真實環境。我們假設開發者通常會部署到具有使用者介面的應用程式,因此我們的效能分析器是依此設計的。預設情況下,我們會在最高可用功率設定下執行,以達到最快的推論速度。讓我們來看看這些選擇所帶來的影響。

Scheduling Priority

Workbench 的效能分析器在所有支援的行動與車用裝置上都是一個 Android 應用程式。這表示它在核心層級享有優先排程,Android 預設如此以提供即時回應的使用者介面。此政策不會延伸至透過 adb shell 執行的 CLI 工具,包括 qnn-net-run。這造成 GUI 與 CLI 工具之間的效能差距,影響可能相當顯著。在一次於 65 款 Android 裝置上執行 MobileNetV2 的測試中,我們發現使用 CLI 版本的效能分析器相比生產環境中的 GUI,平均 [3] 慢了 9.7%。若要讓 CLI 工具具備與 GUI 應用程式相同的排程優先權,請在具備 root 權限的情況下使用 nice -n -10 YOUR_TOOL

Power Settings

預設情況下,Qualcomm® AI Hub Workbench 會在所有行動裝置上請求 BURST 電源設定。這通常會比預設值帶來顯著更快的執行速度。要在您的應用程式中啟用此功能,步驟取決於所使用的 ML 框架。ONNX Runtime 和 TensorFlow Lite 具有設定,可讓它們代您完成此操作。若使用 Qualcomm® AI Engine Direct,則必須依照上述連結頁面所列,個別設定電壓角及其他選項。

Profile Settings

收集詳細的分析數據(例如,qnn-net-run --profiling_level detailed)可能會引入大量的開銷。建議僅在需要比較網絡層的相對運行時間時使用。

Other Settings

AI Hub Workbench 從框架預設值(包括您指定的設定)所覆寫的設定,可以在推論與分析工作頁面的「Runtime Configuration」設定中找到。特別注意,fp16_relaxed_precision 預設為啟用。

為何在使用HTP時出現錯誤代碼 1008 ?

錯誤 1008,也稱為 QNN_COMMON_ERROR_INCOMPATIBLE_BINARIES,通常表示初始化 HTP 失敗。這通常是因為找不到包含在 HTP 上運行的程式庫 [4]。在大多數平台上,環境變數 ADSP_LIBRARY_PATH 必須設置為包含與設備的 DSP 架構對應的 skel 文件的目錄 [5]。更多信息可以在 QNN 教程 中找到。

這個方法沒有用; 我是使用Windows作業系統

另外有兩件事可檢查.

首先,骨架文件應該放在與 QnnHtp.dll 相同的目錄中。我們曾見過文件建議 ADSP_LIBRARY_PATH 在其他平台上有效,但我們的經驗是它在 Windows 上被忽略了。

其次,Windows 還要求與骨架文件一起發佈的 .cat 文件可用:在將骨架庫複製到應用程序的可執行目錄時,不要忘記 .cat 文件。

如何使用車用設備上的HTP?

在車用客戶端虛擬機中使用 HTP 需要額外的步驟,除了如上所述設置 ADSP_LIBRARY_PATH 之外:還需要將兩個文件從 QNX 主機複製到客戶端虛擬機中。具體來說,這些文件必須複製到 ADSP_LIBRARY_PATH 中的一個目錄中,通常是包含適當骨架庫的目錄。

具有 /dspfw/dsplib 分區的裝置:

  • /dsplib/image/dsp/cdsp0/libc++.so.1

  • /dsplib/image/dsp/cdsp0/libc++abi.so.1

不具備 /dspfw/dsplib 分區的裝置:

  • /mnt/etc/images/cdsp0/libc++.so.1

  • /mnt/etc/images/cdsp0/libc++abi.so.1

如果您有其他問題未在此涵蓋,請在 AI Hub Slack 上聯繫我們。