기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
라이브러리 사용 시 훈련 작업을 실행하는 데 문제가 있는 경우, 다음 목록을 사용하여 문제를 해결해 보세요. 추가 지원이 필요한 경우 Amazon SageMaker AI용 AWS 지원 센터
주제
Amazon SageMaker Debugger 및 체크포인트와 병렬로 Amazon SageMaker AI 분산 데이터 사용
시스템 병목 현상을 모니터링하고, 프레임워크 작업을 프로파일링하고, SageMaker AI 분산 데이터를 병렬로 사용하여 훈련 작업을 위한 모델 출력 텐서를 디버깅하려면 Amazon SageMaker Debugger를 사용합니다.
그러나 SageMaker Debugger, SageMaker AI 분산 데이터 병렬 및 SageMaker AI 체크포인트를 사용하는 경우 다음 예제와 같은 오류가 표시될 수 있습니다.
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
이는 SageMaker AI 분산 데이터를 병렬로 활성화할 때 발생하는 Debugger와 체크포인트 간의 내부 오류로 인한 것입니다.
-
세 기능을 모두 활성화하면 SageMaker Python SDK가 다음 프레임워크
estimator
예제와 동일한debugger_hook_config=False
을(를) 전달하여 Debugger를 자동으로 끕니다.bucket=sagemaker.Session().default_bucket() base_job_name="sagemaker-checkpoint-test" checkpoint_in_bucket="checkpoints" # The S3 URI to store the checkpoints checkpoint_s3_bucket="s3://{}/{}/{}".format(bucket, base_job_name, checkpoint_in_bucket) estimator = TensorFlow( ... distribution={"smdistributed": {"dataparallel": { "enabled": True }}}, checkpoint_s3_uri=checkpoint_s3_bucket, checkpoint_local_path="/opt/ml/checkpoints", debugger_hook_config=False )
-
SageMaker AI 분산 데이터와 SageMaker Debugger를 모두 병렬로 계속 사용하려는 경우 해결 방법은 예측기에서
checkpoint_s3_uri
및checkpoint_local_path
파라미터를 지정하는 대신 훈련 스크립트에 체크포인트 함수를 수동으로 추가하는 것입니다. 훈련 스크립트 내 수동 체크포인트 지정을 설정하는 방법에 대한 자세한 내용은 체크포인트 저장을(를) 참조하세요.
모델 파라미터 키에 연결된 예기치 않은 접두사
PyTorch 분산 훈련 작업의 경우, 예기치 않은 접두사(예: model
)가 state_dict
키(모델 파라미터)에 붙을 수 있습니다. PyTorch 훈련 작업에서 모델 아티팩트를 저장할 때 SageMaker AI 데이터 병렬 라이브러리는 모델 파라미터 이름을 직접 변경하거나 추가하지 않습니다. PyTorch의 분산 훈련에서는 네트워크 전체에 전달되도록 state_dict
의 이름을 변경하고 접두사를 그 앞에 붙입니다. SageMaker AI 데이터 병렬 라이브러리를 사용하고 PyTorch 훈련을 위한 체크포인트를 사용하는 동안 다른 파라미터 이름으로 인해 모델 실패 문제가 발생하는 경우, 다음 예제 코드를 조정하여 훈련 스크립트에 체크포인트를 로드하는 단계에서 접두사를 제거합니다.
state_dict = {k.partition('model.
')[2]:state_dict[k] for k in state_dict.keys()}
그러면 각 state_dict
키를 문자열 값으로 가져오고 처음으로 나타나는 'model.'
문자열을 분리한 다음, 파티션된 문자열의 세 번째 목록 항목(인덱스 2 포함)을 가져오게 됩니다.
접두사 문제에 대한 자세한 내용은 PyTorch 토론 포럼의 다중 GPU로 훈련된 경우 저장된 모델의 파라미터 이름에 접두사를 붙이시겠습니까?
모델을 저장 및 로드하는 PyTorch 메서드에 대한 자세한 내용은 PyTorch 설명서의 디바이스 간 모델 저장 및 로드
초기화 중 SageMaker AI 분산 훈련 작업 중지
EFA 지원 인스턴스를 사용할 때 SageMaker AI 분산 데이터 병렬 훈련 작업이 초기화 중에 중단되는 경우 훈련 작업에 사용되는 VPC 서브넷의 보안 그룹이 잘못 구성되었기 때문일 수 있습니다. EFA에 올바른 보안 그룹 구성이 적용되어야 노드 간 트래픽을 활성화할 수 있습니다.
보안 그룹의 인바운드 및 아웃바운드 규칙을 구성하려면 다음 방법대로 하세요.
에 로그인 AWS Management Console 하고 https://console.aws.amazon.com/vpc/
Amazon VPC 콘솔을 엽니다. -
왼쪽 탐색 창에서 보안 그룹을 선택하세요.
-
훈련에 사용하는 VPC 서브넷에 연결된 보안 그룹을 선택하세요.
-
세부 정보 섹션에서 보안 그룹 ID를 복사하세요.
-
[인바운드 규칙(Inbound rules)] 탭에서 [인바운드 규칙 편집(Edit inbound rules)]을 선택합니다.
-
[인바운드 규칙 편집(Edit inbound rules)] 페이지에서 다음을 수행합니다.
-
[Add another rule]을 선택합니다.
-
유형(Type)에서 모든 트래픽(All traffic)을 선택합니다.
-
소스에서 사용자 지정을 선택하고 보안 그룹 ID를 검색 창에 붙여 넣은 다음, 팝업 창으로 나타나는 보안 그룹을 선택하세요.
-
-
규칙 저장을 선택하여 해당 보안 그룹에 대한 인바운드 규칙 구성을 마치세요.
-
아웃바운드 규칙(Outbound rules) 탭에서 아웃바운드 규칙 편집(Edit outbound rules)을 선택합니다.
-
6단계 및 7단계를 반복하여 동일한 규칙을 아웃바운드 규칙으로 추가하세요.
인바운드 및 아웃바운드 규칙으로 보안 그룹을 구성하는 이전 단계를 완료한 후, 훈련 작업을 다시 실행하고 지연 문제가 해결되었는지 확인하세요.
VPC용 및 EFA용 보안 그룹을 구성하는 방법에 대한 자세한 내용은 VPC용 보안 그룹 및 Elastic Fabric Adapter를 참조하세요.
훈련 종료 시 SageMaker AI 분산 훈련 작업 정지
훈련 종료 시 지연 문제가 발생하는 근본 원인 중 하나는 여러 순위를 통틀어 에포크 1개당 처리되는 배치의 수가 일치하지 않기 때문입니다. 모든 작업자(GPU)는 배치 반복이 끝날 때 모든 작업자가 동일한 모델 사본을 얻을 수 있도록 하위 버전 전달 시 로컬 그라데이션을 동기화합니다. 훈련의 마지막 에포크에서 배치 크기가 서로 다른 작업자 그룹에 고르지 않게 할당되면 훈련 작업이 지연됩니다. 예를 들면 한 작업자 그룹(그룹 A)이 모든 배치의 처리를 끝내고 훈련 루프를 종료하더라도, 다른 작업자 그룹(그룹 B)은 다른 배치의 처리를 시작하면서도 그룹 A와의 통신을 계속하면서 그라데이션을 동기화합니다. 이렇게 되면 그룹 B는 이미 훈련이 완료되어 동기화할 그라데이션이 없는 그룹 A를 기다리게 됩니다.
따라서 훈련 데이터세트를 설정할 때는 각 작업자가 훈련 기간 동안 동일한 개수의 배치를 거치도록, 각 작업자가 데이터 샘플을 동일한 개수만큼 확보해야 합니다. 이러한 지연 문제를 방지하려면 각 순위에 동일한 개수의 배치를 적용해야 합니다.
Amazon FSx 처리량 병목 현상으로 인한 확장 효율 저하 발견
확장 효율 저하의 가능한 원인 중 하나가 바로 FSx 처리량 한도입니다. 규모가 더 큰 훈련 클러스터로 전환할 때 확장 효율이 갑자기 저하되는 것을 발견한 경우, 처리량 한도가 더 높으면서 규모가 더 큰 FSx for Lustre 파일 시스템을 사용해 보세요. 자세한 내용은 Amazon FSx for Lustre 사용 설명서의 파일 시스템 성능 집계 및 스토리지 및 처리량 관리를 참조하세요.
PyTorch를 사용한 SageMaker AI 분산 훈련 작업에서 사용 중단 경고 반환
v1.4.0 이후 SageMaker AI 분산 데이터 병렬 처리 라이브러리는 분산된 PyTorch의 백엔드로 작동합니다. PyTorch로 라이브러리를 사용하는 주요 변경 사항으로 인해 PyTorch 분산 패키지의 smdistributed
API를 더 이상 사용할 수 없다는 경고 메시지가 나타날 수 있습니다. 이 경고 메시지의 내용은 다음과 유사합니다.
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker AI distributed data parallel library v1.4.0+.
Please use torch.distributed and specify 'smddp' as a backend when initializing process group as follows:
torch.distributed.init_process_group(backend='smddp')
For more information, see the library's API documentation at
https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-modify-sdp-pt.html
v1.4.0 이상에서는 라이브러리를 훈련 스크립트 상단에서 한 번만 가져와서 PyTorch 분산 초기화 중에 백엔드로 설정하면 됩니다. 백엔드 사양이 한 행만 있으면 PyTorch 훈련 스크립트를 변경 없이 유지하면서 PyTorch 분산 모듈을 직접 사용할 수 있습니다. 주요 변경 사항 및 PyTorch로 라이브러리를 사용하는 새로운 방법에 대해 알아보려면 PyTorch 훈련 스크립트에서 SMDDP 라이브러리 사용을(를) 참조하세요.