# gemma4_e4b_coding — 작업 노트

이리듐192 · 직접 파인튜닝 · 도구 구현

가중치 학습만 한 번 돌리는 데서 끝내지 않고, 데이터 정리부터 GGUF와 로컬 도구 연결까지 만든 코딩 모델 작업입니다.

## 자료 기준

공개 저장소의 train.py · README

## 구조와 결과

### 데이터를 만들고 거르기

시드 작성 → 다양성 확장 → exact/near 중복 제거 → 고품질 생성 → 병합의 파이프라인입니다. 목표 언어 비중과 한국어 디버깅 설명을 함께 다룹니다.

근거: prepare_dataset.py / expand_dataset.py / dedupe_dataset.py

### 12GB에서 학습하기

현재 train.py의 기본값은 길이 1024, 배치 1, 누적 8, LoRA rank 8입니다. README의 이전 하드웨어 표와 값이 달라 실행 스크립트 기준을 표시했습니다.

근거: train.py · parse_args · OOM 대응 주석

### 평가하고 내보내기

학습 스크립트와 별도로 evaluate.py와 export_gguf.py를 둡니다. 평가 코드를 가진 것과 검증된 성능 수치는 구분합니다.

근거: evaluate.py / export_gguf.py

### 로컬 작업에 연결하기

GGUF·Ollama와 코딩 에이전트·IDE 연결을 다룹니다. 이 페이지의 설정 탐색은 모델 서버를 호출하는 챗봇이 아닙니다.

근거: 저장소의 GGUF / Ollama / 로컬 에이전트 코드

## 개발 기록

- DATA · 품질 파이프라인: 시드·확장·중복 제거·생성·병합을 따로 실행할 수 있게 나눴습니다.
- TRAIN · 메모리 제약에 맞춘 설정: 학습 길이·배치·누적과 fused CE VRAM 가드가 실제 코드에 남아 있습니다.
- EXPORT · 모델을 쓰는 형식으로: 학습 어댑터를 로컬 추론과 도구에 연결하기 위한 내보내기 경로를 마련했습니다.

## 실제 코드 발췌

train.py · 43–49

```
    # 12GB + E4B 4bit: 2048 은 fused CE 단계에서 OOM 나기 쉬움 → 1024 기본
    parser.add_argument("--max-seq-length", type=int, default=1024)
    parser.add_argument("--batch-size", type=int, default=1)
    parser.add_argument("--grad-accum", type=int, default=8)
    parser.add_argument("--epochs", type=float, default=3.0)
    parser.add_argument("--learning-rate", type=float, default=2e-4)
    parser.add_argument("--lora-r", type=int, default=8)
```

공개 저장소의 실행 스크립트를 기준으로 표시했습니다. 길이 1024·배치 1·누적 8의 저메모리 기본값이며, README 표의 이전 설정과 구분합니다.

## 현재 단계

직접 파인튜닝한 작업입니다. 저장소에서 학습·평가·변환·에이전트 코드를 확인할 수 있습니다. 공개 벤치마크 점수나 기초 모델 대비 향상률은 제시하지 않습니다.

## 사용한 자료

- train.py / evaluate.py / export_gguf.py
- 데이터 생성·검증·중복 제거 스크립트
- serve_api.py / agent / ide

이 노트는 공개 소개용으로 정리한 요약본입니다. 비공개 원본·개인정보·인증 정보는 포함하지 않습니다.
