제퍼넷 로고

가중치 및 편향으로 ML 개발자 생산성 향상: Amazon SageMaker의 컴퓨터 비전 예제

시간

이 게시물의 내용과 의견은 제 XNUMX 자 작성자의 것이며 AWS는이 게시물의 내용이나 정확성에 대해 책임을지지 않습니다.

더 많은 조직에서 컴퓨터 비전 및 자연어 처리와 같은 딥 러닝 기술을 사용함에 따라 머신 러닝(ML) 개발자 페르소나는 실험 추적, 계보 및 협업을 중심으로 확장 가능한 도구가 필요합니다. 실험 추적에는 운영 체제, 사용된 인프라, 라이브러리, 입력 및 출력 데이터 세트와 같은 메타데이터가 포함되며 종종 스프레드시트에서 수동으로 추적됩니다. 계보에는 ML 모델을 만드는 데 사용되는 데이터 세트, 변환 및 알고리즘을 추적하는 작업이 포함됩니다. 공동 작업에는 단일 프로젝트에서 작업하는 ML 개발자와 팀 및 비즈니스 이해 관계자와 결과를 공유하는 ML 개발자가 포함됩니다. 이 프로세스는 일반적으로 이메일, 스크린샷 및 PowerPoint 프레젠테이션을 통해 수행됩니다.

이 게시물에서 우리는 Weights & Biases(W&B) 및 아마존 세이지 메이커. 공동 솔루션이 ML 개발자의 수작업을 줄이고 모델 개발 프로세스의 투명성을 높이며 팀이 프로젝트에서 협업할 수 있도록 하는 방법을 보여줍니다.

우리는 이 예제를 실행합니다. 아마존 세이지 메이커 스튜디오 당신 자신을 위해 시도하십시오.

가중치 및 편향 개요

가중치 및 편향은 ML 팀이 더 나은 모델을 더 빠르게 구축하는 데 도움이 됩니다. SageMaker 노트북에 몇 줄의 코드만 있으면 아키텍처, 하이퍼파라미터, git 커밋, 모델 가중치, GPU 사용량, 데이터 세트 및 예측과 같은 모델을 즉시 디버그, 비교 및 ​​재현할 수 있습니다.

W&B는 세계에서 가장 혁신적인 회사 및 연구 기관의 200,000명 이상의 ML 실무자의 신뢰를 받고 있습니다. 무료로 사용하려면 다음에서 가입하세요. 가중치 및 편향또는 방문 W&B AWS Marketplace 상장.

SageMaker Studio 시작하기

SageMaker Studio는 ML을 위한 최초의 완전 통합 개발 환경(IDE)입니다. Studio는 ML 실무자와 데이터 과학자가 한 곳에서 클릭 몇 번으로 모델을 구축, 교육 및 배포할 수 있는 단일 웹 기반 인터페이스를 제공합니다.

Studio를 시작하려면 AWS 계정과 AWS 자격 증명 및 액세스 관리 (IAM) Studio 도메인을 생성할 수 있는 권한이 있는 사용자 또는 역할. 인용하다 Amazon SageMaker 도메인에 온보딩 도메인을 생성하고 스튜디오 문서 Studio 시각적 인터페이스 및 노트북 사용에 대한 개요는

환경 설정

이 게시물에서는 자체 코드를 실행하는 데 관심이 있으므로 GitHub에서 일부 노트북을 가져와 보겠습니다. 우리는 다음을 사용합니다 GitHub 레포 예를 들어 로드해 보겠습니다. 이 노트북.

터미널 또는 Studio UI를 통해 리포지토리를 복제할 수 있습니다. 터미널을 통해 리포지토리를 복제하려면 시스템 터미널( 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에 메뉴, 선택 신제품 단말기) 다음 명령을 입력합니다.

git clone https://github.com/wandb/SageMakerStudio

Studio UI에서 리포지토리를 복제하려면 다음을 참조하세요. SageMaker Studio에서 Git 리포지토리 복제.

