chat gpt Fine-tuning 어떻게 하나 알아보니..
사전 훈련과 미세 조정(fine-tuning)은 자연어 처리 모델을 개발하는 데 중요한 두 단계입니다.
두개의 차이점은 어떻게 될까요?
- 사전 훈련 (Pre-training):
- 사전 훈련은 모델이 일반적인 언어 이해 능력을 학습하는 단계입니다.
- 모델은 대규모 텍스트 데이터를 사용하여 문법, 어휘, 상식 등을 학습합니다.
- 예를 들어, GPT 모델은 사전 훈련 단계에서 수억 개의 문장을 처리하며 언어 패턴을 파악합니다.
- 사전 훈련된 모델은 “few-shot” 학습으로도 다양한 작업을 수행할 수 있습니다.
- 미세 조정 (Fine-tuning):
- 미세 조정은 사전 훈련된 모델을 특정 작업에 맞게 조정하는 단계입니다.
- 예를 들어, 특정 분류 작업이나 질문 답변 작업을 위해 모델을 미세 조정할 수 있습니다.
- 미세 조정은 적은 양의 작업 관련 데이터로 진행됩니다.
- 모델은 이 작업 관련 데이터를 사용하여 특정 작업에 더 적합하게 조정됩니다.
요약하자면, 사전 훈련은 모델이 언어 이해 능력을 기반으로 일반적인 지식을 습득하는 단계이고, 미세 조정은 그 모델을 특정 작업에 맞게 세밀하게 조정하는 단계입니다.
데이터 수집 및 전처리:
먼저, 처리 데이터에 대한 레이블이 있는 데이터를 수집해야 합니다.
이 데이터에 대한 설명이나 특징을 포함해야 합니다.
데이터를 정리하고 전처리하여 모델이 학습하기 좋은 형태로 만들어야 합니다.
Tokenizer
Hugging Face Transformers 라이브러리의 토크나이저를 사용하여 텍스트를 토큰화하고 모델 입력으로 변환
토크나이저 생성 및 학습:
먼저, Hugging Face의 Tokenizers 라이브러리를 사용하여 토크나이저를 생성합니다.
토크나이저는 텍스트를 토큰(단어, 부분 단어 등)으로 분할하는 역할을 합니다.
예를 들어, BPE(Byte-Pair Encoding) 토크나이저를 생성하고 학습할 수 있습니다.
데이터셋 로드 및 전처리:
데이터셋을 로드하고 텍스트 샘플을 토큰화합니다.
토큰화된 텍스트를 모델이 이해할 수 있는 형식으로 변환합니다.
토큰화된 텍스트를 토큰 ID로 매핑하고, 패딩을 적용하여 일정한 길이로 맞춥니다.
모델 입력 생성:
토큰 ID와 어텐션 마스크를 생성하여 모델 입력을 만듭니다.
토큰 ID는 각 토큰에 대한 고유한 숫자 식별자입니다.
어텐션 마스크는 패딩 토큰을 구분하고 모델이 실제 입력에 집중할 부분을 지정합니다.
토크나이저 활용:
생성한 토크나이저를 사용하여 텍스트를 토큰화하고 모델 입력으로 변환합니다.
예를 들어, PreTrainedTokenizerFast 클래스를 사용하여 토큰화된 텍스트를 모델 입력으로 변환할 수 있습니다.
from tokenizers import Tokenizer, models, pre_tokenizers, trainers
# 더미 토크나이저 생성
tokenizer = Tokenizer(models.BPE(unk_token="[UNK]"))
tokenizer.pre_tokenizer = pre_tokenizers.Whitespace()
# 학습 데이터 로드
files = ["data.txt"]
trainer = trainers.BpeTrainer(special_tokens=["[UNK]", "[CLS]", "[SEP]", "[PAD]", "[MASK]"])
tokenizer.train(files, trainer)
# 토크나이저 객체로부터 직접 불러오기
from transformers import PreTrainedTokenizerFast
fast_tokenizer = PreTrainedTokenizerFast(tokenizer_object=tokenizer)
사전 학습된 GPT 모델을 가져옵니다.
예를 들면 gpt-2, gpt-3, 또는 최신 버전인 gpt-4를 사용할 수 있습니다.
해당 모델을 fine-tuning할 준비를 합니다.
Fine-tuning models 가격고려:
Model | Pricing | Pricing with Batch API* |
---|---|---|
gpt-4o-mini-2024-07-18** | $0.30 / 1M input tokens | $0.15 / 1M input tokens |
$1.20 / 1M output tokens | $0.60 / 1M output tokens | |
$3.00 / 1M training tokens | ||
gpt-3.5-turbo | $3.00 / 1M input tokens | $1.50 / 1M input tokens |
$6.00 / 1M output tokens | $3.00 / 1M output tokens | |
$8.00 / 1M training tokens | ||
davinci-002 | $12.00 / 1M input tokens | $6.00 / 1M input tokens |
$12.00 / 1M output tokens | $6.00 / 1M output tokens | |
$6.00 / 1M training tokens | ||
babbage-002 | $1.60 / 1M input tokens | $0.80 / 1M input tokens |
$1.60 / 1M output tokens | $0.80 / 1M output tokens | |
$0.40 / 1M training tokens |
Fine-tuning 스크립트 작성:
Fine-tuning 스크립트를 작성합니다.
이 스크립트는 데이터를 모델에 입력하고 학습을 진행하는 역할을 합니다.
Hugging Face Transformers 라이브러리를 사용하면 편리하게 fine-tuning 스크립트를 작성할 수 있습니다.
Fine-tuning 실행:
작성한 스크립트를 실행하여 모델을 fine-tuning합니다.
이 과정은 몇 시간에서 몇 일까지 걸릴 수 있습니다.
Fine-tuning이 완료되면 모델을 저장합니다.
모델 평가 및 테스트:
Fine-tuning된 모델을 테스트 데이터셋으로 평가합니다.
정확도와 다른 평가 지표를 확인하세요.
필요에 따라 추가적인 fine-tuning을 진행할 수 있습니다.
API 구축 및 배포:
Fine-tuning된 모델을 API로 구축하여 사용자가 입력한 정보를 동작할수 있도록 합니다.
API를 서버에 배포하고 필요한 인프라를 설정하세요.
'인공지능(AI) > AI test' 카테고리의 다른 글
Meta-Llama 버전 차이점 (0) | 2024.08.22 |
---|---|
llama 명령어 (0) | 2024.08.21 |
Llama를 쉽게 사용할수 있는 서비스 알아보니... (0) | 2024.08.20 |
라마 3.1 모델의 다양한 버전에 대한 설치 용량/AWS 인스턴스 (0) | 2024.08.19 |
sklearn.metrics 라이브러리의 accuracy_score, precision_score, 그리고 recall_score 함수(인공지능, AI 정확도, 정밀도,재현율) (0) | 2024.08.15 |