제퍼넷 로고

Amazon SageMaker XGBoost, 이제 완전히 분산된 GPU 교육 제공 | 아마존 웹 서비스

시간

아마존 세이지 메이커 의 제품군을 제공합니다 내장 알고리즘, 사전 훈련 된 모델사전 구축된 솔루션 템플릿 데이터 과학자와 머신 러닝(ML) 실무자가 ML 모델 교육 및 배포를 빠르게 시작할 수 있도록 지원합니다. 지도 및 비지도 학습 모두에 이러한 알고리즘과 모델을 사용할 수 있습니다. 표, 이미지, 텍스트 등 다양한 유형의 입력 데이터를 처리할 수 있습니다.

XNUMXD덴탈의 SageMaker XGBoost 알고리즘 SageMaker에서 XGBoost 교육 및 추론을 쉽게 실행할 수 있습니다. XGBoost (eXtreme Gradient Boosting)은 그래디언트 부스트 트리 알고리즘의 대중적이고 효율적인 오픈 소스 구현입니다. 그래디언트 부스팅은 더 간단하고 약한 모델 세트의 추정치 앙상블을 결합하여 대상 변수를 정확하게 예측하려고 시도하는 지도 학습 알고리즘입니다. XGBoost 알고리즘은 다양한 데이터 유형, 관계, 분포 및 미세 조정할 수 있는 다양한 하이퍼파라미터를 강력하게 처리하기 때문에 ML 대회에서 좋은 성능을 발휘합니다. 회귀, 분류(이진 및 다중 클래스) 및 순위 문제에 XGBoost를 사용할 수 있습니다. GPU를 사용하여 대규모 데이터 세트에 대한 교육을 가속화할 수 있습니다.

오늘 우리는 세이지 메이커 XGBoost는 이제 완전히 분산된 GPU 교육을 제공합니다.

버전 1.5-1 이상부터는 이제 다중 GPU 인스턴스를 사용할 때 모든 GPU를 활용할 수 있습니다. 새로운 기능은 대규모 데이터 세트를 처리할 때 완전히 분산된 GPU 교육을 사용해야 하는 요구 사항을 해결합니다. 이것은 여러 개를 사용할 수 있다는 것을 의미합니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 인스턴스(GPU) 및 인스턴스당 모든 GPU 사용.

다중 GPU 인스턴스를 사용한 분산 GPU 교육

SageMaker XGBoost 버전 1.2-2 이상에서는 훈련을 위해 하나 이상의 단일 GPU 인스턴스를 사용할 수 있습니다. 그만큼 초 매개 변수 tree_method를 gpu_hist로 설정해야 합니다. 하나 이상의 인스턴스(분산 설정)를 사용하는 경우 다음과 같이 인스턴스 간에 데이터를 분할해야 합니다(에서 언급한 비 GPU 분산 학습 단계와 동일) XGBoost 알고리즘). 이 옵션은 성능이 뛰어나고 다양한 교육 설정에서 사용할 수 있지만 g5.12xlarge와 같은 다중 GPU 인스턴스를 선택할 때 모든 GPU를 사용하도록 확장되지는 않습니다.

SageMaker XGBoost 버전 1.5-1 이상에서는 이제 다중 GPU 인스턴스를 사용할 때 각 인스턴스에서 모든 GPU를 사용할 수 있습니다. 다중 GPU 인스턴스에서 모든 GPU를 사용할 수 있는 기능은 다음을 통합하여 제공됩니다. 다 스크 뼈대.

이 설정을 사용하여 훈련을 빠르게 완료할 수 있습니다. 시간 절약 외에도 이 옵션은 최대 사용 가능한 인스턴스(소프트) 제한과 같은 차단 문제를 해결하거나 훈련 작업이 어떤 이유로 많은 수의 단일 GPU 인스턴스를 프로비저닝할 수 없는 경우에도 유용합니다.

