

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

# Luncurkan pekerjaan pelatihan dengan Debugger menggunakan Python SageMaker SDK
<a name="debugger-configuration-for-debugging"></a>

Untuk mengonfigurasi estimator SageMaker AI dengan SageMaker Debugger, gunakan Amazon [ SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) dan tentukan parameter khusus Debugger. Untuk sepenuhnya memanfaatkan fungsionalitas debugging, ada tiga parameter yang perlu Anda konfigurasi:`debugger_hook_config`,`tensorboard_output_config`, dan. `rules`

**penting**  
Sebelum membangun dan menjalankan metode kecocokan estimator untuk meluncurkan pekerjaan pelatihan, pastikan Anda menyesuaikan skrip pelatihan Anda mengikuti instruksi di. [Mengadaptasi skrip pelatihan Anda untuk mendaftarkan hook](debugger-modify-script.md)

## Membangun SageMaker AI Estimator dengan parameter khusus Debugger
<a name="debugger-configuration-structure"></a>

Contoh kode di bagian ini menunjukkan cara membuat estimator SageMaker AI dengan parameter khusus Debugger.

**catatan**  
Contoh kode berikut adalah templat untuk membangun estimator kerangka kerja SageMaker AI dan tidak dapat dieksekusi secara langsung. Anda perlu melanjutkan ke bagian berikutnya dan mengkonfigurasi parameter khusus Debugger.

------
#### [ PyTorch ]

```
# An example of constructing a SageMaker AI PyTorch estimator
import boto3
import sagemaker
from sagemaker.pytorch import PyTorch
from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs

session=boto3.session.Session()
region=session.region_name

debugger_hook_config=DebuggerHookConfig(...)
rules=[
    Rule.sagemaker(rule_configs.built_in_rule())
]

estimator=PyTorch(
    entry_point="directory/to/your_training_script.py",
    role=sagemaker.get_execution_role(),
    base_job_name="debugger-demo",
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="1.12.0",
    py_version="py37",
    
    # Debugger-specific parameters
    debugger_hook_config=debugger_hook_config,
    rules=rules
)

estimator.fit(wait=False)
```

------
#### [ TensorFlow ]

```
# An example of constructing a SageMaker AI TensorFlow estimator
import boto3
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs

session=boto3.session.Session()
region=session.region_name

debugger_hook_config=DebuggerHookConfig(...)
rules=[
    Rule.sagemaker(rule_configs.built_in_rule()),
    ProfilerRule.sagemaker(rule_configs.BuiltInRule())
]

estimator=TensorFlow(
    entry_point="directory/to/your_training_script.py",
    role=sagemaker.get_execution_role(),
    base_job_name="debugger-demo",
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # Debugger-specific parameters
    debugger_hook_config=debugger_hook_config,
    rules=rules
)

estimator.fit(wait=False)
```

------
#### [ MXNet ]

```
# An example of constructing a SageMaker AI MXNet estimator
import sagemaker
from sagemaker.mxnet import MXNet
from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs

debugger_hook_config=DebuggerHookConfig(...)
rules=[
    Rule.sagemaker(rule_configs.built_in_rule())
]

estimator=MXNet(
    entry_point="directory/to/your_training_script.py",
    role=sagemaker.get_execution_role(),
    base_job_name="debugger-demo",
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="1.7.0",
    py_version="py37",
    
    # Debugger-specific parameters
    debugger_hook_config=debugger_hook_config,
    rules=rules
)

estimator.fit(wait=False)
```

------
#### [ XGBoost ]

```
# An example of constructing a SageMaker AI XGBoost estimator
import sagemaker
from sagemaker.xgboost.estimator import XGBoost
from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs

debugger_hook_config=DebuggerHookConfig(...)
rules=[
    Rule.sagemaker(rule_configs.built_in_rule())
]

estimator=XGBoost(
    entry_point="directory/to/your_training_script.py",
    role=sagemaker.get_execution_role(),
    base_job_name="debugger-demo",
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="1.5-1",

    # Debugger-specific parameters
    debugger_hook_config=debugger_hook_config,
    rules=rules
)

estimator.fit(wait=False)
```

------
#### [ Generic estimator ]

```
# An example of constructing a SageMaker AI generic estimator using the XGBoost algorithm base image
import boto3
import sagemaker
from sagemaker.estimator import Estimator
from sagemaker import image_uris
from sagemaker.debugger import CollectionConfig, DebuggerHookConfig, Rule, rule_configs

debugger_hook_config=DebuggerHookConfig(...)
rules=[
    Rule.sagemaker(rule_configs.built_in_rule())
]

region=boto3.Session().region_name
xgboost_container=sagemaker.image_uris.retrieve("xgboost", region, "1.5-1")

estimator=Estimator(
    role=sagemaker.get_execution_role()
    image_uri=xgboost_container,
    base_job_name="debugger-demo",
    instance_count=1,
    instance_type="ml.m5.2xlarge",
    
    # Debugger-specific parameters
    debugger_hook_config=debugger_hook_config,
    rules=rules
)

estimator.fit(wait=False)
```

------

