Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | 아마존 웹 서비스

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | 아마존 웹 서비스

오늘날 빠르게 진화하는 인공 지능 환경에서 딥 러닝 모델은 컴퓨터 비전(CV), 자연어 처리(NLP) 및 추천 시스템에 걸친 응용 프로그램을 통해 혁신의 최전선에 서 있습니다. 그러나 이러한 모델의 교육 및 미세 조정과 관련된 비용 증가는 기업에 어려운 과제를 안겨줍니다. 이 비용은 주로 딥 러닝 모델 훈련에 사용되는 엄청난 양의 데이터로 인해 발생합니다. 오늘날 대형 모델은 종종 테라바이트 규모의 데이터로 훈련되며, 강력한 GPU나 GPU를 사용하더라도 훈련하는 데 몇 주가 걸릴 수 있습니다. AWS 트레이닝기반 하드웨어. 일반적으로 고객은 최적화된 커널 또는 레이어, 혼합 정밀도 교육 또는 다음과 같은 기능과 같이 모델 교육 루프의 효율성을 향상시키는 기술 및 최적화에 의존합니다. 아마존 세이지 메이커 분산 교육 라이브러리. 그러나 오늘날에는 훈련 데이터 자체의 효율성에 대한 관심이 덜합니다. 모든 데이터가 모델 훈련 중 학습 프로세스에 동일하게 기여하는 것은 아닙니다. 계산 리소스의 상당 부분이 모델의 전체 정확도에 실질적으로 기여하지 않는 간단한 예를 처리하는 데 사용될 수 있습니다.

고객은 전통적으로 업샘플링, 다운샘플링, 중복 제거 등의 전처리 기술을 사용해 데이터의 정보 품질을 개선하고 개선해 왔습니다. 이러한 기술은 도움이 될 수 있지만 시간이 많이 걸리고 전문적인 데이터 과학 경험이 필요하며 때로는 과학보다 예술에 더 가깝습니다. 고객은 다음과 같은 선별된 데이터 세트에 의존하는 경우도 많습니다. 세련된웹, 모델의 성능을 향상시키기 위해; 그러나 이러한 데이터 세트는 항상 완전히 오픈 소스인 것은 아니며 더 일반적인 용도로 사용되며 특정 사용 사례와 관련이 없는 경우가 많습니다.

모델 훈련 중 정보가 부족한 데이터 샘플과 관련된 이러한 비효율성을 어떻게 극복할 수 있습니까?

딥 러닝 모델 교육 비용을 최대 35%까지 줄일 수 있는 SageMaker의 새로운 기능인 스마트 선별의 공개 미리 보기를 발표하게 되어 기쁘게 생각합니다. 스마트 선별은 훈련 중에 데이터 샘플을 적극적으로 분석하고 모델에 덜 유용한 샘플을 필터링하는 새로운 데이터 효율성 기술입니다. 모델 수렴에 가장 많이 기여하는 샘플만을 사용하여 더 작은 데이터 하위 집합에 대해 교육함으로써 정확도에 거의 영향을 미치지 않거나 전혀 영향을 주지 않으면서 전체 교육 및 비용이 절감됩니다. 또한 이 기능은 모델 훈련 중에 온라인으로 작동하므로 스마트 선별에서는 업스트림 데이터나 다운스트림 훈련 파이프라인을 변경할 필요가 없습니다.

이 게시물에서는 다음 주제에 대해 논의합니다.

  • SageMaker의 새로운 스마트 선별 기능 및 작동 방식
  • PyTorch 교육 워크로드에 스마트 선별을 사용하는 방법

당신은 또한 우리의 선적 서류 비치샘플 노트북 스마트 선별을 시작하는 방법에 대한 추가 리소스를 확인하세요.

SageMaker 스마트 선별 작동 방식

이 게시물은 스마트 선별 기능이 어떻게 SageMaker에서 모델 교육을 가속화할 수 있는지에 대한 개요로 시작됩니다.

Smart sifting의 작업은 훈련 과정 중에 훈련 데이터를 선별하고 보다 유익한 샘플만 모델에 공급하는 것입니다. PyTorch를 사용한 일반적인 훈련 중에 데이터는 다음을 통해 훈련 루프와 가속기 장치(예: GPU 또는 Trainium 칩)에 일괄적으로 반복적으로 전송됩니다. PyTorch 데이터로더. 스마트 선별은 이 데이터 로드 단계에서 구현되므로 학습 파이프라인의 업스트림 데이터 전처리와 독립적입니다.

