

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# SageMaker Panduan Pemecahan Masalah Python SDK
<a name="sagemaker-python-sdk-troubleshooting"></a>

Anda dapat menggunakan SageMaker Python SDK untuk berinteraksi dengan Amazon SageMaker AI dalam skrip Python atau notebook Jupyter Anda. Meskipun SDK menyediakan alur kerja yang disederhanakan, Anda mungkin menemukan berbagai pengecualian atau kesalahan. Panduan pemecahan masalah ini bertujuan untuk membantu Anda memahami dan menyelesaikan masalah umum yang mungkin timbul saat bekerja dengan Python SageMaker SDK. Ini mencakup skenario yang terkait dengan menciptakan pekerjaan pelatihan, pekerjaan pemrosesan, dan titik akhir, serta praktik penanganan pengecualian umum. Dengan mengikuti panduan yang diberikan di bagian berikut, Anda dapat secara efektif mendiagnosis dan mengatasi masalah umum.

 SageMaker Python SDK bertindak sebagai pembungkus untuk operasi API tingkat rendah. SageMaker Peran IAM yang Anda gunakan untuk mengakses SDK harus dapat mengakses operasi yang mendasarinya. Menambahkan Kebijakan Akses Penuh SageMaker AI ke peran IAM Anda adalah cara paling mudah untuk memastikan Anda memiliki izin untuk menggunakan Python SDK. SageMaker Untuk informasi selengkapnya tentang Kebijakan Akses Penuh SageMaker AI, lihat [Amazon SageMaker AI Full Access](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html).

Meskipun kurang nyaman, memberikan izin yang lebih terperinci adalah pendekatan yang aman untuk menggunakan SDK. Masing-masing bagian berikut memiliki informasi tentang izin yang diperlukan.

## Buat Training Job
<a name="sagemaker-python-sdk-troubleshooting-create-training-job"></a>

**penting**  
Jika Anda tidak menambahkan kebijakan Akses Penuh SageMaker AI ke peran IAM Anda, itu harus memiliki izin untuk memanggil [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)dan [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)operasi.  
Hal ini juga membutuhkan izin untuk:  
Akses input/output data di S3
Jalankan instans Amazon EC2
 CloudWatch Metrik log
Jika tugas SageMaker pelatihan Anda perlu mengakses sumber daya di Amazon Virtual Private Cloud (Amazon VPC), pastikan Anda mengonfigurasi pengaturan VPC dan grup keamanan yang diperlukan saat membuat pekerjaan pemrosesan.

Saat Anda membuat pekerjaan pelatihan, Anda mungkin mengalami `botocore.exceptions.ClientError` atau `ValueError` pengecualian.

------
#### [ ValueError ]

`ValueError`pengecualian terjadi ketika ada masalah dengan nilai atau parameter yang Anda kirimkan ke suatu fungsi. Gunakan daftar berikut untuk melihat contoh `ValueError` pengecualian dan cara memperbaikinya.
+ `ValueError: either image_uri or algorithm_arn is required. None was provided`:
  + Jika Anda menggunakan `AlgorithmEstimator` fungsi ini, berikan`algorithm_arn`.
  + Jika Anda menggunakan `Estimator` fungsi ini, berikan`estimator_arn`.
+ `ValueError: Unknown input channel: train is not supported by: scikit-decision-trees-15423055-57b73412d2e93e9239e4e16f83298b8f`

  Anda mendapatkan kesalahan ini ketika Anda memberikan saluran input yang tidak valid. Saluran input adalah sumber data atau parameter yang diharapkan model.

  Di [Jenis Algoritma](algorithms-choose.md) halaman, Anda dapat menavigasi ke model untuk menemukan informasi tentang saluran input model.

  Anda juga dapat menemukan informasi tentang saluran input dalam bagian **Penggunaan** pada AWS Marketplace halaman algoritme.

  Gunakan prosedur berikut untuk mendapatkan informasi tentang saluran input algoritma.

