

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

# 오류 문제 해결
<a name="neo-troubleshooting"></a>

이 섹션에는 일반적인 오류를 파악해 방지하는 방법, 오류로 인해 생성되는 오류 메시지와 오류 해결 방법에 대한 지침이 나와 있습니다. 계속 진행하기 전에 다음 질문을 스스로 해보세요.

 **모델을 배포하기 전에 오류가 발생했나요?** 그렇다면 [Neo 컴파일 오류 문제 해결](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html)을 참조하세요.

 **모델을 컴파일한 후 오류가 발생했나요?** 그렇다면 [Neo 추론 오류 문제 해결](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-inference.html)을 참조하세요.

**Ambarella 장치용 모델을 컴파일하는 중 오류가 발생했습니까?** 그렇다면 [Ambarella 오류 문제 해결](neo-troubleshooting-target-devices-ambarella.md) 섹션을 참조하세요.

## 오류 분류 유형
<a name="neo-error-messages"></a>

이 목록에는 Neo에서 발생할 수 있는 *사용자 오류*가 분류되어 있습니다. 여기에는 지원되는 각 프레임워크에 대한 액세스 및 권한 오류와 로드 오류가 포함되어 있습니다. 기타 모든 오류는 *시스템 오류*입니다.

### 클라이언트 권한 오류
<a name="neo-error-client-permission"></a>

 Neo는 종속 서비스를 통해 직접 오류를 전달합니다.
+ sts:AssumeRole 호출 시 *액세스 거부됨*
+ 클라이언트 모델 다운로드 또는 업로드를 위해 Amazon S3 호출 시 발생하는 *모든 400* 오류
+ *PassRole* 오류

### 로드 오류
<a name="collapsible-section-2"></a>

Neo 컴파일러가 Amazon S3에서 .tar.gz를 성공적으로 로드했다고 가정하고 tarball에 컴파일에 필요한 파일이 포함되어 있는지 확인하세요. 확인 기준은 프레임워크별로 다릅니다.
+ **TensorFlow**: protobuf 파일(\$1.pb 또는 \$1.pbtxt)만 필요합니다. 저장된 모델의 경우 변수 폴더가 하나 필요합니다.
+ **Pytorch**: pytorch 파일(\$1.pth)이 하나만 필요합니다.
+ **MXNET**: 기호 파일(\$1.json)과 파라미터 파일(\$1.params)이 하나씩 필요합니다.
+ **XGBoost**: XGBoost 모델 파일(\$1.model) 하나만 필요합니다. 입력 모델에는 크기 제한이 있습니다.

### 컴파일 오류
<a name="neo-error-compilation"></a>

Neo 컴파일러가 Amazon S3에서 .tar.gz를 성공적으로 로드했다고 가정하고 tarball에 컴파일에 필요한 파일이 포함되어 있는지 확인하세요. 확인 기준은 다음과 같습니다.
+ **OperatorNotImplemented**: 연산자가 구현되지 않았습니다.
+ **OperatorAttributeNotImplemented**: 지정된 연산자의 속성이 구현되지 않았습니다.
+ **OperatorAttributeRequired**: 속성이 내부 기호 그래프에 필요하지만 사용자 입력 모델 그래프에 나열되지 않았습니다.
+ **OperatorAttributeValueNotValid**: 특정 연산자의 속성 값이 유효하지 않습니다.

