翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
PyTorch モデルのトレーニング
このトピックでは、HyperPod を使用して PyTorch モデルをトレーニングするプロセスについて説明します。
このシナリオでは、 hyp-pytorch-job
テンプレートを使用して PyTorch モデルをトレーニングしましょう。これにより、一般的に使用されるパラメータを公開することでジョブの作成が簡素化されます。モデルアーティファクトは、後で推論で使用するため、S3 バケットに保存されます。ただし、これはオプションであり、任意のストレージの場所を選択できます。
トレーニングジョブを作成する
CLI または Python SDK を使用してモデルをトレーニングできます。
CLI の使用
次のコマンドを使用してトレーニングジョブを作成します。
hyp create hyp-pytorch-job \ --version 1.0 \ --job-name test-pytorch-job \ --image pytorch/pytorch:latest \ --command '["python", "train.py"]' \ --args '["--epochs", "10", "--batch-size", "32"]' \ --environment '{"PYTORCH_CUDA_ALLOC_CONF": "max_split_size_mb:32"}' \ --pull-policy "IfNotPresent" \ --instance-type ml.p4d.24xlarge \ --tasks-per-node 8 \ --label-selector '{"accelerator": "nvidia", "network": "efa"}' \ --deep-health-check-passed-nodes-only true \ --scheduler-type "kueue" \ --queue-name "training-queue" \ --priority "high" \ --max-retry 3 \ --volumes '["data-vol", "model-vol", "checkpoint-vol"]' \ --persistent-volume-claims '["shared-data-pvc", "model-registry-pvc"]' \ --output-s3-uri s3://my-bucket/model-artifacts
主な必須パラメータの説明:
--job-name
: トレーニングジョブの一意の識別子--image
: トレーニング環境を含む Docker イメージ
このコマンドは、 という名前のトレーニングジョブを開始しますtest-pytorch-job
。は、トレーニングされたモデルアーティファクトを保存する場所--output-s3-uri
を指定します。たとえば、 ですs3://my-bucket/model-artifacts
。カスタムモデルのデプロイに必要になるため、この場所に注意してください。
SDK for Python を使用する場合
プログラムによる制御には、 SDK を使用します。Python スクリプトを作成して、同じトレーニングジョブを起動します。
from sagemaker.hyperpod import HyperPodPytorchJob from sagemaker.hyperpod.job import ReplicaSpec, Template, Spec, Container, Resources, RunPolicy, Metadata # Define job specifications nproc_per_node = "1" # Number of processes per node replica_specs = [ ReplicaSpec ( name = "pod", # Replica name template = Template ( spec = Spec ( containers = [ Container ( # Container name name="container-name", # Training image image="448049793756.dkr.ecr.us-west-2.amazonaws.com/ptjob:mnist", # Always pull image image_pull_policy="Always", resources=Resources\ ( # No GPUs requested requests={"nvidia.com/gpu": "0"}, # No GPU limit limits={"nvidia.com/gpu": "0"}, ), # Command to run command=["python", "train.py"], # Script arguments args=["--epochs", "10", "--batch-size", "32"], ) ] ) ), ) ] # Keep pods after completion run_policy = RunPolicy(clean_pod_policy="None") # Create and start the PyTorch job pytorch_job = HyperPodPytorchJob ( # Job name metadata = Metadata(name="demo"), # Processes per node nproc_per_node = nproc_per_node, # Replica specifications replica_specs = replica_specs, # Run policy run_policy = run_policy, # S3 location for artifacts output_s3_uri="s3://my-bucket/model-artifacts" ) # Launch the job pytorch_job.create()
トレーニングジョブをモニタリングする
次のコマンドを使用して、ジョブの進行状況をモニタリングします。
CLI の使用
# Check job status hyp list hyp-pytorch-job # Get detailed information hyp describe hyp-pytorch-job --job-name test-pytorch-job # View logs hyp get-logs hyp-pytorch-job \ --pod-name test-pytorch-job-pod-0 \ --job-name test-pytorch-job
注: トレーニング時間はモデルの複雑さとインスタンスタイプによって異なります。ログをモニタリングして進行状況を追跡します。
これらのコマンドは、ジョブのステータスを確認し、問題をトラブルシューティングするのに役立ちます。ジョブが正常に完了すると、モデルアーティファクトは に保存されますs3://my-bucket/model-artifacts
。
SDK for Python を使用する場合
Python スクリプトに次のコードを追加します。
print("List all pods created for this job:") print(pytorch_job.list_pods()) print("Check the logs from pod0:") print(pytorch_job.get_logs_from_pod(pod_name="demo-pod-0")) print("List all HyperPodPytorchJobs:") print(HyperPodPytorchJob.list()) print("Describe job:") print(HyperPodPytorchJob.get(name="demo").model_dump()) pytorch_job.refresh() print(pytorch_job.status.model_dump())
次のステップ
トレーニング後、モデルアーティファクトは、指定した S3 バケット () に保存されますs3://my-bucket/model-artifacts
。これらのアーティファクトを使用してモデルをデプロイできます。現在、トレーニングから推論への移行を手動で管理する必要があります。これには以下が含まれます。
-
アーティファクトの検索: S3 バケット (
s3://my-bucket/model-artifacts
) をチェックして、トレーニング済みモデルファイルが存在することを確認します。 -
パスの記録: 推論設定で使用する正確な S3 パス (例:
s3://my-bucket/model-artifacts/test-pytorch-job/model.tar.gz
) を書き留めます。 -
デプロイでの参照: 正しいモデルがロードされるようにカスタムエンドポイントを設定するときに、この S3 パスを指定します。