**Untuk mendapatkan informasi tentang saluran input algoritma**

  1. Arahkan ke [konsol SageMaker AI](https://console.aws.amazon.com/sagemaker).

  1. **Di navigasi sebelah kiri, pilih Pelatihan.**

  1. Pilih **Algoritma.**

  1. Pilih **Temukan algoritma**.

  1. Temukan algoritma Anda dalam daftar yang dihasilkan.

  1. Pilih tab **Penggunaan**.

  1. Arahkan ke judul **spesifikasi Saluran**.

------
#### [ botocore.exceptions.ClientError ]

`botocore.exceptions.ClientError`pengecualian terjadi ketika AWS layanan yang mendasari melempar pengecualian. Ini bisa disebabkan oleh berbagai alasan seperti parameter yang salah, masalah izin, atau kendala sumber daya. Gunakan daftar berikut untuk konteks `botocore.exceptions.ClientError` pengecualian dan informasi tentang cara memperbaikinya.
+ `ResourceLimitExceeded`— AWS Akun Anda tidak memiliki akses ke instans Amazon EC2 yang diperlukan untuk menjalankan pekerjaan pelatihan. Untuk mendapatkan akses, mintalah peningkatan kuota. Untuk informasi tentang peningkatan kuota, lihat [Service](https://docs.aws.amazon.com/general/latest/gr/sagemaker.html#limits_sagemaker) Quotas. Gunakan daftar berikut untuk informasi tentang `botocore.exceptions.ClientError` pengecualian.
+ `ValidationException`— Pengecualian validasi muncul ketika Anda menggunakan jenis instans Amazon EC2 yang salah untuk pekerjaan pelatihan. Mereka juga dapat muncul ketika peran IAM yang Anda gunakan tidak memiliki izin untuk pekerjaan pelatihan.

------

## Memperbarui Training Job
<a name="sagemaker-python-sdk-troubleshooting-update-training-job"></a>

**penting**  
Jika Anda tidak menambahkan Kebijakan Terkelola SageMaker AI ke peran IAM, Anda harus memberikan akses peran ke izin berikut:  
`s3:GetObject`— Memberikan izin untuk membaca artefak model dari ember Amazon S3
`s3:PutObject`— Jika berlaku, berikan izin untuk menulis pembaruan ke artefak model
`iam:GetRole`— Memberikan izin untuk mendapatkan informasi tentang peran IAM yang diperlukan untuk menjalankan pekerjaan pelatihan
`sagemaker:UpdateTrainingJob`— Memberikan izin untuk memodifikasi pekerjaan pelatihan menggunakan [UpdateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_UpdateTrainingJob.html)operasi.
`logs:PutLogEvents`— Memberikan izin untuk menulis log ke CloudWatch log Amazon selama proses pembaruan.

Saat Anda memperbarui pekerjaan pelatihan, Anda mungkin mengalami a `botocore.exceptions.ParamValidationError` atau a`botocore.exceptions.ClientError`.

------
#### [ botocore.exceptions.ClientError ]

Ini `ClientError` memiliki pesan berikut:

```
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the UpdateTrainingJob operation: Invalid UpdateTrainingJobRequest, the request cannot be empty            
```

Jika Anda mengalami kesalahan ini, Anda harus menyertakan salah satu parameter berikut bersama dengan nama pekerjaan pelatihan:
+ `profiler_rule_configs`(list) — Daftar konfigurasi aturan profiler. Secara default, tidak ada konfigurasi aturan profiler.
+ `profiler_config`(dict) - Konfigurasi untuk SageMaker AI Profiler mengumpulkan metrik dan mengirimkannya. Secara default, tidak ada konfigurasi profiler.
+ `resource_config`(dict) — Konfigurasi untuk sumber daya pekerjaan pelatihan. Anda dapat memperbarui periode keep-alive jika status kolam hangat adalah. `Available` Tidak ada bidang lain yang dapat diperbarui.
+ `remote_debug_config`(dict) — Konfigurasi untuk`RemoteDebug`. Kamus dapat berisi `EnableRemoteDebug` (bool). 

------
#### [ botocore.exceptions.ParamValidationError ]

Ini `botocore.exceptions.ParamValidationError` memiliki kesalahan berikut:

```
botocore.exceptions.ParamValidationError: Parameter validation failed:
Invalid type for parameter ProfilerRuleConfigurations, value: {'DisableProfiler': False}, type: <class 'dict'>, valid types: <class 'list'>, <class 'tuple'>
```

Pengecualian ini dapat terjadi jika parameter tidak disediakan dalam format yang diharapkan oleh `update_training_job` fungsi. Misalnya, ia mengharapkan `profiler_rule_configs` parameter menjadi daftar. Jika parameter diteruskan sebagai kamus sebagai gantinya, itu menimbulkan kesalahan.

------

## Buat Processing Job
<a name="sagemaker-python-sdk-troubleshooting-create-processing-job"></a>

**penting**  
Jika Anda tidak menambahkan Kebijakan Terkelola SageMaker AI ke peran IAM, Anda harus memberikan akses peran ke izin berikut:  
`sagemaker:CreateProcessingJob`— Memberikan izin untuk membuat pekerjaan pemrosesan
`sagemaker:DescribeProcessingJob`— Memberikan izin untuk mendapatkan informasi tentang pekerjaan pemrosesan
`s3:GetObject`— Memberikan izin untuk membaca artefak model dari ember Amazon S3
`s3:PutObject`— Jika berlaku, berikan izin untuk menulis pembaruan ke artefak model
`logs:PutLogEvents`— Memberikan izin untuk menulis log ke CloudWatch log Amazon selama proses pembaruan.
Jika tugas pemrosesan Anda perlu mengakses sumber daya dalam Amazon Virtual Private Cloud, Anda harus menentukan `security_group_ids` dan `subnets` di dalam estimator yang Anda buat. Untuk contoh cara mengakses sumber daya dalam VPC Amazon, lihat [Pelatihan Aman dan Inferensi dengan](https://sagemaker.readthedocs.io/en/stable/overview.html#secure-training-and-inference-with-vpc) VPC.

Saat Anda membuat pekerjaan pemrosesan, Anda mungkin mengalami a`ValueError`, an`UnexpectedStatusException`, atau a`botocore.exceptions.ClientError`.

------
#### [ ValueError ]

Berikut ini adalah contoh dari `ValueError`:

```
ValueError: code preprocess.py wasn't found. Please make sure that the file exists.           
```

Jalur yang Anda tentukan tidak benar. Anda dapat menentukan jalur relatif atau jalur absolut ke file skrip Anda. Untuk informasi selengkapnya tentang menentukan jalur ke file Anda, lihat [sagemaker.processing. RunArgs](https://sagemaker.readthedocs.io/en/stable/api/training/processing.html#sagemaker.processing.RunArgs).

------
#### [ UnexpectedStatusException ]

Berikut ini adalah contoh dari`UnexpectedStatusException`:

```
UnexpectedStatusException: Error for Processing job sagemaker-scikit-learn-2024-07-02-14-08-55-993: Failed. Reason: AlgorithmError: , exit code: 1           
```

Penelusuran balik yang menyertai pengecualian dapat membantu Anda mengidentifikasi akar penyebabnya:

```
Traceback (most recent call last):
  File "/opt/ml/processing/input/code/preprocessing.py", line 51, in <module>
    df = pd.read_csv(input_data_path)
  .
  .
  .
  File "pandas/_libs/parsers.pyx", line 689, in pandas._libs.parsers.TextReader._setup_parser_source
FileNotFoundError: [Errno 2] File b'/opt/ml/processing/input/census-income.csv' does not exist: b'/opt/ml/processing/input/census-income.csv'
```

Kesalahan `"FileNotFoundError: [Errno 2] File b'/opt/ml/processing/input/census-income.csv' does not exist"` menunjukkan bahwa file input `census-income.csv` tidak ditemukan di jalur yang ditentukan`/opt/ml/processing/input/`. Verifikasi bahwa data input disediakan dengan benar dan skrip preprocessing menyalin data ke jalur yang diharapkan.

------
#### [ botocore.exceptions.ClientError ]

Berikut ini adalah contoh dari `botocore.exceptions.ClientError`:

```
botocore.exceptions.ClientError: An error occurred (ValidationException) when calling the CreateProcessingJob operation: RoleArn: Cross-account pass role is not allowed.
```

`"Cross-account pass role is not allowed in create processing job"`Kesalahan terjadi ketika Anda mencoba membuat pekerjaan SageMaker Pemrosesan menggunakan peran IAM dari AWS akun yang berbeda. Fitur keamanan ini memastikan peran dan izin dikelola dalam setiap akun. Untuk mengatasi masalah ini, lakukan hal berikut:

1. Verifikasi peran IAM berada di akun yang sama dengan pekerjaan pemrosesan. Peran lintas akun memerlukan tunjangan eksplisit

1. Jika menggunakan peran dari akun lain, perbarui kebijakan kepercayaannya untuk memungkinkan akun yang membuat pekerjaan pemrosesan untuk mengambil peran tersebut.

1. Pastikan peran memiliki izin yang diperlukan untuk memproses pekerjaan, seperti `sagemaker:CreateProcessingJob` atau`iam:PassRole`.

------

## Buat Endpoint
<a name="sagemaker-python-sdk-troubleshooting-create-endpoint"></a>

**penting**  
Jika Anda tidak menambahkan Kebijakan Terkelola SageMaker AI ke peran IAM, Anda harus memberikan akses peran ke izin berikut:  
`sagemaker:CreateModel`— Memberikan izin untuk membuat model yang Anda terapkan ke titik akhir
`sagemaker:CreateEndpointConfig`— Menyediakan izin untuk membuat konfigurasi titik akhir yang menentukan perilaku titik akhir, seperti jenis dan hitungan instance
`sagemaker:CreateEndpoint`— Memberikan izin untuk membuat konfigurasi titik akhir menggunakan titik akhir yang telah Anda tentukan
Selain itu, Anda memerlukan izin untuk mendeskripsikan dan membuat daftar model, titik akhir, dan konfigurasi titik akhir.

Saat Anda membuat titik akhir, Anda mungkin mengalami sebuah `UnexpectedStatusException` atau a`botocore.exceptions.ClientError`.

Berikut ini adalah contoh dari`UnexpectedStatusException`:

```
UnexpectedStatusException: Error hosting endpoint gpt2-large-2024-07-03-15-28-20-448: Failed. Reason: The primary container for production variant AllTraffic did not pass the ping health check. Please check CloudWatch logs for this endpoint.. Try changing the instance type or reference the troubleshooting page https://docs.aws.amazon.com/sagemaker/latest/dg/async-inference-troubleshooting.html            
```

Pesan kesalahan memberitahu Anda untuk memeriksa CloudWatch log Amazon. Gunakan prosedur berikut untuk memeriksa log.

**Untuk memeriksa CloudWatch log**

1. Arahkan ke [konsol Amazon SageMaker AI](https://console.aws.amazon.com/sagemaker).

1. Pada navigasi sebelah kiri, pilih **Endpoints**.

1. Pilih titik akhir yang gagal.

1. Pada halaman **Detail titik akhir**, pilih **Lihat log masuk CloudWatch**.

Setelah Anda menemukan log, cari masalah spesifiknya. Berikut ini adalah contoh CloudWatch log:

```
NotImplementedError: gptq quantization is not supported for AutoModel, you can try to quantize it with text-generation-server quantize ORIGINAL_MODEL_ID NEW_MODEL_ID            
```

Untuk informasi tentang menyelesaikan`botocore.exceptions.ClientError`, lihat[Panduan tentang penanganan pengecualian](#sagemaker-python-sdk-troubleshooting-exception-handling).

## Memperbarui Endpoint
<a name="sagemaker-python-sdk-troubleshooting-update-endpoint"></a>

**penting**  
Jika Anda tidak menambahkan Kebijakan Terkelola SageMaker AI ke peran IAM, Anda harus memberikan akses peran ke izin berikut:  
`sagemaker:UpdateEndpoint`— Memberikan izin untuk memperbarui titik akhir yang ada, seperti mengubah jenis atau hitungan instans titik akhir
`sagemaker:UpdateEndpointWeightsAndCapacities`— Menyediakan izin untuk membuat konfigurasi titik akhir yang menentukan perilaku titik akhir, seperti jenis dan hitungan instance
`sagemaker:DescribeEndpoint`— Memberikan izin untuk menggambarkan konfigurasi titik akhir saat ini, yang sering diperlukan sebelum pembaruan
Selain itu, Anda mungkin memerlukan izin untuk mendeskripsikan dan mencantumkan konfigurasi titik akhir dan titik akhir.

Anda dapat mengalami`ValueError`, seperti berikut ini:

```
ValueError: Endpoint with name 'abc' does not exist; please use an existing endpoint name            
```

Kesalahan menunjukkan bahwa nama titik akhir yang ditentukan tidak cocok dengan titik akhir yang ada di akun Anda AWS . Gunakan prosedur berikut untuk memecahkan masalah kesalahan:

**Untuk memecahkan masalah Kesalahan Nilai**

1. Gunakan kode berikut untuk mencantumkan semua titik akhir Anda:

   ```
   import sagemaker
   sagemaker_session = sagemaker.Session()
   # List all endpoints
   endpoints = sagemaker_session.sagemaker_client.list_endpoints()
   print(endpoints)
   ```

1. Verifikasi bahwa titik akhir yang Anda tentukan ke `update_endpoint` fungsi ada dalam daftar.

1. Pastikan Anda beroperasi di AWS Wilayah yang benar. SageMaker Titik akhir AI bersifat spesifik wilayah.

1. Pastikan bahwa peran IAM yang Anda gunakan memiliki izin untuk membuat daftar, mendeskripsikan, atau memperbarui titik akhir.

## Panduan tentang penanganan pengecualian
<a name="sagemaker-python-sdk-troubleshooting-exception-handling"></a>

Jika Anda tidak dapat menemukan informasi untuk membantu Anda memperbaiki masalah spesifik Anda, contoh kode berikut dapat memberi Anda inspirasi tentang cara Anda menangani pengecualian.

Berikut ini adalah contoh umum yang dapat Anda gunakan untuk menangkap sebagian besar pengecualian.

```
import sagemaker
from botocore.exceptions import ParamValidationError, ClientError

try:
    sagemaker.some_api_call(SomeParam='some_param')

except ClientError as error:
    # Put your error handling logic here
    raise error

except ParamValidationError as error:
    raise ValueError('The parameters you provided are incorrect: {}'.format(error))
    
except ValueError as error:
    # Catch generic ValueError exceptions
```

Ada dua kategori kesalahan utama:
+ Kesalahan khusus untuk SageMaker Python SDK
+ Kesalahan khusus untuk AWS layanan yang mendasarinya

Kesalahan khusus untuk AWS layanan yang mendasarinya selalu merupakan `botocore.exceptions.ClientError` pengecualian. `botocore.exceptions.ClientError`Memiliki `Error` objek dan `ResponseMetadata` objek. Berikut ini menunjukkan template kesalahan klien:

```
{
    'Error': {
        'Code': 'SomeServiceException',
        'Message': 'Details/context around the exception or error'
    },
    'ResponseMetadata': {
        'RequestId': '1234567890ABCDEF',
        'HostId': 'host ID data will appear here as a hash',
        'HTTPStatusCode': 400,
        'HTTPHeaders': {'header metadata key/values will appear here'},
        'RetryAttempts': 0
    }
}
```

Berikut ini adalah contoh penanganan kesalahan spesifik yang dapat Anda lakukan dengan`botocore.exceptions.ClientError`:

```
try:
    sagemaker.some_api_call(SomeParam='some_param')

except botocore.exceptions.ClientError as err:
    if err.response['Error']['Code'] == 'InternalError': # Generic error
        # We grab the message, request ID, and HTTP code to give to customer support
        print('Error Message: {}'.format(err.response['Error']['Message']))
        print('Request ID: {}'.format(err.response['ResponseMetadata']['RequestId']))
        print('Http code: {}'.format(err.response['ResponseMetadata']['HTTPStatusCode']))
        raise err
    else if err.response['Error']['Code'] == 'ValidationException':
       raise ValueError(err.response['Error']['Message'])
```

Untuk informasi selengkapnya tentang cara menangani `ClientError` pengecualian, lihat [Mengurai respons kesalahan dan menangkap](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.html#parsing-error-responses-and-catching-exceptions-from-aws-services) pengecualian dari. Layanan AWS