이 옵션을 사용하기 위한 구성은 다음 차이점을 제외하고 이전 옵션과 동일합니다.

  • 새로 추가 초 매개 변수 use_dask_gpu_training 문자열 값으로 true.
  • 만들 때 교육입력, 분포 매개변수를 FullyReplicated, 단일 인스턴스를 사용하든 여러 인스턴스를 사용하든 상관 없습니다. 기본 Dask 프레임워크는 데이터 로드를 수행하고 Dask 작업자 간에 데이터를 분할합니다. 이는 SageMaker XGBoost를 사용한 다른 모든 분산 교육의 데이터 배포 설정과 다릅니다.

데이터를 더 작은 파일로 분할하는 것은 Parquet에 여전히 적용되며 Dask는 각 파일을 분할. GPU당 Dask 작업자가 있으므로 파일 수는 인스턴스 수 * 인스턴스당 GPU 수보다 커야 합니다. 또한 각 파일을 너무 작게 만들고 파일 수가 너무 많으면 성능이 저하될 수 있습니다. 자세한 내용은 다음을 참조하십시오. 매우 큰 그래프 피하기. CSV의 경우 데이터 다운로드 시간을 줄이고 더 빠르게 읽을 수 있도록 큰 파일을 작은 파일로 분할하는 것이 좋습니다. 그러나 필수 사항은 아닙니다.

현재 이 옵션과 함께 지원되는 입력 형식은 다음과 같습니다.

  • text/csv
  • application/x-parquet

다음 입력 모드가 지원됩니다.

코드는 다음과 유사합니다.

import os
import boto3
import re
import sagemaker
from sagemaker.session import Session
from sagemaker.inputs import TrainingInput
from sagemaker.xgboost.estimator import XGBoost role = sagemaker.get_execution_role()
region = sagemaker.Session().boto_region_name
session = Session() bucket = "<Specify S3 Bucket>"
prefix = "<Specify S3 prefix>" hyperparams = { "objective": "reg:squarederror", "num_round": "500", "verbosity": "3", "tree_method": "gpu_hist", "eval_metric": "rmse", "use_dask_gpu_training": "true"
} output_path = "s3://{}/{}/output".format(bucket, prefix) content_type = "application/x-parquet"
instance_type = "ml.g4dn.2xlarge" xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "1.5-1")
xgb_script_mode_estimator = sagemaker.estimator.Estimator( image_uri=xgboost_container, hyperparameters=hyperparams, role=role, instance_count=1, instance_type=instance_type, output_path=output_path, max_run=7200, ) test_data_uri = " <specify the S3 uri for training dataset>"
validation_data_uri = “<specify the S3 uri for validation dataset>” train_input = TrainingInput( test_data_uri, content_type=content_type
) validation_input = TrainingInput( validation_data_uri, content_type=content_type
) xgb_script_mode_estimator.fit({"train": train_input, "validation": validation_input})

다음 스크린샷은 노트북의 성공적인 학습 작업 로그를 보여줍니다.

벤치 마크

단일 GPU 교육에 비해 다중 GPU 교육 경로에서 모델 품질이 저하되지 않았는지 확인하기 위해 평가 메트릭을 벤치마킹했습니다. 또한 분산 GPU 설정의 성능과 확장성을 보장하기 위해 대규모 데이터 세트를 벤치마킹했습니다.

청구 가능 시간 절대 벽시계 시간을 나타냅니다. 교육 시간은 XGBoost 교육 시간일 뿐이며 train() 모델이 저장될 때까지 호출 아마존 단순 스토리지 서비스 (아마존 S3).

대규모 데이터 세트에 대한 성능 벤치마크

