발표자료 · unity-finetune project
학습 도우미 AI 챗봇
로컬에서 직접 만들기

강의 자료 PDF를 학습시켜, 질문에 답하는 로컬 AI 챗봇을 만든 파인튜닝 프로젝트

WSL2 Hugging Face Unsloth Ollama Gradio
unity-tutor1 / 11
Overview

무엇을, 왜 만들었나

  • 목표유니티 강의 PDF 20개의 내용을 학습해서, 질문하면 답해주는 Q&A 챗봇 제작
  • 왜 로컬인가비용 없이, 인터넷 연결 없이도 완전히 내 컴퓨터에서 작동하는 AI를 목표로 함
  • 왜 파인튜닝인가일반 AI는 이 강의 자료의 세부 내용(용어, 예시)을 모르기 때문에, 직접 학습시켜 전문화
$ ollama run unity-tutor "유니티에서 객체지향 프로그래밍이 왜 중요한가요?" → 학습한 강의 내용을 바탕으로 한국어 답변 생성
unity-tutor2 / 11
Architecture

전체 파이프라인 (5단계)

01
환경 구축
WSL2 · GPU/CUDA · Unsloth 설치
02
PDF 전처리
텍스트 추출 · Q&A 데이터셋 생성
03
파인튜닝
Unsloth + LoRA 학습
04
모델 변환
GGUF 양자화 변환
05
배포·실행
Ollama 등록 · 파이썬 앱

Hugging Face(재료) → Unsloth(학습) → Ollama(실행) 구조로 이어집니다.

unity-tutor3 / 11
Environment

개발 환경 구성

  • WSL2 (Ubuntu)Windows에서 리눅스 환경 구성 — 학습 라이브러리들이 리눅스 기준으로 최적화되어 있음
  • GPUNVIDIA RTX 4060 Laptop · VRAM 8GB
  • 저장 위치WSL 전체를 외장 D드라이브로 이전해 내장 SSD 용량 확보
8GBGPU VRAM
3.11Python
CUDA 13드라이버 업데이트 후
unity-tutor4 / 11
Tech Stack

어떤 도구를, 왜 사용했나

도구역할선택 이유
UnslothLoRA 파인튜닝 엔진8GB급 GPU에서도 빠르고 가볍게 학습 가능하도록 최적화
Hugging Facebase 모델 저장소오픈소스 사전학습 모델(Llama-3.2)을 무료로 제공
bitsandbytes4bit 양자화3B 모델을 8GB VRAM 안에 압축해서 로드
PyMuPDFPDF 텍스트 추출한글 PDF 파싱이 안정적이고 속도가 빠름
Ollama로컬 LLM 실행/서빙데이터 자동생성 + 최종 모델 서빙까지 하나로 처리
Gradio웹 채팅 UI몇 줄만으로 ChatGPT 스타일 대화 화면 제작
unity-tutor5 / 11
Models

이번 프로젝트에 쓰인 AI 모델 3가지

모델출처역할
Qwen2.5:7b알리바바 · Ollama Ollama Hub PDF 원문을 읽고 Q&A 347개로 재작성해준 데이터 가공용 보조 모델
Llama-3.2-3B-Instruct메타(Meta) · 4bit Hugging Face 실제로 파인튜닝한 진짜 본체. 원래 유니티를 전혀 모르던 범용 모델
unity-tutor최종 결과물 로컬 제작 Llama-3.2-3B에 유니티 지식을 학습시켜 완성한 모델
unity-tutor6 / 11
Dataset

Q&A 데이터셋은 어떻게 만들었나

  1. PDF 20개 확보유니티 객체지향 프로그래밍 강의자료 (총 60만 자 이상)
  2. 텍스트 추출PyMuPDF로 페이지 단위 추출 → 약 1,200자 단위 117개 청크로 분할
  3. Q&A 자동 생성청크마다 Qwen2.5:7b에게 질문-답변 3개씩 생성 요청 (JSON 형식 강제)
  4. 결과물347개 질문-답변 쌍, {instruction, input, output} 형식 .jsonl 파일
20PDF 파일
117텍스트 청크
347Q&A 쌍
unity-tutor7 / 11
Fine-tuning

LoRA 파인튜닝 설정 & 결과

  • 방식LoRA (r=16, alpha=16) — 모델 전체가 아닌 일부만 학습
  • 설정batch 2 · grad accum 4 · lr 2e-4 · 3 epoch
  • 결과132 step, 185초 만에 학습 완료, GPU 8GB 안에서 문제없이 동작

Loss 변화 (3.66 → 1.2대)

unity-tutor8 / 11
Troubleshooting

가장 까다로웠던 문제 — CUDA 버전 불일치

증상

Unsloth 설치 후 GPU가 인식되지 않음 (CUDA available: False)

원인

자동 설치된 PyTorch가 CUDA 13.0용인데, 당시 드라이버는 CUDA 12.5까지만 지원

시행착오

PyTorch 버전을 낮추자 이번엔 다른 라이브러리(xformers)가 최신 버전을 요구하며 재충돌

해결

버전을 억지로 맞추는 대신 GPU 드라이버 자체를 최신으로 업데이트 → 근본 해결

unity-tutor9 / 11
Deployment

학습된 모델을 실제로 쓰기까지

1
LoRA 병합
학습 결과를 base 모델에 합치기
2
GGUF 변환
Ollama가 읽을 수 있는 포맷으로 변환·양자화
3
Ollama 등록
Modelfile 작성 후 ollama create
4
사용
CLI · 파이썬 코드 · 웹 UI

지금은 ollama run, 파이썬 import ollama, Gradio 웹 채팅창까지 세 가지 방법으로 사용 가능합니다.

unity-tutor10 / 11
Wrap-up

결과 & 배운 점

  • 완성한 것유니티 강의 20개 PDF 기반, 완전 로컬 동작 Q&A 챗봇 (unity-tutor)
  • 배운 것LLM 파인튜닝 전체 파이프라인, GPU/CUDA 환경 문제 해결 경험
  • 향후 개선더 많은 PDF로 데이터셋 확장, 답변 품질 평가 및 하이퍼파라미터 튜닝
import ollama r = ollama.chat( model='unity-tutor', messages=[...] ) # 완전히 로컬 · 무료 # 오프라인 사용 가능
unity-tutor11 / 11 · 감사합니다