Amazon Search PlatoBlockchain 데이터 인텔리전스를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP를 실행합니다. 수직 검색. 일체 포함.

Amazon Search를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP 실행

너무 많은 데이터, 너무 적은 시간. 머신 러닝(ML) 전문가, 데이터 과학자, 엔지니어 및 애호가는 전 세계적으로 이 문제에 직면해 있습니다. 자연어 처리에서 컴퓨터 비전, 표 형식에서 시계열 및 그 사이의 모든 것에 이르기까지 가능한 한 많은 GPU에 대해 데이터를 실행할 때 속도를 최적화하는 오래된 문제는 수많은 솔루션에 영감을 주었습니다. 오늘 우리는 다음과 같은 기본 오픈 소스 프레임워크를 사용하는 PyTorch 개발자를 위한 기능을 발표하게 되어 기쁩니다. 파이 토치 번개파이토치 DDP, 이는 클라우드로의 경로를 간소화할 것입니다.

아마존 세이지 메이커 는 ML을 위한 완전 관리형 서비스이며 SageMaker 모델 교육은 대규모 고성능 교육을 위해 최적화된 컴퓨팅 환경입니다. SageMaker 모델 교육은 고성능 및 저렴한 비용으로 ML 모델을 쉽게 교육하고 재현할 수 있는 원활한 제어 평면을 통해 원격 교육 환경을 제공합니다. PyTorch를 대규모로 실행하는 것을 훨씬 더 쉽고 더 쉽게 만들어주는 SageMaker 교육 포트폴리오의 새로운 기능을 발표하게 된 것을 기쁘게 생각합니다.

  1. 이제 PyTorch Lightning을 다음과 통합할 수 있습니다. SageMaker의 분산 데이터 병렬 라이브러리 단 한 줄의 코드 변경으로.
  2. SageMaker 모델 교육 이제 NCCL 백엔드가 있는 기본 PyTorch 분산 데이터 병렬을 지원하므로 개발자가 그 어느 때보다 쉽게 ​​SageMaker로 마이그레이션할 수 있습니다.

이 게시물에서는 이러한 새로운 기능에 대해 논의하고 Amazon Search가 SageMaker에서 최적화된 분산 교육 백엔드와 함께 PyTorch Lightning을 실행하여 모델 교육 시간을 단축한 방법도 알아봅니다.

Amazon Search 사례 연구를 시작하기 전에 익숙하지 않은 사람들을 위해 SageMaker의 분산 데이터 병렬 라이브러리. 2020년에 우리는 전체 클러스터 효율성을 높이는 대규모 분산 경사하강법을 위한 사용자 지정 클러스터 구성을 개발 및 출시했으며, Amazon Science에 다음과 같이 소개되었습니다. 청어. 매개변수 서버와 링 기반 토폴로지의 장점을 모두 사용하여 SageMaker SMDDP(Distributed Data Parallel)는 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 네트워크 토폴로지 포함 EFA. 더 큰 클러스터 크기의 경우 SMDDP는 Horovod(TensorFlow) 및 PyTorch Distributed Data Parallel에 비해 처리량을 20~40% 향상시킬 수 있습니다. 더 작은 클러스터 크기 및 지원되는 모델의 경우 다음을 권장합니다. SageMaker 교육 컴파일러, 전체 작업 시간을 최대 50%까지 줄일 수 있습니다.

고객 스포트라이트: Amazon Search를 사용하여 SageMaker의 최적화된 백엔드에서 PyTorch Lightning

Amazon Search는 검색 및 발견 경험을 담당합니다. Amazon.com. Amazon에서 구매할 제품을 찾는 고객의 검색 경험을 강화합니다. 높은 수준에서 Amazon Search는 Amazon.com에서 판매되는 모든 제품에 대한 인덱스를 구축합니다. 고객이 쿼리를 입력하면 Amazon Search는 딥 러닝 모델을 비롯한 다양한 ML 기술을 사용하여 관련성 있고 흥미로운 제품을 고객 쿼리와 일치시킵니다. 그런 다음 결과를 고객에게 보여주기 전에 제품의 순위를 지정합니다.

