

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

# 預先檢查表格式資料的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck"></a>

我們建議您將模型部署到 SageMaker AI 即時推論端點，然後將請求傳送到端點。手動檢查請求和回應，以確定兩者都符合 [表格式資料的端點請求](clarify-processing-job-data-format-tabular-request.md) 區段和 [表格式資料的端點回應](clarify-processing-job-data-format-tabular-response.md) 區段中的需求。如果您的模型容器支援批次請求，您可以從單一記錄請求開始，然後嘗試兩個或更多記錄。

下列命令顯示如何使用請求回應 AWS CLI。 AWS CLI 已預先安裝在 SageMaker Studio 與 SageMaker 筆記本執行個體。若要安裝 AWS CLI，請遵循此[安裝指南](https://aws.amazon.com/cli/)。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

參數定義如下。
+ `$ENDPOINT NAME`— 端點的名稱。
+ `$CONTENT_TYPE` — 請求的 MIME 類型 (模型容器輸入)。
+ `$ACCEPT_TYPE` — 回應的 MIME 類型 (模型容器輸出)。
+ `$REQUEST_DATA`— 請求有效負載字串。
+ `$CLI_BINARY_FORMAT` - 命令列介面 (CLI) 參數的格式。對於 AWS CLI v1，此參數應保持空白。對於第 2 版，此參數應設定為 `--cli-binary-format raw-in-base64-out`。

**注意**  
AWS CLI v2 [預設會以](https://docs.aws.amazon.com/cli/latest/userguide/cliv2-migration.html#cliv2-migration-binaryparam) base64 編碼字串的形式傳遞二進位參數。

# AWS CLI v1 範例
<a name="clarify-processing-job-data-format-tabular-precheck-cli-v1-examples"></a>

上一節中的範例適用於 AWS CLI v2。下列來自端點的請求和回應範例使用 AWS CLI 第 1 版。

## CSV 格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-csv"></a>

在下列程式碼範例中，請求包含單一記錄，而回應就是其機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
```

在下列程式碼範例中，請求包含兩筆記錄，而回應會包含其機率 (以逗號分隔)。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-sagemaker-xgboost-model \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的程式碼範例中，`--body` 中的 `$'content'` 運算式會給出命令將內容中的 `'\n'` 解譯為分行符號。回應輸出如下。

```
0.6,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，回應會包含其機率，並以分行符號分隔。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
0.3
```

在下列程式碼範例中，請求包含單一記錄，而回應是來自包含三個類別之多類別模型的機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body '1,2,3,4' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.1,0.6,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應會包含來自包含三個類別之多類別模型的機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-1 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.1,0.6,0.3
0.2,0.5,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含預測標籤和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-2 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
1,0.6
0,0.3
```

在下列程式碼範例中，請求包含兩筆記錄，而回應則包含標籤標題和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-3 \
  --content-type text/csv \
  --accept text/csv \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
"['cat','dog','fish']","[0.1,0.6,0.3]"
"['cat','dog','fish']","[0.2,0.5,0.3]"
```

## JSON 行格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-jsonlines"></a>

在下列程式碼範例中，請求包含單一記錄，而回應就是其機率值。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body '{"features":["This is a good product",5]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"score":0.6}
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含預測標籤和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-2 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predicted_label":1,"probability":0.6}
{"predicted_label":0,"probability":0.3}
```

在下列程式碼範例中，請求包含兩筆記錄，而回應包含標籤標題和機率。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-3 \
  --content-type application/jsonlines \
  --accept application/jsonlines \
  --body $'{"data":{"features":[1,2,3,4]}}\n{"data":{"features":[5,6,7,8]}}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.1,0.6,0.3]}
{"predicted_labels":["cat","dog","fish"],"probabilities":[0.2,0.5,0.3]}
```

## 混合格式的端點請求和回應
<a name="clarify-processing-job-data-format-tabular-precheck-diff"></a>

在下列程式碼範例中，請求是 CSV 格式，回應是 JSON 行格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"probability":0.6}
{"probability":0.3}
```

在下列程式碼範例中，請求是 JSON 行格式，而回應是 CSV 格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-jsonlines-in-csv-out \
  --content-type application/jsonlines \
  --accept text/csv \
  --body $'{"features":[1,2,3,4]}\n{"features":[5,6,7,8]}' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
0.6
0.3
```

在下列程式碼範例中，請求為 CSV 格式，且回應作為 JSON 格式匯出格式。

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-csv-in-jsonlines-out \
  --content-type text/csv \
  --accept application/jsonlines \
  --body $'1,2,3,4\n5,6,7,8' \
  /dev/stderr 1>/dev/null
```

從先前的代碼範例中，回應輸出如下。

```
{"predictions":[{"label":1,"score":0.6},{"label":0,"score":0.3}]}
```