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 代理裝置上執行。
如需進一步了解裝置家族與代理裝置等特殊裝置類型,請參考 Devices 頁面 <device-types>。
使用 AI Hub 時,典型的開發者工作流程是什麼?
步驟 1:為您的使用案例選擇模型,可以從 Qualcomm® AI Hub Models 中選擇,或者使用您自己的模型。
步驟 2:提交編譯任務,以便將您訓練的模型(PyTorch、ONNX、AIMET 量化模型)編譯到指定的設備上(使用 qai-hub list-devices 來確定可用的設備)以及 desired target runtime.
步驟 3:提交分析任務,在雲端託管的真實設備上運行您編譯的模型並分析其性能(例如,它是否達到您的延遲目標、內存限制,是否在所需的計算單元上運行)。在這裡,您將獲得大量關於模型性能的豐富指標,例如每層的計時、每層的可視化、加載和推理時間以及運行時日誌信息,這些信息在您的任務失敗時可能至關重要。
步驟 4:提交推理任務,上傳輸入數據,在真實設備上運行推理並下載輸出結果。
步驟 5:對設備上的輸出結果進行任何必要的後處理計算,以確認模型的準確性。
步驟 6:以編程方式下載優化後的模型,並將其整合到您的應用程序中。查看我們的 示例應用 程序以獲取將模型整合到應用程序的幫助。
為什麼我的模型在推理任務中的延遲與分析任務中的延遲不同?
當您提交 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,並使用為您的目標設備提供最佳性能的路徑。
以下是我們的架構圖說明,無論選擇哪個路徑或指定哪個執行時環境,都會使用 QNN,並在適用時利用 Hexagon NPU。Workbench 會始終在最優化的運算單元上執行模型。
我應該使用哪種 Qualcomm® AI Engine Direct 模型格式?
Qualcomm® AI Engine Direct SDK 支援兩種裝置端執行格式:context binary(.bin)與 deep learning container(.dlc)。兩者之間存在可能影響執行效能的重要差異。
Deep learning container(DLC)包含與 SoC 無關的網路表示。通常,這種與作業系統無關的格式會在進一步進行裝置特定最佳化之前,用於在 QNN 層級建立圖形資料結構。
Context binary 為與作業系統無關、但與 HTP 相關的表示形式,用於為特定 SoC 準備圖形(即讓 QNN 能針對特定 HTP 呼叫 Hexagon 編譯器),並儲存所產生的資料結構。由於 Hexagon 編譯器會對所使用的 HTP 做出假設,context binary 只有在針對特定 HTP 時才能達到最佳效能;雖然有時可在新晶片上使用為舊裝置建立的 binary,但效能可能會下降。
為了達到最佳效能,請務必在
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 支援 TensorFlow Lite、ONNX Runtime 以及 Qualcomm® AI Engine Direct (context binary 與 Qualcomm® Deep Learning Container)作為 target runtime。在提交 compile job 時,請使用 --target_runtime <runtime> 選項指定 runtime。我們建議參考此主題的 教學影片。
如何確定NPU正在被使用?
每個目標runtime都有其自己的策略來充分利用可用的硬體。在性能和能力之間存在權衡:NPU 通常提供最佳性能,但在計算能力上最受限。相反,CPU 雖然不適合神經網絡推理,但可以執行任何操作。支援多個硬體後端的runtime通常會盡可能多地在 NPU 上運行網絡,然後再回退到 GPU 或 CPU。
要啟用 NPU 使用,運行時必須 (1) 配置為使用 NPU,並且 (2) 網絡應避免使用不支援的操作或參數。
預設情況下,Qualcomm® AI Hub Workbench 會設定 runtime 先使用 NPU,若無法使用則降級至 GPU 及/或 CPU。若要*強制*使用 NPU,請指定 compile/runtime 選項 --compute_unit npu,並考慮使用如 qnn_dlc 等 QNN target runtime。
導致層無法部署至 NPU 的常見原因包括不支援的運算節點(op),或不支援的張量維度(rank),特別是在 rank ≥ 5 的情況下,支援度會相對較低。當這種情況發生在支援異質運算調度的執行環境(例如 TensorFlow Lite)時,這些層應會自動回退至 GPU 或 CPU 執行。在某些情況下,整個網路可能會從 NPU 上離開,這通常是因為在裝置端準備網路時發生了較為非預期的錯誤。此時,網路將會在 GPU 或 CPU 上執行。若發生此情況,請透過 AI Hub Slack 聯繫我們,我們將樂意協助檢視該任務。
如何指定優化選項?
預設情況下,Qualcomm® AI Hub Workbench 會始終針對執行時效能優化模型。有時,這可能會造成問題,尤其當所需時間過長:某些大型模型可能導致工作逾時,因為 Hexagon 編譯器需要處理過多工作。少數情況下,較高的最佳化等級反而會產生較差的程式碼。在這種情況下,降低最佳化等級可能更合理。如何降低取決於目標執行時環境。
對於以 NPU 為目標的 Qualcomm® AI Engine Direct (例如
--target_runtime=qnn_dlc --compute_unit all),請使用--qnn_options=default_graph_htp_optimization_value=x,其中x為1或2。請注意,當使用qnn_lib_*時,Hexagon 編譯會在*裝置上*執行;而在指定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。
不支持的維度。許多操作僅支持小於5維的數據。一些操作支持5維,但沒有操作支持大於5維的數據。
不支持的類型。許多操作不支持所有類型。這個錯誤在 [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 預設為啟用。
Median: 5.3%; Minimum: -3.6%; Maximum: 58.0%.
為何在使用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 文件。
i.e., 不是運行在CPU上. 這也就是為什麼Windows裝置上有 .so 檔案.
e.g., v68 or v75
如何使用車用設備上的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 上聯繫我們。