Konfigurasikan SageMaker Debugger untuk Menyimpan Tensor - Amazon SageMaker

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

Konfigurasikan SageMaker Debugger untuk Menyimpan Tensor

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 Debugger CollectionConfigdan DebuggerHookConfigAPIoperasi menyediakan metode untuk mengelompokkan tensor ke dalam koleksi dan menyimpannya ke bucket S3 target.

catatan

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

Saat membangun SageMaker estimator, aktifkan SageMaker Debugger dengan menentukan parameter. debugger_hook_config Langkah-langkah berikut mencakup contoh cara mengatur debugger_hook_config penggunaan CollectionConfig dan DebuggerHookConfig API operasi untuk menarik tensor keluar dari pekerjaan pelatihan Anda dan menyimpannya.

Konfigurasikan Koleksi Tensor Menggunakan CollectionConfig API

Gunakan CollectionConfig API operasi 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 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 CollectionConfigdi Amazon SageMaker Python 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 API operasi keduanya DebuggerHookConfigdan Aturan.

Konfigurasikan DebuggerHookConfig API untuk Menyimpan Tensor

Gunakan DebuggerHookConfigAPIuntuk 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 bucket URI S3 default adalah s3://sagemaker-<region>-<12digit_account_id>/<training-job-name>/debug-output/.

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

from sagemaker.debugger import DebuggerHookConfig debugger_hook_config=DebuggerHookConfig( s3_output_path="specify-amzn-s3-demo-bucket-uri" collection_configs=collection_configs )

Untuk informasi selengkapnya, lihat DebuggerHookConfigdi Amazon SageMaker Python SDK.

Contoh Notebook dan Sampel Kode untuk Mengkonfigurasi Debugger Hook

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

Notebook Contoh Visualisasi Tensor

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

    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.

    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

    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

    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.pySkrip yang disediakan dengan notebook mengambil tensor menggunakan Debugger dan memvisualisasikan. CNN Anda dapat menjalankan notebook ini di SageMaker Studio untuk mereproduksi visualisasi tensor dan mengimplementasikan model jaringan saraf convolutional Anda sendiri.

  • Analisis Tensor Real-time di SageMaker Notebook dengan MXNet

    Contoh ini memandu Anda dalam menginstal komponen yang diperlukan untuk memancarkan tensor dalam pekerjaan SageMaker pelatihan Amazon dan menggunakan API operasi Debugger untuk mengakses tensor tersebut saat pelatihan sedang berjalan. CNNModel gluon dilatih pada MNIST dataset Fashion. 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 Built-in Debugger

Anda dapat menggunakan koleksi tensor bawaan menggunakan CollectionConfig API dan menyimpannya menggunakan. DebuggerHookConfig API Contoh berikut menunjukkan cara menggunakan pengaturan default konfigurasi hook Debugger untuk membangun estimator. SageMaker TensorFlow Anda juga dapat menggunakan ini untukMXNet, PyTorch, dan XGBoost estimator.

catatan

Dalam contoh kode berikut, s3_output_path parameter untuk DebuggerHookConfig adalah opsional. Jika Anda tidak menentukannya, Debugger menyimpan tensor dis3://<output_path>/debug-output/, di mana jalur keluaran default dari pekerjaan pelatihan. <output_path> SageMaker Sebagai 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 Built-in Collections.

Simpan Tensor Menggunakan Koleksi Bawaan yang Dimodifikasi Debugger

Anda dapat memodifikasi koleksi bawaan Debugger menggunakan operasi. CollectionConfig API Contoh berikut menunjukkan cara men-tweak losses koleksi bawaan dan membangun estimator. SageMaker TensorFlow Anda juga dapat menggunakan ini untukMXNet, 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 CollectionConfig API.

Simpan Tensor Menggunakan Koleksi Kustom Debugger

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.