Jalankan Pekerjaan TensorFlow Pelatihan dengan Kompiler SageMaker Pelatihan - Amazon SageMaker

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

Jalankan Pekerjaan TensorFlow Pelatihan dengan Kompiler SageMaker Pelatihan

Anda dapat menggunakan salah satu SageMaker antarmuka 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

Untuk mengaktifkan SageMaker Training Compiler, tambahkan compiler_config parameter ke estimator SageMaker TensorFlow atau Hugging Face. Impor TrainingCompilerConfig kelas dan berikan instance ke compiler_config parameter. Contoh kode berikut menunjukkan struktur kelas SageMaker estimator dengan SageMaker Training Compiler diaktifkan.

Tip

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

catatan

SageMaker Training Compiler untuk TensorFlow tersedia melalui estimator kerangka SageMaker TensorFlowkerja dan Hugging Face.

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

TensorFlow
from sagemaker.tensorflow import TensorFlow, 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 the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_estimator=TensorFlow( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', framework_version='2.9.1', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_estimator.fit()

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

Hugging Face Estimator with TensorFlow
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 the global learning rate learning_rate=learning_rate_native/batch_size_native*batch_size hyperparameters={ "n_gpus": 1, "batch_size": batch_size, "learning_rate": learning_rate } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=1, instance_type='ml.p3.2xlarge', transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()

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

Hugging Face Estimator with TensorFlow
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 } tensorflow_huggingface_estimator=HuggingFace( entry_point='train.py', instance_count=instance_count, instance_type=instance_type, transformers_version='4.21.1', tensorflow_version='2.6.3', hyperparameters=hyperparameters, compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) tensorflow_huggingface_estimator.fit()
Tip

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

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

catatan

Saat menggunakan estimator SageMaker Hugging Face, Anda harus menentukantransformers_version,, tensorflow_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.

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

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

  • transformers_version(str) - Diperlukan hanya saat menggunakan estimator SageMaker 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 tensorflow_version (str) - Diperlukan. Tentukan TensorFlow versi yang didukung oleh SageMaker Training Compiler. Untuk menemukan versi yang tersedia, lihatKerangka Kerja yang Didukung.

    catatan

    Saat menggunakan SageMaker TensorFlow estimator, Anda harus menentukanframework_version.

    Saat menggunakan estimator SageMaker Hugging Face, Anda harus menentukan transformers_version keduanya dan. tensorflow_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.

  • compiler_config(TrainingCompilerConfig objek) - Diperlukan. 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.

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 SageMaker Python SDK dan Extending SageMaker Framework Deep Learning Containers

AWS Deep Learning Containers (DLC) untuk TensorFlow menggunakan versi adaptasi TensorFlow yang menyertakan perubahan di atas kerangka open source TensorFlow . SageMaker Framework Deep Learning Containers dioptimalkan untuk AWS infrastruktur dasar dan Amazon SageMaker. Dengan keuntungan menggunakan DLC, integrasi SageMaker Training Compiler menambahkan lebih banyak peningkatan kinerja dibandingkan yang asli. TensorFlow Selanjutnya, Anda dapat membuat wadah pelatihan khusus dengan memperluas gambar DLC.

catatan

Fitur kustomisasi Docker ini saat ini hanya tersedia untuk TensorFlow.

Untuk memperluas dan menyesuaikan SageMaker TensorFlow DLC untuk kasus penggunaan Anda, gunakan petunjuk berikut.

Buat Dockerfile

Gunakan template Dockerfile berikut untuk memperluas DLC. SageMaker TensorFlow Anda harus menggunakan gambar SageMaker TensorFlow DLC sebagai gambar dasar wadah Docker Anda. Untuk menemukan URI image SageMaker TensorFlow DLC, lihat Kerangka Kerja yang Didukung.

# SageMaker TensorFlow Deep Learning Container image FROM 763104351884.dkr.ecr.<aws-region>.amazonaws.com/tensorflow-training:<image-tag> ENV PATH="/opt/ml/code:${PATH}" # This environment variable is used by the SageMaker container # to determine user code directory. ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code # Add more code lines to customize for your use-case ...

