機器學習推論疑難排解 - AWS IoT Greengrass

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

機器學習推論疑難排解

使用本節中的疑難排解資訊和解決方案,協助解決機器學習元件的問題。如需公用機器學習推論元件,請參閱下列元件記錄檔中的錯誤訊息:

Linux or Unix
  • /greengrass/v2/logs/aws.greengrass.DLRImageClassification.log

  • /greengrass/v2/logs/aws.greengrass.DLRObjectDetection.log

  • /greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log

  • /greengrass/v2/logs/aws.greengrass.TensorFlowLiteObjectDetection.log

Windows
  • C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log

  • C:\greengrass\v2\logs\aws.greengrass.DLRObjectDetection.log

  • C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log

  • C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteObjectDetection.log

如果元件已正確安裝,則元件記錄檔會包含其用於推論之程式庫的位置。

無法擷取程式庫

當安裝程式指令碼無法在 Raspberry Pi 裝置上部署期間下載所需的程式庫時,會發生下列錯誤。

Err:2 http://raspbian.raspberrypi.org/raspbian buster/main armhf python3.7-dev armhf 3.7.3-2+deb10u1 404 Not Found [IP: 93.93.128.193 80] E: Failed to fetch http://raspbian.raspberrypi.org/raspbian/pool/main/p/python3.7/libpython3.7-dev_3.7.3-2+deb10u1_armhf.deb 404 Not Found [IP: 93.93.128.193 80]

再次執行sudo apt-get update並部署您的元件。

Cannot open shared object file

當安裝程式指令碼在 Raspberry Pi 裝置上部署opencv-python期間無法下載必要的相依性時,您可能會看到類似下列的錯誤。

ImportError: libopenjp2.so.7: cannot open shared object file: No such file or directory

執行下列命令以手動安裝的相依性opencv-python

sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev

Error: ModuleNotFoundError: No module named '<library>'

當 ML 執行階段程式庫variant.DLR.log或其相依性未正確安裝時,您可能會在 ML 執行階段元件記錄檔 (或variant.TensorFlowLite.log) 中看到這個錯誤。在下列情況下,可能會發生此錯誤:

  • 如果您使用預設為啟用的UseInstaller選項,則此錯誤表示 ML 執行階段元件無法安裝執行階段或其相依性。請執行下列操作:

    1. 設定 ML 執行階段元件以停用UseInstaller此選項。

    2. 安裝 ML 執行階段及其相依性,並讓執行 ML 元件的系統使用者可以使用它們。如需詳細資訊,請參閱下列內容:

  • 如果您未使用此選UseInstaller項,則此錯誤表示 ML 執行階段或其相依性並未針對執行 ML 元件的系統使用者安裝。請執行下列操作:

    1. 檢查是否已為執行 ML 元件的系統使用者安裝程式庫。將 ggc_user 取代為系統使用者的名稱,並以要檢查的程式庫名稱取代 tflite_runtime

      Linux or Unix
      sudo -H -u ggc_user bash -c "python3 -c 'import tflite_runtime'"
      Windows
      runas /user:ggc_user "py -3 -c \"import tflite_runtime\""
    2. 如果未安裝程式庫,請為該使用者安裝它。將 ggc_user 取代為系統使用者的名稱,並以程式庫的名稱取代 tflite_runtime

      Linux or Unix
      sudo -H -u ggc_user bash -c "python3 -m pip install --user tflite_runtime"
      Windows
      runas /user:ggc_user "py -3 -m pip install --user tflite_runtime"

      如需有關每個 ML 執行階段之相依性的詳細資訊,請參閱下列內容:

    3. 如果問題仍然存在,請為其他使用者安裝程式庫,以確認此裝置是否可以安裝程式庫。使用者可以是例如,您的使用者、root 使用者或管理員使用者。如果您無法為任何使用者成功安裝程式庫,您的裝置可能不支援該程式庫。請參閱程式庫的文件,以檢閱需求並疑難排解安裝問題。

未偵測到具有 CUDA 功能的裝置

使用 GPU 加速時,您可能會看到下列錯誤。執行下列命令以啟用 Greengrass 使用者的 GPU 存取權。

sudo usermod -a -G video ggc_user

沒有這樣的文件或目錄

下列錯誤表示執行階段元件無法正確設定虛擬環境:

  • MLRootPath/greengrass_ml_dlr_conda/bin/conda: No such file or directory

  • MLRootPath/greengrass_ml_dlr_venv/bin/activate: No such file or directory

  • MLRootPath/greengrass_ml_tflite_conda/bin/conda: No such file or directory

  • MLRootPath/greengrass_ml_tflite_venv/bin/activate: No such file or directory

檢查記錄檔,確定所有執行階段相依性都已正確安裝。如需安裝程式指令碼所安裝之程式庫的詳細資訊,請參閱下列主題:

默認情況下 ML RootPath 設置為/greengrass/v2/work/component-name/greengrass_ml。若要變更此位置,請直接在部署中包含DLR 執行階段TensorFlow 精簡版運行執行階段元件,並在組態合併更新中指定MLRootPath參數的修改值。如需有關配置元件的更多資訊,請參閱更新零組件組態

注意

對於 DLR 組件 v1.3.x,您可以在推論元件的組態中設定MLRootPath參數,預設值為。$HOME/greengrass_ml

RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>

您可能會看到下列錯誤,當您運行機器學習推論上樹莓派作業系統靶心樹莓派.

RuntimeError: module compiled against API version 0xf but this version of numpy is 0xd ImportError: numpy.core.multiarray failed to import

發生此錯誤是因為樹莓派 OS 靶心包含 NumPy比 OpenCV 需要的版本的早期版本。若要修正此問題,請執行下列命令以升級 NumPy 至最新版本。

pip3 install --upgrade numpy

picamera.exc.PiCameraError: Camera is not enabled

您可能會看到下列錯誤,當您執行機器學習推論樹莓派上運行樹莓派作業系統靶心.

picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.

之所以發生此錯誤,是因為樹莓派 OS 靶心包含與 ML 元件不相容的新相機堆疊。若要修正此問題,請啟用舊式攝影機堆疊。

啟用舊式相機堆疊
  1. 運行以下命令以打開樹莓派配置工具。

    sudo raspi-config
  2. 選取介面選項

  3. 選取「舊式相機」以啟用舊式相機堆疊。

  4. 重新啟動 Raspberry Pi。

記憶體錯誤

當裝置沒有足夠的記憶體且元件程序中斷時,通常會發生下列錯誤。

  • stderr. Killed.

  • exitCode=137

我們建議您至少使用 500 MB 的記憶體來部署公用機器學習推論元件。

磁碟空間錯誤

no space left on device錯誤通常發生在設備沒有足夠的存儲空間時。請確定裝置上有足夠的可用磁碟空間,然後再次部署元件。我們建議至少有 500 MB 的可用磁碟空間來部署公用機器學習推論元件。

逾時錯誤

公用機器學習元件會下載大於 200 MB 的大型機器學習模型檔案。如果下載在部署期間逾時,請檢查網際網路連線速度,然後重試部署。