Jalankan Pekerjaan PyTorch Pelatihan dengan Kompiler SageMaker Pelatihan - Amazon SageMaker AI

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

Jalankan Pekerjaan PyTorch Pelatihan dengan Kompiler SageMaker Pelatihan

Anda dapat menggunakan salah satu antarmuka SageMaker AI untuk menjalankan pekerjaan pelatihan dengan SageMaker Training Compiler: Amazon SageMaker Studio Classic, instans SageMaker notebook Amazon, AWS SDK for Python (Boto3) dan. AWS Command Line Interface

Menggunakan SageMaker Python SDK

SageMaker Training Compiler for PyTorch tersedia melalui SageMaker AI PyTorchdan kelas estimator HuggingFacekerangka kerja. Untuk mengaktifkan SageMaker Training Compiler, tambahkan compiler_config parameter ke estimator SageMaker AI. Impor TrainingCompilerConfig kelas dan berikan instance ke compiler_config parameter. Contoh kode berikut menunjukkan struktur kelas estimator SageMaker AI dengan SageMaker Training Compiler diaktifkan.

Tip

Untuk memulai dengan model prebuilt yang disediakan oleh PyTorch atau Transformers, coba gunakan ukuran batch yang disediakan dalam tabel referensi di. Model yang Diuji

catatan

PyTorch Dukungan asli tersedia di SageMaker Python SDK v2.121.0 dan yang lebih baru. Pastikan Anda memperbarui SageMaker Python SDK yang sesuai.

catatan

Mulai PyTorch v1.12.0, wadah SageMaker Training Compiler untuk PyTorch tersedia. Perhatikan bahwa wadah SageMaker Training Compiler untuk tidak PyTorch dikemas dengan Hugging Face Transformers. Jika Anda perlu menginstal pustaka dalam wadah, pastikan Anda menambahkan requirements.txt file di bawah direktori sumber saat mengirimkan pekerjaan pelatihan.

Untuk PyTorch v1.11.0 dan sebelumnya, gunakan versi sebelumnya dari wadah SageMaker Training Compiler untuk Hugging Face dan. PyTorch

Untuk daftar lengkap versi kerangka kerja dan informasi kontainer yang sesuai, lihatKerangka Kerja yang Didukung.

Untuk informasi yang sesuai dengan kasus penggunaan Anda, lihat salah satu opsi berikut.

PyTorch v1.12.0 and later

Untuk mengkompilasi dan melatih PyTorch model, konfigurasikan PyTorch estimator SageMaker AI dengan SageMaker Training Compiler seperti yang ditunjukkan pada contoh kode berikut.

catatan

PyTorch Dukungan asli ini tersedia di SageMaker AI Python SDK v2.120.0 dan yang lebih baru. Pastikan Anda memperbarui SageMaker AI PythonSDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='train.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=1, instance_type='ml.p3.2xlarge', framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Hugging Face Transformers with PyTorch v1.11.0 and before

Untuk mengkompilasi dan melatih model transformator PyTorch, konfigurasikan estimator SageMaker AI Hugging Face dengan SageMaker Training Compiler seperti yang ditunjukkan pada contoh kode berikut.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # the original max batch size that can fit into GPU memory without compiler batch_size_native=12 learning_rate_native=float('5e-5') # an updated max batch size that can fit into GPU memory with compiler batch_size=64 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Untuk menyiapkan skrip pelatihan Anda, lihat halaman-halaman berikut.

Untuk menemukan end-to-end contoh, lihat buku catatan berikut:

PyTorch v1.12

Untuk PyTorch v1.12, Anda dapat menjalankan pelatihan terdistribusi dengan SageMaker Training Compiler dengan menambahkan pytorch_xla opsi yang ditentukan ke distribution parameter kelas PyTorch estimator SageMaker AI.

catatan

PyTorch Dukungan asli ini tersedia di SageMaker AI Python SDK v2.121.0 dan yang lebih baru. Pastikan Anda memperbarui SageMaker AI PythonSDK.

