제퍼넷 로고

데이터 중심 접근 방식을 사용하여 Amazon SageMaker 모델 교육에 필요한 데이터 양 최소화

시간

기계 학습(ML) 모델이 개선됨에 따라 데이터 과학자, ML 엔지니어 및 연구원은 데이터 품질을 정의하고 개선하는 데 더 많은 관심을 기울였습니다. 이로 인해 ML에 대한 데이터 중심 접근 방식과 데이터 요구 사항에 집중하여 모델 성능을 개선하는 다양한 기술이 등장했습니다. 이러한 기술을 적용하면 ML 실무자는 ML 모델을 교육하는 데 필요한 데이터의 양을 줄일 수 있습니다.

이 접근 방식의 일부로 고급 데이터 하위 집합 선택 기술이 등장하여 입력 데이터 양을 줄임으로써 교육 속도를 높였습니다. 이 프로세스는 더 큰 데이터 세트의 분포를 근사화하고 교육에 사용하는 지정된 수의 포인트를 자동으로 선택하는 것을 기반으로 합니다. 이러한 유형의 기술을 적용하면 ML 모델을 교육하는 데 필요한 시간이 줄어듭니다.

이 게시물에서는 데이터 중심 AI 원칙을 적용하는 방법에 대해 설명합니다. 아마존 세이지 메이커 그라운드 진실, 데이터 하위 집합 선택 기술을 구현하는 방법 굴레 저장소 아마존 세이지 메이커 초기 모델을 교육하는 데 필요한 데이터 양을 줄이고 이 접근 방식을 사용하여 실험을 실행하는 방법 Amazon SageMaker 실험.

기계 학습에 대한 데이터 중심 접근 방식

데이터 하위 집합 선택과 같은 고급 데이터 중심 기술을 살펴보기 전에 데이터 레이블 지정 프로세스에 기본 원칙 세트를 적용하여 여러 가지 방법으로 데이터 세트를 개선할 수 있습니다. 이를 위해 Ground Truth는 라벨 일관성과 데이터 품질을 개선하기 위한 다양한 메커니즘을 지원합니다.

레이블 일관성은 모델 성능 향상에 중요합니다. 이것이 없으면 모델은 서로 다른 클래스에 속하는 모든 포인트를 구분하는 결정 경계를 생성할 수 없습니다. 일관성을 보장하는 한 가지 방법은 다음을 사용하는 것입니다. Ground Truth의 주석 통합, 지정된 예시를 여러 라벨 지정자에게 제공하고 제공된 집계 라벨을 해당 예시의 실측 정보로 사용할 수 있습니다. 레이블의 차이는 Ground Truth에서 생성된 신뢰도 점수로 측정됩니다. 라벨에 차이가 있는 경우 라벨 지정자에게 제공된 라벨 지정 지침에 제거할 수 있는 모호성이 있는지 확인해야 합니다. 이 접근 방식은 라벨을 보다 일관성 있게 만드는 데 핵심적인 개별 라벨러의 편향 효과를 완화합니다.

데이터에 집중하여 모델 성능을 개선하는 또 다른 방법은 개선해야 할 가장 중요한 데이터 하위 집합을 식별하기 위해 발생하는 레이블의 오류를 분석하는 방법을 개발하는 것입니다. 레이블이 지정된 예제로 다이빙하고 아마존 클라우드 워치 Ground Truth 레이블 지정 작업에서 생성된 로그 및 메트릭. 데이터 세트에 대한 레이블 지정의 다음 반복을 구동하기 위해 추론 시간에 모델이 만드는 오류를 살펴보는 것도 중요합니다. 이러한 메커니즘 외에도, Amazon SageMaker 명확화 데이터 과학자와 ML 엔지니어가 다음과 같은 알고리즘을 실행할 수 있습니다. 커널SHAP 모델이 만든 예측을 해석할 수 있도록 합니다. 언급했듯이 모델의 예측에 대한 더 깊은 설명은 모델을 개선하기 위한 초기 레이블 지정 프로세스와 다시 관련될 수 있습니다.