시작하려면 다음을 선택하십시오. 01_data_processing.ipynb 공책. 커널 스위처 프롬프트가 표시됩니다. 이 예제에서는 PyTorch를 사용하므로 미리 빌드된 PyTorch 1.10 Python 3.8 GPU 최적화 이미지를 클릭하여 노트북을 시작합니다. 앱이 시작되는 것을 볼 수 있으며 커널이 준비되면 노트북의 오른쪽 상단에 인스턴스 유형과 커널이 표시됩니다.

노트북에는 몇 가지 추가 종속성이 필요합니다. 이 리포지토리는 추가 종속성과 함께 requirements.txt를 제공합니다. 첫 번째 셀을 실행하여 필요한 종속성을 설치합니다.

%pip install -r requirements.txt

PyTorch 앱을 시작할 때마다 패키지를 자동으로 설치하도록 수명 주기 구성을 생성할 수도 있습니다. 보다 수명 주기 구성을 사용하여 Amazon SageMaker Studio 사용자 지정 지침 및 샘플 구현을 위해.

SageMaker Studio에서 가중치 및 편향 사용

가중치 및 편향(wandb)은 표준 Python 라이브러리입니다. 일단 설치되면 훈련 스크립트에 몇 줄의 코드를 추가하는 것만으로 간단하며 실험을 기록할 준비가 된 것입니다. 우리는 이미 requirements.txt 파일을 통해 설치했습니다. 다음 코드를 사용하여 수동으로 설치할 수도 있습니다.

! pip install wandb

사례 연구: 자율주행차 시맨틱 세분화

데이터 세트

우리는을 사용하여 캠브리지 운전 레이블이 지정된 비디오 데이터베이스 (CamVid) 이 예의 경우. 여기에는 메타데이터가 포함된 객체 클래스 시맨틱 레이블이 있는 비디오 컬렉션이 포함되어 있습니다. 데이터베이스는 각 픽셀을 32개의 의미 클래스 중 하나와 연결하는 정답 레이블을 제공합니다. 데이터 세트를 다음과 같이 버전화할 수 있습니다. 완드비.아티팩트, 그래야 나중에 참조할 수 있습니다. 다음 코드를 참조하십시오.

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

에서 따라할 수 있습니다. 01_data_processing.ipynb 공책.

우리는 또한 기록 테이블 데이터 세트의. 테이블은 테이블 형식 데이터를 쿼리하고 분석할 수 있는 풍부하고 강력한 DataFrame과 유사한 엔터티입니다. 중앙 대시보드에서 데이터 세트를 이해하고, 모델 예측을 시각화하고, 통찰력을 공유할 수 있습니다.

가중치 및 바이어스 테이블은 이미지, 오디오 및 파형과 같은 다양한 리치 미디어 형식을 지원합니다. 미디어 형식의 전체 목록은 다음을 참조하십시오. 데이터 타입.

다음 스크린샷은 정답 분할이 있는 원시 이미지가 있는 테이블을 보여줍니다. 당신은 또한 볼 수 있습니다 이 테이블의 대화형 버전.

영상

모델 훈련

이제 모델을 만들고 데이터 세트에서 훈련할 수 있습니다. 우리는 사용 파이 토치빠타이 베이스라인의 프로토타입을 신속하게 만든 다음 wandb.Sweeps 하이퍼파라미터를 최적화합니다. 따라 02_semantic_segmentation.ipynb 공책. 노트북을 열 때 커널을 묻는 메시지가 표시되면 첫 번째 노트북에서 동일한 커널을 선택합니다. PyTorch 1.10 Python 3.8 GPU 최적화. 동일한 앱을 사용하고 있기 때문에 패키지가 이미 설치되어 있습니다.

