기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon의 분산 교육 관련 문제 해결 SageMaker
라이브러리 사용 시 훈련 작업을 실행하는 데 문제가 있는 경우, 다음 목록을 사용하여 문제를 해결해 보세요. 추가 지원이 필요한 경우 Amazon Amazon AWS 지원 센터
주제
Amazon SageMaker 디버거 및 체크포인트와 함께 SageMaker 분산 데이터 병렬로 사용
시스템 병목 현상을 모니터링하고, 프레임워크 작업을 프로파일링하고, 분산 SageMaker 데이터 병렬을 사용하여 교육 작업을 위한 모델 출력 텐서를 디버깅하려면 Amazon Debugger를 사용하십시오. SageMaker
하지만 SageMaker Debugger, SageMaker 분산 데이터 병렬 및 SageMaker 체크포인트를 사용하는 경우 다음 예제와 같은 오류가 표시될 수 있습니다.
SMDebug Does Not Currently Support Distributed Training Jobs With Checkpointing Enabled
이는 SageMaker 분산 데이터 병렬을 활성화할 때 발생하는 Debugger와 체크포인트 사이의 내부 오류 때문입니다.
-
세 가지 기능을 모두 활성화하면 SageMaker Python SDK가
debugger_hook_config=False
전달하여 Debugger를 자동으로 끕니다. 이는 다음 프레임워크estimator
예제와 동일합니다.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 분산 데이터 paraller와 SageMaker Debugger를 모두 계속 사용하려는 경우, 추정기에서
checkpoint_s3_uri
및checkpoint_local_path
매개변수를 지정하는 대신 훈련 스크립트에 체크포인트 함수를 수동으로 추가하는 것이 해결 방법입니다. 훈련 스크립트 내 수동 체크포인트 지정을 설정하는 방법에 대한 자세한 내용은 체크포인트 저장을(를) 참조하세요.
모델 파라미터 키에 예상치 못한 접두사가 붙었습니다.
PyTorch 분산 교육 작업의 경우 state_dict
키 (모델 매개변수) 에 예상치 못한 접두사 (model
예:) 가 붙을 수 있습니다. SageMaker데이터 병렬 라이브러리는 PyTorch 학습 작업에서 모델 아티팩트를 저장할 때 모델 파라미터 이름을 직접 변경하거나 앞에 추가하지 않습니다. 분산 훈련에서는 접두사를 붙이고 네트워크를 통해 state_dict
이동하도록 의 이름을 변경합니다. PyTorch SageMaker 데이터 병렬 라이브러리와 체크포인트를 학습에 사용하는 동안 파라미터 이름이 달라서 모델 오류 문제가 발생하는 경우, PyTorch 훈련 스크립트에 체크포인트를 로드하는 단계에서 접두사를 제거하도록 다음 예제 코드를 조정하십시오.
state_dict = {k.partition('
model.
')[2]:state_dict[k] for k in state_dict.keys()}
그러면 각 state_dict
키를 문자열 값으로 가져오고 처음으로 나타나는 'model.'
문자열을 분리한 다음, 파티션된 문자열의 세 번째 목록 항목(인덱스 2 포함)을 가져오게 됩니다.
접두사 문제에 대한 자세한 내용은 다중 GPU로 학습한 경우 저장된 모델의 Prefix 매개 변수 이름에
모델을 저장하고 로드하는 PyTorch 방법에 대한 자세한 내용은 PyTorch설명서의 장치 간 모델 저장 및 로드를
SageMaker 초기화 중 분산 교육 작업 중단
EFA 지원 인스턴스를 사용할 때 SageMaker 분산 데이터 병렬 교육 작업이 초기화 중에 중단되는 경우, 이는 교육 작업에 사용되는 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 교육 종료 시 분산 교육 작업이 중단됨
훈련 종료 시 지연 문제가 발생하는 근본 원인 중 하나는 여러 순위를 통틀어 에포크 1개당 처리되는 배치의 수가 일치하지 않기 때문입니다. 모든 작업자(GPU)는 배치 반복이 끝날 때 모든 작업자가 동일한 모델 사본을 얻을 수 있도록 하위 버전 전달 시 로컬 그라데이션을 동기화합니다. 훈련의 마지막 에포크에서 배치 크기가 서로 다른 작업자 그룹에 고르지 않게 할당되면 훈련 작업이 지연됩니다. 예를 들면 한 작업자 그룹(그룹 A)이 모든 배치의 처리를 끝내고 훈련 루프를 종료하더라도, 다른 작업자 그룹(그룹 B)은 다른 배치의 처리를 시작하면서도 그룹 A와의 통신을 계속하면서 그라데이션을 동기화합니다. 이렇게 되면 그룹 B는 이미 훈련이 완료되어 동기화할 그라데이션이 없는 그룹 A를 기다리게 됩니다.
따라서 훈련 데이터 세트를 설정할 때는 각 작업자가 훈련 기간 동안 동일한 개수의 배치를 거치도록, 각 작업자가 데이터 샘플을 동일한 개수만큼 확보해야 합니다. 이러한 지연 문제를 방지하려면 각 순위에 동일한 개수의 배치를 적용해야 합니다.
Amazon FSx 처리량 병목 현상으로 인한 확장 효율성 저하 관찰
확장 효율 저하의 가능한 원인 중 하나가 바로 FSx 처리량 한도입니다. 규모가 더 큰 훈련 클러스터로 전환할 때 확장 효율이 갑자기 저하되는 것을 발견한 경우, 처리량 한도가 더 높으면서 규모가 더 큰 FSx for Lustre 파일 시스템을 사용해 보세요. 자세한 내용은 Amazon FSx for Lustre 사용 설명서의 파일 시스템 성능 집계 및 스토리지 및 처리량 관리를 참조하세요.
SageMaker 반품 지원 중단 경고가 있는 분산 교육 작업 PyTorch
v1.4.0부터 SageMaker 분산 데이터 병렬화 라이브러리는 Distributed의 백엔드로 작동합니다. PyTorch 라이브러리 사용의 주요 변경 사항으로 PyTorch 인해 배포 패키지의 smdistributed
API는 더 이상 사용되지 않는다는 경고 메시지가 표시될 수 있습니다. PyTorch 이 경고 메시지의 내용은 다음과 유사합니다.
smdistributed.dataparallel.torch.dist is deprecated in the SageMaker 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 훈련 스크립트에서 SMDDP 라이브러리 사용 알아보려면 을 참조하십시오. PyTorch