다중 GPU의 사용은 일반적으로 복잡한 훈련이 있는 대규모 데이터 세트에 적합합니다. 다음을 사용하여 더미 데이터 세트를 만들었습니다. 2,497,248,278 테스트를 위한 행 및 28개의 기능. 데이터 세트는 150GB였으며 1,419개의 파일로 구성되었습니다. 각 파일의 크기는 105~115MB 사이였습니다. 데이터를 S3 버킷에 Parquet 형식으로 저장했습니다. 다소 복잡한 교육을 시뮬레이션하기 위해 단일 GPU 교육 경로와 다중 GPU 교육 경로 간의 성능을 비교하기 위해 1,000라운드의 이진 분류 작업에 이 데이터 세트를 사용했습니다.

다음 표에는 단일 GPU 교육 경로와 다중 GPU 교육 경로 간의 청구 가능한 교육 시간 및 성능 비교가 포함되어 있습니다.

단일 GPU 교육 경로
인스턴스 유형 인스턴스 수 청구 가능 시간/인스턴스 교육 시간
g4dn.xlarge 20 메모리 부족
g4dn.2xlarge 20 메모리 부족
g4dn.4xlarge 15 1710 1551.9
16 1592 1412.2
17 1542 1352.2
18 1423 1281.2
19 1346 1220.3
다중 GPU 교육 경로(Dask 포함)
인스턴스 유형 인스턴스 수 청구 가능 시간/인스턴스 교육 시간
g4dn.12xlarge 7 메모리 부족
8 1143 784.7
9 1039 710.73
10 978 676.7
12 940 614.35

다중 GPU 인스턴스를 사용하면 교육 시간과 전체 시간이 줄어드는 것을 볼 수 있습니다. 단일 GPU 교육 경로는 여전히 각 인스턴스에서 데이터의 일부만 다운로드하고 읽을 수 있으므로 데이터 다운로드 시간이 짧다는 이점이 있습니다. 또한 Dask의 오버헤드로 인해 어려움을 겪지 않습니다. 따라서 교육 시간과 총 시간의 차이가 더 작습니다. 그러나 더 많은 GPU를 사용하기 때문에 다중 GPU 설정은 교육 시간을 크게 단축할 수 있습니다.

대규모 데이터 세트를 처리할 때 메모리 부족 오류를 방지하려면 컴퓨팅 성능이 충분한 EC2 인스턴스를 사용해야 합니다.

더 많은 인스턴스 또는 더 강력한 인스턴스를 사용하여 단일 GPU 설정으로 총 시간을 더 줄일 수 있습니다. 그러나 비용면에서 더 비쌀 수 있습니다. 예를 들어 다음 표는 단일 GPU 인스턴스 g4dn.8xlarge와의 교육 시간 및 비용 비교를 보여줍니다.

단일 GPU 교육 경로
인스턴스 유형 인스턴스 수 청구 가능 시간/인스턴스 비용 ($)
g4dn.8xlarge 15 1679 15.22
17 1509 15.51
19 1326 15.22
다중 GPU 교육 경로(Dask 포함)
인스턴스 유형 인스턴스 수 청구 가능 시간/인스턴스 비용 ($)
g4dn.12xlarge 8 1143 9.93
10 978 10.63
12 940 12.26

비용 계산은 각 인스턴스의 온디맨드 가격을 기반으로 합니다. 자세한 내용은 다음을 참조하십시오. Amazon EC2 G4 인스턴스.

모델 품질 벤치마크

모델 품질을 위해 Dask GPU 옵션과 단일 GPU 옵션 간의 평가 메트릭을 비교하고 다양한 인스턴스 유형 및 인스턴스 수에 대한 교육을 실행했습니다. 다양한 작업에 대해 서로 다른 데이터 세트와 하이퍼파라미터를 사용했으며 각 데이터 세트는 교육, 검증 및 테스트 세트로 분할되었습니다.

이진 분류(binary:logistic) 작업, 우리는 힉스 CSV 형식의 데이터 세트. 데이터 세트의 학습 분할에는 9,348,181개의 행과 28개의 기능이 있습니다. 사용된 라운드 수는 1,000회였습니다. 다음 표에 결과가 요약되어 있습니다.