스마트 선별은 모델과 사용자가 지정한 손실 함수를 사용하여 로드되는 각 데이터 샘플의 평가 순방향 전달을 수행합니다. 손실이 높은 샘플은 모델 교육에 실질적인 영향을 미치므로 교육에 사용됩니다. 상대적으로 손실이 낮은 데이터 샘플은 따로 보관되어 훈련에서 제외됩니다.

스마트 선별의 주요 입력은 제외할 데이터의 비율입니다. 예를 들어 비율을 33%(beta_value=0.5)로 설정하면 각 배치 손실의 대략 하위 XNUMX/XNUMX에 있는 샘플이 훈련에서 제외됩니다. 배치를 완료하기에 충분한 고손실 샘플이 식별되면 데이터는 전체 훈련 루프를 통해 전송되고 모델은 정상적으로 학습하고 훈련합니다. 스마트 선별이 활성화되면 훈련 루프를 변경할 필요가 없습니다.

다음 다이어그램은이 워크 플로우를 보여줍니다.

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

학습 데이터의 하위 집합만 포함함으로써 스마트 선별은 모델 학습에 필요한 시간과 계산을 줄여줍니다. 테스트에서 우리는 총 교육 시간과 비용을 최대 40%까지 절감했습니다. 데이터의 스마트 선별을 사용하면 제외된 샘플이 모델에 대해 상대적으로 손실이 적기 때문에 모델 정확도에 영향이 최소화되거나 전혀 영향을 미치지 않을 수 있습니다. 다음 표에는 SageMaker 스마트 선별을 통해 가능한 성능 개선을 보여주는 일련의 실험 결과가 포함되어 있습니다.

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.

표에서 수락된 % 열은 훈련 루프에 포함되고 사용되는 데이터의 비율을 나타냅니다. 이 조정 가능 매개변수를 늘리면 비용이 감소하지만(IMR 절약 % 열에 설명된 대로) 정확도에도 영향을 미칠 수 있습니다. 허용률에 대한 적절한 설정은 데이터세트와 모델에 따라 다릅니다. 비용 절감과 정확도에 미치는 영향 사이에서 최상의 균형을 이루려면 이 매개변수를 실험하고 조정해야 합니다.

솔루션 개요

다음 섹션에서는 SageMaker에서 PyTorch 훈련 작업을 통해 스마트 선별을 활성화하는 실제 사례를 살펴보겠습니다. 빨리 시작하고 싶다면 PyTorch 또는 PyTorch Lightning 예제.

사전 조건

SageMaker Python SDK를 사용하여 PyTorch 또는 PyTorch Lightning을 사용하고 훈련을 위해 SageMaker Deep Learning Containers를 사용하는 Estimator 클래스를 사용하여 모델을 훈련하는 방법을 이미 알고 있다고 가정합니다. 그렇지 않다면 참조하세요. SageMaker Python SDK 사용 계속하기 전에.

SageMaker 스마트 선별 시작하기

일반적인 PyTorch 훈련 작업에서는 PyTorch 훈련을 초기화합니다. 데이터로더 학습이 진행됨에 따라 입력 배치를 제공하는 데이터세트 및 기타 필수 매개변수를 사용합니다. 훈련 데이터의 스마트 선별을 활성화하려면 새로운 DataLoader 수업: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. 이 클래스는 기존 PyTorch 위에 래퍼로 ​​사용됩니다. DataLoader 훈련 과정에서는 대신에 SiftingDataloader 입력 배치를 얻으려면. 그만큼 SiftingDataLoader 원본 PyTorch에서 입력 배치를 가져옵니다. DataLoader, 배치에서 샘플의 중요성을 평가하고 손실이 큰 샘플로 선별된 배치를 구성한 다음 훈련 단계로 전달합니다. 래퍼는 다음 코드와 같습니다.

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