**Topics**
+ [오류 분류 유형](#neo-error-messages)
+ [Neo 컴파일 오류 문제 해결](neo-troubleshooting-compilation.md)
+ [네오 추론 오류 문제 해결](neo-troubleshooting-inference.md)
+ [Ambarella 오류 문제 해결](neo-troubleshooting-target-devices-ambarella.md)

# Neo 컴파일 오류 문제 해결
<a name="neo-troubleshooting-compilation"></a>

이 섹션에는 일반적인 컴파일 오류를 파악해 방지하는 방법, 오류로 인해 생성되는 오류 메시지와 오류 해결 방법에 대한 지침이 나와 있습니다.

**Topics**
+ [이 페이지 사용 방법](#neo-troubleshooting-compilation-how-to-use)
+ [프레임워크 관련 오류](#neo-troubleshooting-compilation-framework-related-errors)
+ [인프라 관련 오류](#neo-troubleshooting-compilation-infrastructure-errors)
+ [컴파일 로그를 확인하세요.](#neo-troubleshooting-compilation-logs)

## 이 페이지 사용 방법
<a name="neo-troubleshooting-compilation-how-to-use"></a>

다음 순서대로 이 섹션을 검토하여 오류를 해결해 보세요.

1. 컴파일 작업의 입력이 입력 요구 사항을 충족하는지 확인하세요. [SageMaker Neo에 필요한 입력 데이터 형태는 무엇입니까?](neo-compilation-preparing-model.md#neo-job-compilation-expected-inputs) 섹션을 참조하세요

1.  일반적인 [프레임워크별 오류](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-framework-related-errors)를 확인하세요.

1.  오류가 [인프라 오류](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-infrastructure-errors)인지 확인하세요.

1. [컴파일 로그](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html#neo-troubleshooting-compilation-logs)를 확인하세요.

## 프레임워크 관련 오류
<a name="neo-troubleshooting-compilation-framework-related-errors"></a>

### Keras
<a name="neo-troubleshooting-compilation-framework-related-errors-keras"></a>


| 오류 | Solution | 
| --- | --- | 
|   `InputConfiguration: No h5 file provided in <model path>`   |   h5 파일이 지정한 Amazon S3 URI에 있는지 확인합니다. *또는* [h5 파일의 형식이 올바른지](https://www.tensorflow.org/guide/keras/save_and_serialize#keras_h5_format) 확인하세요.  | 
|   `InputConfiguration: Multiple h5 files provided, <model path>, when only one is allowed`   |  `h5` 파일을 하나만 제공하고 있는지 확인하세요.  | 
|   `ClientError: InputConfiguration: Unable to load provided Keras model. Error: 'sample_weight_mode'`   |  지정한 Keras 버전이 지원되는지 확인하세요. [클라우드 인스턴스](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-cloud.html) 및 [엣지 디바이스](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-supported-devices-edge.html)에 지원되는 프레임워크를 참조하세요.  | 
|   `ClientError: InputConfiguration: Input input has wrong shape in Input Shape dictionary. Input shapes should be provided in NCHW format. `   |   모델 입력이 NCHW 형식을 따르는지 확인하세요. [SageMaker Neo에 필요한 입력 데이터 셰이프는 무엇입니까?](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation.html#neo-job-compilation-expected-inputs)를 참조하세요.  | 

### MXNet
<a name="neo-troubleshooting-compilation-framework-related-errors-mxnet"></a>


| 오류 | Solution | 
| --- | --- | 
|   `ClientError: InputConfiguration: Only one parameter file is allowed for MXNet model. Please make sure the framework you select is correct.`   |   SageMaker Neo는 컴파일을 위해 주어진 첫 번째 파라미터 파일을 선택합니다.  | 

### TensorFlow
<a name="neo-troubleshooting-compilation-framework-related-errors-tensorflow"></a>


| 오류 | Solution | 
| --- | --- | 
|   `InputConfiguration: Exactly one .pb file is allowed for TensorFlow models.`   |  .pb 또는 .pbtxt 파일을 하나만 제공해야 합니다.  | 
|  `InputConfiguration: Exactly one .pb or .pbtxt file is allowed for TensorFlow models.`  |  .pb 또는 .pbtxt 파일을 하나만 제공해야 합니다.  | 
|   ` ClientError: InputConfiguration: TVM cannot convert <model zoo> model. Please make sure the framework you selected is correct. The following operators are not implemented: {<operator name>} `   |   선택한 연산자가 지원되는지 확인하세요. [SageMaker Neo 지원 프레임워크 및 연산자](https://aws.amazon.com/releasenotes/sagemaker-neo-supported-frameworks-and-operators/)를 참조하세요.  | 

### PyTorch
<a name="neo-troubleshooting-compilation-framework-related-errors-pytorch"></a>


| 오류 | Solution | 
| --- | --- | 
|   `InputConfiguration: We are unable to extract DataInputConfig from the model due to input_config_derivation_error. Please override by providing a DataInputConfig during compilation job creation.`  |  다음 중 하나를 수행하세요. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/neo-troubleshooting-compilation.html)  | 

## 인프라 관련 오류
<a name="neo-troubleshooting-compilation-infrastructure-errors"></a>


| 오류 | Solution | 
| --- | --- | 
|   `ClientError: InputConfiguration: S3 object does not exist. Bucket: <bucket>, Key: <bucket key>`   |  제공한 Amazon S3 URI를 확인하세요.  | 
|   ` ClientError: InputConfiguration: Bucket <bucket name> is in region <region name> which is different from AWS Sagemaker service region <service region> `   |   서비스와 동일한 리전의 Amazon S3 버킷을 생성합니다.  | 
|   ` ClientError: InputConfiguration: Unable to untar input model. Please confirm the model is a tar.gz file `   |   Amazon S3의 모델이 `tar.gz` 파일로 압축되었는지 확인합니다.  | 

## 컴파일 로그를 확인하세요.
<a name="neo-troubleshooting-compilation-logs"></a>

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 Amazon CloudWatch로 이동합니다.

1. 컴파일 작업을 생성한 리전을 오른쪽 상단 **리전** 드롭다운 목록에서 선택합니다.

1. Amazon CloudWatch의 탐색 창에서 **로그**를 선택합니다. **로그 그룹**을 선택합니다.

1. `/aws/sagemaker/CompilationJobs` 로그 그룹을 검색합니다. 로그 그룹을 선택합니다.

1. 컴파일 작업 이름을 따서 이름이 지정된 로그 스트림을 검색합니다. 로그 스트림을 선택합니다.

# 네오 추론 오류 문제 해결
<a name="neo-troubleshooting-inference"></a>

이 섹션에는 엔드포인트 배포 및/또는 호출 시 발생할 수 있는 몇 가지 일반적인 오류를 예방하고 해결하는 방법에 대한 정보가 포함되어 있습니다. 이 섹션은 **PyTorch 1.4.0 이상** 및 **MXnet v1.7.0 이상**에 적용됩니다.
+ 추론 스크립트에서 `model_fn`를 정의한 경우 검증 입력 데이터에 대한 첫 번째 추론(웜업 추론)이 `model_fn()`에서 수행되었는지 확인하세요. 그렇지 않으면 [https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict](https://sagemaker.readthedocs.io/en/stable/api/inference/predictors.html#sagemaker.predictor.Predictor.predict) 호출 시 터미널에 다음 오류 메시지가 표시될 수 있습니다.

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from <users-sagemaker-endpoint> with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."                
  ```
+ 다음 표의 환경 변수가 설정되어 있는지 확인하세요. 설정되지 않은 경우 다음과 같은 오류 메시지가 표시될 수 있습니다.

  **터미널에서:**

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (503) from <users-sagemaker-endpoint> with message "{ "code": 503, "type": "InternalServerException", "message": "Prediction failed" } ".
  ```

  **CloudWatch에서:**

  ```
  W-9001-model-stdout com.amazonaws.ml.mms.wlm.WorkerLifeCycle - AttributeError: 'NoneType' object has no attribute 'transform'
  ```    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/neo-troubleshooting-inference.html)
+ Amazon SageMaker AI 모델을 만드는 동안 `MMS_DEFAULT_RESPONSE_TIMEOUT` 환경 변수가 500 이상의 값으로 설정되어 있어야 합니다. 그렇지 않으면 터미널에 다음 오류 메시지가 표시될 수 있습니다.

  ```
  An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from <users-sagemaker-endpoint> with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."
  ```

# Ambarella 오류 문제 해결
<a name="neo-troubleshooting-target-devices-ambarella"></a>

SageMaker Neo를 사용하려면 모델을 압축된 TAR 파일(`*.tar.gz`)로 패키징해야 합니다. Ambarella 장치는 컴파일을 위해 전송하기 전에 압축된 TAR 파일 내에 추가 파일을 포함해야 합니다. SageMaker Neo를 사용하여 Ambarella 타겟용 모델을 컴파일하려면 압축된 TAR 파일 내에 다음 파일을 포함하세요.
+ SageMaker Neo에서 지원하는 프레임워크를 사용하는 훈련된 모델 
+ JSON 구성 파일
+ 보정 이미지

예를 들어 압축된 TAR 파일의 내용은 다음 예제와 비슷해야 합니다.

```
├──amba_config.json
├──calib_data
|    ├── data1
|    ├── data2
|    ├── .
|    ├── .
|    ├── .
|    └── data500
└──mobilenet_v1_1.0_0224_frozen.pb
```

디렉토리는 다음과 같이 구성됩니다.
+ `amba_config.json`: 구성 파일
+ `calib_data`: 보정 이미지가 포함된 폴더
+ `mobilenet_v1_1.0_0224_frozen.pb`: 프로즌 그래프로 저장된 TensorFlow 모델

SageMaker Neo에서 지원하는 프레임워크에 대한 추가 정보는 [지원되는 프레임워크](neo-supported-devices-edge-frameworks.md) 섹션을 참조하세요.

## 구성 파일 설정
<a name="neo-troubleshooting-target-devices-ambarella-config"></a>

구성 파일은 Ambarella 툴체인이 모델을 컴파일하는 데 필요한 정보를 제공합니다. 구성 파일은 JSON 파일로 저장해야 하며 파일 이름은 반드시 `*config.json`로 끝나야 합니다. 다음 차트는 구성 파일의 콘텐츠를 보여줍니다.


| Key(키) | 설명 | 예제 | 
| --- | --- | --- | 
| 입력 | 입력 계층을 속성에 매핑하는 사전 | <pre>{inputs:{"data":{...},"data1":{...}}}</pre> | 
| “데이터” | 입력 계층 이름. 참고: “data”는 입력 계층에 레이블을 지정하는 데 사용할 수 있는 이름의 예입니다. | “데이터” | 
| 셰이프 | 모델에 입력되는 입력의 형태를 설명합니다. 이는 SageMaker Neo가 사용하는 것과 동일한 규칙을 따릅니다. | “셰이프”: “1,3,224,224" | 
| 파일 경로 | 보정 이미지가 들어 있는 디렉토리의 상대 경로. JPG 또는 PNG와 같은 바이너리 또는 이미지 파일일 수 있습니다. | “파일 경로”: “calib\$1data/” | 
| 컬러 포맷 | 모델에 필요한 색상 형식. 이미지를 바이너리로 변환할 때 사용됩니다. 지원되는 값: [RGB, BGR]. 기본값은 RGB입니다. | “컬러 포맷”: “RGB” | 
| 평균 | 입력값에서 뺄 평균값입니다. 단일 값 또는 값 목록일 수 있습니다. 평균이 목록으로 제공되는 경우 항목 수는 입력의 채널 차원과 일치해야 합니다. | “평균”: 128.0 | 
| 사용 | 입력을 정규화하는 데 사용할 스케일 값입니다. 단일 값 또는 값 목록일 수 있습니다. 스케일이 목록으로 제공되는 경우 항목 수는 입력의 채널 크기와 일치해야 합니다. | “스케일”: 255.0 | 

다음은 구성 파일 예제입니다.

```
{
    "inputs": {
        "data": {
                "shape": "1, 3, 224, 224",
                "filepath": "calib_data/",
                "colorformat": "RGB",
                "mean":[128,128,128],
                "scale":[128.0,128.0,128.0]
        }
    }
}
```

## 보정 이미지
<a name="neo-troubleshooting-target-devices-ambarella-calibration-images"></a>

보정 이미지를 제공하여 훈련된 모델을 양자화합니다. 모델을 양자화하면 Ambarella SoC(시스템 온 칩) 의 CVFlow 엔진 성능이 향상됩니다. Ambarella 툴체인은 보정 이미지를 사용하여 최적의 성능과 정확도를 달성하기 위해 모델의 각 계층을 양자화하는 방법을 결정합니다. 각 계층은 INT8 또는 INT16 형식으로 독립적으로 양자화됩니다. 최종 모델에는 양자화 후 INT8 계층과 INT16 계층이 혼합되어 있습니다.

**몇 개의 이미지를 사용해야 할까요?**

모델이 처리할 것으로 예상되는 장면 유형을 나타내는 이미지를 100\$1200개 정도 포함하는 것이 좋습니다. 모델 컴파일 시간은 입력 파일의 보정 이미지 수에 따라 선형적으로 증가합니다.

**권장 이미지 형식은 무엇입니까?**

보정 이미지는 원시 바이너리 형식이거나 JPG 및 PNG와 같은 이미지 형식일 수 있습니다.

보정 폴더에는 이미지와 바이너리 파일이 혼합되어 포함될 수 있습니다. 보정 폴더에 이미지와 바이너리 파일이 모두 들어 있는 경우 툴체인은 먼저 이미지를 바이너리 파일로 변환합니다. 변환이 완료되면 새로 생성된 바이너리 파일을 원래 폴더에 있던 바이너리 파일과 함께 사용합니다.

**먼저 이미지를 바이너리 형식으로 변환할 수 있나요?**

예. [OpenCV](https://opencv.org/) 또는 [PIL](https://python-pillow.org/)과 같은 오픈 소스 패키지를 사용하여 이미지를 바이너리 형식으로 변환할 수 있습니다. 훈련된 모델의 입력 계층에 맞도록 이미지를 자르고 크기를 조정합니다.



## 평균 및 척도
<a name="neo-troubleshooting-target-devices-ambarella-mean-scale"></a>

Amberalla 툴체인에 평균 및 스케일링 전처리 옵션을 지정할 수 있습니다. 이러한 연산은 네트워크에 내장되며 각 입력에 대한 추론 중에 적용됩니다. 평균이나 척도를 지정하는 경우 처리된 데이터를 제공하지 마세요. 더 구체적으로 말하자면, 평균을 빼거나 스케일링을 적용한 데이터는 제공하지 마세요.

## 컴파일 로그를 확인하세요.
<a name="neo-troubleshooting-target-devices-ambarella-compilation"></a>

Ambarella 장치의 컴파일 로그를 확인하는 방법에 대한 추가 정보는 [컴파일 로그를 확인하세요.](neo-troubleshooting-compilation.md#neo-troubleshooting-compilation-logs) 섹션을 참조하세요.