[SageMaker] SageMaker Jumpstart를 사용한 LLM Fine Tuning - DAFT(Domain-Agnostic Fine-Tuning)

Sagemaker를 통해 LLM 모델을 파인튜닝하고 테스트합니다.

파인튜닝이란?

파인튜닝이란 LLM의 성능을 유지하고 개선하기 위한 수단으로  특정 데이터를 활용하여 LLM을 학습시키는 방법을 의미합니다.파인튜닝의 경우 다음과 같은 장점이 있습니다.

하지만 단점으로는 다음과 같습니다.

따라서 파인튜닝이란 대부분의 경우 사용에 적합하진 않으며, 모델에 따라서 복잡한 초기 구성이 필요할 수 있습니다.뿐만 아니라 LLM을 학습시키기 위해 필요한 데이터 혹은 구성 방법 등이 잘 알려져 있지않은 경우가 대부분입니다. 하지만 SageMaker Jumpstart같은 경우 LLM 모델을 학습시키기 위해 필요한 데이터의 정보나 구성 등을 확인할 수 있고 클라우드 상에서 쉽게 LLM 모델을 파인튜닝하여 사용할 수 있게 됩니다.

DAFT란(Domain-Adjacent Fine-Tuned Model)?

대규모 언어 모델(LLMs)은 도메인 특화 데이터로 미세 조정될 때 다양한 하위 작업에서 우수한 성능을 보이는 것으로 관찰되었습니다. 그러나 많은 응용 분야에서 이러한 데이터를 쉽게 구할 수 없어, 도메인 인접 모델을 사용한 제로샷 또는 퓨샷 접근법이 필요하게 됩니다. 이러한 방식으로 특정 도메인에 대해 접근하기 위해 domain에서 자주 사용되는 단어를 pre-trained 시키는 방식을 의미합니다.
모든 모델에서 사용할 순 없고 다음과 같은 LLM 모델을 지원하고 있습니다.

[2024년 6월 테스트 자료입니다.]

파인튜닝 설정하기

1단계: 파인튜닝 가능한 모델(Llama2 7B Chat)을 선택합니다.

Jumpstart > Meta > Llama 2 7B Chat 모델을 선택하고 Train 버튼을 클릭합니다.

추가적으로 문서를 확인해보면 새로운 데이터셋을 통해 파인튜닝하는 방법을 안내하고 있습니다.

2단계: 파인튜닝 세부 구성

Dataset

SciQ 데이터 세트를 활용합니다.해당 데이터셋에는 생물학, 화학, 물리학, 환경 과학 등 광범위한 과학 주제를 다루고 있으며 파인튜닝을 위한 데이터로 활용하였습니다.S3에 사전 생성된 트레이닝 데이터셋을 추가합니다.

Hyper Parameter

양자화 하는 것과 샤딩 처리하는 것은 서로 상호 보완적으로 동작합니다. 따라서 하나의 옵션만 활성화되어 동작하며 동시에 활성화 할 수 없습니다.

LoRA (Low-Rank Adaptation of Large Language Models)는 대규모 언어 모델(LLM)을 효율적으로 학습하고 적응시키기 위한 기법으로 기본적으로 가중치 행렬의 차원을 줄여 학습하는 방식입니다. 이는 저랭크 행렬 분해(low-rank matrix decomposition) 원리를 이용합니다. 큰 가중치 행렬을 두 개의 더 작은 행렬로 분해하여 계산 복잡도를 줄이고 효율적으로 모델을 학습하는 방식입니다.다음과 같은 장점을 가지고 있습니다.

LoRA는 대규모 언어 모델(LLM)에서 특정 가중치 값이 너무 커서 계산과 변환이 비효율적인 경우에 사용되는 기법입니다. LoRA는 큰 가중치 행렬 W를 두 개의 더 작은 행렬 A와 B로 분해하여 계산합니다. 이 작은 행렬들을 통해 원래의 큰 가중치 W를 근사하는 방식입니다. 이를 통해 메모리 사용량과 계산 복잡도를 줄일 수 있습니다.

하이퍼파라미터는 다음과 같이 설정하였습니다.

3단계: 모델 저장 및 훈련 등록

파인튜닝된 모델의 결과를 저장하는 버킷을 지정합니다.훈련하는 작업을 등록합니다.

Llama 2 모델에는 Llama 2 커뮤니티 라이센스가 있습니다. 라이센스 계약을 읽고 동의할 수 있습니다.

4단계: 작업 시작

Jobs > Training > Training Jobs에서 실행중인 Jumpstart 모델을 확인할 수 있습니다.

5단계: 작업 완료

HuggingFace 데이터셋을 사용해 평가되었으며 모델의 지표를 확인할 수 있습니다.

6단계: 테스트

우측 상단의 Deploy를 통해 파인튜닝된 모델을 사용할 수 있습니다.

Endpoints 세팅을 진행합니다. AWS에서 제공하는 기본 권장사항으로 생성하였습니다.

이후 배포가 성공하고 아래 코드를 통해 파인튜닝된 모델의 성능을 테스트를 진행하였습니다.

훈련 및 테스트 데이터 셋

dataset_evaluation
download-circle