Dask를 사용한 다중 GPU 교육
인스턴스 유형 Num GPU/인스턴스 인스턴스 수 청구 가능 시간/인스턴스 정확도 % F1% ROC AUC %
g4dn.2xlarge 1 1 343 75.97 77.61 84.34
g4dn.4xlarge 1 1 413 76.16 77.75 84.51
g4dn.8xlarge 1 1 413 76.16 77.75 84.51
g4dn.12xlarge 4 1 157 76.16 77.74 84.52

회귀의 경우(reg:squarederror), 우리는 뉴욕 녹색 택시 Parquet 형식의 데이터 세트(일부 수정 포함). 데이터 세트의 학습 분할에는 72,921,051개의 행과 8개의 기능이 있습니다. 사용된 라운드 수는 500회였습니다. 다음 표는 결과를 보여줍니다.

Dask를 사용한 다중 GPU 교육
인스턴스 유형 Num GPU/인스턴스 인스턴스 수 청구 가능 시간/인스턴스 MSE R2 MAE
g4dn.2xlarge 1 1 775 21.92 0.7787 2.43
g4dn.4xlarge 1 1 770 21.92 0.7787 2.43
g4dn.8xlarge 1 1 705 21.92 0.7787 2.43
g4dn.12xlarge 4 1 253 21.93 0.7787 2.44

모델 품질 메트릭은 다중 GPU(Dask) 교육 옵션과 기존 교육 옵션 간에 유사합니다. 여러 인스턴스 또는 GPU가 있는 분산 설정을 사용할 때 모델 품질이 일관되게 유지됩니다.

결론

이 게시물에서는 SageMaker XGBoost를 사용하여 분산 GPU 교육에 다양한 인스턴스 유형 및 인스턴스 수 조합을 사용하는 방법에 대한 개요를 제공했습니다. 대부분의 사용 사례에서 단일 GPU 인스턴스를 사용할 수 있습니다. 이 옵션은 사용할 수 있는 다양한 인스턴스를 제공하며 성능이 매우 뛰어납니다. 대규모 데이터 세트와 많은 라운드로 교육하는 데 다중 GPU 인스턴스를 사용할 수 있습니다. 더 적은 수의 인스턴스로 빠른 교육을 제공할 수 있습니다. 전반적으로 SageMaker XGBoost의 분산 GPU 설정을 사용하여 XGBoost 교육 속도를 크게 높일 수 있습니다.

SageMaker 및 Dask를 사용한 분산 교육에 대해 자세히 알아보려면 다음을 확인하십시오. Amazon SageMaker 내장 LightGBM은 이제 Dask를 사용하여 분산 교육을 제공합니다.


저자에 관하여

디 라즈 타쿠 르 Amazon Web Services의 솔루션 설계자입니다. 그는 AWS 고객 및 파트너와 협력하여 엔터프라이즈 클라우드 채택, 마이그레이션 및 전략에 대한 지침을 제공합니다. 그는 기술에 대한 열정이 있으며 분석 및 AI / ML 공간에서 구축하고 실험하는 것을 즐깁니다.

드완 차우두리 Amazon Web Services의 소프트웨어 개발 엔지니어입니다. 그는 Amazon SageMaker의 알고리즘과 JumpStart 제품을 담당하고 있습니다. AI/ML 인프라 구축 외에도 그는 확장 가능한 분산 시스템 구축에도 열정적입니다.

신황황신 박사 Amazon SageMaker JumpStart 및 Amazon SageMaker 내장 알고리즘의 응용 과학자입니다. 그는 확장 가능한 기계 학습 알고리즘 개발에 중점을 둡니다. 그의 연구 관심 분야는 자연어 처리, 표 형식 데이터에 대한 설명 가능한 딥 러닝, 비모수적 시공간 클러스터링에 대한 강력한 분석입니다. 그는 ACL, ICDM, KDD 컨퍼런스 및 Royal Statistical Society: Series A 저널에 많은 논문을 발표했습니다.

토니 크루즈

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

안녕하세요! 어떻게 도와 드릴까요?