from sagemaker.pytorch import PyTorch, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_estimator=PyTorch( entry_point='your_training_script.py', source_dir='path-to-requirements-file', # Optional. Add this if need to install additional packages. instance_count=instance_count, instance_type=instance_type, framework_version='1.13.1', py_version='py3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_estimator.fit()
Tip

Untuk mempersiapkan naskah pelatihan Anda, lihat PyTorch

Transformers v4.21 with PyTorch v1.11

Untuk PyTorch v1.11 dan yang lebih baru, SageMaker Training Compiler tersedia untuk pelatihan terdistribusi dengan pytorch_xla opsi yang ditentukan untuk parameter. distribution

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate } pytorch_huggingface_estimator=HuggingFace( entry_point='your_training_script.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', pytorch_version='1.11.0', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), distribution ={'pytorchxla' : { 'enabled': True }}, disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()
Transformers v4.17 with PyTorch v1.10.2 and before

Untuk versi PyTorch v1.10.2 dan sebelumnya yang didukung, SageMaker Training Compiler memerlukan mekanisme alternatif untuk meluncurkan pekerjaan pelatihan terdistribusi. Untuk menjalankan pelatihan terdistribusi, SageMaker Training Compiler mengharuskan Anda untuk meneruskan skrip peluncur pelatihan terdistribusi SageMaker AI ke entry_point argumen, dan meneruskan skrip pelatihan Anda ke argumen. hyperparameters Contoh kode berikut menunjukkan cara mengonfigurasi estimator SageMaker AI Hugging Face yang menerapkan perubahan yang diperlukan.

from sagemaker.huggingface import HuggingFace, TrainingCompilerConfig # choose an instance type, specify the number of instances you want to use, # and set the num_gpus variable the number of GPUs per instance. instance_count=1 instance_type='ml.p3.8xlarge' num_gpus=4 # the original max batch size that can fit to GPU memory without compiler batch_size_native=16 learning_rate_native=float('5e-5') # an updated max batch size that can fit to GPU memory with compiler batch_size=26 # update learning rate learning_rate=learning_rate_native/batch_size_native*batch_size*num_gpus*instance_count training_script="your_training_script.py" hyperparameters={ "n_gpus": num_gpus, "batch_size": batch_size, "learning_rate": learning_rate, "training_script": training_script # Specify the file name of your training script. } pytorch_huggingface_estimator=HuggingFace( entry_point='distributed_training_launcher.py', # Specify the distributed training launcher script. instance_count=instance_count, instance_type=instance_type, transformers_version='4.17.0', pytorch_version='1.10.2', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) pytorch_huggingface_estimator.fit()

Skrip peluncur akan terlihat seperti berikut ini. Ini membungkus skrip pelatihan Anda dan mengonfigurasi lingkungan pelatihan terdistribusi tergantung pada ukuran contoh pelatihan pilihan Anda.

# distributed_training_launcher.py #!/bin/python import subprocess import sys if __name__ == "__main__": arguments_command = " ".join([arg for arg in sys.argv[1:]]) """ The following line takes care of setting up an inter-node communication as well as managing intra-node workers for each GPU. """ subprocess.check_call("python -m torch_xla.distributed.sm_dist " + arguments_command, shell=True)

Daftar berikut adalah set minimal parameter yang diperlukan untuk menjalankan pekerjaan SageMaker pelatihan dengan compiler.

catatan