마지막으로 시끄럽거나 과도하게 중복되는 예제를 버리는 것을 고려할 수 있습니다. 이렇게 하면 모델 성능 향상에 기여하지 않는 예제를 제거하여 학습 시간을 줄일 수 있습니다. 그러나 주어진 데이터 세트의 유용한 하위 집합을 수동으로 식별하는 것은 어렵고 시간이 많이 걸립니다. 이 게시물에 설명된 데이터 하위 집합 선택 기술을 적용하면 기존 프레임워크를 따라 이 프로세스를 자동화할 수 있습니다.

유스 케이스

앞서 언급했듯이 데이터 중심 AI는 모델 자체의 아키텍처보다는 모델 입력을 개선하는 데 중점을 둡니다. 데이터 라벨 지정 또는 기능 엔지니어링 중에 이러한 원칙을 적용한 후에는 학습 시 데이터 하위 집합 선택을 적용하여 모델 입력에 계속 집중할 수 있습니다.

이 게시물에서는 효율적이고 강력한 학습을 ​​위해 일반화 기반 데이터 하위 집합 선택을 적용합니다(글리스터), CORDS 저장소에 구현된 많은 데이터 하위 집합 선택 기술 중 하나인 ResNet-18 모델을 분류하는 데 걸리는 시간을 최소화하기 위한 모델 시파 -10 이미지. 다음은 CIFAR-10 데이터 세트에서 가져온 각각의 레이블이 있는 몇 가지 샘플 이미지입니다.

CIFAR 데이터 세트

ResNet-18은 종종 분류 작업에 사용됩니다. 18계층 심층 합성곱 신경망입니다. CIFAR-10 데이터 세트는 종종 ML의 다양한 기술과 접근 방식의 유효성을 평가하는 데 사용됩니다. 60,000개 클래스에 걸쳐 레이블이 지정된 32개의 32×10 컬러 이미지로 구성됩니다.

다음 섹션에서는 GLISTER가 다음 질문에 어느 정도 대답하는 데 어떻게 도움이 되는지 보여줍니다.

교육 중에 주어진 데이터 세트의 몇 퍼센트를 사용하고 여전히 우수한 모델 성능을 달성할 수 있습니까?

훈련 알고리즘에 GLISTER를 적용하면 훈련 알고리즘에 초매개변수로 분수가 도입됩니다. 사용하려는 특정 데이터 세트의 백분율을 나타냅니다. 모든 하이퍼파라미터와 마찬가지로 모델과 데이터에 대한 최상의 결과를 생성하는 값을 찾으려면 튜닝이 필요합니다. 이 게시물에서는 하이퍼파라미터 조정에 대해 자세히 다루지 않습니다. 자세한 내용은 다음을 참조하십시오. Amazon SageMaker 자동 모델 튜닝으로 하이퍼파라미터 최적화.

접근 방식의 영향을 측정하기 위해 SageMaker Experiments를 사용하여 여러 테스트를 실행합니다. 결과는 초기 데이터 세트에 따라 달라지므로 다양한 하위 집합 크기에서 데이터에 대해 접근 방식을 테스트하는 것이 중요합니다.

이미지에서 GLISTER를 사용하는 방법에 대해 논의하지만 구조화된 데이터 또는 테이블 형식 데이터로 작업하는 훈련 알고리즘에도 적용할 수 있습니다.

데이터 하위 집합 선택

데이터 하위 집합 선택의 목적은 정확도에 미치는 영향을 최소화하고 모델 견고성을 높이면서 교육 프로세스를 가속화하는 것입니다. 보다 구체적으로, GLISTER-ONLINE은 지정한 검증 세트에서 해당 교육 데이터 하위 집합의 로그 우도를 최대화하려고 시도하여 모델이 학습할 때 하위 집합을 선택합니다. 이러한 방식으로 데이터 하위 집합 선택을 최적화하면 실제 데이터 세트에서 종종 발견되는 노이즈 및 클래스 불균형을 완화하고 모델 학습에 따라 하위 집합 선택 전략을 조정할 수 있습니다.

초기 글리스터 종이 다음을 사용하여 다양한 데이터 하위 집합 크기에서 속도 향상/정확도 균형을 설명합니다. 르넷 모델:

