

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 기계 학습 추론 문제 해결
<a name="ml-troubleshooting"></a>

이 섹션의 문제 해결 정보와 해결 방법을 사용하여 기계 학습 구성 요소 관련 문제를 해결하세요. 퍼블릭 기계 학습 추론 구성 요소에 대해서는 다음 구성 요소 로그의 오류 메시지를 참조하세요.

------
#### [ 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`

------

구성 요소가 올바르게 설치된 경우 구성 요소 로그에는 추론에 사용하는 라이브러리의 위치가 포함됩니다.

**Topics**
+ [라이브러리를 가져오지 못함](#rpi-update-error)
+ [Cannot open shared object file](#rpi-import-cv-error)
+ [Error: ModuleNotFoundError: No module named '<library>'](#troubleshooting-venv-errors-not-found)
+ [CUDA 지원 디바이스가 감지되지 않음](#troubleshooting-cuda-error)
+ [해당 파일 또는 디렉터리 없음](#troubleshooting-venv-errors-no-such-file)
+ [RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>](#troubleshooting-rpi-numpy-version-error)
+ [picamera.exc.PiCameraError: Camera is not enabled](#troubleshooting-rpi-camera-stack-error)
+ [메모리 오류](#troubleshooting-memory-errors)
+ [디스크 공간 오류](#troubleshooting-disk-space-errors)
+ [제한 시간 오류](#troubleshooting-timeout-errors)

## 라이브러리를 가져오지 못함
<a name="rpi-update-error"></a>

다음 오류는 설치 관리자 스크립트에서 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
<a name="rpi-import-cv-error"></a>

설치 관리자 스크립트에서 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>'
<a name="troubleshooting-venv-errors-not-found"></a>

ML 런타임 라이브러리 또는 해당 종속성이 올바르게 설치되지 않은 경우 ML 런타임 구성 요소 로그(`variant.DLR.log` 또는 `variant.TensorFlowLite.log`)에 이 오류가 표시될 수 있습니다. 이 오류는 다음 경우에 발생할 수 있습니다.
+ 기본적으로 활성화되는 `UseInstaller` 옵션을 사용하는 경우 이 오류는 ML 런타임 구성 요소가 런타임 또는 해당 종속성을 설치하지 못했음을 나타냅니다. 해결 방법:

  1. `UseInstaller` 옵션을 비활성화하도록 ML 런타임 구성 요소를 구성합니다.

  1. ML 런타임과 해당 종속성을 설치하고 ML 구성 요소를 실행하는 시스템 사용자가 사용할 수 있도록 합니다. 자세한 내용은 다음을 참조하세요.
     + [DLR 런타임 UseInstaller 옵션](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlow Lite 런타임 UseInstaller 옵션](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)
+ `UseInstaller` 옵션을 사용하지 않는 경우 이 오류는 ML 런타임 또는 해당 종속 항목이 ML 구성 요소를 실행하는 시스템 사용자에 대해 설치되지 않았음을 나타냅니다. 해결 방법:

  1. ML 구성 요소를 실행하는 시스템 사용자에 대해 라이브러리가 설치되어 있는지 확인합니다. *ggc\$1user*를 시스템 사용자의 이름으로 바꾸고 *tflite\$1runtime*을 확인할 라이브러리의 이름으로 바꿉니다.

------
#### [ 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\""
     ```

------

  1. 라이브러리가 설치되지 않은 경우 해당 사용자에 대해 라이브러리를 설치합니다. *ggc\$1user*를 시스템 사용자의 이름으로 바꾸고 *tflite\$1runtime*을 라이브러리의 이름으로 바꿉니다.

------
#### [ 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 런타임의 종속성에 대한 자세한 내용은 다음을 참조하세요.
     + [DLR 런타임 UseInstaller 옵션](dlr-component.md#dlr-component-config-useinstaller-term)
     + [TensorFlow Lite 런타임 UseInstaller 옵션](tensorflow-lite-component.md#tensorflow-lite-component-config-useinstaller-term)

  1. 문제가 지속되는 경우 다른 사용자에 대해 라이브러리를 설치하여 이 디바이스가 라이브러리를 설치할 수 있는지 확인합니다. 예를 들어 사용자는 사용자, 루트 사용자 또는 관리 사용자일 수 있습니다. 어떤 사용자에 대해서도 라이브러리를 설치할 수 없는 경우 디바이스가 라이브러리를 지원하지 않을 수 있습니다. 라이브러리 설명서를 참조하여 요구 사항을 검토하고 설치 문제를 해결합니다.

## CUDA 지원 디바이스가 감지되지 않음
<a name="troubleshooting-cuda-error"></a>

GPU 가속화를 사용하면 다음 오류가 발생할 수 있습니다. 다음 명령을 실행하여 Greengrass 사용자의 GPU 액세스를 활성화합니다.

```
sudo usermod -a -G video ggc_user
```

## 해당 파일 또는 디렉터리 없음
<a name="troubleshooting-venv-errors-no-such-file"></a>

다음 오류는 런타임 구성 요소가 가상 환경을 올바르게 설정할 수 없음을 나타냅니다.
+ `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 `

로그를 확인하여 모든 런타임 종속성이 올바르게 설치되었는지 확인합니다. 설치 관리자 스크립트에서 설치한 라이브러리에 대한 자세한 내용은 다음 주제를 참조하세요.
+ [DLR 런타임](dlr-component.md)
+ [TensorFlow Lite 런타임](tensorflow-lite-component.md)

기본적으로 *MLRootPath*는 `/greengrass/v2/work/component-name/greengrass_ml`로 설정됩니다. 이 위치를 변경하려면 배포에 [DLR 런타임](dlr-component.md) 또는 [TensorFlow Lite 런타임](tensorflow-lite-component.md) 런타임 구성 요소를 직접 포함시키고 구성 병합 업데이트에서 `MLRootPath` 파라미터에 수정된 값을 지정합니다. 구성 요소 구성에 대한 자세한 내용은 [구성 요소 구성 업데이트](update-component-configurations.md) 섹션을 참조하세요.

**참고**  
DLR 구성 요소 v1.3.x의 경우 추론 구성 요소의 구성에서 `MLRootPath` 파라미터를 설정하며 기본값은 `$HOME/greengrass_ml`입니다.

## RuntimeError: module compiled against API version 0xf but this version of NumPy is <version>
<a name="troubleshooting-rpi-numpy-version-error"></a>

Raspberry Pi OS Bullseye를 실행하는 Raspberry Pi에서 기계 학습 추론을 실행할 때 다음 오류가 표시될 수 있습니다.

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

이 오류는 Raspberry Pi OS Bullseye에 OpenCV에 필요한 버전보다 이전 버전의 NumPy가 포함되어 있기 때문에 발생합니다. 이 문제를 해결하려면 다음 명령을 실행하여 NumPy를 최신 버전으로 업그레이드합니다.

```
pip3 install --upgrade numpy
```

## picamera.exc.PiCameraError: Camera is not enabled
<a name="troubleshooting-rpi-camera-stack-error"></a>

Raspberry Pi OS Bullseye를 실행하는 Raspberry Pi에서 기계 학습 추론을 실행할 때 다음 오류가 표시될 수 있습니다.

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

이 오류는 Raspberry Pi OS Bullseye에 ML 구성 요소와 호환되지 않는 새 카메라 스택이 포함되어 있기 때문에 발생합니다. 이 문제를 해결하려면 레거시 카메라 스택을 활성화합니다.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**레거시 카메라 스택을 활성화하려면**

1. 다음 명령을 실행하여 Raspberry Pi 구성 도구를 엽니다.

   ```
   sudo raspi-config
   ```

1. **인터페이스 옵션**을 선택합니다.

1. **레거시 카메라**를 선택하여 레거시 카메라 스택을 활성화합니다.

1. Raspberry Pi를 재부팅합니다.

## 메모리 오류
<a name="troubleshooting-memory-errors"></a>

다음 오류는 일반적으로 디바이스에 메모리가 충분하지 않고 구성 요소 프로세스가 중단될 때 발생합니다.
+ `stderr. Killed.`
+ `exitCode=137`

퍼블릭 기계 학습 추론 구성 요소를 배포하려면 최소 500MB의 메모리를 사용하는 것이 좋습니다.

## 디스크 공간 오류
<a name="troubleshooting-disk-space-errors"></a>

`no space left on device` 오류는 일반적으로 디바이스에 스토리지가 부족할 때 발생합니다. 구성 요소를 다시 배포하기 전에 디바이스에 사용 가능한 디스크 공간이 충분한지 확인합니다. 퍼블릭 기계 학습 추론 구성 요소를 배포하려면 최소 500MB의 빈 디스크 공간을 사용하는 것이 좋습니다.

## 제한 시간 오류
<a name="troubleshooting-timeout-errors"></a>

퍼블릭 기계 학습 구성 요소는 200MB보다 큰 기계 학습 모델 파일을 다운로드합니다. 배포 중에 다운로드 시간이 초과되면 인터넷 연결 속도를 확인하고 배포를 다시 시도하세요.