기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS Systems Manager (SSM)을 통해 SageMaker 훈련 컨테이너에 안전하게 연결할 수 있습니다. 이렇게 하면 컨테이너 내에서 실행 중인 훈련 작업을 디버깅할 수 있는 쉘 수준의 액세스 권한이 부여됩니다. Amazon CloudWatch로 스트리밍되는 명령 및 응답을 로깅할 수도 있습니다. 자체 Amazon Virtual Private Cloud(VPC)를 사용하여 모델을 훈련하는 경우 AWS PrivateLink 를 사용하여 SSM용 VPC 엔드포인트를 설정하고 SSM을 통해 컨테이너에 비공개로 연결할 수 있습니다.
SageMaker AI 프레임워크 컨테이너
IAM 권한 설정
SageMaker 훈련 컨테이너에서 SSM을 활성화하려면 컨테이너에 대한 IAM 역할을 설정해야 합니다. 본인 또는 AWS 계정의 사용자가 SSM을 통해 훈련 컨테이너에 액세스하려면 SSM을 사용할 수 있는 권한이 있는 IAM 사용자를 설정해야 합니다.
IAM 역할
SageMaker 훈련 컨테이너가 SSM 에이전트로 시작하려면 SSM 권한이 있는 IAM 역할을 제공합니다.
훈련 작업에 원격 디버깅을 활성화하려면 훈련 작업이 시작될 때 SageMaker AI가 훈련 컨테이너에서 SSM 에이전트를 시작해야 합니다. SSM 에이전트가 SSM 서비스와 통신할 수 있도록 하려면 훈련 작업을 실행하는 데 사용하는 IAM 역할에 다음 정책을 추가합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
IAM 사용자
다음 정책을 추가하여 IAM 사용자에게 SSM 대상에 연결할 수 있는 SSM 세션 권한을 부여합니다. 이 경우 SSM 대상은 SageMaker 훈련 컨테이너입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:TerminateSession"
],
"Resource": "*"
}
]
}
다음 정책 샘플과 같이 Condition
키를 추가하여 IAM 사용자가 특정 훈련 작업의 컨테이너에만 연결하도록 제한할 수 있습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:StartSession",
"ssm:TerminateSession"
],
"Resource": [
"*"
],
"Condition": {
"StringLike": {
"ssm:resourceTag/aws:ssmmessages:target-id": [
"sagemaker-training-job:*"
]
}
}
}
]
}
sagemaker:EnableRemoteDebug
조건 키를 명시적으로 사용하여 원격 디버깅을 제한할 수도 있습니다. 다음은 IAM 사용자가 원격 디버깅을 제한하는 정책의 예입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyRemoteDebugInTrainingJob",
"Effect": "Allow",
"Action": [
"sagemaker:CreateTrainingJob",
"sagemaker:UpdateTrainingJob"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"sagemaker:EnableRemoteDebug": false
}
}
}
]
}
자세한 내용은 AWS 서비스 승인 참조의 Amazon SageMaker AI에 사용되는 조건 키를 참조하세요.
SageMaker 훈련 작업에 원격 디버깅을 활성화하는 방법
이 섹션에서는 Amazon SageMaker AI에서 훈련 작업을 시작하거나 업데이트할 때 원격 디버깅을 활성화하는 방법을 알아봅니다.
SageMaker Python SDK의 추정기 클래스를 사용하면 enable_remote_debug
파라미터 또는 enable_remote_debug()
및 disable_remote_debug()
메서드를 사용하여 원격 디버깅을 켜거나 끌 수 있습니다.
훈련 작업을 생성할 때 원격 디버깅을 활성화하려면
새 훈련 작업을 생성할 때 원격 디버깅을 활성화하려면 enable_remote_debug
파라미터를 True
로 설정합니다. 기본값은 False
이므로 이 파라미터를 전혀 설정하지 않거나 False
로 명시적으로 설정하면 원격 디버깅 기능이 비활성화됩니다.
import sagemaker
session = sagemaker.Session()
estimator = sagemaker.estimator.Estimator(
...,
sagemaker_session=session,
image_uri="<your_image_uri>
", #must be owned by your organization or Amazon DLCs
role=role
,
instance_type="ml.m5.xlarge
",
instance_count=1
,
output_path=output_path
,
max_run=1800
,
enable_remote_debug=True
)
훈련 작업을 업데이트하여 원격 디버깅을 활성화하려면
다음 추정기 클래스 메서드를 사용하면 작업의 SecondaryStatus
이 Downloading
또는 Training
일 때 훈련 작업이 실행되는 동안 원격 디버깅을 활성화하거나 비활성화할 수 있습니다.
# Enable RemoteDebug
estimator.enable_remote_debug()
# Disable RemoteDebug
estimator.disable_remote_debug()
훈련 컨테이너에 액세스
해당 훈련 작업의 SecondaryStatus
이 Training
인 경우 훈련 컨테이너에 액세스할 수 있습니다. 다음 코드 예제에서는 DescribeTrainingJob
API를 사용하여 훈련 작업의 상태를 확인하는 방법, CloudWatch 에서 훈련 작업 로그를 확인하는 방법, 훈련 컨테이너에 로그인하는 방법을 보여줍니다.
훈련 작업의 상태를 확인하려면
훈련 작업의 SecondaryStatus
를 확인하려면 다음 SageMaker Python SDK 코드를 실행합니다.
import sagemaker
session = sagemaker.Session()
# Describe the job status
training_job_info = session.describe_training_job(job_name
)
print(training_job_info)
훈련 컨테이너의 호스트 이름을 찾으려면
SSM을 통해 훈련 컨테이너에 연결하려면 대상 ID sagemaker-training-job:<training-job-name>_algo-<n>
에 이 형식을 사용합니다. 여기서 algo-<n>
는 컨테이너 호스트의 이름입니다. 작업이 단일 인스턴스에서 실행 중인 경우 호스트는 항상 algo-1
입니다. 여러 인스턴스에서 분산 훈련 작업을 실행하는 경우 SageMaker AI는 동일한 수의 호스트와 로그 스트림을 생성합니다. 예를 들어 인스턴스 4개를 사용하는 경우 SageMaker AI는 algo-1
, algo-2
, 및 algo-3
를 생성합니다algo-4
. 디버깅할 로그 스트림과 해당 호스트 번호를 결정해야 합니다. 훈련 작업과 연결된 로그 스트림에 액세스하려면 다음을 수행합니다.
https://console.aws.amazon.com/sagemaker/
Amazon SageMaker AI 콘솔을 엽니다. -
왼쪽 탐색 창에서 훈련을 선택한 후 훈련 작업을 선택합니다.
-
훈련 작업 목록에서 디버그하려는 훈련 작업을 선택합니다. 훈련 작업 세부 정보 페이지가 열립니다.
-
모니터링 섹션에서 로그 보기를 선택합니다. 관련 훈련 작업 로그 스트림 목록이 CloudWatch 콘솔에 열립니다.
-
로그 스트림 이름은 호스트 이름을 나타내는
algo-<n>
과 함께<training-job-name>/algo-<n>-<time-stamp>
형식으로 표시됩니다.
SageMaker AI가 다중 인스턴스 분산 훈련의 구성 정보를 관리하는 방법에 대한 자세한 내용은 분산 훈련 구성을 참조하세요.
훈련 컨테이너에 액세스하려면
터미널에서 다음 명령을 사용하여 SSM 세션(aws ssm start-session
)을 시작하고 훈련 컨테이너에 연결합니다.
aws ssm start-session --target sagemaker-training-job:
<training-job-name>
_algo-<n>
예를 들어 훈련 작업 이름이 training-job-test-remote-debug
이고 호스트 이름이 algo-1
인 경우 대상 ID는 sagemaker-training-job:training-job-test-remote-debug_algo-1
가 됩니다. 이 명령의 출력이 Starting session with SessionId:xxxxx
와 비슷하면 연결이 성공한 것입니다.
를 사용한 SSM 액세스 AWS PrivateLink
훈련 컨테이너가 퍼블릭 인터넷에 연결되지 않은 Amazon Virtual Private Cloud 내에서 실행되는 경우 AWS PrivateLink 를 사용하여 SSM을 활성화할 수 있습니다.는 엔드포인트 인스턴스, SSM 및 Amazon EC2 간의 모든 네트워크 트래픽을 Amazon 네트워크로 AWS PrivateLink 제한합니다. 를 사용하여 SSM 액세스를 설정하는 방법에 대한 자세한 내용은 세션 관리자용 Amazon VPC 엔드포인트 설정을 AWS PrivateLink참조하세요.
SSM 세션 명령 및 결과 로깅
세션 관리자 기본 설정 문서 생성(명령줄)의 지침에 따라 SSM 세션에 대한 기본 설정을 정의하는 SSM 문서를 생성할 수 있습니다. SSM 문서를 사용하여 데이터 암호화, 세션 기간 및 로깅을 포함한 세션 옵션을 구성할 수 있습니다. 예를 들면, 기본 설정을 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷 또는 Amazon CloudWatch Logs 로그 그룹에 세션 로그 데이터를 저장할지를 지정할 수 있습니다. AWS 계정의 모든 세션에 대한 일반 기본 설정을 정의하는 문서 또는 개별 세션에 대한 기본 설정을 정의하는 AWS 리전문서를 생성할 수 있습니다.
SSM에서 오류 로그를 확인하여 문제 해결
Amazon SageMaker AI는 SSM 에이전트의 오류를 /aws/sagemaker/TrainingJobs
로그 그룹의 CloudWatch Logs로 업로드합니다. SSM 에이전트 로그 스트림의 이름은 <job-name>/algo-<n>-<timestamp>/ssm
입니다. 예를 들어 라는 두 노드 훈련 작업을 생성하면 training-job-test-remote-debug
훈련 작업 로그training-job-test-remote-debug/algo-<n>-<timestamp>
와 여러 training-job-test-remote-debug/algo-<n>-<timestamp>/ssm
SSM 에이전트 오류 로그가 CloudWatch Logs에 업로드됩니다. 이 예제에서는 */ssm
로그 스트림을 검토하여 SSM 문제를 해결할 수 있습니다.
training-job-test-remote-debug/algo-1-1680535238
training-job-test-remote-debug/algo-2-1680535238
training-job-test-remote-debug/algo-1-1680535238/ssm
training-job-test-remote-debug/algo-2-1680535238/ssm
고려 사항
SageMaker AI 원격 디버깅을 사용할 때는 다음 사항을 고려하세요.
-
원격 디버깅은 SageMaker AI 알고리즘 컨테이너 또는 SageMaker AI 기반 컨테이너에는 지원되지 않습니다 AWS Marketplace.
-
격리로 인해 아웃바운드 네트워크 호출이 방지되므로 네트워크 격리가 활성화된 컨테이너에 대해서는 SSM 세션을 시작할 수 없습니다.