Debugger 고급 데모 및 시각화 - 아마존 SageMaker

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Debugger 고급 데모 및 시각화

다음 데모에서는 Debugger를 이용한 고급 사용 사례 및 시각화 스크립트를 안내합니다.

Amazon SageMaker 실험 및 디버거를 사용하여 모델을 훈련하고 조정합니다.

나탈리 라우쉬마이어 박사, AWS 응용 과학자 | 길이: 49분 26초

Amazon SageMaker Experiments and Debugger를 사용하여 교육 작업 관리를 간소화하는 방법을 알아보십시오. Amazon SageMaker Debugger는 교육 작업에 대한 투명한 가시성을 제공하고 교육 지표를 Amazon S3 버킷에 저장합니다. SageMaker 실험을 사용하면 SageMaker Studio를 통해 교육 정보를 시험용으로 호출할 수 있으며 교육 작업의 시각화를 지원할 수 있습니다. 이렇게 하면 중요도 순위에 따라 중요도가 낮은 파라미터를 줄이면서 모델 품질을 우수하게 유지할 수 있습니다.

이 동영상은 모델 정확도에 대한 높은 기준을 유지하면서 사전 학습된 ResNet 50 및 AlexNet 모델을 더 가볍고 저렴하게 만드는 모델 프루닝 기법을 보여줍니다.

SageMaker Estimator는 PyTorch 모델 동물원에서 제공된 알고리즘을 PyTorch 프레임워크가 있는 AWS Deep Learning Containers에서 훈련시키고 디버거는 훈련 프로세스에서 훈련 메트릭을 추출합니다.

또한 이 동영상은 프루닝된 모델의 정확도를 관찰하고, 정확도가 임계값에 도달하면 Amazon CloudWatch 이벤트와 AWS Lambda 함수를 트리거하고, 중복 반복을 방지하기 위해 프루닝 프로세스를 자동으로 중지하도록 디버거 사용자 지정 규칙을 설정하는 방법도 보여줍니다.

학습 목표는 다음과 같습니다.

  • 를 사용하여 SageMaker ML 모델 교육을 가속화하고 모델 품질을 개선하는 방법을 알아보십시오.

  • 입력 파라미터, 구성 및 결과를 자동으로 캡처하여 SageMaker Experimts로 교육 반복을 관리하는 방법을 이해하세요.

  • Debugger를 사용해 가중치, 그라데이션, 합성곱 신경망의 활성화 출력 등 여러 지표에서 실시간 텐서 데이터를 자동으로 캡처하여 훈련 프로세스를 투명하게 만드는 방법을 알아보세요.

  • CloudWatch 디버거가 문제를 발견할 때 Lambda를 트리거하는 데 사용합니다.

  • 실험 및 디버거를 사용하여 SageMaker SageMaker 교육 프로세스를 마스터하십시오.

SageMaker 디버거 PyTorch 반복 모델 프루닝에서 이 비디오에 사용된 노트북과 교육 스크립트를 찾을 수 있습니다.

다음 이미지는 반복 모델 프루닝 프로세스에서 활성화 출력값과 AlexNet 기울기로 평가한 중요도 순위를 기준으로 가장 중요하지 않은 필터 100개를 잘라내어 크기를 줄이는 방법을 보여줍니다.

정리 프로세스를 통해 초기 5,000만 개의 파라미터가 1,800만 개의 파라미터로 줄어들었습니다. 또한 예상 모델 크기가 201MB에서 73MB로 줄어들었습니다.

모델 정리 결과 출력 시각화가 포함된 이미지

또한 모델 정확도를 추적해야 합니다. 다음 이미지는 모델 프루닝 프로세스를 플로팅하여 Studio의 파라미터 수를 기반으로 모델 정확도의 변화를 시각화하는 방법을 보여줍니다. SageMaker

Studio의 디버거를 사용한 텐서 시각화 이미지 SageMaker

SageMaker Studio에서 실험 탭을 선택하고 디버거가 프루닝 프로세스에서 저장한 텐서 목록을 선택한 다음 트라이얼 구성 요소 목록 패널을 구성합니다. 반복 10개를 모두 선택한 다음 차트 추가를 선택하여 평가 구성 요소 차트를 생성하세요. 배포할 모델을 결정한 후 평가 구성 요소를 선택하고, 작업을 수행할 메뉴를 선택하거나 모델 배포를 선택하세요.

참고

다음 노트북 예제를 사용하여 SageMaker Studio를 통해 모델을 배포하려면 스크립트에서 train 함수 끝에 한 줄을 추가하세요. train.py

# In the train.py script, look for the train function in line 58. def train(epochs, batch_size, learning_rate): ... print('acc:{:.4f}'.format(correct/total)) hook.save_scalar("accuracy", correct/total, sm_metric=True) # Add the following code to line 128 of the train.py script to save the pruned models # under the current SageMaker Studio model directory torch.save(model.state_dict(), os.environ['SM_MODEL_DIR'] + '/model.pt')

SageMaker 디버거를 사용하여 컨벌루션 오토인코더 모델 교육 모니터링하기

이 노트북은 SageMaker 디버거가 손으로 쓴 숫자로 구성된 MNIST 이미지 데이터세트에서 감독되지 않은 (또는 자체 지도) 학습 프로세스의 텐서를 시각화하는 방법을 보여줍니다.

이 노트북의 훈련 모델은 MXNet 프레임워크가있는 컨볼루션 자동 인코더입니다. 컨볼루션 자동 인코더에는 인코더 부분과 디코더 부분으로 구성된 병목 모양의 컨볼루션 신경망이 있습니다.

