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
catatan
Pemberitahuan akhir dukungan: Pada 30 Juni 2027, dukungan untuk Amazon SageMaker Profiler AWS akan berakhir. Setelah 30 Juni 2027, Anda tidak akan lagi dapat mengakses konsol Profiler atau sumber daya Profiler. Untuk informasi selengkapnya, lihat Perubahan ketersediaan 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 pada GPU saat pekerjaan pelatihan sedang berjalan, ubah skrip pelatihan Anda menggunakan modul Pro SageMaker filer 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 anotator mengekstrak operasi dari GPU. Untuk operasi pembuatan profil di CPU, Anda tidak perlu menambahkan anotasi tambahan. Pembuatan profil CPU juga diaktifkan saat Anda menentukan konfigurasi pembuatan profil, yang akan Anda praktikkanLangkah 2: Buat SageMaker AI ModelTrainer 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 14 Desember 2023 melibatkan perubahan besar. Nama paket SageMaker Profiler Python diubah dari smppy menjadismprof. Ini efektif di SageMaker AI Framework Containers
Jika Anda menggunakan salah satu versi sebelumnya dari SageMaker AI Framework Containers smppy Jika Anda tidak yakin tentang versi atau nama paket mana yang harus Anda gunakan, ganti pernyataan impor dari 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 membuat anotasi fungsi penuh
Anda dapat membungkus fungsi penuh dengan pengel smprof.annotate() ola konteks. Pembungkus ini disarankan jika Anda ingin membuat profil berdasarkan fungsi alih-alih baris kode. Contoh skrip berikut menunjukkan cara mengimplementasikan 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 membuat anotasi baris kode tertentu dalam fungsi
Anda juga dapat menentukan anotasi untuk profil baris kode tertentu. Anda dapat mengatur titik awal dan titik akhir profil yang tepat pada tingkat baris kode individu, bukan berdasarkan fungsi. Misalnya, dalam skrip berikut, step_annotator didefinisikan di awal setiap iterasi dan berakhir pada akhir iterasi. Sementara itu, anotator terperinci lainnya untuk setiap operasi ditentukan 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 namatrain_with_profiler_demo.py.
Langkah 2: Buat SageMaker AI ModelTrainer dan aktifkan SageMaker Profiler
Prosedur berikut menunjukkan cara mempersiapkan SageMaker AI ModelTrainer untuk pelatihan menggunakan SageMaker Python SDK.
-
Siapkan
profiler_configobjek menggunakanProfilermodulProfilerConfigdan sebagai berikut.from sagemaker import ProfilerConfig, Profiler profiler_config = ProfilerConfig( profile_params = Profiler(cpu_profiling_duration=3600) )Berikut ini adalah deskripsi
Profilermodul dan argumennya.-
Profiler: Modul untuk mengaktifkan SageMaker Profiler dengan pekerjaan pelatihan.-
cpu_profiling_duration(int): Tentukan durasi waktu dalam detik untuk pembuatan profil pada CPU. Defaultnya adalah 3600 detik.
-
-
-
Buat SageMaker AI ModelTrainer dengan
profiler_configobjek yang dibuat pada langkah sebelumnya. Kode berikut menunjukkan contoh pembuatan a PyTorch ModelTrainer. Jika Anda ingin membuat TensorFlow ModelTrainer, impor sebagaisagemaker.tensorflow.TensorFlowgantinya, dan tentukan salah satu TensorFlow versi yang didukung oleh SageMaker Profiler. Untuk informasi selengkapnya tentang kerangka kerja dan jenis instans yang didukung, lihatSageMaker Gambar kerangka AI yang sudah diinstal sebelumnya dengan Profiler SageMaker.from sagemaker.train import ModelTrainer from sagemaker.train.configs import SourceCode from sagemaker.core.helper.session_helper import get_execution_role from sagemaker.core import image_uris training_image = image_uris.retrieve( framework="pytorch", region=region, version="2.0.0", image_scope="training", instance_type=ml.p4d.24xlarge) model_trainer = ModelTrainer( training_image=training_image, role=get_execution_role(), source_code=SourceCode(entry_script="train_with_profiler_demo.py", source_dir=source_dir), # your training job entry point 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
trainmetode. Denganwait=False, Anda dapat membungkam log pekerjaan pelatihan dan membiarkannya berjalan di latar belakang.model_trainer.train(wait=False)
Saat menjalankan pekerjaan pelatihan atau setelah pekerjaan selesai, Anda dapat pergi ke topik berikutnya di Buka aplikasi SageMaker Profiler UI 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 URI S3.
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(model_trainer): config_name = None for processing in model_trainer.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( model_trainer.output_path, model_trainer.latest_training_job.name, "rule-output", config_name, ) print( f"Profiler output S3 bucket: ", get_detailed_profiler_output_uri(model_trainer) )
(Opsional) Instal SageMaker paket Profiler Python
Untuk menggunakan SageMaker Profiler pada PyTorch atau gambar TensorFlow kerangka kerja yang tidak terdaftar diSageMaker Gambar kerangka AI yang sudah diinstal sebelumnya dengan Profiler SageMaker, atau pada wadah Docker kustom Anda sendiri untuk pelatihan, Anda dapat menginstal SageMaker Profiler dengan menggunakan salah satu dariSageMaker File biner paket Profiler Python.
Opsi 1: Instal SageMaker paket Profiler saat meluncurkan pekerjaan pelatihan
Jika Anda ingin menggunakan SageMaker Profiler untuk pekerjaan pelatihan menggunakan PyTorch atau TensorFlow gambar yang tidak tercantumSageMaker Gambar kerangka AI yang sudah diinstal sebelumnya dengan Profiler SageMaker, buat requirements.txt file dan temukan di bawah jalur yang Anda tentukan ke source_dir parameter SageMaker AI ModelTrainer di Langkah 2. Untuk informasi selengkapnya tentang menyiapkan requirements.txt file secara umum, lihat Menggunakan pustaka pihak ketiga requirements.txt file, tambahkan salah satu jalur bucket S3 untukSageMaker File biner paket Profiler Python.
# 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 kustom Anda
Jika Anda menggunakan wadah Docker khusus untuk pelatihan, tambahkan salah satunya SageMaker File biner paket Profiler Python 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 AI secara umum, lihat Meng adaptasi wadah pelatihan Anda sendiri.