Amazon Search 과학자들은 PyTorch 위에 추가된 사용성 기능으로 인해 검색 순위를 강화하는 딥 러닝 모델을 교육하기 위한 주요 프레임워크 중 하나로 PyTorch Lightning을 사용했습니다. 이 새로운 SageMaker 출시 이전에는 PyTorch Lightning으로 작성된 딥 러닝 모델에 대해 SMDDP가 지원되지 않았습니다. 이는 PyTorch Lightning 사용을 선호하는 Amazon Search 과학자들이 데이터 병렬 기술을 사용하여 모델 교육을 확장하지 못하게 하여 교육 시간을 크게 늦추고 더 확장 가능한 교육이 필요한 새로운 실험을 테스트하는 것을 방지했습니다.

팀의 초기 벤치마킹 결과에 따르면 단일 노드 훈련 기준선과 비교하여 7.3개 노드에서 훈련할 때 샘플 모델의 훈련 시간이 200배 빨라졌습니다. 이 벤치마킹에 사용된 기준 모델은 3.16개의 조밀한 완전 연결 계층과 XNUMX개 이상의 매개변수가 있는 다층 퍼셉트론 신경망입니다. 다음 표에는 ml.pXNUMXxlarge SageMaker 교육 인스턴스에 대한 벤치마킹 결과가 요약되어 있습니다.

인스턴스 수 교육 시간(분) 개량
1 99 기준
2 55 SR 1.8x
4 27 SR 3.7x
8 13.5 SR 7.3x

다음으로 신제품 출시에 대한 세부 정보를 살펴보겠습니다. 원하는 경우 해당 단계를 수행할 수 있습니다. 예시 노트북 .

SageMaker 분산 교육 라이브러리로 PyTorch Lightning 실행

이제 SageMaker Data Parallel이 SageMaker 교육 내에서 PyTorch Lightning과 원활하게 통합되었음을 발표하게 된 것을 기쁘게 생각합니다.

PyTorch Lightning은 PyTorch에서 사용자 지정 모델 작성을 단순화하는 오픈 소스 프레임워크입니다. Keras가 TensorFlow에 대해 수행한 것과 유사한 방식으로 PyTorch Lightning은 PyTorch 자체의 대부분의 하위 수준 기능에 대한 추상화와 함께 상위 수준 API를 제공합니다. 여기에는 모델 정의, 프로파일링, 평가, 가지치기, 모델 병렬 처리, 하이퍼파라미터 구성, 전이 학습 등이 포함됩니다.

이전에 PyTorch Lightning 개발자는 교육 코드를 고성능 SageMaker GPU 클러스터로 원활하게 마이그레이션하는 방법에 대해 확신이 없었습니다. 또한 SageMaker Data Parallel이 도입한 효율성 향상을 활용할 방법이 없었습니다.

PyTorch Lightning의 경우 일반적으로 SageMaker Training에서 이러한 API를 실행하기 위한 코드 변경이 거의 또는 전혀 없어야 합니다. 예제 노트북에서 우리가 사용하는 DDP전략DDP플러그인 방법.