모델은 자율 에이전트의 관점에서 캡처된 장면의 픽셀당 주석을 학습해야 합니다. 모델은 주어진 장면의 각 픽셀을 도로, 보행자, 인도 또는 자동차와 같은 32개의 관련 범주로 분류하거나 분할해야 합니다. 테이블에서 분할된 이미지를 선택하고 분할 결과 및 범주에 액세스하기 위해 이 대화형 인터페이스에 액세스할 수 있습니다.

때문에 빠타이 라이브러리는 다음과 통합되어 있습니다. wandb, 당신은 단순히 전달할 수 있습니다 WandbCallback 학습자에게:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

베이스라인 실험을 위해 우리는 다음에서 영감을 받은 간단한 아키텍처를 사용하기로 결정했습니다. 유넷 백본이 다른 종이 팀. 우리는 다음으로 모델을 훈련했습니다. 초점 손실 기준으로. 가중치 및 편향을 사용하면 다음 스크린샷과 같이 실험 요약이 포함된 대시보드를 쉽게 생성하여 교육 결과를 빠르게 분석할 수 있습니다. 당신은 또한 수 대화식으로 이 대시보드 보기.

스윕을 사용한 초매개변수 검색

기준 모델의 성능을 향상시키려면 훈련할 최상의 모델과 최상의 하이퍼파라미터 세트를 선택해야 합니다. W&B는 우리가 이것을 쉽게 사용할 수 있도록 합니다. 스윕.

우리는 수행 베이지안 초매개변수 검색 유효성 검사 데이터 세트에서 모델의 전경 정확도를 최대화하는 것을 목표로 합니다. 스윕을 수행하기 위해 구성 파일 스윕.yaml을 정의합니다. 이 파일 내에서 우리는 사용하고자 하는 메서드인 베이와 매개변수 및 검색할 해당 값을 전달합니다. 우리의 경우 다양한 백본, 배치 크기 및 손실 함수를 시도합니다. 또한 학습률 및 가중치 감쇠와 같은 다양한 최적화 매개변수를 탐색합니다. 연속 값이기 때문에 분포에서 샘플링합니다. 여러 스윕에 사용할 수 있는 구성 옵션.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

그런 다음 터미널에서 다음을 사용하여 스윕을 시작합니다. wandb 명령줄:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

그런 다음 다음 코드를 사용하여 이 머신에서 스윕 에이전트를 시작합니다.

$ wandb agent <sweep_id>

스윕이 완료되면 병렬 좌표 플롯을 사용하여 다양한 백본과 다양한 하이퍼파라미터 세트가 있는 모델의 성능을 탐색할 수 있습니다. 이를 바탕으로 어떤 모델이 가장 성능이 좋은지 알 수 있습니다.

다음 스크린샷은 평행 좌표 차트 및 매개변수 상관 차트를 포함한 스윕 결과를 보여줍니다. 당신은 또한 수 이 스윕 대시보드를 대화식으로 보기.

스윕에서 다음과 같은 주요 통찰력을 얻을 수 있습니다.

  • 학습률이 낮고 가중치 감소가 낮으면 전경 정확도와 주사위 점수가 향상됩니다.
  • 배치 크기는 메트릭과 강한 양의 상관관계가 있습니다.
  • XNUMXD덴탈의 VGG 기반 백본 최종 모델은 사라지는 그라디언트. (손실이 분기됨에 따라 필터링됩니다.)
  • XNUMXD덴탈의 레스넷 백본은 메트릭과 관련하여 최상의 전체 성능을 제공합니다.
  • ResNet34 또는 ResNet50 백본은 메트릭 측면에서 강력한 성능으로 인해 최종 모델로 선택해야 합니다.

데이터 및 모델 계보

W&B 아티팩트는 파일을 W&B로 저장하려는지 여부 또는 W&B에서 추적할 버킷이 이미 있는지 여부에 관계없이 데이터 세트 및 모델의 버전을 쉽게 지정할 수 있도록 설계되었습니다. 데이터 세트 또는 모델 파일을 추적한 후 W&B는 각 수정 사항을 자동으로 기록하여 파일에 대한 변경 사항에 대한 완전하고 감사 가능한 기록을 제공합니다.