Untuk informasi selengkapnya, lihat Langkah 2: Membuat dan mengunggah skrip pelatihan Dockerfile dan Python.

Pertimbangkan jebakan berikut saat memperluas SageMaker Framework DLC:

  • Jangan secara eksplisit menghapus atau mengubah versi TensorFlow paket dalam wadah. SageMaker Melakukan hal itu menyebabkan TensorFlow paket yang AWS dioptimalkan ditimpa oleh TensorFlow paket sumber terbuka, yang dapat mengakibatkan penurunan kinerja.

  • Hati-hati dengan paket yang memiliki TensorFlow versi atau rasa tertentu sebagai ketergantungan. Paket-paket ini mungkin secara implisit menghapus instalasi paket sumber terbuka yang AWS dioptimalkan TensorFlow dan menginstal. TensorFlow

Misalnya, ada masalah yang diketahui bahwa pustaka tensorflow/models dan tensorflow/text selalu mencoba menginstal ulang open source. TensorFlow Jika Anda perlu menginstal pustaka ini untuk memilih versi tertentu untuk kasus penggunaan Anda, kami sarankan Anda melihat ke SageMaker TensorFlow DLC Dockerfiles untuk v2.9 atau yang lebih baru. Jalur ke Dockerfiles biasanya dalam format berikut:. tensorflow/training/docker/<tensorflow-version>/py3/<cuda-version>/Dockerfile.gpu Di Dockerfiles, Anda harus menemukan baris kode untuk menginstal ulang TensorFlow biner AWS terkelola (ditentukan ke variabel TF_URL lingkungan) dan dependensi lainnya secara berurutan. Bagian instalasi ulang akan terlihat seperti contoh berikut:

# tf-models does not respect existing installations of TensorFlow # and always installs open source TensorFlow RUN pip3 install --no-cache-dir -U \ tf-models-official==x.y.z RUN pip3 uninstall -y tensorflow tensorflow-gpu \ ; pip3 install --no-cache-dir -U \ ${TF_URL} \ tensorflow-io==x.y.z \ tensorflow-datasets==x.y.z

Bangun dan dorong ke ECR

Untuk membangun dan mendorong container Docker Anda ke Amazon ECR, ikuti petunjuk di tautan berikut:

Jalankan menggunakan SageMaker Python SDK Estimator

Gunakan estimator SageMaker TensorFlow kerangka kerja seperti biasa. Anda harus menentukan image_uri untuk menggunakan wadah baru yang Anda host di Amazon ECR.

import sagemaker, boto3 from sagemaker import get_execution_role from sagemaker.tensorflow import TensorFlow, TrainingCompilerConfig account_id = boto3.client('sts').get_caller_identity().get('Account') ecr_repository = 'tf-custom-container-test' tag = ':latest' region = boto3.session.Session().region_name uri_suffix = 'amazonaws.com' byoc_image_uri = '{}.dkr.ecr.{}.{}/{}'.format( account_id, region, uri_suffix, ecr_repository + tag ) byoc_image_uri # This should return something like # 111122223333.dkr.ecr.us-east-2.amazonaws.com/tf-custom-container-test:latest estimator = TensorFlow( image_uri=image_uri, role=get_execution_role(), base_job_name='tf-custom-container-test-job', instance_count=1, instance_type='ml.p3.8xlarge' compiler_config=TrainingCompilerConfig(), disable_profiler=True, debugger_hook_config=False ) # Start training estimator.fit()

Aktifkan Kompiler SageMaker Pelatihan Menggunakan Operasi SageMaker CreateTrainingJob API

SageMaker Opsi konfigurasi Training Compiler harus ditentukan melalui HyperParameters kolom AlgorithmSpecification and dalam sintaks permintaan untuk operasi CreateTrainingJobAPI.

"AlgorithmSpecification": { "TrainingImage": "<sagemaker-training-compiler-enabled-dlc-image>" }, "HyperParameters": { "sagemaker_training_compiler_enabled": "true", "sagemaker_training_compiler_debug_mode": "false" }

Untuk menemukan daftar lengkap URI image container pembelajaran mendalam yang telah diimplementasikan SageMaker Training Compiler, lihat. Kerangka Kerja yang Didukung