SageMaker Data Parallel과 함께 PyTorch Lightning을 최적화된 백엔드로 사용하는 세 단계가 있습니다.

  1. 지원되는 사용 AWS 딥 러닝 컨테이너 (DLC)를 기본 이미지로 사용하거나 선택적으로 고유한 컨테이너를 만들고 SageMaker Data Parallel 백엔드를 직접 설치하십시오.. 다음과 같이 필요한 패키지에 PyTorch Lightning이 포함되어 있는지 확인하십시오. requirements.txt 파일.
  2. 최적화된 백엔드를 활성화하는 몇 가지 사소한 코드 변경을 훈련 스크립트에 적용합니다. 여기에는 다음이 포함됩니다.
    1. SM DDP 라이브러리 가져오기:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. SageMaker용 PyTorch Lightning 환경 설정:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. 1.5.10 이전 버전의 PyTorch Lightning을 사용하는 경우 몇 가지 단계를 더 추가해야 합니다.
      1. 먼저 환경 변수를 추가합니다.
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. 둘째, 다음을 사용하는지 확인하십시오. DDPPlugin보다는 DDPStrategy. 최신 버전을 사용하는 경우 requirements.txt FBI 증오 범죄 보고서 source_dir 당신의 직업을 위해 이것은 필요하지 않습니다. 다음 코드를 참조하십시오.
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. 선택적으로 프로세스 그룹 백엔드를 다음과 같이 정의합니다. "smddp" FBI 증오 범죄 보고서 DDPSTrategy 물체. 그러나 지원되는 PyTorch DDP 백엔드와 함께 PyTorch Lightning을 사용하는 경우 이 `process_group_backend` 매개변수. 다음 코드를 참조하십시오.
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. 다음과 같이 추정기에 명시된 분배 방법이 있는지 확인하십시오. distribution={"smdistributed":{"dataparallel":{"enabled":True} Herring 백엔드를 사용하는 경우 또는 distribution={"pytorchddp":{"enabled":True}.

이제 SageMaker 교육 작업을 시작할 수 있습니다! Python SDK, Boto3, SageMaker 콘솔, AWS 명령 줄 인터페이스 (AWS CLI) 및 수많은 다른 방법이 있습니다. AWS 관점에서 이것은 단일 API 명령: create-training-job. 로컬 터미널에서 이 명령을 실행하든 AWS 람다 기능, 아마존 세이지 메이커 스튜디오 노트북, KubeFlow 파이프라인 또는 기타 컴퓨팅 환경은 전적으로 귀하에게 달려 있습니다.

PyTorch Lightning과 SageMaker Data Parallel 간의 통합은 현재 1.11부터 PyTorch의 최신 버전에서만 지원됩니다. 또한 이 릴리스는 PyTorch 1.12부터 SageMaker용 AWS DLC에서만 사용할 수 있습니다. 이 이미지를 기준으로 삼아야 합니다. ~ 안에 us-east-1, 이 주소는 다음과 같습니다.

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

그런 다음 이것을 기본 이미지로 사용하여 Docker 컨테이너를 확장하거나 이를 변수로 전달할 수 있습니다. image_uri 의 논쟁 SageMaker 훈련 추정기.

결과적으로 AWS에서 사용할 수 있는 최고의 성능으로 SageMaker Training의 최적화된 GPU에서 PyTorch Lightning 코드를 실행할 수 있습니다.

SageMaker에서 PyTorch 분산 데이터 병렬 실행

가장 큰 문제 PyTorch 분산 데이터 병렬(DDP) 해결 방법은 믿을 수 없을 정도로 간단합니다. 바로 속도입니다. 우수한 분산 교육 프레임워크는 안정성, 신뢰성, 그리고 가장 중요한 것은 규모에 따른 우수한 성능을 제공해야 합니다. PyTorch DDP는 단일 노드 및 다중 노드 설정 모두에서 여러 GPU 장치에 모델을 복제할 수 있는 API를 토치 개발자에게 제공하여 이를 제공합니다. 그런 다음 프레임워크는 교육 데이터 세트에서 각 모델 사본으로 서로 다른 객체를 분할하는 것을 관리하고 각 단계에서 동기화하기 위해 각 모델 사본에 대한 그라디언트를 평균화합니다. 이렇게 하면 전체 훈련 실행이 완전히 완료될 때 하나의 모델이 생성됩니다. 다음 다이어그램은 이 프로세스를 보여줍니다.

PyTorch DDP는 대규모 데이터 세트를 사용하는 프로젝트에서 일반적입니다. 각 데이터 세트의 정확한 크기는 매우 다양하지만 일반적인 지침은 데이터 세트, 계산 크기 및 모델 크기를 유사한 비율로 확장하는 것입니다. 라고도 함 스케일링 법칙, 이 세 가지의 최적의 조합은 논쟁의 여지가 많으며 응용 프로그램에 따라 다릅니다. AWS에서는 여러 고객과의 작업을 기반으로 전체 데이터 세트 크기가 수십 GB 이상일 때 데이터 병렬 전략의 이점을 분명히 볼 수 있습니다. 데이터 세트가 더 커지면 일부 유형의 데이터 병렬 전략을 구현하는 것이 전체 실험 속도를 높이고 가치 실현 시간을 개선하는 데 중요한 기술입니다.

이전에는 온프레미스 또는 기타 컴퓨팅 환경에서 분산 교육을 위해 PyTorch DDP를 사용하던 고객이 원활한 제어 평면을 통해 고성능 GPU를 활용하기 위해 프로젝트를 SageMaker Training으로 쉽게 마이그레이션할 수 있는 프레임워크가 부족했습니다. 특히 데이터 병렬 프레임워크를 SMDDP로 마이그레이션하거나 SageMaker Training에서 PyTorch DDP의 기능을 수동으로 개발 및 테스트해야 했습니다. 현재 SageMaker Training은 PyTorch DDP 코드를 온보딩하는 고객에게 원활한 경험을 제공하게 된 것을 기쁘게 생각합니다.

이를 효과적으로 사용하기 위해 교육 스크립트를 변경할 필요가 없습니다.

다음 코드에서 이 새 매개변수를 볼 수 있습니다. 에서 distribution 매개변수, 간단히 추가 pytorchddp 다음으로 활성화 설정 true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

이 새로운 구성은 SageMaker Python SDK 버전 2.102.0 및 PyTorch DLC의 1.11에서 시작됩니다.

인기 있는 PyTorch DDP 개발자를 위해 토치런 프레임워크에서 이미 강력한 내결함성을 제공하는 SageMaker 교육 환경에서는 이것이 필요하지 않다는 것을 아는 것이 도움이 됩니다. 그러나 코드 재작성을 최소화하기 위해 이 명령을 실행하는 다른 실행기 스크립트를 진입점으로 가져올 수 있습니다.

이제 PyTorch 개발자는 스크립트를 SageMaker로 쉽게 이동할 수 있으므로 스크립트와 컨테이너가 여러 컴퓨팅 환경에서 원활하게 실행될 수 있습니다.

이것은 미래에 다음을 활용할 수 있도록 준비합니다. SageMaker의 분산 교육 라이브러리 최대 40% 향상된 속도 향상을 제공하는 AWS 최적화 교육 토폴로지를 제공합니다. PyTorch 개발자의 경우 이것은 한 줄의 코드입니다! PyTorch DDP 코드의 경우 백엔드를 다음으로 간단히 설정할 수 있습니다. smddp 초기화에서(참조 PyTorch 교육 스크립트 수정), 다음 코드와 같이:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

위에서 보았듯이 백엔드를 설정할 수도 있습니다. DDPStrategysmddp 번개를 사용할 때. 이것은 최대 40% 전체 속도 향상 큰 클러스터를 위해! SageMaker의 분산 교육에 대해 자세히 알아보려면 주문형 웨비나, 지원 노트북, 관련 선적 서류 비치서류.

결론

이 게시물에서는 SageMaker Training 제품군에 두 가지 새로운 기능을 소개했습니다. 이를 통해 PyTorch 개발자는 PyTorch DDP 및 PyTorch Lightning 모두 SageMaker에서 기존 코드를 훨씬 쉽게 사용할 수 있습니다.

또한 Amazon Search가 SageMaker Training을 사용하여 딥 러닝 모델, 특히 SageMaker Data Parallel에 최적화된 집합 라이브러리를 백엔드로 사용하는 PyTorch Lightning을 사용하는 방법을 보여주었습니다. 전체적으로 분산 교육으로 전환함으로써 Amazon Search는 7.3배 더 빠른 교육 시간을 달성할 수 있었습니다.


저자 소개

Amazon Search PlatoBlockchain 데이터 인텔리전스를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP를 실행합니다. 수직 검색. 일체 포함.에밀리 웹버 SageMaker가 출시된 직후 AWS에 합류했으며 그 이후로 전 세계에 알리기 위해 노력해 왔습니다! Emily는 고객을 위한 새로운 ML 경험을 구축하는 것 외에도 티베트 불교 명상과 공부를 즐깁니다.

Amazon Search PlatoBlockchain 데이터 인텔리전스를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP를 실행합니다. 수직 검색. 일체 포함. 카란 디만 캐나다 토론토에 거주하는 AWS의 소프트웨어 개발 엔지니어입니다. 그는 머신 러닝 공간과 분산 컴퓨팅 워크로드를 가속화하기 위한 솔루션 구축에 매우 열정적입니다.

Amazon Search PlatoBlockchain 데이터 인텔리전스를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP를 실행합니다. 수직 검색. 일체 포함.비슈와 카리아 AWS Deep Engine의 소프트웨어 개발 엔지니어입니다. 그녀의 관심은 기계 학습과 분산 시스템의 교차점에 있으며 기술 및 AI 분야에서 여성의 역량을 강화하는 데에도 열정적입니다.

Amazon Search PlatoBlockchain 데이터 인텔리전스를 제공하는 Amazon SageMaker Training에서 PyTorch Lightning 및 기본 PyTorch DDP를 실행합니다. 수직 검색. 일체 포함.아이만 엘나로위 Amazon Search의 수석 소프트웨어 엔지니어로 기계 학습 가속화, 확장 및 자동화에 대한 노력을 주도하고 있습니다. 그녀의 전문 지식은 기계 학습, 분산 시스템 및 개인화를 포함한 여러 영역에 걸쳐 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습