Skip to main content

Report

0. Overview

이 Report는 Edge Device 환경의 토마토 Smart Farm에서 Real-time inference가 가능한 Domain-specific SLM 개발 과정을 기술한다. Model 경량화와 성능 최적화를 위해 아래와 같은 4 단계 Pipeline을 적용한다.

  1. Dataset Construction
  2. Pruning
  3. LoRA Fine Tuning
  4. Quantization 해당 파이프라인을 통해 제한된 하드웨어 리소스 내에서 안정적인 성능 확보가 주 목표이다.

1. Dataset Construction

Domain-specific Model 학습을 위해 토마토 재배 환경에 대한 QA Dataset을 구축한다.

1.1. Data 수집

  • 농촌진흥청: 토마토 재배 가이드
  • Cornell Extension 병해충 메뉴얼
  • ??
  • ??
  • ??

1.2. Data Synthesis

  • Opus 4.1을 활용해 QA Data 합성
  • Category
    • 생육 관리
    • 병해충
    • 온습도
    • 비료
    • 조명
    • 이산화탄소

1.3. Data Format(Prompt)

Q: [STATUS: {SENSOR_STATUS}] {UESR_QUESTION}
A: [{WARNING}] {ANSWER}

1.4. Quality Verification

데이터 신뢰도 및 품질 향상을 위해 아래와 같은 3단계 검증을 수행한다.

  1. Structure: 모든 데이터가 유효한 JSON 구조와 필수 필드를 갖추었는지 검증
  2. Deduplication: 코사인 유사도 0.85 이상인 중복 항목 127개 제거
  3. Terminology Verification: 자체 구축 Terminology dictionalry(1,247개)과 일치율 검증하여 평균 87.3% 달성 70% 미만 Sample 폐기

2. Pruning

Model Parameter 수를 줄여 inference efficiency 증대 위해 Pruning을 적용한다.

  • 대상: Feed-Forward Network(FFN)의 Neuren만 제거 대상
    • 이유 및 증거가 타당하지 않음
  • 보존: Attention Head는 Layer 당 4개로 수가 적어 제거 시 성능 저하가 크기에 보존
    • 증거 자료 필요
  • 결과: 25%의 Pruning Rate가 성능과 Model Size 간 최적 균형점임을 확인
  • Total Parameter 수 14.5% 감소

2.1. Nueren Importance

지표가중치Description
Average Activation0.8지속적으로 활성화되며 Model 핵심 기능에 기여하는 Nueren 보호
Maximum Activation0.1특정 상황에서만 반응하는 Nueren을 보조 지표로 활용
Activity Ratio0.1Dead Neuren 식별 및 우선 제거

2.2. Layer-wise Difference Protection Strategy

Layer GroupLandscapeScaleDescription
초기 Layer0-80.2범용 언어 패턴 담당하므로 적극적 Pruning
중간 Layer9-171.0기준 강도 Pruning
후기 Layer18-252.2도메인 특화 지식이 집중되어 있어 최대한 보호

2.3. Stability Measures

  • Layer 당 최소 800개 Nueren 유지
    • 이 수치인 이유 없음
  • Layer 당 최대 제거율 30%로 제한
    • 이 수치인 이유 없음
  • 특정 레이어 주변 제거량 50%로 축소해 급격한 변화 방지
    • 이 수치인 이유 없음
  • Dead Neuron 우선 제거

3. LoRA Based Fine-Tuning

Pruned Model에 적용하여 개별 효과를 정량적으로 파악할 수 없다.

3.1. Best Hyperparameter

ItemValue
Target Modulesq, k, v, o, up, down, gate_proj
LoRA Rank16
LoRA Alpha2(Hardware)
Gradient Accumulation Steps8(실질 Batch Size 16)
Epochs3

3.3. Rank Expreiment Results

RankNumber of Learning ParameterBLEUROUGE-L
4약 0.8M0.09120.1985
8약 1.6M0.11570.2193
16약 3.2M0.13430.2384
32약 6.4M0.13510.2399
Rank 16이 효율 및 성능 최적 균형점으로 판단하여 최종 채택

4. Quantization

  1. Merge Model: Pruned Model에 학습된 LoRA Adapter를 Merge해 Total Model 생성
  2. Change Format: Total Model을 llama.cpp를 이용해 GGUF Format으로 변환
  3. Quantization: GGUF Model에 Q4_K_M Quantization 적용

4.1. Q4_K_M Method

다른 기법에 대한 언급이나 시도가 없음(최적이 아닐 수 있음) 가중치를 4bit로 압축하면서도 Block 별 Scale과 Zero-point를 유지하는 Block-wise Quantization.

  • Memory 절감: 기존 F32 Model 대비 메모리 사용량 약 4배 감소
  • 정밀도 손실 최소화

5. Conclusion

  • Pruning: Parameter 14.5% 제거
  • LoRA Fine Tuning: 손실된 성능 복원 및 Domain 지식 주입
  • 4Bit Quantization: Memory 사용량 75% 절감 시도하지 않았으나 단순 연산 상 Raspberry Pi와 같은 저전력 Edge Device에서 Real-time inference가 가능할 것으로 예상