하위 집합 크기 속도 향상 정확성
10% 6x -3 %
30% SR 2.5x -1.20 %
50% SR 1.5x -0.20 %

모델을 훈련시키기 위해 우리는 SageMaker 교육 작업 맞춤 학습 스크립트를 사용합니다. 또한 이미 이미지 데이터 세트를 다음 위치에 업로드했습니다. 아마존 단순 스토리지 서비스 (아마존 S3). 모든 SageMaker 교육 작업과 마찬가지로 다음을 정의해야 합니다. Estimator 물체. PyTorch 추정기 sagemaker.pytorch 패키지를 사용하면 관리되는 PyTorch 컨테이너에서 자체 훈련 스크립트를 실행할 수 있습니다. 그만큼 inputs 추정기에 전달되는 변수 .fit 함수에는 교육 및 검증 데이터 세트의 S3 위치 사전이 포함되어 있습니다.

XNUMXD덴탈의 train.py 학습 작업이 시작될 때 스크립트가 실행됩니다. 이 스크립트에서는 CORDS 라이브러리에서 ResNet-18 모델을 가져오고 다음과 같이 데이터 세트의 클래스 수를 전달합니다.

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

그런 다음 gen_dataset 교육, 검증 및 테스트 데이터 세트를 생성하는 CORDS의 기능:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

각 데이터 세트에서 동등한 PyTorch 데이터 로더를 생성합니다.

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

마지막으로 이러한 데이터 로더를 사용하여 GLISTERDataLoader CORDS 라이브러리에서. GLISTER-ONLINE 선택 전략의 구현을 사용합니다. 이 전략은 이 게시물의 앞부분에서 설명한 것처럼 교육 중에 모델을 업데이트할 때 하위 집합 선택을 적용합니다.

객체를 생성하기 위해 선택 전략 특정 인수를 DotMap 객체와 함께 train_loader, validation_loaderlogger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

XNUMXD덴탈의 GLISTERDataLoader 이제 교육 루프에 일반 데이터 로더로 적용할 수 있습니다. 모델이 해당 모델의 손실을 기반으로 학습함에 따라 다음 훈련 배치에 대한 데이터 하위 집합을 선택합니다. 앞의 표에서 설명한 것처럼 데이터 하위 집합 선택 전략을 추가하면 데이터 하위 집합 선택의 추가 단계가 있더라도 정확도에 거의 영향을 미치지 않으면서 교육 시간을 크게 줄일 수 있습니다.

데이터 과학자와 ML 엔지니어는 종종 접근 방식을 일부 기준과 비교하여 접근 방식의 유효성을 평가해야 합니다. 다음 섹션에서 이를 수행하는 방법을 보여줍니다.

실험 추적

SageMaker 실험을 사용하여 데이터 하위 집합 선택 접근 방식의 유효성을 측정할 수 있습니다. 자세한 내용은 다음을 참조하십시오. 차세대 Amazon SageMaker 실험 – 기계 학습 교육을 대규모로 구성, 추적 및 비교.

우리의 경우 네 가지 실험을 수행합니다. 데이터 하위 집합 선택을 적용하지 않은 기준선과 서로 다른 세 가지 다른 실험입니다. fraction 전체 데이터 집합에 상대적인 하위 집합의 크기를 나타내는 매개 변수입니다. 당연히 더 작은 것을 사용하여 fraction 매개변수는 학습 시간을 줄여주지만 모델 정확도도 낮춰야 합니다.

이 게시물에서 각 교육 실행은 Run SageMaker 실험에서. 실험과 관련된 실행은 모두 하나로 그룹화됩니다. Experiment 물체. 런을 생성할 때 일반 실험에 첨부할 수 있습니다. Estimator SDK와 함께. 다음 코드를 참조하십시오.

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

사용자 지정 교육 스크립트의 일부로 다음을 사용하여 실행 메트릭을 수집할 수 있습니다. load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

그런 다음 이전 작업에서 반환된 실행 개체를 사용하여 다음을 호출하여 에포크당 데이터 포인트를 수집할 수 있습니다. run.log_metric(name, value, step) 메트릭 이름, 값 및 현재 에포크 번호를 제공합니다.

