Amazon SageMaker 분산 데이터 병렬화 라이브러리 FAQ - Amazon SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon SageMaker 분산 데이터 병렬화 라이브러리 FAQ

다음을 사용하여 SMDDP 라이브러리에 대해 자주 묻는 질문에 대한 답변을 찾을 수 있습니다.

Q: 라이브러리 사용 시 allreduce 지원 CPU 인스턴스는 어떻게 관리하나요? 이기종 CPU-GPU 클러스터를 생성해야 합니까, 아니면 SageMaker 서비스에서 SMDDP 라이브러리를 사용하는 작업을 위해 추가 C5를 생성합니까?

SMDDP 라이브러리는 GPU 인스턴스, 특히 NVIDIA A100 GPU 및 EFA를 사용하는 P4d 및 P4de 인스턴스만 지원합니다. 추가 C5 또는 CPU 인스턴스는 시작되지 않습니다. 8노드 P4d 클러스터에서 SageMaker 교육 작업을 수행하는 경우 8개의 인스턴스만 사용됩니다. ml.p4d.24xlarge 추가 인스턴스는 프로비저닝되지 않습니다.

Q: 하이퍼파라미터 H1 세트(학습률, 배치 크기, 최적화 프로그램 등)를 사용하는 단일 ml.p3.24xlarge 인스턴스에서 훈련 작업을 수행하면 5일이 걸립니다. SageMakerusing의 데이터 병렬 처리 라이브러리와 5배 더 큰 클러스터를 사용해도 대략 5배의 속도 향상을 달성할 수 있을까요? 아니면 SMDDP 라이브러리를 활성화한 후 트레이닝 하이퍼파라미터를 다시 살펴봐야 하나요?

이 라이브러리는 전체 배치 크기를 변경합니다. 새로운 전체 배치 크기는 사용된 훈련 인스턴스의 수에 따라 선형적으로 조정됩니다. 따라서 학습률 등의 하이퍼파라미터를 변경해야 수렴이 보장됩니다.

Q: SMDDP 라이브러리는 스팟을 지원합니까?

예. 사용자는 관리형 스팟 훈련을 사용할 수 있습니다. 트레이닝 작업에서 체크포인트 파일의 경로를 지정합니다. SageMaker TensorFlow 훈련 스크립트에서 SMDDP 라이브러리 사용(사용되지 않음) PyTorch 훈련 스크립트에서 SMDDP 라이브러리 사용의 마지막 단계에서 설명한 대로 훈련 스크립트에 체크포인트를 저장하고 복원해야 합니다.

Q: SMDDP 라이브러리는 단일 호스트, 다중 장치 설정과 관련이 있습니까?

이 라이브러리는 단일 호스트 다중 디바이스 훈련에서 사용할 수 있지만, 다중 호스트 훈련에서만 성능 향상을 보여줍니다.

Q: 훈련 데이터 세트는 어디에 저장해야 하나요?

훈련 데이터 세트는 Amazon S3 버킷 또는 Amazon FSx 드라이브에 저장할 수 있습니다. 훈련 작업에 지원되는 다양한 입력 파일 시스템은 이 문서를 참조하세요.

Q: SMDDP 라이브러리를 사용할 때 FSx for Lustre에 교육 데이터가 반드시 있어야 합니까? 아마존 EFS 및 아마존 S3를 사용할 수 있나요?

지연 시간이 짧고 처리량이 많으므로, 일반적으로는 Amazon FSx를 사용하는 것이 좋습니다. 선호도에 따라 Amazon EFS 또는 Amazon S3 중 하나를 사용할 수 있습니다.

Q: 라이브러리를 CPU 노드와 함께 사용할 수 있나요?

아니요. SMDDP 라이브러리에서 지원하는 인스턴스 유형을 찾으려면 을 참조하십시오. 지원되는 인스턴스 유형

Q: 출시 당시 SMDDP 라이브러리가 현재 지원하는 프레임워크 및 프레임워크 버전은 무엇입니까?

SMDDP 라이브러리는 현재 PyTorch v1.6.0 이상 및 v2.3.0 이상을 지원합니다. TensorFlow TensorFlow 1.x는 지원하지 않습니다. AWS 딥 러닝 컨테이너에 패키징되는 SMDDP 라이브러리 버전에 대한 자세한 내용은 Deep Learning Containers의 릴리스 노트를 참조하십시오.

Q: 라이브러리가 AMP를 지원하나요?

예. SMDDP 라이브러리는 기본적으로 자동 혼합 정밀도 (AMP) 를 지원합니다. 훈련 스크립트를 프레임워크 수준에서 수정하는 것 외에는 AMP를 사용하기 위한 추가 작업이 필요하지 않습니다. 그래디언트가 FP16에 있는 경우 SageMaker 데이터 병렬화 라이브러리는 FP16에서 해당 작업을 실행합니다. AllReduce 훈련 스크립트에 AMP API를 구현하는 방법에 대한 자세한 정보는 다음 리소스를 참조하십시오.

