kneo-pi 要如何同時載入多個NEF 來進行推論?

koko
edited September 23 in AI Model migration

請問下,

目前使用 kneo-pi(SDK使用kneron_plus C ),使用yolov5s 來訓練

數據種類 依情境應用需求有A/B 二組數據,分別產生A.nef/B.nef

A.nef/B.nef 各別佈署到kneo-pi皆可以進行推論,

但因情境應用,完整推論過程有需要先使用A.nef 進行推論,再依A.nef 推論的結果,進行B.nef推論


想了解kneo-pi 要如何同時載入多個NEF 來進行推論,

===============================================

目前有使用合併多個NEF(kneron_nef_utils,REF:https://doc.kneron.com/docs/#toolchain/appendix/nef_utils_guide/#2-generated-nef),搭配kl730_demo_customize_inf_multiple_models 無法進行推論

A.nef(kneopi 可推論,約為7.5M)/B.nef(kneopi可推論,約為7.5M) 合併成 models_730.nef(約為7.5M) ,依 models_730.nef 合併後為7.5M,應該是合併失敗

Comments

  • 您好,

    之前在Kneron Toolchain上有combine_nef的模型跑失敗,會遇到KP_FW_INFERENCE_ERROR_101的bug,kneron_nef_utils可能也有相同的bug。這個在Toolchain的最新版本(v0.31.0)有修好,可以請您更新Toolchain版本再來試一次。

    也可以請您說明一下"無法進行推論"具體來說是指什麼,或是遇到什麼錯誤嗎? 謝謝!

  • koko
    edited September 23

    您好,

    請問kneo-pi 若同時載入多個NEF 來進行推論,是使用合併NEF 方式?

    成功的合併NEF,是會有什麼變化(如NEF空間會變大),或者是如何驗証合併NEF成功,使用kl730_demo_customize_inf_multiple_models ?

    ===================================================





    您所需資訊如下,會再試新版toolchain

    kneron_plus version v3.1.2

    kneron/toolchain:v0.30.0(使用 docker pull kneron/toolchain:latest)

    kl730_demo_customize_inf_multiple_models 執行畫面如下:

    ./kl730_demo_customize_inf_multiple_models

    connect device ... OK

    upload firmware ... OK

    upload model ... OK

    read image ... OK


    starting inference loop 10 times:


    inference failed send, error = 21 (The loading model is invalid)







    詳情如下:


    =========================



    kneron_plus_v3.1.2.zip



    (onnx1.13) root@6bf948097497:/workspace# cat /workspace/version.txt

    kneron/toolchain:v0.30.0

    (onnx1.13) root@6bf948097497:/workspace#



    (onnx1.13) root@6bf948097497:/data1/oga_plate_nef_file# ls -alh

    total 57M

    drwxrwxr-x 2 1000 1000 4.0K Sep 23 06:51 .

    drwxrwxr-x 11 1000 1000 4.0K Sep 23 02:54 ..

    -rw-r--r-- 1 root root 7.5M Sep 23 06:49 A.nef

    -rw-r--r-- 1 root root 7.6M Sep 23 06:49 B.nef

    -rwxr-xr-x 1 root root 42M Sep 23 02:52 kneron_nef_utils

    (onnx1.13) root@6bf948097497:/data1/oga_plate_nef_file# ./kneron_nef_utils --combine_nef A.nef B.nef

    Extract_Status: 0

    /data1/oga_plate_nef_file/output/NEF_0x71143422_models_730.kne

    output/models_730.kne


    Combine multiple NEF file into new one in:


    /data1/oga_plate_nef_file/output/models_730.nef


    (onnx1.13) root@6bf948097497:/data1/oga_plate_nef_file# ls -alh output/models_730.nef

    -rw-r--r-- 1 root root 7.5M Sep 23 06:52 output/models_730.nef




    ./kl730_demo_customize_inf_multiple_models

    connect device ... OK

    upload firmware ... OK

    upload model ... OK

    read image ... OK


    starting inference loop 10 times:


    inference failed send, error = 21 (The loading model is invalid)

  • edited September 24

    您好,

    成功合併的NEF檔案是會變大的,如需要測試NEF是否成功,可以先使用generic_data_inference來測試看看,如果有問題還需再請您提供一下 error message。 感謝!

  • koko
    edited September 24


    您好,

    目前己使用新版的Toolchain( v0.31) 的kneron_nef_utils 來進行A.nef / B.nef (A.nef/B.nef 皆可以在kneo pi上進行推論) 合併

    提供各別空間大小資訊,讓您參考,以models_730.nef 大小看來,合併應該是無成功

    不知道是否有什麼步驟問題,造成此結果?

    額外想了解,若要KNEO PI 可以在A.NEF 推論後,再依A.NEF 推論結果,進行B.nef 推論,是否只有這種方式?

    感謝


  • 您好,

    關於models_730.nef大小問題,只看檔案大小其實是看不太出來是否有成功的,因為檔案大小有這幾種可能性:

    1. sizeof ( NEF C ) <= sizeof ( NEF A ) + sizeof ( NEF B )
    2. sizeof ( NEF C ) >= sizeof ( NEF A ) -> 可能會
    3. sizeof ( NEF C ) >= sizeof ( NEF B ) -> 可能會

    所以如果想要知道是否成功可以用generic_data_inference來測試看看是否跑得動。


    關於推論問題,是的,一次只能進行一個推論,A.NEF推論完才會進行B.NEF的推論。

  • 您好,

    這裡提供另一個方法來得知combine是否成功,可以使用我們kneron_nef_utils裡的 ./kneron_nef_utils --info path/to/file.nef

    來Dump NEF Information https://doc.kneron.com/docs/#toolchain/appendix/nef_utils_guide/#4-dump-nef-information

    裡面會顯示有被combine的model ID,可以用這個來對照您的A.NEF跟B.NEF是否有合併到models_730.nef裡。


  • koko
    edited September 26

    您好,

    A.nef(model:yolov5s , kneo-pi 使用 kl730_demo_generic_image_inference_post_yolo 可推論)

    B.nef(model:yolov5s, kneo-pi 使用 kl730_demo_generic_image_inference_post_yolo 可推論)

    合併出來Models_730.nef(kneo-pi 可推論A.nef 內的物件,但似乎無法推論B.nef)

    使用kneron_nef_utils來查看models_730.nef,不知道是否是520 VS 730 平台差異

    從訊息看無multi models 的情況如下,


  • 您好,

    感謝提供的截圖,現在看來combine是沒有成功,失敗的原因可能是因為您兩個NEF都使用了相同的model_id,這可能會導致合併的失敗,建議您可以把其中一個的model_id改成不一樣的 ( 32769, 32770),然後再combine一次看是否能成功。感謝!

  • 您好,

    修改 A.nef/B.nef (A.nef B.nef kneopi 皆可正常推論) model_id 後,情況一樣還是無法合併成功

    提供結果和詳情截圖


    ==================================================

    結果截圖如下:





    ==========

    詳情截圖如下:



  • 您好,

    這樣就有可能是其他問題所造成的,可以麻煩您提供以下的檔案嗎?

    -A.nef和B.nef (兩個model ID相同)

    -A.nef和B.nef (兩個model ID不同)

    -A和B模型分別轉換成nef時產生的model_fx_report.html

    謝謝!

  • 您好,

    所需的資料

    A.nef和B.nef (兩個model ID相同) 和model_fx_report.html ==> A.nef/B.nef (id 40000)

    A.nef和B.nef (兩個model ID不相同) 和model_fx_report.html ==> A.nef(id 40001)/B.nef (id 40002)

    感謝

  • 您好,

    在測試過您的檔案後我們這邊是可以combine成功的,後來發現是您的指令用錯了,正確的指令是需要用引號包住A.nef和B.nef的,像這樣: ./kneron_nef_utils -c "A.nef B.nef",然後models ID不能一樣。感謝!


    下面附上一張測試的圖:


Sign In or Register to comment.