> EulerForge > 튜토리얼 > 시작 가이드

시작 가이드

EulerForge로 LLM을 파인튜닝하는 빠른 시작 안내서입니다. 각 인젝션 전략의 상세한 설명은 전략별 튜토리얼을 참조하세요.


1. 설치 및 환경

사전 요구 사항

설치

# 저장소 클론
git clone <repo_url>
cd eulerforge

# editable 모드로 설치
pip install -e .

# 개발용 (테스트 포함)
pip install -e ".[dev]" pytest

설치 확인

python -c "import eulerforge; print('OK')"
eulerforge train --help

2. 데이터 준비

먼저 데이터 전처리 가이드를 실행하세요. data/ 원본 데이터를 EulerForge 표준 raw JSONL로 변환합니다.

제공 데이터 및 용도

파일 형식 용도
data/sft_10k_raw.jsonl {prompt, response} SFT 훈련 (01~04), PPO (08)
data/dpo_10k_raw.jsonl {prompt, chosen, rejected} DPO 훈련 (05)
data/dpo_10k_raw.jsonl {prompt, chosen, rejected} ORPO (06), RM (07)

raw 데이터 사용법

data.format=raw를 지정하면 훈련 시 자동 토큰화됩니다:

eulerforge train --preset configs/presets/<프리셋>.yml \
    --set data.format=raw \
    --set data.task=sft \
    --set data.path=data/sft_10k_raw.jsonl \
    --set data.max_length=512

상세: 데이터 전처리 가이드


3. 핵심 개념: Where / What / When

EulerForge는 세 가지 관점으로 파인튜닝을 구성합니다:

관점 질문 담당 컴포넌트
Where 모델의 어디에 주입하는가? BackboneAdapter — 트랜스포머 블록, FFN, 어텐션 탐색
What 무엇을 주입하는가? InjectionStrategy — LoRA, MoE, 전문가 등 모듈 변환
When 언제 어떤 파라미터를 훈련하는가? PhaseScheduler — 페이즈별 trainable 그룹 제어

각 전략 튜토리얼은 이 세 관점에서 단계별로 설명합니다.


4. 백본 어댑터

backbone 설정 키에 따라 올바른 어댑터가 자동 선택됩니다:

backbone 어댑터 호환 모델
qwen3 Qwen3Adapter Qwen2, Qwen2.5, Qwen3 계열
llama LlamaAdapter LLaMA 2/3, TinyLlama, Mistral (dense)
mixtral MixtralAdapter Mixtral (네이티브 MoE)

5. 인젝션 전략 선택

전략 비교표

전략 변환 대상 페이즈 수 MoE 섹션 호환 모델 적합한 용도
dense_lora Linear → LoRALinear 1 불필요 전체 단순 파인튜닝, 빠른 실험
mixture_lora Linear → MixtureLoRALinear 2 필수 전체 멀티태스크, 적응형 LoRA
moe_expert_lora FFN → MoEFFN + LoRA 3 필수 Dense만 Dense-to-MoE 변환
native_moe_expert_lora 기존 Expert에 LoRA 1 불필요 Mixtral만 네이티브 MoE 파인튜닝

전략별 튜토리얼

훈련 방식 튜토리얼

모델별 튜토리얼

훈련 방식 선택표

목적 추천 방식 데이터 레퍼런스 모델
기본 파인튜닝 SFT instruction/response 쌍 불필요
선호 정렬 (정밀) DPO chosen/rejected 쌍 필요 (adapter disable)
선호 정렬 (효율) ORPO chosen/rejected 쌍 불필요
보상 함수 학습 RM chosen/rejected 쌍 불필요
RLHF (생성→보상→업데이트) PPO 프롬프트 + RM 체크포인트 필요 (adapter disable)

어떤 전략을 선택해야 하나?

모델이 이미 MoE 구조인가? (Mixtral 등)
  ├── 예 → native_moe_expert_lora
  └── 아니오 (Dense 모델)
        ├── 단순 파인튜닝? → dense_lora
        ├── 멀티태스크/적응형? → mixture_lora
        └── MoE 구조로 변환? → moe_expert_lora

6. 페이즈 스케줄 개요

페이즈 스케줄은 언제 어떤 파라미터 그룹을 훈련할지를 제어합니다. training.phases에 선언적으로 정의합니다.

파라미터 그룹

그룹 훈련 대상
lora FFN 내 LoRA 파라미터 (lora_A, lora_B)
router MoE 라우터 가중치
base_ffn 원본 FFN 가중치 (gate_proj, up_proj, down_proj)
attn_lora 어텐션 프로젝션 내 LoRA 파라미터

전략별 페이즈 패턴