Q: 분산 훈련 작업이 I/O 병목 현상 때문에 느려졌는지 어떻게 알 수 있나요?

클러스터가 클수록 훈련 작업에 필요한 I/O 처리량이 늘어납니다. 따라서 훈련 처리량이 최대 성능까지 높아지기까지 더 오랜 시간(더 많은 에포크)이 걸릴 수 있습니다. 이는 노드를 확장함에 따라 I/O에 병목 현상이 발생하고 캐시 구축이 더 어려워진다는 뜻입니다(처리량 요건이 더 어려워지고 네트워크 토폴로지가 더 복잡해짐). 에서 Amazon FSx 처리량을 CloudWatch 모니터링하는 방법에 대한 자세한 내용은 FSx for Lustre의 FSx 사용 설명서의 Lustre용 FSx 모니터링을 참조하십시오.

Q: 데이터 병렬 처리를 이용하여 분산 훈련 작업을 실행할 때 I/O 병목 현상을 해결하려면 어떻게 해야 하나요?

Amazon S3를 사용한다면 Amazon FSx를 데이터 채널로 사용하는 것이 가장 좋습니다. 이미 Amazon FSx를 사용하고 있는데도 여전히 I/O 병목 현상 문제가 있다면, Amazon FSx 파일 시스템을 낮은 I/O 처리량과 적은 스토리지 용량으로 설정했을 수도 있습니다. 적절한 I/O 처리량 크기를 추정하고 선택하는 방법에 대한 자세한 내용은 Amazon FSx 사용과 최적의 스토리지 및 처리량 설정을(를) 참조하세요.

Q: (라이브러리 v1.4.0 이상인 경우) 프로세스 그룹을 초기화하는 동시에 Invalid backend 오류를 해결하려면 어떻게 해야 하나요?

호출할 ValueError: Invalid backend: 'smddp' 때 오류 메시지가 표시되는 경우 이는 SMDDP 라이브러리 init_process_group v1.4.0 이상의 주요 변경 사항 때문입니다. 백엔드로 smddp 등록되는 라이브러리의 PyTorch 클라이언트를 가져와야 합니다. smdistributed.dataparallel.torch.torch_smddp PyTorch 자세한 내용은 PyTorch 훈련 스크립트에서 SMDDP 라이브러리 사용를 참조하세요.

Q: (SMDDP 라이브러리 v1.4.0 이상의 경우) 인터페이스의 콜렉티브 프리미티브를 호출하고 싶습니다. torch.distributed smddp 백엔드는 어떤 프리미티브를 지원하나요?

v1.4.0에서 SMDDP 라이브러리는 인터페이스의,, 및 를 지원합니다all_reduce. broadcast reduce all_gather barrier torch.distributed

Q: (SMDDP 라이브러리 v1.4.0 이상의 경우) 이 새 API는 다른 사용자 지정 DDP 클래스 또는 Apex DDP와 같은 라이브러리와 함께 작동합니까?

SMDDP 라이브러리는 모듈을 사용하는 다른 타사 분산 데이터 병렬 라이브러리 및 프레임워크 구현으로 테스트됩니다. torch.distribtued 사용자 지정 DDP 클래스에서 사용하는 집단 연산을 SMDDP 라이브러리에서 지원하는 한 사용자 지정 DDP 클래스와 함께 SMDDP 라이브러리를 사용할 수 있습니다. 지원 대상 집합체의 목록은 이전 질문을 참조하세요. 이러한 사용 사례가 있고 추가 지원이 필요한 경우 AWS 지원 센터 또는 Amazon AWS 개발자 포럼을 통해 SageMaker 팀에 SageMaker 문의하세요.

Q: SMDDP 라이브러리가 bring-your-own-container (BYOC) 옵션을 지원합니까? 지원할 경우, 사용자 지정 Dockerfile을 작성하여 라이브러리를 설치하고 분산 훈련 작업을 실행하려면 어떻게 해야 하나요?

SMDDP 라이브러리와 최소 종속성을 자체 Docker 컨테이너에 통합하려는 경우 BYOC가 올바른 접근 방식입니다. 라이브러리의 바이너리 파일을 사용하여 자체 컨테이너를 빌드할 수 있습니다. 권장 프로세스는 라이브러리와 해당 종속성이 포함된 사용자 지정 Dockerfile을 작성하고, Docker 컨테이너를 빌드하고, Amazon ECR에 호스팅하고, ECR 이미지 URI를 사용하여 일반 추정기 클래스를 사용하여 교육 작업을 시작하는 것입니다. SageMaker SMDDP 라이브러리를 사용하여 분산 교육을 위한 사용자 지정 Dockerfile을 준비하는 방법에 대한 자세한 지침은 을 참조하십시오. SageMaker SageMaker 분산 데이터 병렬 라이브러리를 사용하여 자체 Docker 컨테이너 생성