파인튜닝(Fine-tuning)은 Llama, Titan 같은 사전 학습 모델(pre-trained model)을 특정 작업이나 데이터에 보다 잘 맞도록 추가적으로 학습하는 과정입니다. 사전에 훈련된 모델은 대규모 데이터셋에서 미리 학습된 패턴을 가지고 있으며, 이러한 모델을 새로운, 도메인에 특화된 데이터셋에 적용할 때 추가적인 학습을 통해 모델의 성능을 개선할 수 있습니다. 시간이 지나면서 환경이 변하거나 새로운 유형의 데이터가 등장할 때, 모델이 최신 상황에 맞게 학습되도록 합니다. 파인튜닝은 모델이 새로운 데이터셋에서 더 높은 정확도와 성능을 달성하도록 도와줍니다. 파인튜닝은 이처럼 모델의 범용성을 확장하고, 특정 작업에 대한 모델의 정밀도를 높이며, 제한된 자원 하에서도 효과적인 학습을 가능하게 하는 핵심적인 기법입니다.
RAG VS 파인 튜닝 응답
"우리 제품의 반품 정책이 어떻게 되나요?" | 검색된 반품 정책 문서 내용 인용 | 회사 스타일로 맞춤화된 정책 설명 |
"이전 주문에 문제가 있는데, 어떻게 해결할 수 있나요?" | 일반적인 문제 해결 절차 안내 | 회사 시스템 이해 기반 맞춤형 해결책 제시 |
"A 제품과 B 제품 중 제 상황에 더 적합한 것은?" | 제품 스펙 비교 정보 제공 | 고객 패턴 이해 기반 개인화된 추천, 과거 고객 선호도 고려한 맥락적 조언 |
RAG는 외부 정보 검색과 참조에 중점을 두는 반면, 파인 튜닝은 도메인에 대한 깊은 이해와 맥락적 추론에 강점을 보입니다. 특히 세 번째 코딩 어시스턴트 예시는 파인 튜닝 모델이 단순한 정보 제공을 넘어 실제 개발 경험과 패턴 인식을 통해 더 가치 있는 통찰력을 제공할 수 있습니다.
본 포스트에서는 필자가 파인튜닝을 진행한 과정의 일부분을 소개하고자 합니다. AWS에서 제공하는 데이터 처리를 위한 `datasets` 라이브러리와 `sagemaker.s3`의 컴포넌트, `sagemaker.jumpstart.estimator` 등을 활용하여 Llama2-13b 모델을 학습시켰습니다.
터미널 출력은 트레이닝에 사용될 데이터셋 이름, 모델 ID, 모델 버전, 최대 스텝, 학습률, 배치 크기, 인스턴스 유형을 지정하는 여러 인자와 플래그를 포함하는 파이썬 스크립트를 호출하는 명령어를 보여줍니다.
1. AWS 및 SageMaker 설정
AWS와 SageMaker와 관련된 설정을 초기화합니다. 예를 들어, boto3.client('sts')를 사용하여 AWS Security Token Service (STS) 클라이언트를 생성하고 사용자의 AWS 역할(ARN)을 추출합니다. 이 정보는 SageMaker 학습 작업을 설정할 때 사용됩니다
2. 커맨드 라인 인자 정의 및 파싱
... ...
스크립트에 전달될 다양한 인자들을 정의하고 파싱합니다. 예를 들어 --dataset_name은 사용할 HuggingFace 데이터셋의 이름을 지정합니다. 이러한 인자들은 사용자가 스크립트 실행 시 제공하며, 스크립트의 동작 방식을 조정하는 데 사용됩니다.
3. 데이터셋 처리 및 S3 업로드
특정 HuggingFace 데이터셋을 로드하고, 필요한 가공 및 필터링을 수행한 후, 결과 데이터셋을 S3에 업로드합니다. load_dataset 함수는 지정된 데이터셋을 로드하는 데 사용되며, S3Uploader.upload는 로컬 파일을 S3 버킷으로 업로드하는 데 사용됩니다.
4. 모델 파인튜닝
SageMaker의 JumpStartEstimator를 사용하여 모델을 미세 조정합니다. 사용자가 제공한 인자들(user_args)를 기반으로 모델 ID, 버전, 하이퍼파라미터를 설정하고, 학습 작업을 시작합니다. 사용자가 EULA(End-User License Agreement)를 수락한 경우에만 미세 조정 과정이 진행됩니다. estimator.fit 메소드는 준비된 데이터셋을 사용하여 모델을 학습합니다. destination_s3_uri는 학습 데이터셋이 저장된 S3 경로를 나타냅니다.
5. 메인 실행
스크립트의 진입점으로, 스크립트가 직접 실행될 때, 먼저 parse_args 함수를 호출하여 커맨드 라인 인자를 파싱합니다. 그 후 사용자에게 Llama 2의 EULA를 수락할지 여부를 묻습니다. 사용자가 EULA를 수락하면 ('y'를 입력한 경우), fine_tune 함수를 호출하여 모델 미세 조정 과정을 시작합니다. 사용자가 EULA를 수락하지 않으면 ('n'을 입력한 경우), 스크립트는 실행을 중단합니다.
6. Streamlit 웹 앱 구현
Streamlit을 사용해 웹 기반의 대화형 챗봇을 구현하며, Amazon SageMaker의 Llama 2 모델 엔드포인트를 활용합니다. 사용자의 메시지는 특정 형식으로 처리되어 Llama 2 모델에 전달되며, 모델의 응답은 Streamlit 인터페이스를 통해 표시됩니다. 또한, 슬라이더와 버튼을 통해 사용자는 모델의 동작 매개변수를 조정할 수 있습니다. 이 코드는 복잡한 대화 관리, 메모리 버퍼링 및 사용자 인터페이스 관리를 위해 다양한 클래스와 함수를 사용합니다.
대화형 인터페이스를 구현하여 파인튜닝 모델을 deploy하여 성능을 평가하였으며, 대화 인터페이스의 옵션에는 생성형 모델의 문장 생성 창의성과 관련된 설정을 반영했습니다.
<파인 튜닝 모델 전 vs 후 응답 비교>
파인튜닝 후 이전 모델과의 응답을 비교하는 표로, 사전 학습 모델의 응답은 'Inbreeding'이 'Outbreeding'보다 후손에게 더 유익하다고 잘못된 정보를 제공합니다. 또한, inbreeding이 친척 간 교배라는 정의만을 제공하고, 유전적 다양성 증가로 인한 생식 가능성 향상에 대한 논리적 연결이 부족합니다. 파인 튜닝 모델의 응답은 정확하게 'Outbreeding'이 후손에게 더 유익하다고 설명하며, 이는 기준 답변과 일치합니다.
Written in February 20, 2025
by Sang Hyun Jo
'AWS Ambassador' 카테고리의 다른 글
9. Embedding Model 배포 (1) - SageMaker Endpoint (0) | 2025.04.20 |
---|---|
8. Fine-Tune FM with SageMaker Studio - Canvas (No Code) (2) (0) | 2025.03.05 |
6. AWS Opensearch를 활용한 Zero ETL RAG 활용 (0) | 2025.03.05 |
5. 환각을 최소화하는 최신 정보 반영 LLM RAG 애플리케이션 (0) | 2025.03.05 |
4. 온프레미스와 클라우드의 최적 조합: 하이브리드 클라우드 전략 (0) | 2025.03.05 |