우리의 경우 훈련 중에 생성된 데이터 세트, 모델 및 다양한 테이블이 작업 공간에 기록됩니다. 다음으로 이동하여 이 계보를 빠르게 보고 시각화할 수 있습니다. 유물 페이지.

영상

모델 예측 해석

가중치 및 편향은 의 거듭제곱을 사용하여 모델 성능을 평가할 때 특히 유용합니다. wandb.테이블 우리 모델이 어디에서 제대로 작동하지 않는지 시각화합니다. 이 경우 우리는 특히 자전거와 보행자와 같이 취약한 사용자를 정확하게 감지하는 데 관심이 있습니다.

클래스별 주사위 점수 계수와 함께 예측된 마스크를 테이블에 기록했습니다. 그런 다음 원하는 클래스가 포함된 행으로 필터링하고 Dice 점수에서 오름차순으로 정렬했습니다.

다음 표에서 먼저 Dice 점수가 양수인 위치를 선택하여 필터링합니다(이미지에 보행자가 있음). 그런 다음 가장 심하게 감지된 보행자를 식별하기 위해 오름차순으로 정렬합니다. 주사위 점수가 1이면 보행자 클래스를 올바르게 분할한다는 것을 의미합니다. 당신은 또한 수 대화식으로 이 테이블 보기.

영상

자전거나 신호등과 같은 다른 취약 계층에 대해 이 분석을 반복할 수 있습니다.

이 기능은 올바르게 레이블이 지정되지 않은 이미지를 식별하고 다시 주석을 달도록 태그를 지정하는 매우 좋은 방법입니다.

결론

이 게시물은 Weights & Biases MLOps 플랫폼, SageMaker Studio에서 W&B를 설정하는 방법 및 공동 솔루션에서 입문 노트북을 실행하는 방법을 보여주었습니다. 그런 다음 자율 차량 의미론적 세분화 사용 사례를 살펴보고 W&B 실험을 통한 추적 훈련 실행, W&B 스윕을 사용한 하이퍼파라미터 최적화, W&B 테이블로 결과 해석을 시연했습니다.

더 자세히 알고 싶다면 라이브에 액세스할 수 있습니다. W&B 보고서. 가중치 및 편향을 무료로 사용하려면 다음에서 가입하십시오. 가중치 및 편향또는 방문 W&B AWS Marketplace 상장.


저자에 관하여

토마스 카펠 가중치 및 편향의 기계 학습 엔지니어입니다. 그는 www.github.com/wandb/examples 리포지토리를 최신 상태로 유지하는 책임이 있습니다. 그는 또한 MLOPS에 대한 콘텐츠, W&B를 산업에 적용하고 일반적으로 재미있는 딥 러닝을 구축합니다. 이전에 그는 딥 러닝을 사용하여 태양 에너지에 대한 단기 예측을 해결했습니다. 그는 도시 계획, 조합 최적화, 교통 경제학 및 응용 수학에 대한 배경 지식을 가지고 있습니다.

두르가 수리 Amazon SageMaker Service SA 팀의 ML 솔루션 설계자입니다. 그녀는 모든 사람이 기계 학습에 액세스할 수 있도록 하는 데 열정적입니다. AWS에서 3년 동안 엔터프라이즈 고객을 위한 AI/ML 플랫폼 설정을 도왔습니다. 그녀는 일을 하지 않을 때 오토바이 타기, 미스터리 소설, XNUMX살 된 허스키와 함께 하이킹을 좋아합니다.

카르틱 바라티 XNUMX년 이상의 제품 관리, 제품 전략, 실행 및 출시 경험을 보유한 Amazon SageMaker의 제품 리더입니다.

spot_img

최신 인텔리전스

spot_img

우리와 함께 채팅

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