Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mempersiapkan dan menjalankan pekerjaan pelatihan dengan SageMaker Profiler
Menyiapkan untuk menjalankan pekerjaan pelatihan dengan SageMaker Profiler terdiri dari dua langkah: mengadaptasi skrip pelatihan dan mengonfigurasi peluncur pekerjaan SageMaker pelatihan.
Topik
Langkah 1: Sesuaikan skrip pelatihan Anda menggunakan modul SageMaker Profiler Python
Untuk mulai menangkap kernel berjalan GPUs saat tugas pelatihan sedang berjalan, modifikasi skrip pelatihan Anda menggunakan modul SageMaker Profiler Python. Impor pustaka start_profiling()
dan tambahkan stop_profiling()
metode dan untuk menentukan awal dan akhir pembuatan profil. Anda juga dapat menggunakan anotasi kustom opsional untuk menambahkan penanda dalam skrip pelatihan untuk memvisualisasikan aktivitas perangkat keras selama operasi tertentu di setiap langkah.
Perhatikan bahwa annotator mengekstrak operasi dari. GPUs Untuk operasi pembuatan profil diCPUs, Anda tidak perlu menambahkan anotasi tambahan apa pun. CPUpembuatan profil juga diaktifkan saat Anda menentukan konfigurasi profil, yang akan Anda praktikkan. Langkah 2: Buat estimator SageMaker kerangka kerja dan aktifkan SageMaker Profiler
catatan
Membuat profil seluruh pekerjaan pelatihan bukanlah penggunaan sumber daya yang paling efisien. Kami merekomendasikan pembuatan profil paling banyak 300 langkah pekerjaan pelatihan.
penting
Rilis pada 14 Desember 2023 melibatkan perubahan besar. Nama paket SageMaker Profiler Python diubah smppy
dari menjadi. smprof
Ini efektif dalam SageMaker Framework Containers
Jika Anda menggunakan salah satu versi sebelumnya dari SageMaker Framework Containerssmppy
Jika Anda tidak yakin tentang versi atau nama paket mana yang harus Anda gunakan, ganti pernyataan impor paket SageMaker Profiler dengan cuplikan kode berikut.
try: import smprof except ImportError: # backward-compatability for TF 2.11 and PT 1.13.1 images import smppy as smprof
Pendekatan 1. Gunakan pengelola konteks smprof.annotate
untuk membubuhi keterangan fungsi lengkap
Anda dapat membungkus fungsi penuh dengan manajer smprof.annotate()
konteks. Pembungkus ini direkomendasikan jika Anda ingin membuat profil berdasarkan fungsi alih-alih baris kode. Contoh skrip berikut menunjukkan bagaimana menerapkan manajer konteks untuk membungkus loop pelatihan dan fungsi penuh di setiap iterasi.
import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): with smprof.annotate(
"step_"+str(i)
): inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() with smprof.annotate("Forward"
): outputs = net(inputs) with smprof.annotate("Loss"
): loss = criterion(outputs, labels) with smprof.annotate("Backward"
): loss.backward() with smprof.annotate("Optimizer"
): optimizer.step() SMProf.stop_profiling()
Pendekatan 2. Gunakan smprof.annotation_begin()
dan smprof.annotation_end()
untuk membubuhi keterangan baris kode tertentu dalam fungsi
Anda juga dapat menentukan anotasi untuk membuat profil baris kode tertentu. Anda dapat mengatur titik awal dan titik akhir pembuatan profil yang tepat pada tingkat baris kode individual, bukan oleh fungsinya. Misalnya, dalam skrip berikut, step_annotator
didefinisikan pada awal setiap iterasi dan berakhir pada akhir iterasi. Sementara itu, anotator rinci lainnya untuk setiap operasi didefinisikan dan membungkus operasi target di setiap iterasi.
import smprof SMProf = smprof.SMProfiler.instance() config = smprof.Config() config.profiler = { "EnableCuda": "1", } SMProf.configure(config) SMProf.start_profiling() for epoch in range(args.epochs): if world_size > 1: sampler.set_epoch(epoch) tstart = time.perf_counter() for i, data in enumerate(trainloader, 0): step_annotator = smprof.annotation_begin(
"step_" + str(i)
) inputs, labels = data inputs = inputs.to("cuda", non_blocking=True) labels = labels.to("cuda", non_blocking=True) optimizer.zero_grad() forward_annotator = smprof.annotation_begin("Forward"
) outputs = net(inputs) smprof.annotation_end(forward_annotator) loss_annotator = smprof.annotation_begin("Loss"
) loss = criterion(outputs, labels) smprof.annotation_end(loss_annotator) backward_annotator = smprof.annotation_begin("Backward"
) loss.backward() smprof.annotation_end(backward_annotator) optimizer_annotator = smprof.annotation_begin("Optimizer"
) optimizer.step() smprof.annotation_end(optimizer_annotator) smprof.annotation_end(step_annotator) SMProf.stop_profiling()
Setelah membuat anotasi dan menyiapkan modul inisiasi profiler, simpan skrip untuk dikirimkan menggunakan peluncur pekerjaan SageMaker pelatihan di Langkah 2 berikut. Peluncur sampel mengasumsikan bahwa skrip pelatihan diberi nama. train_with_profiler_demo.py
Langkah 2: Buat estimator SageMaker kerangka kerja dan aktifkan SageMaker Profiler
Prosedur berikut menunjukkan bagaimana mempersiapkan estimator SageMaker kerangka kerja untuk pelatihan menggunakan SageMaker PythonSDK.
-
Siapkan
profiler_config
objek menggunakanProfilerConfig
danProfiler
modul sebagai berikut.from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )
Berikut ini adalah deskripsi
Profiler
modul dan argumennya.-
Profiler
: Modul untuk mengaktifkan SageMaker Profiler dengan pekerjaan pelatihan.-
cpu_profiling_duration
(int): Tentukan durasi waktu dalam hitungan detik untuk pembuatan profil. CPUs Defaultnya adalah 3600 detik.
-
-
-
Buat estimator SageMaker kerangka kerja dengan
profiler_config
objek yang dibuat pada langkah sebelumnya. Kode berikut menunjukkan contoh membuat PyTorch estimator. Jika Anda ingin membuat TensorFlow estimator, imporsagemaker.tensorflow.TensorFlow
sebagai gantinya, dan tentukan salah satu TensorFlowversi yang didukung oleh SageMaker Profiler. Untuk informasi selengkapnya tentang kerangka kerja dan jenis instance yang didukung, lihatSageMaker gambar kerangka pra-instal dengan Profiler SageMaker .import sagemaker from sagemaker.pytorch import PyTorch estimator = PyTorch( framework_version="
2.0.0
", role=sagemaker.get_execution_role(), entry_point="train_with_profiler_demo.py
", # your training job entry point source_dir=source_dir
, # source directory for your training script output_path=output_path
, base_job_name="sagemaker-profiler-demo
", hyperparameters=hyperparameters
, # if any instance_count=1
, # Recommended to test with < 8 instance_type=ml.p4d.24xlarge
, profiler_config=profiler_config
) -
Mulai pekerjaan pelatihan dengan menjalankan
fit
metode. Denganwait=False
, Anda dapat membungkam log pekerjaan pelatihan dan membiarkannya berjalan di latar belakang.estimator.fit(wait=False)
Saat menjalankan pekerjaan pelatihan atau setelah pekerjaan selesai, Anda dapat pergi ke topik berikutnya di Buka aplikasi UI SageMaker Profiler dan mulai menjelajahi dan memvisualisasikan profil yang disimpan.
Jika Anda ingin langsung mengakses data profil yang disimpan di bucket Amazon S3, gunakan skrip berikut untuk mengambil S3. URI
import os # This is an ad-hoc function to get the S3 URI # to where the profile output data is saved def get_detailed_profiler_output_uri(estimator): config_name = None for processing in estimator.profiler_rule_configs: params = processing.get("RuleParameters", dict()) rule = config_name = params.get("rule_to_invoke", "") if rule == "DetailedProfilerProcessing": config_name = processing.get("RuleConfigurationName") break return os.path.join( estimator.output_path, estimator.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(estimator) )
(Opsional) Instal paket SageMaker Profiler Python
Untuk menggunakan SageMaker Profiler pada PyTorch atau gambar TensorFlow kerangka kerja yang tidak tercantum dalamSageMaker gambar kerangka pra-instal dengan Profiler SageMaker , atau pada wadah Docker kustom Anda sendiri untuk pelatihan, Anda dapat menginstal SageMaker Profiler dengan menggunakan salah satu file. SageMaker Profiler Python paket file biner
Opsi 1: Instal paket SageMaker Profiler saat meluncurkan pekerjaan pelatihan
Jika Anda ingin menggunakan SageMaker Profiler untuk pekerjaan pelatihan menggunakan PyTorch atau TensorFlow gambar yang tidak tercantumSageMaker gambar kerangka pra-instal dengan Profiler SageMaker , buat requirements.txt
file dan temukan di bawah jalur yang Anda tentukan ke source_dir
parameter estimator SageMaker kerangka kerja di Langkah 2. Untuk informasi selengkapnya tentang menyiapkan requirements.txt
file secara umum, lihat Menggunakan pustaka pihak ketigarequirements.txt
file, tambahkan salah satu jalur bucket S3 untuk file. SageMaker Profiler Python paket file biner
# requirements.txt https://smppy.s3.amazonaws.com/
tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
Opsi 2: Instal paket SageMaker Profiler di wadah Docker khusus Anda
Jika Anda menggunakan wadah Docker khusus untuk pelatihan, tambahkan salah satunya SageMaker Profiler Python paket file biner ke Dockerfile Anda.
# Install the smprof package version compatible with your CUDA version RUN pip install https://smppy.s3.amazonaws.com/
tensorflow/cu112/smprof-0.3.332-cp39-cp39-linux_x86_64.whl
Untuk panduan menjalankan wadah Docker khusus untuk pelatihan SageMaker secara umum, lihat Mengadaptasi wadah pelatihan Anda sendiri.