XNUMXD덴탈의 SiftingDataloader 훈련 데이터를 분석하려면 몇 가지 추가 매개변수가 필요하며, 이를 통해 지정할 수 있습니다. sift_config 매개변수. 먼저 smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig 물체. 이 객체는 구성 가능하고 필수인 항목을 보유합니다. beta_valueloss_history_length이는 상대적 손실을 평가할 때 유지할 샘플의 비율과 포함할 샘플의 창을 각각 정의합니다. 스마트 선별은 표본의 중요성을 정의하기 위해 모델을 사용하기 때문에 완전히 임의의 가중치가 있는 모델을 사용하면 부정적인 영향을 미칠 수 있습니다. 대신에 다음을 사용할 수 있습니다. loss_based_sift_configsift_delay 모델의 매개변수 가중치가 임의 값 이상으로 업데이트될 때까지 선별 프로세스를 지연합니다. (자세한 내용은 다음을 참조하세요. 학습 스크립트에 스마트 선별 적용.) 다음 코드에서는 다음을 정의합니다. sift_config 지정 beta_valueloss_history_length, 다음을 사용하여 선별 시작을 지연시킵니다. loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

다음으로 loss_impl 매개 변수 SiftingDataloader 물체. 스마트 선별은 개별 샘플 수준에서 작동하며 샘플의 중요성을 결정하기 위해 손실 계산 방법에 액세스하는 것이 중요합니다. n 샘플의 손실 값을 보유하는 nx1 텐서를 반환하는 선별 손실 메서드를 구현해야 합니다. 일반적으로 귀하는 귀하가 사용하는 것과 동일한 손실 방법을 지정합니다. model 훈련 중. 마지막으로 모델에 대한 포인터를 SiftingDataloader 훈련에 포함되기 전에 샘플을 평가하는 데 사용되는 객체입니다. 다음 코드를 참조하세요.

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

다음 코드는 기존 BERT 훈련 작업으로 스마트 선별을 활성화하는 전체 예를 보여줍니다.

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

결론

이 게시물에서는 딥 러닝 모델 교육 비용을 최대 35%까지 줄일 수 있는 SageMaker의 새로운 기능인 스마트 선별의 공개 미리 보기를 살펴보았습니다. 이 기능은 정보가 적은 데이터 샘플을 필터링하여 훈련 중에 데이터 효율성을 향상시킵니다. 모델 수렴에 가장 영향력 있는 데이터만 포함함으로써 정확성을 유지하면서 훈련 시간과 비용을 크게 줄일 수 있습니다. 또한 데이터나 교육 파이프라인을 변경할 필요 없이 기존 프로세스에 원활하게 통합됩니다.

SageMaker 스마트 선별에 대해 더 자세히 알아보고, 작동 방식을 살펴보고, PyTorch 교육 워크로드로 구현하려면 다음을 확인하세요. 선적 서류 비치샘플 노트북 이 새로운 기능을 시작해 보세요.


저자 소개

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.로버트 반 두센 Amazon SageMaker의 수석 제품 관리자입니다. 그는 딥 러닝 교육을 위한 프레임워크, 컴파일러 및 최적화 기술을 이끌고 있습니다.

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.K 로케시 쿠마르 레디 Amazon Applied AI 팀의 수석 엔지니어입니다. 그는 효율적인 ML 학습 기술과 대화형 AI 시스템을 개선하기 위한 도구 구축에 중점을 두고 있습니다. 여가 시간에는 새로운 문화, 새로운 경험을 찾고 최신 기술 동향을 파악하는 것을 즐깁니다.

Amazon SageMaker 스마트 선별을 통해 딥 러닝 모델 훈련을 최대 35% 가속화 | Amazon Web Services PlatoBlockchain 데이터 인텔리전스. 수직 검색. 일체 포함.아비셰크 단 Amazon Applied AI 팀의 선임 Dev Manager이며 기계 학습 및 대화형 AI 시스템을 연구하고 있습니다. 그는 AI 기술에 열정을 갖고 있으며 과학과 공학의 교차점에서 AI 시스템의 기능을 발전시켜 보다 직관적이고 원활한 인간-컴퓨터 상호 작용을 생성하는 데 노력하고 있습니다. 그는 현재 Amazon의 효율성과 CX 개선을 촉진하기 위해 대규모 언어 모델에 애플리케이션을 구축하고 있습니다.

타임 스탬프 :

더보기 AWS 기계 학습