Konfigurasikan parameter berikut untuk mengaktifkan SageMaker Debugger:
+ `debugger_hook_config`(objek dari [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig)) - Diperlukan untuk mengaktifkan hook dalam skrip pelatihan yang disesuaikan selama[Mengadaptasi skrip pelatihan Anda untuk mendaftarkan hook](debugger-modify-script.md), konfigurasikan peluncur SageMaker pelatihan (estimator) untuk mengumpulkan tensor keluaran dari pekerjaan pelatihan Anda, dan menyimpan tensor ke dalam bucket S3 aman atau mesin lokal Anda. Untuk mempelajari cara mengkonfigurasi `debugger_hook_config` parameter, lihat[Mengkonfigurasi SageMaker Debugger untuk menyimpan tensor](debugger-configure-hook.md).
+ `rules`(daftar [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule)objek) — Konfigurasikan parameter ini untuk mengaktifkan aturan bawaan SageMaker Debugger yang ingin Anda jalankan secara real time. Aturan bawaan adalah logika yang secara otomatis men-debug kemajuan pelatihan model Anda dan menemukan masalah pelatihan dengan menganalisis tensor keluaran yang disimpan di bucket S3 aman Anda. Untuk mempelajari cara mengkonfigurasi `rules` parameter, lihat[Cara mengkonfigurasi aturan bawaan Debugger](use-debugger-built-in-rules.md). Untuk menemukan daftar lengkap aturan bawaan untuk men-debug tensor keluaran, lihat. [Aturan debugger](debugger-built-in-rules.md#debugger-built-in-rules-Rule) Jika Anda ingin membuat logika Anda sendiri untuk mendeteksi masalah pelatihan apa pun, lihat[Membuat aturan kustom menggunakan pustaka klien Debugger](debugger-custom-rules.md).
**catatan**  
Aturan bawaan hanya tersedia melalui contoh SageMaker pelatihan. Anda tidak dapat menggunakannya dalam mode lokal.
+ `tensorboard_output_config`(objek dari [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.TensorBoardOutputConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.TensorBoardOutputConfig)) - Konfigurasikan SageMaker Debugger untuk mengumpulkan tensor keluaran dalam format TensorBoard -kompatibel dan simpan ke jalur keluaran S3 Anda yang ditentukan dalam objek. `TensorBoardOutputConfig` Untuk mempelajari selengkapnya, lihat [Visualisasikan tensor keluaran Amazon SageMaker Debugger di TensorBoard](debugger-enable-tensorboard-summaries.md).
**catatan**  
`tensorboard_output_config`Harus dikonfigurasi dengan `debugger_hook_config` parameter, yang juga mengharuskan Anda untuk menyesuaikan skrip pelatihan Anda dengan menambahkan `sagemaker-debugger` kait.

**catatan**  
SageMaker Debugger menyimpan tensor keluaran dengan aman di subfolder bucket S3 Anda. Misalnya, format URI bucket S3 default di akun Anda adalah`s3://amzn-s3-demo-bucket-sagemaker-<region>-<12digit_account_id>/<base-job-name>/<debugger-subfolders>/`. Ada dua subfolder yang dibuat oleh SageMaker Debugger:`debug-output`, dan. `rule-output` Jika Anda menambahkan `tensorboard_output_config` parameter, Anda juga akan menemukan `tensorboard-output` folder.

Lihat topik berikut untuk menemukan lebih banyak contoh cara mengonfigurasi parameter khusus Debugger secara detail.

**Topics**
+ [Membangun SageMaker AI Estimator dengan parameter khusus Debugger](#debugger-configuration-structure)
+ [Mengkonfigurasi SageMaker Debugger untuk menyimpan tensor](debugger-configure-hook.md)
+ [Cara mengkonfigurasi aturan bawaan Debugger](use-debugger-built-in-rules.md)
+ [Matikan Debugger](debugger-turn-off.md)
+ [Metode kelas estimator SageMaker AI yang berguna untuk Debugger](debugger-estimator-classmethods.md)

# Mengkonfigurasi SageMaker Debugger untuk menyimpan tensor
<a name="debugger-configure-hook"></a>

*Tensor* adalah kumpulan data parameter yang diperbarui dari pass mundur dan maju dari setiap iterasi pelatihan. SageMaker Debugger mengumpulkan tensor keluaran untuk menganalisis keadaan pekerjaan pelatihan. SageMaker Operasi debugger [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig)dan [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig)API menyediakan metode untuk mengelompokkan tensor ke dalam *koleksi* dan menyimpannya ke bucket S3 target. Topik berikut menunjukkan cara menggunakan operasi `CollectionConfig` dan `DebuggerHookConfig` API, diikuti dengan contoh cara menggunakan kait Debugger untuk menyimpan, mengakses, dan memvisualisasikan tensor keluaran.

Saat membuat estimator SageMaker AI, aktifkan SageMaker Debugger dengan menentukan parameter. `debugger_hook_config` Topik berikut mencakup contoh cara mengatur operasi `debugger_hook_config` menggunakan `CollectionConfig` dan `DebuggerHookConfig` API untuk menarik tensor keluar dari pekerjaan pelatihan Anda dan menyimpannya.

**catatan**  
Setelah dikonfigurasi dan diaktifkan dengan benar, SageMaker Debugger menyimpan tensor keluaran dalam bucket S3 default, kecuali ditentukan lain. Format URI bucket S3 default adalah`s3://amzn-s3-demo-bucket-sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/`.

**Topics**
+ [Konfigurasikan koleksi tensor menggunakan API `CollectionConfig`](debugger-configure-tensor-collections.md)
+ [Konfigurasikan `DebuggerHookConfig` API untuk menyimpan tensor](debugger-configure-tensor-hook.md)
+ [Contoh notebook dan contoh kode untuk mengonfigurasi kait Debugger](debugger-save-tensors.md)

# Konfigurasikan koleksi tensor menggunakan API `CollectionConfig`
<a name="debugger-configure-tensor-collections"></a>

Gunakan operasi `CollectionConfig` API untuk mengonfigurasi koleksi tensor. Debugger menyediakan koleksi tensor pra-bangun yang mencakup berbagai ekspresi reguler (regex) parameter jika menggunakan kerangka kerja pembelajaran mendalam dan algoritme pembelajaran mesin yang didukung Debugger. Seperti yang ditunjukkan pada kode contoh berikut, tambahkan koleksi tensor bawaan yang ingin Anda debug.

```
from sagemaker.debugger import CollectionConfig

collection_configs=[
    CollectionConfig(name="weights"),
    CollectionConfig(name="gradients")
]
```

Koleksi sebelumnya menyiapkan kait Debugger untuk menyimpan tensor setiap 500 langkah berdasarkan nilai default. `"save_interval"`

Untuk daftar lengkap koleksi bawaan Debugger yang tersedia, lihat [Debugger](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#collection) Built-in Collections.

Jika Anda ingin menyesuaikan koleksi bawaan, seperti mengubah interval penyimpanan dan regex tensor, gunakan `CollectionConfig` templat berikut untuk menyesuaikan parameter.

```
from sagemaker.debugger import CollectionConfig

collection_configs=[
    CollectionConfig(
        name="tensor_collection",
        parameters={
            "key_1": "value_1",
            "key_2": "value_2",
            ...
            "key_n": "value_n"
        }
    )
]
```

Untuk informasi selengkapnya tentang kunci parameter yang tersedia, lihat [CollectionConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.CollectionConfig)di [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) SDK. Misalnya, contoh kode berikut menunjukkan bagaimana Anda dapat menyesuaikan interval penyimpanan pengumpulan tensor “kerugian” pada fase pelatihan yang berbeda: hemat kerugian setiap 100 langkah dalam fase pelatihan dan kehilangan validasi setiap 10 langkah dalam fase validasi. 

```
from sagemaker.debugger import CollectionConfig

collection_configs=[
    CollectionConfig(
        name="losses",
        parameters={
            "train.save_interval": "100",
            "eval.save_interval": "10"
        }
    )
]
```

**Tip**  
Objek konfigurasi koleksi tensor ini dapat digunakan untuk keduanya [DebuggerHookConfig](https://docs.aws.amazon.com/sagemaker/latest/dg/debugger-configure-hook.html#debugger-configure-tensor-hook)dan operasi [Rule](https://docs.aws.amazon.com/sagemaker/latest/dg/use-debugger-built-in-rules.html#debugger-built-in-rules-configuration-param-change) API.

# Konfigurasikan `DebuggerHookConfig` API untuk menyimpan tensor
<a name="debugger-configure-tensor-hook"></a>

Gunakan [DebuggerHookConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html                 #sagemaker.debugger.DebuggerHookConfig)API untuk membuat `debugger_hook_config` objek menggunakan `collection_configs` objek yang Anda buat pada langkah sebelumnya.

```
from sagemaker.debugger import DebuggerHookConfig

debugger_hook_config=DebuggerHookConfig(
    collection_configs=collection_configs
)
```

Debugger menyimpan tensor keluaran pelatihan model ke dalam bucket S3 default. Format URI bucket S3 default adalah `s3://amzn-s3-demo-bucket-sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.`

Jika Anda ingin menentukan URI bucket S3 yang tepat, gunakan contoh kode berikut:

```
from sagemaker.debugger import DebuggerHookConfig

debugger_hook_config=DebuggerHookConfig(
    s3_output_path="specify-uri"
    collection_configs=collection_configs
)
```

Untuk informasi selengkapnya, lihat [DebuggerHookConfig](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.DebuggerHookConfig)di [Amazon SageMaker Python](https://sagemaker.readthedocs.io/en/stable) SDK.

# Contoh notebook dan contoh kode untuk mengonfigurasi kait Debugger
<a name="debugger-save-tensors"></a>

Bagian berikut menyediakan buku catatan dan contoh kode tentang cara menggunakan kait Debugger untuk menyimpan, mengakses, dan memvisualisasikan tensor keluaran.

**Topics**
+ [Notebook contoh visualisasi tensor](#debugger-tensor-visualization-notebooks)
+ [Simpan tensor menggunakan koleksi bawaan Debugger](#debugger-save-built-in-collections)
+ [Simpan tensor dengan memodifikasi koleksi bawaan Debugger](#debugger-save-modified-built-in-collections)
+ [Simpan tensor menggunakan koleksi kustom Debugger](#debugger-save-custom-collections)

## Notebook contoh visualisasi tensor
<a name="debugger-tensor-visualization-notebooks"></a>

Dua contoh notebook berikut menunjukkan penggunaan lanjutan Amazon SageMaker Debugger untuk memvisualisasikan tensor. Debugger memberikan pandangan transparan ke dalam pelatihan model pembelajaran mendalam.
+ [Analisis Tensor Interaktif di SageMaker Studio Notebook dengan MXNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mnist_tensor_analysis)

  Contoh notebook ini menunjukkan cara memvisualisasikan tensor yang disimpan menggunakan Amazon Debugger. SageMaker Dengan memvisualisasikan tensor, Anda dapat melihat bagaimana nilai tensor berubah saat melatih algoritme pembelajaran mendalam. Notebook ini mencakup pekerjaan pelatihan dengan jaringan saraf yang tidak dikonfigurasi dengan baik dan menggunakan Amazon SageMaker Debugger untuk mengumpulkan dan menganalisis tensor, termasuk gradien, keluaran aktivasi, dan bobot. Misalnya, plot berikut menunjukkan distribusi gradien lapisan konvolusional yang mengalami masalah gradien menghilang.  
![\[Grafik yang memplot distribusi gradien.\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/debugger/debugger-vanishing-gradient.gif)

  Notebook ini juga menggambarkan bagaimana pengaturan hiperparameter awal yang baik meningkatkan proses pelatihan dengan menghasilkan plot distribusi tensor yang sama. 
+ [Visualisasi dan Debugging Tensor dari Pelatihan Model MXNet ](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mnist_tensor_plot)

   Contoh notebook ini menunjukkan cara menyimpan dan memvisualisasikan tensor dari pekerjaan pelatihan model MXNet Gluon menggunakan Amazon Debugger. SageMaker Ini menggambarkan bahwa Debugger diatur untuk menyimpan semua tensor ke bucket Amazon S3 dan mengambil output aktivasi untuk visualisasi. ReLu Gambar berikut menunjukkan visualisasi tiga dimensi dari output ReLu aktivasi. Skema warna diatur ke biru untuk menunjukkan nilai mendekati 0 dan kuning untuk menunjukkan nilai mendekati 1.   
![\[Visualisasi output aktivasi ReLU\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/tensorplot.gif)

  Dalam buku catatan ini, `TensorPlot` kelas yang diimpor dari `tensor_plot.py` dirancang untuk memplot jaringan saraf convolutional (CNNs) yang mengambil gambar dua dimensi untuk input. `tensor_plot.py`Skrip yang disediakan dengan notebook mengambil tensor menggunakan Debugger dan memvisualisasikan CNN. Anda dapat menjalankan notebook ini di SageMaker Studio untuk mereproduksi visualisasi tensor dan menerapkan model jaringan saraf convolutional Anda sendiri. 
+ [Analisis Tensor Real-time di SageMaker Notebook dengan MXNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_realtime_analysis)

  Contoh ini memandu Anda dalam menginstal komponen yang diperlukan untuk memancarkan tensor dalam pekerjaan SageMaker pelatihan Amazon dan menggunakan operasi Debugger API untuk mengakses tensor tersebut saat pelatihan sedang berjalan. Model CNN gluon dilatih pada dataset Fashion MNIST. Saat pekerjaan sedang berjalan, Anda akan melihat bagaimana Debugger mengambil output aktivasi dari lapisan convolutional pertama dari masing-masing 100 batch dan memvisualisasikannya. Juga, ini akan menunjukkan kepada Anda bagaimana memvisualisasikan bobot setelah pekerjaan selesai.

## Simpan tensor menggunakan koleksi bawaan Debugger
<a name="debugger-save-built-in-collections"></a>

Anda dapat menggunakan koleksi tensor bawaan menggunakan `CollectionConfig` API dan menyimpannya menggunakan API. `DebuggerHookConfig` Contoh berikut menunjukkan cara menggunakan pengaturan default konfigurasi kait Debugger untuk membuat estimator AI. SageMaker TensorFlow Anda juga dapat menggunakan ini untuk MXNet, PyTorch, dan XGBoost estimator.

**catatan**  
Dalam contoh kode berikut, `s3_output_path` parameter untuk `DebuggerHookConfig` adalah opsional. Jika Anda tidak menentukannya, Debugger menyimpan tensor di`s3://<output_path>/debug-output/`, di mana jalur keluaran default dari pekerjaan pelatihan. `<output_path>` SageMaker Contoh:  

```
"s3://sagemaker-us-east-1-111122223333/sagemaker-debugger-training-YYYY-MM-DD-HH-MM-SS-123/debug-output"
```

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to call built-in collections
collection_configs=[
        CollectionConfig(name="weights"),
        CollectionConfig(name="gradients"),
        CollectionConfig(name="losses"),
        CollectionConfig(name="biases")
    ]

# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-built-in-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

Untuk melihat daftar koleksi bawaan Debugger, lihat [Debugger](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#collection) Built-in Collections.

## Simpan tensor dengan memodifikasi koleksi bawaan Debugger
<a name="debugger-save-modified-built-in-collections"></a>

Anda dapat memodifikasi koleksi bawaan Debugger menggunakan operasi `CollectionConfig` API. Contoh berikut menunjukkan cara mengubah `losses` koleksi bawaan dan membuat estimator SageMaker AI TensorFlow . Anda juga dapat menggunakan ini untuk MXNet, PyTorch, dan XGBoost estimator.

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to call and modify built-in collections
collection_configs=[
    CollectionConfig(
                name="losses", 
                parameters={"save_interval": "50"})]

# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-modified-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

Untuk daftar lengkap `CollectionConfig` parameter, lihat [Debugger API CollectionConfig ](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#configuring-collection-using-sagemaker-python-sdk).

## Simpan tensor menggunakan koleksi kustom Debugger
<a name="debugger-save-custom-collections"></a>

Anda juga dapat menyimpan jumlah tensor yang dikurangi alih-alih set tensor lengkap (misalnya, jika Anda ingin mengurangi jumlah data yang disimpan di bucket Amazon S3 Anda). Contoh berikut menunjukkan cara menyesuaikan konfigurasi kait Debugger untuk menentukan tensor target yang ingin Anda simpan. Anda dapat menggunakan ini untuk TensorFlow,, MXNet PyTorch, dan XGBoost estimator.

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import DebuggerHookConfig, CollectionConfig

# use Debugger CollectionConfig to create a custom collection
collection_configs=[
        CollectionConfig(
            name="custom_activations_collection",
            parameters={
                "include_regex": "relu|tanh", # Required
                "reductions": "mean,variance,max,abs_mean,abs_variance,abs_max"
            })
    ]
    
# configure Debugger hook
# set a target S3 bucket as you want
sagemaker_session=sagemaker.Session()
BUCKET_NAME=sagemaker_session.default_bucket()
LOCATION_IN_BUCKET='debugger-custom-collections-hook'

hook_config=DebuggerHookConfig(
    s3_output_path='s3://{BUCKET_NAME}/{LOCATION_IN_BUCKET}'.
                    format(BUCKET_NAME=BUCKET_NAME, 
                           LOCATION_IN_BUCKET=LOCATION_IN_BUCKET),
    collection_configs=collection_configs
)

# construct a SageMaker TensorFlow estimator
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-demo-job',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",
    
    # debugger-specific hook argument below
    debugger_hook_config=hook_config
)

sagemaker_estimator.fit()
```

Untuk daftar lengkap `CollectionConfig` parameter, lihat [Debugger CollectionConfig](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#configuring-collection-using-sagemaker-python-sdk).

# Cara mengkonfigurasi aturan bawaan Debugger
<a name="use-debugger-built-in-rules"></a>

Dalam topik berikut, Anda akan belajar cara menggunakan aturan bawaan SageMaker Debugger. Aturan bawaan Amazon SageMaker Debugger menganalisis tensor yang dipancarkan selama pelatihan model. SageMaker AI Debugger menawarkan operasi `Rule` API yang memantau kemajuan pekerjaan pelatihan dan kesalahan untuk keberhasilan melatih model Anda. Misalnya, aturan dapat mendeteksi apakah gradien menjadi terlalu besar atau terlalu kecil, apakah model overfitting atau overtraining, dan apakah pekerjaan pelatihan tidak mengurangi fungsi kehilangan dan meningkatkan. Untuk melihat daftar lengkap aturan bawaan yang tersedia, lihat[Daftar aturan bawaan Debugger](debugger-built-in-rules.md).

**Topics**
+ [Gunakan aturan bawaan Debugger dengan pengaturan parameter default](debugger-built-in-rules-configuration.md)
+ [Gunakan aturan bawaan Debugger dengan nilai parameter khusus](debugger-built-in-rules-configuration-param-change.md)
+ [Contoh buku catatan dan contoh kode untuk mengonfigurasi aturan Debugger](debugger-built-in-rules-example.md)

# Gunakan aturan bawaan Debugger dengan pengaturan parameter default
<a name="debugger-built-in-rules-configuration"></a>

Untuk menentukan aturan bawaan Debugger di estimator, Anda perlu mengonfigurasi objek daftar. Kode contoh berikut menunjukkan struktur dasar daftar aturan bawaan Debugger:

```
from sagemaker.debugger import Rule, rule_configs

rules=[
    Rule.sagemaker(rule_configs.built_in_rule_name_1()),
    Rule.sagemaker(rule_configs.built_in_rule_name_2()),
    ...
    Rule.sagemaker(rule_configs.built_in_rule_name_n()),
    ... # You can also append more profiler rules in the ProfilerRule.sagemaker(rule_configs.*()) format.
]
```

Untuk informasi selengkapnya tentang nilai parameter default dan deskripsi aturan bawaan, lihat[Daftar aturan bawaan Debugger](debugger-built-in-rules.md).

Untuk menemukan referensi API SageMaker Debugger, lihat [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.sagemaker.debugger.rule_configs](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.sagemaker.debugger.rule_configs)dan. [https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html#sagemaker.debugger.Rule)

Misalnya, untuk memeriksa keseluruhan kinerja pelatihan dan kemajuan model Anda, buat estimator SageMaker AI dengan konfigurasi aturan bawaan berikut. 

```
from sagemaker.debugger import Rule, rule_configs

rules=[
    Rule.sagemaker(rule_configs.loss_not_decreasing()),
    Rule.sagemaker(rule_configs.overfit()),
    Rule.sagemaker(rule_configs.overtraining()),
    Rule.sagemaker(rule_configs.stalled_training_rule())
]
```

Saat Anda memulai pekerjaan pelatihan, Debugger mengumpulkan data pemanfaatan sumber daya sistem setiap 500 milidetik dan nilai kehilangan dan akurasi setiap 500 langkah secara default. Debugger menganalisis pemanfaatan sumber daya untuk mengidentifikasi apakah model Anda mengalami masalah kemacetan. The`loss_not_decreasing`, `overfit``overtraining`, dan `stalled_training_rule` monitor jika model Anda mengoptimalkan fungsi kerugian tanpa masalah pelatihan tersebut. Jika aturan mendeteksi anomali pelatihan, status evaluasi aturan berubah menjadi. `IssueFound` Anda dapat mengatur tindakan otomatis, seperti memberi tahu masalah pelatihan dan menghentikan pekerjaan pelatihan menggunakan CloudWatch Acara Amazon dan AWS Lambda. Untuk informasi selengkapnya, lihat [Tindakan pada aturan Amazon SageMaker Debugger](debugger-action-on-rules.md).



# Gunakan aturan bawaan Debugger dengan nilai parameter khusus
<a name="debugger-built-in-rules-configuration-param-change"></a>

Jika Anda ingin menyesuaikan nilai parameter aturan bawaan dan menyesuaikan regex koleksi tensor, konfigurasikan `rule_parameters` parameter `base_config` dan untuk metode kelas dan. `ProfilerRule.sagemaker` `Rule.sagemaker` Dalam kasus metode `Rule.sagemaker` kelas, Anda juga dapat menyesuaikan koleksi tensor melalui `collections_to_save` parameter. Instruksi tentang cara menggunakan `CollectionConfig` kelas disediakan di[Konfigurasikan koleksi tensor menggunakan API `CollectionConfig`](debugger-configure-tensor-collections.md). 

Gunakan templat konfigurasi berikut untuk aturan bawaan untuk menyesuaikan nilai parameter. Dengan mengubah parameter aturan sesuai keinginan, Anda dapat menyesuaikan sensitivitas aturan yang akan dipicu. 
+ `base_config`Argumennya adalah di mana Anda memanggil metode aturan bawaan.
+ `rule_parameters`Argumennya adalah untuk menyesuaikan nilai kunci default dari aturan bawaan yang tercantum dalam[Daftar aturan bawaan Debugger](debugger-built-in-rules.md).
+ `collections_to_save`Argumen tersebut menggunakan konfigurasi tensor melalui `CollectionConfig` API, yang membutuhkan `name` dan `parameters` argumen. 
  + Untuk menemukan koleksi tensor yang tersedia`name`, lihat [Debugger Built-in](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#built-in-collections) Tensor Collections. 
  + Untuk daftar lengkap yang dapat disesuaikan`parameters`, lihat [Debugger API CollectionConfig ](https://github.com/awslabs/sagemaker-debugger/blob/master/docs/api.md#configuring-collection-using-sagemaker-python-sdk).

[Untuk informasi selengkapnya tentang kelas aturan Debugger, metode, dan parameter, lihat kelas [Aturan Debugger SageMaker AI di](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html) Amazon Python SDK. SageMaker ](https://sagemaker.readthedocs.io/en/stable)

```
from sagemaker.debugger import Rule, ProfilerRule, rule_configs, CollectionConfig

rules=[
    Rule.sagemaker(
        base_config=rule_configs.built_in_rule_name(),
        rule_parameters={
                "key": "value"
        },
        collections_to_save=[ 
            CollectionConfig(
                name="tensor_collection_name", 
                parameters={
                    "key": "value"
                } 
            )
        ]
    )
]
```

Deskripsi parameter dan contoh kustomisasi nilai disediakan untuk setiap aturan di[Daftar aturan bawaan Debugger](debugger-built-in-rules.md).

# Contoh buku catatan dan contoh kode untuk mengonfigurasi aturan Debugger
<a name="debugger-built-in-rules-example"></a>

Di bagian berikut, buku catatan dan contoh kode tentang cara menggunakan aturan Debugger untuk memantau pekerjaan SageMaker pelatihan disediakan.

**Topics**
+ [Debugger built-in aturan contoh notebook](#debugger-built-in-rules-notebook-example)
+ [Kode contoh aturan bawaan debugger](#debugger-deploy-built-in-rules)
+ [Gunakan aturan bawaan Debugger dengan modifikasi parameter](#debugger-deploy-modified-built-in-rules)

## Debugger built-in aturan contoh notebook
<a name="debugger-built-in-rules-notebook-example"></a>

Contoh notebook berikut menunjukkan cara menggunakan aturan bawaan Debugger saat menjalankan pekerjaan pelatihan dengan Amazon AI: SageMaker 
+ [Menggunakan aturan bawaan SageMaker Debugger dengan TensorFlow](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/tensorflow_builtin_rule)
+ [Menggunakan aturan bawaan SageMaker Debugger dengan Pelatihan Spot Terkelola dan MXNet](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/mxnet_spot_training)
+ [Menggunakan aturan bawaan SageMaker Debugger dengan modifikasi parameter untuk analisis pekerjaan pelatihan waktu nyata dengan XGBoost](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker-debugger/xgboost_realtime_analysis)

Saat menjalankan contoh buku catatan di SageMaker Studio, Anda dapat menemukan uji coba kerja pelatihan yang dibuat di tab **Daftar Eksperimen Studio**. Misalnya, seperti yang ditunjukkan pada gambar berikut, Anda dapat menemukan dan membuka jendela **Describe Trial Component** dari pekerjaan pelatihan Anda saat ini. Pada tab Debugger, Anda dapat memeriksa apakah aturan Debugger, `vanishing_gradient()` dan`loss_not_decreasing()`, memantau sesi pelatihan secara paralel. Untuk instruksi lengkap tentang cara menemukan komponen uji coba kerja pelatihan Anda di UI Studio, lihat [SageMaker Studio - View Experiments, Trials, dan Trial Components](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-tasks.html#studio-tasks-experiments).

![\[Gambar menjalankan pekerjaan pelatihan dengan aturan bawaan Debugger diaktifkan di Studio SageMaker\]](http://docs.aws.amazon.com/id_id/sagemaker/latest/dg/images/debugger/debugger-built-in-rule-studio.png)


Ada dua cara untuk menggunakan aturan bawaan Debugger di lingkungan SageMaker AI: menerapkan aturan bawaan saat disiapkan atau sesuaikan parameternya sesuai keinginan. Topik berikut menunjukkan cara menggunakan aturan bawaan dengan kode contoh.

## Kode contoh aturan bawaan debugger
<a name="debugger-deploy-built-in-rules"></a>

Contoh kode berikut menunjukkan cara mengatur aturan bawaan Debugger menggunakan metode ini`Rule.sagemaker`. Untuk menentukan aturan bawaan yang ingin Anda jalankan, gunakan operasi `rules_configs` API untuk memanggil aturan bawaan. Untuk menemukan daftar lengkap aturan bawaan Debugger dan nilai parameter default, lihat. [Daftar aturan bawaan Debugger](debugger-built-in-rules.md)

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call built-in rules that you want to use.
built_in_rules=[ 
            Rule.sagemaker(rule_configs.vanishing_gradient())
            Rule.sagemaker(rule_configs.loss_not_decreasing())
]

# construct a SageMaker AI estimator with the Debugger built-in rules
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name='debugger-built-in-rules-demo',
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules
)
sagemaker_estimator.fit()
```

**catatan**  
Aturan bawaan Debugger berjalan secara paralel dengan pekerjaan pelatihan Anda. Jumlah maksimum wadah aturan bawaan untuk pekerjaan pelatihan adalah 20. 

[Untuk informasi selengkapnya tentang kelas aturan Debugger, metode, dan parameter, lihat kelas [Aturan SageMaker Debugger di](https://sagemaker.readthedocs.io/en/stable/api/training/debugger.html) Amazon Python SDK. SageMaker ](https://sagemaker.readthedocs.io/en/stable) 

Untuk menemukan contoh cara menyesuaikan parameter aturan Debugger, lihat bagian berikut[Gunakan aturan bawaan Debugger dengan modifikasi parameter](#debugger-deploy-modified-built-in-rules).

## Gunakan aturan bawaan Debugger dengan modifikasi parameter
<a name="debugger-deploy-modified-built-in-rules"></a>

Contoh kode berikut menunjukkan struktur aturan bawaan untuk menyesuaikan parameter. Dalam contoh ini, `stalled_training_rule` mengumpulkan koleksi `losses` tensor dari pekerjaan pelatihan di setiap 50 langkah dan tahap evaluasi di setiap 10 langkah. Jika proses pelatihan mulai terhenti dan tidak mengumpulkan output tensor selama 120 detik, pekerjaan pelatihan akan `stalled_training_rule` berhenti. 

```
import sagemaker
from sagemaker.tensorflow import TensorFlow
from sagemaker.debugger import Rule, CollectionConfig, rule_configs

# call the built-in rules and modify the CollectionConfig parameters

base_job_name_prefix= 'smdebug-stalled-demo-' + str(int(time.time()))

built_in_rules_modified=[
    Rule.sagemaker(
        base_config=rule_configs.stalled_training_rule(),
        rule_parameters={
                'threshold': '120',
                'training_job_name_prefix': base_job_name_prefix,
                'stop_training_on_fire' : 'True'
        }
        collections_to_save=[ 
            CollectionConfig(
                name="losses", 
                parameters={
                      "train.save_interval": "50"
                      "eval.save_interval": "10"
                } 
            )
        ]
    )
]

# construct a SageMaker AI estimator with the modified Debugger built-in rule
sagemaker_estimator=TensorFlow(
    entry_point='directory/to/your_training_script.py',
    role=sm.get_execution_role(),
    base_job_name=base_job_name_prefix,
    instance_count=1,
    instance_type="ml.p3.2xlarge",
    framework_version="2.9.0",
    py_version="py39",

    # debugger-specific arguments below
    rules=built_in_rules_modified
)
sagemaker_estimator.fit()
```

Untuk konfigurasi lanjutan dari aturan bawaan Debugger yang menggunakan `CreateTrainingJob` API, lihat. [Konfigurasikan Debugger menggunakan API SageMaker](debugger-createtrainingjob-api.md)

# Matikan Debugger
<a name="debugger-turn-off"></a>

Jika Anda ingin mematikan Debugger sepenuhnya, lakukan salah satu hal berikut:
+ Sebelum memulai pekerjaan pelatihan, lakukan hal berikut:

  Untuk menghentikan pemantauan dan pembuatan profil, sertakan `disable_profiler` parameter ke estimator Anda dan atur ke. `True`
**Awas**  
Jika menonaktifkannya, Anda tidak akan dapat melihat dasbor wawasan Studio Debugger yang komprehensif dan laporan pembuatan profil yang dibuat secara otomatis.

  Untuk menghentikan debugging, atur `debugger_hook_config` parameter ke`False`.
**Awas**  
Jika Anda menonaktifkannya, Anda tidak akan dapat mengumpulkan tensor keluaran dan tidak dapat men-debug parameter model Anda.

  ```
  estimator=Estimator(
      ...
      disable_profiler=True
      debugger_hook_config=False
  )
  ```

  [Untuk informasi selengkapnya tentang parameter khusus Debugger, lihat [SageMaker AI Estimator](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.estimator.Estimator) di Amazon Python SDK. SageMaker ](https://sagemaker.readthedocs.io/en/stable)
+ Saat pekerjaan pelatihan sedang berjalan, lakukan hal berikut:

  Untuk menonaktifkan pemantauan dan pembuatan profil saat tugas pelatihan Anda berjalan, gunakan metode kelas estimator berikut:

  ```
  estimator.disable_profiling()
  ```

  Untuk menonaktifkan profil kerangka kerja saja dan menjaga pemantauan sistem, gunakan `update_profiler` metode ini:

  ```
  estimator.update_profiler(disable_framework_metrics=true)
  ```

  [https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.estimator.Estimator.update_profiler](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.estimator.Estimator.update_profiler)

# Metode kelas estimator SageMaker AI yang berguna untuk Debugger
<a name="debugger-estimator-classmethods"></a>

Metode kelas estimator berikut berguna untuk mengakses informasi pekerjaan SageMaker pelatihan Anda dan mengambil jalur keluaran data pelatihan yang dikumpulkan oleh Debugger. Metode berikut dapat dieksekusi setelah Anda memulai pekerjaan pelatihan dengan metode ini. `estimator.fit()`
+ Untuk memeriksa URI bucket S3 dasar dari pekerjaan SageMaker pelatihan:

  ```
  estimator.output_path
  ```
+ Untuk memeriksa nama pekerjaan dasar dari pekerjaan SageMaker pelatihan:

  ```
  estimator.latest_training_job.job_name
  ```
+ Untuk melihat konfigurasi operasi `CreateTrainingJob` API lengkap dari pekerjaan SageMaker pelatihan:

  ```
  estimator.latest_training_job.describe()
  ```
+ Untuk memeriksa daftar lengkap aturan Debugger saat pekerjaan SageMaker pelatihan sedang berjalan:

  ```
  estimator.latest_training_job.rule_job_summary()
  ```
+ Untuk memeriksa URI bucket S3 tempat data parameter model (tensor keluaran) disimpan:

  ```
  estimator.latest_job_debugger_artifacts_path()
  ```
+ Untuk memeriksa URI bucket S3 di mana data kinerja model (metrik sistem dan kerangka kerja) disimpan:

  ```
  estimator.latest_job_profiler_artifacts_path()
  ```
+ Untuk memeriksa konfigurasi aturan Debugger untuk men-debug tensor keluaran:

  ```
  estimator.debugger_rule_configs
  ```
+ Untuk memeriksa daftar aturan Debugger untuk debugging saat pekerjaan SageMaker pelatihan sedang berjalan:

  ```
  estimator.debugger_rules
  ```
+ Untuk memeriksa konfigurasi aturan Debugger untuk memantau dan membuat profil metrik sistem dan kerangka kerja:

  ```
  estimator.profiler_rule_configs
  ```
+ Untuk memeriksa daftar aturan Debugger untuk pemantauan dan pembuatan profil saat pekerjaan SageMaker pelatihan sedang berjalan:

  ```
  estimator.profiler_rules
  ```

Untuk informasi selengkapnya tentang class estimator SageMaker AI dan metodenya, lihat [Estimator API](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#sagemaker.estimator.Estimator) di Amazon [Python SageMaker ](https://sagemaker.readthedocs.io/en/stable) SDK.