파인 튜닝(Fine-tuning)은 사전 훈련된 대규모 언어 모델(LLM)을 특정 도메인이나 작업에 최적화하는 과정입니다. 이는 모델이 일반적인 지식을 바탕으로 특수한 영역에서도 뛰어난 성능을 발휘할 수 있게 해주는 핵심 기술입니다. 기본적으로 파인 튜닝은 이미 방대한 데이터로 학습된 모델을 '재교육'하는 것으로, 처음부터 모델을 훈련시키는 것보다 훨씬 효율적입니다. 특히 의료, 법률, 금융과 같은 전문 분야나 기업 내부 지식을 활용한 응용 프로그램 개발에 중요한 역할을 합니다.
파인 튜닝은 강력한 도구이지만, 그 과정은 복잡하고 다양한 기술적 도전 과제를 수반합니다. 이 문서에서는 파인 튜닝의 주요 단계를 단계별로 살펴보고, 이 과정에서 직면하게 되는 주요 어려움에 대해 자세히 알아봅니다. 이를 통해 파인 튜닝이 왜 단순한 작업이 아닌 전문적인 프로세스인지 이해할 수 있을 것입니다.
파인 튜닝의 주요 단계
- 고품질 데이터 준비 파인 튜닝의 첫 단계는 고품질 데이터를 준비하는 것입니다. 이 과정에서는 대량의 관련 데이터를 수집하고, 노이즈와 오류를 제거하는 정제 작업을 수행해야 합니다. 또한 데이터에 적절한 레이블을 부여하고, 모델이 이해할 수 있는 형식으로 변환하는 포맷팅 작업도 필요합니다. 데이터의 품질과 다양성이 파인 튜닝된 모델의 성능을 결정하는 핵심 요소이기 때문에, 이 단계는 매우 중요합니다.
- 기본 모델 선택 및 하이퍼파라미터 설정 목적에 적합한 사전 훈련된 기본 모델을 선택하고, 학습 과정을 제어하는 하이퍼파라미터를 설정해야 합니다. 학습률(learning rate), 배치 크기(batch size), 에폭 수(epoch) 등의 값을 설정하는데, 이러한 설정은 모델의 학습 속도와 최종 성능에 직접적인 영향을 미칩니다. 최적의 하이퍼파라미터를 찾기 위해서는 여러 설정으로 실험하고 결과를 비교분석하는 과정이 필요합니다.
- 모델 훈련 및 모니터링 준비된 데이터와 설정으로 모델 훈련을 시작합니다. 이 단계에서는 GPU나 TPU와 같은 고성능 컴퓨팅 자원을 활용하여 대규모 계산을 수행합니다. 훈련 중에는 손실 함수(loss function)의 변화, 정확도(accuracy) 등 다양한 지표를 모니터링하면서 모델의 학습 진행 상황을 확인합니다. 문제가 발견되면 즉시 조정하여 학습이 올바른 방향으로 진행되도록 유도해야 합니다.
- 모델 평가 및 미세 조정 훈련된 모델을 별도의 검증 데이터셋으로 평가하고, 성능이 목표에 미치지 못하는 경우 추가적인 미세 조정을 진행합니다. 이 단계에서는 과적합(overfitting) 문제를 방지하기 위한 정규화(regularization) 기법을 적용하거나, 모델 구조를 일부 수정하는 등의 작업을 수행할 수 있습니다. 최적의 성능을 달성할 때까지 평가와 조정을 반복하는 과정이 필요합니다.
파인 튜닝의 주요 어려움
- 데이터 요구사항 관련 어려움 파인 튜닝은 대량의 고품질 데이터를 필요로 합니다. 특히 특정 도메인이나 태스크에 맞는 데이터를 충분히 확보하는 것은 쉽지 않은 일입니다. 데이터 수집 과정에서 개인정보 보호나 저작권 문제가 발생할 수 있으며, 수집된 데이터의 정제와 가공에는 상당한 시간과 노력이 필요합니다. 또한 불균형한 데이터셋은 편향된 모델을 만들 수 있으므로, 대표성 있고 균형 잡힌 데이터를 구성하는 것이 중요하지만 매우 어려운 과제입니다.
- 기술적 전문성 부족 파인 튜닝을 효과적으로 수행하기 위해서는 머신러닝과 딥러닝에 대한 깊은 이해가 필요합니다. Python이나 PyTorch, TensorFlow와 같은 프로그래밍 도구에 익숙해야 하며, 신경망 구조와 학습 알고리즘에 대한 전문 지식도 필요합니다. 특히 하이퍼파라미터 튜닝은 상당한 경험이 요구되는 작업으로, 초보자는 적절한 값을 찾는 데 어려움을 겪을 수 있습니다. 이러한 기술적 진입 장벽은 많은 조직이 파인 튜닝을 적용하는 데 주요 장애물로 작용합니다.
- 컴퓨팅 리소스 제약 대규모 언어 모델의 파인 튜닝은 상당한 컴퓨팅 자원을 필요로 합니다. 고성능 GPU나 TPU 없이는 훈련 시간이 비현실적으로 길어질 수 있으며, 이러한 하드웨어는 구매 비용이 높고 운영에도 전문 지식이 필요합니다. 클라우드 컴퓨팅 서비스를 이용할 경우에도 장시간 고성능 인스턴스를 사용하면 상당한 비용이 발생합니다. 또한 대규모 모델 훈련 과정에서 발생하는 전력 소비와 열 관리 문제도 고려해야 할 요소입니다.
- 모델 최적화의 어려움 파인 튜닝된 모델이 학습 데이터에는 잘 작동하지만 실제 환경에서는 성능이 저하되는 과적합 문제가 자주 발생합니다. 반대로 모델이 충분히 학습되지 않아 성능이 낮은 과소적합 문제도 있습니다. 이러한 문제들의 균형을 맞추기 위해서는 정규화 기법, 데이터 증강, 학습률 조정 등 다양한 기법을 시도해야 합니다. 최적의 설정을 찾기 위한 반복적인 실험과 시행착오는 시간과 자원을 많이 소모하는 과정입니다. 또한 모델의 성능을 객관적으로 평가하고 해석하는 것도 쉽지 않은 과제입니다.
Amazon SageMaker Canvas는 코딩 없이 기계 학습을 사용해 예측을 생성할 수 있는 도구입니다. 이를 통해 고객 이탈 예측, 재고 계획, 가격 최적화, 정시 배송 개선, 텍스트 및 이미지 분류, 이미지 내 객체 식별, 문서에서 정보 추출 등의 다양한 사용 사례에 활용할 수 있습니다.
SageMaker Canvas를 사용하면 대형 언어 모델(LLM)과 채팅하고, 준비된 모델에 접근하거나 사용자 데이터를 기반으로 맞춤형 모델을 구축할 수 있습니다. Canvas Chat 기능은 오픈 소스 및 AWS Bedrock LLM을 활용해 콘텐츠 생성, 문서 요약, 질문 답변 등을 구현할 수 있습니다. 또한, 사용자 데이터로 훈련된 맞춤형 모델이 필요한 경우, 데이터를 가져오고 예측 모델을 구축한 뒤 성능을 평가하고 예측을 생성할 수 있습니다. SageMaker Canvas는 수치 예측, 범주형 예측, 시계열 예측, 단일 라벨 이미지 예측, 다중 카테고리 텍스트 예측 등의 맞춤형 모델을 지원합니다. 또한 Amazon SageMaker Studio Classic에서 모델을 가져올 수도 있습니다. Amazon SageMaker Canvas는 복잡한 예측 작업을 단순화하고, 코드 작성 없이도 쉽게 사용할 수 있게 해주는 강력한 도구입니다. 이를 통해 기계 학습의 장점을 최대한 활용해 비즈니스의 생산성과 효율성을 높일 수 있습니다.
본 게시글에서는 SageMaker Canvas를 활용하여 LLM 모델을 특정 데이터에 대해 Fine-Tuning하여 QA 채팅을 구현하는 과정을 설명하고자 합니다.
1. SageMaker 도메인 생성
먼저, AWS Management Console에 로그인한 후 상단의 검색창에 "SageMaker"를 입력하고 해당 서비스를 선택합니다. 그런 다음 SageMaker 콘솔의 왼쪽 탐색 창에서 "SageMaker Domain"을 선택합니다. 도메인 페이지에서 "Create domain" 버튼을 클릭하여 새 도메인을 생성하고, 도메인 이름과 사용자의 IAM 역할 등을 설정합니다.
1-1. Amazon Bedrock 모델 액세스 활성화
SageMaker 도메인을 설정한 후, AWS Management Console 상단의 검색창에 "Bedrock"을 입력하고 Amazon Bedrock 서비스를 선택합니다. Bedrock 콘솔의 왼쪽 탐색 창에서 "Model access"를 선택한 후 "Manage model access" 버튼을 클릭합니다. 모델 액세스 관리 페이지에서 "Amazon" 옵션을 선택하여 LLM 모델을 활성화합니다.
이 과정을 완료하면 SageMaker Canvas와 Amazon Bedrock 모델을 사용할 준비가 완료됩니다. 이제 데이터를 가져와 모델을 훈련시키고, 다양한 작업을 수행할 수 있습니다.
2. SageMaker Canvas 실행
도메인 생성이 완료되면 도메인 세부 정보 페이지로 이동하여 생성된 도메인의 사용자 프로필을 확인합니다. 각 사용자 프로필 옆에 있는 "Launch" 버튼을 클릭하고, 드롭다운 메뉴에서 "Canvas"를 선택하여 SageMaker Canvas를 시작합니다.
3. 데이터 세트 준비
Q&A 쌍이 포함된 CSV 데이터 세트를 생성하여 Canvas의 Dataset에 업로드합니다. 각 행은 질문과 해당 답변을 포함하고 있어야 하며, 열은 명확하게 구분되어야 합니다. Canvas에서 LLM Fine-Tuning을 지원하는 데이터 유형은 텍스트로 구성된 데이터셋의 변수만 가능합니다. 필자는 Nvidia의 GPU를 활용한 학습 관련 정보를 Q&A 로 가공하여 학습 데이터셋을 준비했습니다.
4. 새 모델 생성
SageMaker Canvas에서는 여러 모델을 동시에 파인 튜닝할 수 있습니다. 이번 가이드에서는 Amazon Titan Text G1-Express LLM을 사용하여 모델을 생성하는 방법을 설명합니다. 먼저, AWS Management Console에서 SageMaker Canvas로 이동한 후, 탐색 창에서 '내 모델'을 선택합니다. '내 모델' 페이지에서 '새 모델' 버튼을 클릭합니다. 새 모델을 생성하기 위해 모델 이름을 입력합니다.
그런 다음 문제 유형으로 '파인 튜닝 기본 모델'을 선택합니다. 이는 기존의 대형 언어 모델을 사용하여 사용자의 데이터에 맞게 모델을 파인 튜닝하는 옵션입니다. 모든 설정을 완료한 후 '생성' 버튼을 클릭하여 모델 생성을 시작합니다.
이후 3번 단계에서 업로드 한 CSV 파일을 선택한 후 '데이터 세트 선택' 버튼을 클릭합니다.
데이터 세트를 업로드한 후, 기본 모델을 선택하고 데이터 세트로 파인 튜닝을 진행합니다. 먼저 '파인 튜닝' 탭에서 '기본 모델 선택' 메뉴에서 'Titan Express'를 선택합니다. 그 다음 입력 열로 '질문'을 선택하고, 출력 열로 '답변'을 선택합니다. 마지막으로 '파인 튜닝' 버튼을 클릭하여 모델 파인 튜닝을 시작합니다. 파인 튜닝이 완료될 때까지 2~5시간 정도 기다립니다. 데이터셋의 규모에 소요 시간이 달라 질 수 있습니다.
이 단계를 통해 Q&A 데이터 세트를 준비하고 SageMaker Canvas에서 새 모델을 생성할 수 있습니다. 이러한 과정을 통해 사용자는 Amazon Titan Text G1-Express LLM을 기반으로 맞춤형 모델을 구축하여 특정 도메인에 최적화된 예측을 수행할 수 있습니다.
4-1. Fine-Tuning Hyperparameters 조정 (Optional)
모델을 튜닝할 때 여러 설정을 조정하여 성능을 최적화할 수 있습니다. Canvas에서는 epoch count, batch size, learning rate, 그리고 learning rate warmup steps을 조정할 수 있도록 지원하고 있습니다.
Epoch Count (에포크 수)
에포크는 전체 데이터 세트가 한 번 모델을 통해 전달되는 과정을 말합니다.
에포크 수는 책을 여러 번 읽는 것과 비슷합니다. 데이터를 처음부터 끝까지 몇 번 반복해서 학습할지를 나타냅니다. 여러 번 읽을수록 내용을 더 잘 이해하게 되는 것처럼, 모델도 데이터를 반복해서 학습할수록 성능이 좋아집니다.
예를 들어, 에포크 수가 10이라면, 모델은 데이터 세트를 처음부터 끝까지 10번 학습합니다.
Batch Size (배치 크기)
배치 크기는 한 번에 모델에 공급되는 데이터 샘플의 수를 의미합니다.
배치 크기는 한 번에 몇 개의 데이터를 학습할지를 결정합니다. 예를 들어, 한 번에 32개의 데이터를 처리하는 것은 한 번에 32명의 학생에게 수업을 하는 것과 비슷합니다. 배치 크기가 크면 학습 속도가 빨라지지만, 더 많은 메모리가 필요합니다.
예를 들어, 배치 크기가 32인 경우, 모델은 한 번의 학습 단계에서 32개의 데이터 샘플을 사용하여 학습합니다.
Learning Rate (학습률)
학습률은 모델이 학습할 때 가중치를 얼마나 크게 조정할지를 결정하는 값입니다.
학습률은 공부할 때 한 번에 얼마나 많은 양을 배울지를 결정하는 것과 같습니다. 학습률이 높으면 빠르게 배우지만 실수할 가능성도 커집니다. 반대로 낮으면 천천히 배우지만 더 안정적으로 학습할 수 있습니다.
예를 들어. 학습률이 0.01인 경우, 모델은 각 학습 단계에서 가중치를 조금씩 조정합니다.
배치크기와 학습률 간의 관계
모델 학습에서 배치 크기(batch size)는 데이터 세트 전체를 한 번에 처리하는 대신, 데이터를 작은 부분으로 나누어 처리하는 방식입니다. 이를 통해 메모리 사용을 최적화하고, 효율적으로 모델을 학습할 수 있습니다. 모델은 전체 데이터 세트를 한 번에 학습하는 대신, 배치 크기만큼의 데이터를 샘플링하여 한 번의 학습 단계에서 처리합니다. 이렇게 하는 이유는 메모리 효율성을 높이고, 학습 과정을 가속화하며, 업데이트 빈도를 조절하기 위함입니다.
- 전체 데이터 세트: 데이터 세트 전체는 수천에서 수백만 개의 데이터 포인트로 구성될 수 있습니다. 이러한 데이터를 한 번에 모두 처리하려면 매우 많은 메모리가 필요합니다.
- 배치 크기: 배치 크기는 한 번의 학습 단계에서 처리할 데이터 샘플의 수를 의미합니다. 예를 들어, 배치 크기가 32인 경우, 모델은 한 번의 학습 단계에서 32개의 데이터 샘플을 사용하여 가중치를 업데이트합니다.
배치 학습 방식
- 데이터 세트를 배치로 분할: 전체 데이터 세트를 배치 크기만큼의 작은 부분으로 나눕니다. 예를 들어, 데이터 세트가 3200개 샘플로 구성되어 있고, 배치 크기가 32라면, 100개의 배치로 나눌 수 있습니다.
- 배치 단위 학습: 각 배치마다 모델이 데이터를 입력받아 학습하고, 가중치를 업데이트합니다. 이 과정은 배치 단위로 반복됩니다.
- 예시: 첫 번째 배치(32개 샘플)를 학습하고, 가중치를 업데이트한 후, 두 번째 배치(다음 32개 샘플)를 학습하는 방식입니다.
- 에포크 완료: 모든 배치를 학습하면 하나의 에포크가 완료됩니다. 에포크가 완료되면, 모델이 전체 데이터 세트를 한 번 학습한 것이 됩니다.
- 예시: 100개의 배치를 모두 학습하면, 에포크 1회가 완료됩니다.
- 반복 학습: 설정된 에포크 수만큼 위 과정을 반복합니다. 여러 번 반복할수록 모델이 데이터를 더 많이 학습하게 됩니다.
- 예시: 에포크 수가 10인 경우, 위 과정을 10번 반복하여 전체 데이터 세트를 10번 학습합니다.
Learning Rate Warmup Steps (학습률 워밍업 단계)
학습률 워밍업 단계는 학습 초기 단계에서 학습률을 점진적으로 증가시키는 과정을 의미합니다.
학습률 워밍업 단계는 처음부터 너무 빠르게 배우지 않도록 천천히 시작하는 것을 의미합니다. 처음에는 작은 걸음으로 시작해서 점점 더 큰 걸음을 내딛는 것과 같습니다. 이렇게 하면 모델이 처음부터 안정적으로 학습을 시작할 수 있습니다.
예를 들어, 워밍업 단계가 1000인 경우, 처음 1000단계 동안 학습률이 점진적으로 증가하여 모델이 안정적으로 학습을 시작할 수 있습니다.
이러한 하이퍼파라미터들을 적절히 조정하면 모델의 성능을 최적화하고, 학습 과정을 안정적으로 진행할 수 있습니다. 각각의 설정이 모델 학습에 어떻게 영향을 미치는지 이해하고, 다양한 시도를 통해 최적의 값을 찾는 것이 중요합니다.
5. 모델 분석
파인 튜닝이 완료되면 새로운 모델에 대한 통계를 확인할 수 있습니다.
- 훈련 손실(Training Loss): 훈련 손실은 모델이 훈련 데이터에서 다음 단어를 예측할 때 발생하는 실수에 대한 페널티입니다. 이 값은 모델이 예측한 단어와 실제 단어 간의 차이를 측정합니다. 손실 값이 낮을수록 모델이 더 정확하게 예측하고 있다는 것을 의미합니다. 구체적으로, 손실 함수는 모델이 다음 단어를 얼마나 잘 맞추는지를 평가하며, 손실 값이 낮아질수록 모델의 예측 능력이 향상된다는 것을 나타냅니다.
- 검증 손실(Validation Loss) 및 검증 당혹도(Validation Perplexity): 검증 손실과 검증 당혹도는 모델이 새로운 데이터에 대해 얼마나 잘 일반화되는지를 평가하기 위해 사용됩니다. 검증 손실은 검증 데이터 세트에서 모델의 예측 오류를 측정하는 지표입니다. 이는 모델이 과적합되지 않았는지 확인하는 데 중요합니다. 검증 당혹도는 검증 데이터 세트에서 모델의 '놀라움'을 측정합니다. 낮은 검증 당혹도는 모델이 새로운 데이터에도 자신감 있게 예측할 수 있음을 나타냅니다. 검증 단계의 지표는 모델의 실제 성능을 평가하는 데 중요한 역할을 합니다. 이러한 지표들을 통해 모델의 훈련 상태와 성능을 평가할 수 있으며, 이를 기반으로 모델을 개선하고 최적화할 수 있습니다. 모델의 성능을 이해하고 개선하는 과정에서 이 지표들은 중요한 역할을 합니다.
- 훈련 당혹도(Training Perplexity): 훈련 당혹도는 모델이 훈련 중에 텍스트를 접했을 때 느끼는 '놀라움'의 정도를 측정합니다. 이는 모델의 확률 분포가 실제 데이터 분포와 얼마나 잘 일치하는지를 나타내는 지표입니다. 당혹도가 낮을수록 모델이 텍스트의 패턴을 더 잘 이해하고 있다는 것을 의미합니다. 예를 들어, 모델이 특정 문맥에서 다음 단어를 매우 확신 있게 예측할 수 있다면 당혹도는 낮아집니다.
모델의 성능을 다양한 차원에서 자세히 보고 싶다면 '평가 보고서 생성'을 선택한 다음 '보고서 다운로드'를 선택합니다.
SageMaker Canvas는 파인 튜닝 작업을 자세히 설명하는 Python Jupyter 노트북을 제공합니다. 이를 통해 노코드 도구와 관련된 공급업체 종속성을 완화하고 데이터 과학 팀과 세부 정보를 공유하여 추가 검증 및 배포를 가능하게 합니다.
Test in Ready-to-use-models를 클릭하여 Canvas 상에서 Fine-Tuned 모델을 Deploy 하여 바로 챗을 구현하도록 합니다. 테스트 엔드포인트가 배포될 때까지 15~30분 정도 기다립니다.
6. Fine-Tuned 모델 테스트
배포가 완료되면 사용자 정의 모델이 미리 선택된 상태로 SageMaker Canvas 플레이그라운드로 리디렉션됩니다. '비교'를 선택하고 사용자 정의 모델에 사용된 기본 모델을 선택합니다. 학습 데이터 세트에서 직접 문구를 입력하여 사용자 정의 모델이 해당 질문에서 더 나은 성능을 보이는지 확인합니다. 필자는 Fine-Tuned 모델과 기본 Titan 모델을 선택하여 질문에 대한 답변을 비교하였습니다.
"Nvidia CUFFT Library 에서 CUDA 5.5 version의 신기능은 무엇인가?"라는 질문에 대한 답변 비교 시, Fine-Tuned 모델의 답변은 간단하지만 정답에 기반한 답변을 한 반면 기본 Titan 모델은 일반적인 답변을 답할 뿐 정답과는 거리가 먼 것을 알 수 있습니다.
Amazon SageMaker Canvas는 머신 러닝/딥러닝을 통해 복잡한 예측 작업을 단순화하고, 코드 작성 없이도 쉽게 사용할 수 있도록 돕는 강력한 도구입니다. 고객 이탈 예측부터 LLM Fine-Tuned까지 다양한 사용 사례에 적용하여 맞춤형 모델을 구축하거나 Ready-to-use 모델을 사용하여 빠르게 Customized Model을 생성할 수 있습니다.
'AWS Ambassador' 카테고리의 다른 글
10. Embedding Model 배포 (2) - EC2 직접 배포 (0) | 2025.04.20 |
---|---|
9. Embedding Model 배포 (1) - SageMaker Endpoint (0) | 2025.04.20 |
7. Fine-Tune FM with SageMaker Studio (1) (0) | 2025.03.05 |
6. AWS Opensearch를 활용한 Zero ETL RAG 활용 (0) | 2025.03.05 |
5. 환각을 최소화하는 최신 정보 반영 LLM RAG 애플리케이션 (0) | 2025.03.05 |