Views
No views yet
korean-llm-finetune/
├── README.md # 프로젝트 설명
├── requirements.txt # 필요한 패키지 목록
├── model_card.md # 모델 카드
├── configs/
│ └── lora_config.yaml # LoRA 설정
├── data/
│ └── ko_samples.jsonl # 한국어 샘플 데이터
├── scripts/
│ ├── train_lora.py # 파인튜닝 스크립트
│ ├── evaluate.py # 평가 스크립트
│ └── preprocess.py # 전처리 스크립트
├── inference_demo.ipynb # 추론 데모 노트북
└── outputs/ # 학습 결과 저장1# 필요한 패키지 설치
2pip install -r requirements.txtdata/ko_samples.jsonl 파일에 한국어 QA 데이터를 준비합니다:1{
2 "instruction": "다음 질문에 답하세요",
3 "input": "한국의 AI 정책은?",
4 "output": "정부는 2025년부터 독자 AI 파운데이션 모델을 개발 중입니다."
5}1from transformers import AutoTokenizer, AutoModelForCausalLM
2
3# 토크나이저 다운로드
4tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-3B")
5
6# 모델 다운로드 (Meta 라이선스 동의 필요)
7model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")1cd scripts
2python train_lora.py \
3 --model_name_or_path meta-llama/Llama-3.2-3B \
4 --data_path ../data/ko_samples.jsonl \
5 --output_dir ../outputs \
6 --num_train_epochs 3 \
7 --per_device_train_batch_size 1 \
8 --learning_rate 2e-41python evaluate.py \
2 --base-model meta-llama/Llama-3.2-3B \
3 --adapter-path ../outputs/final_model \
4 --test-data ../data/ko_samples.jsonljupyter notebook inference_demo.ipynb| # | 질문 | 입력 | 예상 답변 | 생성 답변(요약) |
|---|---|---|---|---|
| 1 | 다음 질문에 답하세요 | 파이썬으로 팩토리얼 함수 만들어줘. | def factorial(n): return 1 if n == 0 else n * factorial(n-1) | def factorial(n): if n == 0: return 1 else: return n * factorial(n - 1) print(factorial(5)) |
| 2 | 다음 질문에 답하세요 | 사과와 바나나의 차이점을 한 문장으로 설명해줘. | 사과는 아삭하고 달콤한 과일이며, 바나나는 부드럽고 달콤한 열대과일입니다. | 사과는 과일로서 생략이 가능하다. 과일은 과일이 아니므로 생략할 수 없다. 사과는 과일로서 생략이 가능하다. 과일은 과일이 아니므로 생략할 수 없다. |
| 3 | 다음 질문에 답하세요 | '인공지능'을 초등학생 수준으로 설명해줘. | 인공지능은 사람처럼 생각하고 배우는 똑똑한 컴퓨터 프로그램이에요. | 인공지능은 인간의 지능을 초래한 결과물이다. 인간의 지능을 제대로 설명하고 싶다면, "인간의 지능은 인공지능을 제대로 설명하는 능력이다."라고 말해야 한다. |
| 4 | 다음 질문에 답하세요 | 파이썬에서 리스트와 튜플의 차이점을 한 문장으로 설명해줘. | 리스트는 변경이 가능하지만, 튜플은 한 번 생성하면 값을 바꿀 수 없습니다. | 리스트는 순서가 없다. 리스트의 모든 요소가 동일한 값이 아니다. 튜플은 순서가 있다. 리스트의 모든 요소가 동일한 값이 아니다. 튜플의 모든 요소가 동일한 값이 아니다. |
| 5 | 다음 질문에 답하세요 | '행복'이란 무엇인지 짧게 정의해줘. | 행복은 기쁘고 만족스러운 감정을 느끼는 상태입니다. | 행복란, 행복함, 행복한 사람 |
| 6 | 다음 질문에 답하세요 | 파이썬으로 피보나치 수열을 구하는 함수를 작성해줘. | def fibonacci(n): a, b = 0, 1 for _ in range(n): a, b = b, a + b return a | 다음을 통해 피보나치 수열을 구하는 함수를 작성하세요 #파이썬에서 반복문을 사용할 때는 반복 횟수와 반복되는 숫자를 명시적으로 주어야 한다. #반복 횟수는 반복되는 숫자를 뜻하며, 반복되는 숫자는 1부터 시작한다. def fibo(n): a = 0 b = 1 for i in range(n): a,b = b,a+b return a n = int(input()) print(fibo(n)) |
| 7 | 다음 질문에 답하세요 | 지구와 달의 차이점을 한 문장으로 설명해줘. | 지구는 생명체가 살 수 있는 행성이며, 달은 지구의 위성으로 공전하고 있습니다. | 지구의 3배가 되는 거리에서 달의 1.5배가 되는 거리 |
| 8 | 다음 질문에 답하세요 | '블록체인'을 초등학생이 이해할 수 있게 설명해줘. | 블록체인은 정보를 안전하게 저장하는 특별한 컴퓨터 기록장치예요. | 블록체인은 '이동'이란 의미로, 블록체인에서 '이동'하는 것은 데이터를 '이동'하는 것이다. |
| 9 | 다음 질문에 답하세요 | 파이썬에서 딕셔너리와 리스트의 차이점을 한 문장으로 설명해줘. | 딕셔너리는 키와 값의 쌍으로 데이터를 저장하고, 리스트는 순서대로 값을 저장합니다. | 딕셔너리와 리스트의 차이는 딕셔너리에서 키를 사용할 때, 키는 항목의 이름, 리스트에서는 항목의 값이다. |
| 10 | 다음 질문에 답하세요 | '우정'이란 무엇인지 짧게 정의해줘. | 우정은 서로를 아끼고 도와주는 친구 사이의 소중한 관계입니다. | "우정은 두 사람이 서로 안의 가치를 함께 느끼고, 서로를 존중하고, 사랑하고, 동기부여하고, 존중하기 위해 서로를 지지한다. 우정은 서로의 가치에 대한 동기부여가 필요하며, 서로의 가치를 존중한다. 우정은 두 사람이 서로에게 존중하는 가치를 존중하기 위해 서로를 존중한다." |
1from transformers import AutoTokenizer, AutoModelForCausalLM
2from peft import PeftModel
3
4# 모델 로드
5tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.2-3B")
6base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-3B")
7model = PeftModel.from_pretrained(base_model, "./outputs/final_model")
8
9# 추론
10prompt = "### 질문: 다음 질문에 답하세요\n입력: 한국의 수도는?\n### 답변:"
11inputs = tokenizer(prompt, return_tensors="pt")
12outputs = model.generate(**inputs, max_new_tokens=128)
13response = tokenizer.decode(outputs[0], skip_special_tokens=True)
14print(response)