접근 방식의 유효성을 측정하기 위해 교육 손실, 교육 정확도, 유효성 검사 손실, 유효성 검사 정확도 및 에포크 완료 시간에 해당하는 메트릭을 수집합니다. 그런 다음 학습 작업을 실행한 후 다음을 수행할 수 있습니다. 실험 결과 검토 in 아마존 세이지 메이커 스튜디오 또는 SageMaker 실험 SDK를 통해.

Studio 내에서 검증 정확도를 보려면 다음을 선택하십시오. 분석 실험에 실행 페이지.

실험 목록

차트를 추가하고 차트 속성을 설정한 다음 만들기. 다음 스크린샷에 표시된 것처럼 모든 실행에 대한 각 에포크의 유효성 검사 정확도 플롯을 볼 수 있습니다.

실험 차트

SDK를 사용하면 실험 관련 정보를 Pandas 데이터 프레임으로 검색할 수도 있습니다.

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

선택적으로 훈련 작업을 정렬할 수 있습니다. 예를 들어 다음을 추가할 수 있습니다. "metrics.validation:accuracy.max" 의 가치로 sort_by 전달 된 매개 변수 ExperimentAnalytics 유효성 검사 정확도에 따라 정렬된 결과를 반환합니다.

예상대로 실험 결과 GLISTER 및 데이터 하위 집합 선택을 교육 알고리즘에 적용하면 교육 시간이 단축되는 것으로 나타났습니다. 기본 훈련 알고리즘을 실행할 때 단일 에포크를 완료하는 평균 시간은 약 27초입니다. 반대로 GLISTER를 적용하여 전체 데이터 세트의 50%, 30% 및 10%에 해당하는 하위 집합을 선택하면 ml.p13xlarge 인스턴스에서 각각 약 8.5초, 2.75초 및 3.2초의 에포크를 완료하는 시간이 됩니다. .

또한 특히 50%의 데이터 하위 집합을 사용할 때 유효성 검사 정확도에 미치는 영향이 비교적 적다는 것을 관찰했습니다. 100 epoch 동안 학습한 후 기준선은 92.72%의 유효성 검사 정확도를 생성합니다. 반대로 GLISTER를 적용하여 전체 데이터 세트의 50%, 30% 및 10%에 해당하는 하위 집합을 선택하면 각각 91.42%, 89.76% 및 82.82%의 유효성 검사 정확도가 발생합니다.

결론

SageMaker Ground Truth 및 SageMaker Experiments는 데이터 과학자와 ML 엔지니어가 모델 구축 단계에서 구현할 때 보다 일관된 데이터 세트를 생성하고 고급 기술의 영향을 추적할 수 있도록 하여 기계 학습에 대한 데이터 중심 접근 방식을 지원합니다. ML에 대한 데이터 중심 접근 방식을 구현하면 모델에 필요한 데이터의 양을 줄이고 견고성을 높일 수 있습니다.

한 번 시도해보고 댓글로 의견을 알려주세요.


저자 소개

니콜라스 베르니에 AWS 캐나다 공공 부문 팀의 솔루션 아키텍트입니다. 그는 현재 딥 러닝 연구 분야에서 석사 학위를 받고 있으며 ML Specialty Certification을 포함하여 XNUMX개의 AWS 인증을 보유하고 있습니다. Nicolas는 비즈니스 과제를 기술 솔루션으로 변환하기 위해 고객과 협력하여 고객이 AWS에 대한 지식을 심화하도록 돕는 데 열정적입니다.

지바닐도 알베스 Amazon Web Services의 프로토타이핑 및 클라우드 엔지니어링 팀의 프로토타이핑 설계자로 이미 인공 지능에 대한 여러 프로토타입을 구현한 경험이 있는 AWS에서 가능한 기술을 보여줌으로써 고객이 혁신하고 가속화할 수 있도록 지원합니다. 소프트웨어 엔지니어링 분야에서 오랜 경력을 쌓았으며 이전에는 Amazon.com.br에서 소프트웨어 개발 엔지니어로 근무했습니다.

spot_img

최신 인텔리전스

VC 카페

VC 카페

spot_img