전략 페이즈 구성
dense_lora 1페이즈: [lora, attn_lora]
mixture_lora 2페이즈: [router][lora, attn_lora]
moe_expert_lora 3페이즈: [router][lora, attn_lora][lora, attn_lora, router, base_ffn]
native_moe_expert_lora 1페이즈: [lora, attn_lora]

상세한 페이즈 설정과 타임라인은 각 전략 튜토리얼의 "When" 섹션을 참조하세요.


7. CLI 빠른 시작

기본 훈련 (raw 데이터)

eulerforge train --preset configs/presets/<프리셋>.yml \
    --set data.format=raw \
    --set data.task=sft \
    --set data.path=data/sft_10k_raw.jsonl \
    --set data.max_length=512

사용 가능한 프리셋

프리셋 파일 전략 훈련 타입
qwen3.5_0.8b_dense_lora_sft.yml dense_lora SFT
qwen3.5_0.8b_mixture_lora_sft.yml mixture_lora SFT
qwen3.5_0.8b_moe_expert_lora_sft.yml moe_expert_lora SFT
qwen3.5_0.8b_moe_expert_lora_dpo.yml moe_expert_lora DPO
qwen3.5_0.8b_dense_lora_orpo.yml dense_lora ORPO
qwen3.5_0.8b_dense_lora_rm.yml dense_lora RM
qwen3.5_0.8b_dense_lora_ppo.yml dense_lora PPO
llama3_1b_dense_lora_sft.yml dense_lora SFT
tinyllama_1.1b_dense_lora_dpo.yml dense_lora DPO
mixtral_native_expert_lora_sft.yml native_moe_expert_lora SFT

설정 오버라이드

도트 경로 표기법으로 모든 설정 값을 오버라이드합니다:

eulerforge train --preset configs/presets/qwen3.5_0.8b_dense_lora_sft.yml \
    --set data.format=raw \
    --set data.task=sft \
    --set data.path=data/sft_10k_raw.jsonl \
    --set data.max_length=512 \
    --set training.lr=2e-5 \
    --set injection.lora_r=32

유용한 CLI 옵션

옵션 설명
--validate-only 설정 파일만 검증, 모델 로드 없음
--preflight 모델 로드 + 인젝션 적용 + 파라미터 확인, 훈련 없음
--debug 디버그 모드 활성화
--debug-trainable-names 학습 가능 파라미터 이름 출력
--debug-every N N스텝마다 디버그 정보 출력

CLI 상세 레퍼런스는 CLI 문서를 참조하세요.


8. 벤치마크 실행

eulerforge bench --target-dir /path/to/checkpoint \
    --ref-model Qwen/Qwen3.5-0.8B-Base \
    --test-data /path/to/test.jsonl \
    --output-file results.jsonl

9. 일반적인 문제 해결

증상 원인 해결
Missing required top-level section YAML에 backbone/injection/training 누락 누락된 섹션 추가
Unknown strategy 'xxx' 전략 이름 오타 지원 전략 이름 확인
No trainable parameters 타겟 키워드 불일치 --debug-trainable-names로 파라미터 이름 확인
OOM (메모리 부족) VRAM 부족 model.load_precision.mode: int4 (4bit QLoRA), batch_size 감소, lora_r 감소
페이즈 전환 미발생 스텝이 max_train_steps 범위 밖 페이즈 스텝 값 확인

전략별 상세 트러블슈팅은 각 튜토리얼의 "디버깅 및 트러블슈팅" 섹션을 참조하세요.


10. 스크래치 사전훈련 (pretrain)

기존 HF 모델이 아닌, EulerStack 등으로 새로 조립한 모델을 처음부터 훈련하려면 eulerforge pretrain 명령어를 사용하세요.

eulerforge pretrain --preset configs/presets/pretrain/eulerstack_hybrid_moe.yml

pretraintrain과 완전히 분리된 파이프라인으로, 전체 파라미터 causal LM 훈련을 수행합니다. LoRA 인젝션이나 페이즈 스케줄은 사용하지 않습니다.

상세: 17_pretrain.md


11. 훈련 파이프라인 — SFT부터 PPO까지

EulerForge는 5가지 훈련 타입을 지원합니다. SFT를 반드시 먼저 진행하세요:

SFT → DPO (또는 ORPO) → 배포       # 가장 일반적 (2단계)
SFT → RM → PPO → 배포              # 풀 RLHF (3단계)
SFT → ORPO → RM → PPO → 배포       # ORPO 기반 풀 RLHF

주의: DPO/ORPO/RM/PPO를 base 모델에 직접 적용하면 성능이 하락합니다. 반드시 SFT로 instruction-following 능력을 먼저 부여한 후 선호 학습을 진행하세요.

각 단계의 체크포인트가 다음 단계의 모델 입력이 됩니다.

상세: 18_training_pipeline.md