이 예제의 인코더에는 입력 이미지의 압축 표현(잠재적 변수)을 생성하는 두 개의 컨볼루션 계층이 있습니다. 이 경우 인코더는 원래 입력 이미지 크기(28, 28)에서 크기(1, 20)의 잠재적 변수를 생성하고 훈련을 위해 데이터 크기를 40배까지 크게 줄입니다.

디코더는 두 개의 디컨볼루션 계층을 포함하고 있으며 잠재적 변수가 출력 이미지를 재구성하여 주요 정보를 유지하도록 보장합니다.

합성곱 인코더는 입력 데이터 크기가 작은 클러스터링 알고리즘을 가동시키고 k-means, k-NN, t-SNE(t-Distributed Stochastic Neighbor Embedding) 등 여러 클러스터링 알고리즘의 성능을 구현합니다.

이 노트북 예제에서는 다음 애니메이션과 같이 Debugger를 사용하여 잠재적 변수를 시각화하는 방법을 보여줍니다. 또한 t-SNE 알고리즘이 잠재적 변수를 10개의 클러스터로 분류하여 2차원 공간으로 투영하는 방법을 보여줍니다. 이미지 오른쪽의 산점도 색 구성표는 실제 값을 반영하여 BERT 모델 및 t-SNE 알고리즘이 잠재적 변수를 클러스터에 얼마나 잘 구성하는지를 보여줍니다.

컨볼루션 자동 인코더의 개념적 이미지

SageMaker BERT 모델 학습에서 디버거를 사용하여 주의력 모니터링하기

BERT(Bidirectional Encode Representations from Transformers)는 언어 표현 모델입니다. 모델 이름이 나타내는 바와 같이 BERT 모델은 NLP(자연어 처리)를 위해 전이 학습변환기 모델을 바탕으로 빌드됩니다.

BERT 모델은 문장에서 누락된 단어를 예측하거나 이전 문장을 자연스럽게 따르는 다음 문장을 예측하는 것과 같이 감독되지 않은 작업에 대한 사전 훈련을 받습니다. 훈련 데이터에는 Wikipedia, 전자 서적 등의 출처에서 발췌한 영어 텍스트 33억 단어(토큰)가 포함되어 있습니다. 간단한 예를 들어, BERT 모델은 주제 토큰의 적절한 동사 토큰 또는 대명사 토큰에 높은 어텐션을 지정할 수 있습니다.

사전 학습된 BERT 모델을 추가 출력 계층으로 미세 조정하여 질문에 대한 자동 응답, 텍스트 분류 등과 같은 NLP 작업에서 state-of-the-art 모델 학습을 수행할 수 있습니다.

Debugger는 미세 조정 프로세스에서 텐서를 수집합니다. NLP의 컨텍스트에서는 뉴런의 가중치를 어텐션이라고 합니다.

이 노트북은 스탠포드 질문 및 답변 데이터세트에 있는 GluonNLP 모델 동물원에서 사전 학습된 BERT 모델을 사용하는 방법과 디버거를 설정하여 훈련 작업을 모니터링하는 방법을 보여줍니다. SageMaker

쿼리 및 주요 벡터에 어텐션 점수 및 개별 뉴런을 표시하면 잘못된 모델 예측의 원인을 식별하는 데 도움이 될 수 있습니다. SageMaker디버거를 사용하면 학습이 진행됨에 따라 텐서를 검색하고 실시간으로 주의를 집중시키는 뷰를 표시하고 모델이 무엇을 학습하는지 이해할 수 있습니다.

다음 애니메이션은 노트북 예제에 제공된 훈련 작업에서 10회 반복에 대해 처음 20개 입력 토큰의 어텐션 점수를 보여줍니다.

어텐션 점수를 보여주는 애니메이션

SageMaker 디버거를 사용하여 CNN (컨벌루션 신경망) 의 클래스 활성화 맵을 시각화하기

이 노트북은 디버거 ( SageMaker Debugger) 를 사용하여 컨벌루션 신경망 (CNN) 의 이미지 감지 및 분류를 위한 클래스 활성화 맵을 플로팅하는 방법을 보여줍니다. 딥러닝에서 컨벌루션 신경망 (CNN 또는 ConvNet) 은 심층 신경망의 일종으로, 시각적 이미지 분석에 가장 일반적으로 적용됩니다. 클래스 활성화 맵을 채택한 애플리케이션 중 하나가 바로 자율주행 자동차입니다. 이 애플리케이션에서는 교통 표지판, 도로, 장애물 등의 이미지를 즉각적으로 감지하고 분류해야 합니다.

이 노트북에서는 40개 이상의 교통 관련 객체 클래스와 총 50,000개 이상의 이미지가 포함된 독일 교통 신호 데이터세트를 기반으로 PyTorch ResNet 모델을 학습합니다.

CNN 클래스 활성화 맵의 애니메이션

훈련 과정에서 SageMaker 디버거는 텐서를 수집하여 클래스 활성화 맵을 실시간으로 플로팅합니다. 애니메이션 이미지에서와 같이 클래스 활성화 맵(Saliency 맵이라고도 함)은 활성화가 높은 영역을 빨간색으로 강조 표시합니다.

Debugger가 캡처한 텐서를 사용하여 모델 훈련 중에 활성화 맵이 어떻게 진화하는지를 시각화할 수 있습니다. 이 모델은 훈련 작업 시작 시 왼쪽 하단 모서리의 엣지를 감지하는 것으로 시작됩니다. 훈련이 진행됨에 따라 초점이 중심으로 이동하고 속도 제한 기호를 감지하며 모델은 97%의 신뢰도 수준으로 Class 3(60km/h 속도 제한 표지 클래스)으로 입력 이미지를 성공적으로 예측합니다.