기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
원격 디버깅을 AWS Systems Manager 위해를 통해 훈련 컨테이너에 액세스
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에서 훈련 작업을 시작하거나 업데이트할 때 원격 디버깅을 활성화하는 방법을 알아봅니다.
훈련 컨테이너에 액세스
해당 훈련 작업의 SecondaryStatus
이 Training
인 경우 훈련 컨테이너에 액세스할 수 있습니다. 다음 코드 예제에서는 DescribeTrainingJob
API를 사용하여 훈련 작업의 상태를 확인하는 방법, CloudWatch 에서 훈련 작업 로그를 확인하는 방법, 훈련 컨테이너에 로그인하는 방법을 보여줍니다.
훈련 작업의 상태를 확인하려면
훈련 컨테이너의 호스트 이름을 찾으려면
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 세션을 시작할 수 없습니다.