Saat menggunakan estimator SageMaker AI Hugging Face, Anda harus menentukantransformers_version,, pytorch_versionhyperparameters, compiler_config dan parameter untuk SageMaker mengaktifkan Training Compiler. Anda tidak dapat menggunakan image_uri untuk secara manual menentukan Deep Learning Containers terintegrasi Training Compiler yang terdaftar diKerangka Kerja yang Didukung.

  • entry_point(str) - Diperlukan. Tentukan nama file skrip pelatihan Anda.

    catatan

    Untuk menjalankan pelatihan terdistribusi dengan SageMaker Training Compiler dan PyTorch v1.10.2 dan sebelumnya, tentukan nama file skrip peluncur ke parameter ini. Skrip peluncur harus disiapkan untuk membungkus skrip pelatihan Anda dan mengonfigurasi lingkungan pelatihan terdistribusi. Untuk informasi selengkapnya, lihat contoh buku catatan berikut:

  • source_dir(str) - Opsional. Tambahkan ini jika perlu menginstal paket tambahan. Untuk menginstal paket, Anda perlu prapare requirements.txt file di bawah direktori ini.

  • instance_count(int) - Diperlukan. Tentukan jumlah instans.

  • instance_type(str) - Diperlukan. Tentukan jenis instance.

  • transformers_version(str) - Diperlukan hanya saat menggunakan penaksir SageMaker AI Hugging Face. Tentukan versi pustaka Hugging Face Transformers yang didukung oleh SageMaker Training Compiler. Untuk menemukan versi yang tersedia, lihatKerangka Kerja yang Didukung.

  • framework_versionatau pytorch_version (str) - Diperlukan. Tentukan PyTorch versi yang didukung oleh SageMaker Training Compiler. Untuk menemukan versi yang tersedia, lihatKerangka Kerja yang Didukung.

    catatan

    Saat menggunakan penaksir SageMaker AI Hugging Face, Anda harus menentukan transformers_version keduanya dan. pytorch_version

  • hyperparameters(dict) — Opsional. Tentukan hyperparameters untuk pekerjaan pelatihan, sepertin_gpus,batch_size, danlearning_rate. Saat Anda mengaktifkan SageMaker Training Compiler, coba ukuran batch yang lebih besar dan sesuaikan tingkat pembelajaran yang sesuai. Untuk menemukan studi kasus penggunaan kompiler dan ukuran batch yang disesuaikan untuk meningkatkan kecepatan pelatihan, lihat Model yang Diuji danSageMaker Contoh Kompiler Pelatihan Notebook dan Blog.

    catatan

    Untuk menjalankan pelatihan terdistribusi dengan SageMaker Training Compiler dan PyTorch v1.10.2 dan sebelumnya, Anda perlu menambahkan parameter tambahan,"training_script", untuk menentukan skrip pelatihan Anda, seperti yang ditunjukkan pada contoh kode sebelumnya.

  • compiler_config(TrainingCompilerConfig objek) - Diperlukan untuk mengaktifkan SageMaker Training Compiler. Sertakan parameter ini untuk mengaktifkan SageMaker Training Compiler. Berikut ini adalah parameter untuk TrainingCompilerConfig kelas.

    • enabled(bool) — Opsional. Tentukan True atau False untuk mengaktifkan atau mematikan SageMaker Training Compiler. Nilai default-nya adalah True.

    • debug(bool) — Opsional. Untuk menerima log pelatihan yang lebih mendetail dari pekerjaan pelatihan yang dipercepat kompiler, ubah ke. True Namun, pencatatan tambahan mungkin menambah overhead dan memperlambat pekerjaan pelatihan yang dikompilasi. Nilai default-nya adalah False.

  • distribution(dict) — Opsional. Untuk menjalankan pekerjaan pelatihan terdistribusi dengan SageMaker Training Compiler, tambahkandistribution = { 'pytorchxla' : { 'enabled': True }}.

Awas

Jika Anda mengaktifkan SageMaker Debugger, itu mungkin memengaruhi kinerja SageMaker Training Compiler. Kami menyarankan Anda mematikan Debugger saat menjalankan SageMaker Training Compiler untuk memastikan tidak ada dampak pada kinerja. Untuk informasi selengkapnya, lihat Pertimbangan. Untuk menonaktifkan fungsionalitas Debugger, tambahkan dua argumen berikut ke estimator:

disable_profiler=True, debugger_hook_config=False

Jika pekerjaan pelatihan dengan kompiler berhasil diluncurkan, Anda menerima log berikut selama fase inisialisasi pekerjaan:

  • dengan TrainingCompilerConfig(debug=False)

    Found configuration for Training Compiler Configuring SM Training Compiler...
  • dengan TrainingCompilerConfig(debug=True)

    Found configuration for Training Compiler Configuring SM Training Compiler... Training Compiler set to debug mode

Menggunakan CreateTrainingJob API Operasi SageMaker AI

SageMaker Opsi konfigurasi Training Compiler harus ditentukan melalui HyperParameters bidang AlgorithmSpecification and dalam sintaks permintaan untuk operasi. CreateTrainingJob API

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false", "sagemaker_pytorch_xla_multi_worker_enabled": "false" // set to "true" for distributed training }

Untuk menemukan daftar lengkap image container deep learning URIs yang telah diimplementasikan SageMaker Training Compiler, lihatKerangka Kerja yang Didukung.