> EulerStack > 튜토리얼 > 2. 프리셋 사용하기

2. 프리셋 사용하기

이 장에서는 EulerStack v1 이 기본으로 제공하는 53 개 프리셋 을 어떻게 탐색하고 목적에 맞는 것을 고르는지 설명합니다. 새 아키텍처를 백지에서 짜기 전에, 이미 잘 다듬어진 출발점을 활용하는 방법을 익히는 단계입니다.

학습 순서 — v1 3-tier 접근법

프리셋은 "검증된 것부터 실험적인 것까지" 의 3 단계로 구성되어 있습니다. 이 순서는 프로덕션 도입 / 연구 탐색 / 최신 primitive 검증 모두에 그대로 쓰일 수 있습니다.

Tier 1 — 검증된 산업 표준 (먼저 익힌다)
  Llama 2/3, Mistral, Gemma 2, Qwen longctx 계열. 훈련 실패가 거의 없는
  보수적 baseline. 규모별 llm_0p1b_{simple,mistral} + llm_*_{simple,mistral}
  (0.8B~16B), 그리고 arch_beginner_* / arch_intermediate_*.

Tier 2 — 최신 / 복합 (다음)
  Jamba 하이브리드, Mixtral / DeepSeek MoE, Samba, RetNet, MLA (DeepSeek-V3
  2024), MoD (Raposo ICML 2024), 전문가 조합 (speculative 4 개 포함).
  arch_advanced_{jamba,samba,retnet,mla,mod}, arch_expert_*,
  arch_expert_*_mini, llm_*_{jamba,moe,mla}.

Tier 3 — v1 실험 (마지막, Phase B primitive demo 4 개, arch-scale)
  arch_expert_reasoning_r1   — 2-phase 추론 (DeepSeek-R1 2025)
  arch_expert_titans_memory  — Titans 파라미터형 메모리 (Google 2024-2025)
  arch_expert_dual_stream    — monoidal 병렬 (Jamba × PaLM 일반화)
  arch_expert_kitchen_sink   — **v1 모든 primitive 를 한 스펙에 결합한 capstone**
                               (MLA + Titans + MoE + branched + TTT + ODE-RK4
                               + parallel + discrete integrator + MoD +
                               per-layer override + let + reserved namespace
                               + execution_modes). 실제로 validate/compile/
                               save/load/HF 훈련이 한 번에 돌아가는지 검증.
                               ~5.5M params, ~20 layers.

  v1.1 런타임 성숙도 스프린트 결과: **MLA / MoD / Titans memory 는 Core 이며**
  (Titans 는 v1.1 에서 plugin-track → core 승격), reasoning_r1 은 메타데이터
  Core, dual_stream 은 Component. 추가로 `ode_rk4` / `ode_euler` 가
  reserved → core 로 승격됐고, TTT 는 플러그인 레퍼런스
  (`eulerstack.plugins.ttt`) 로 실제 meta-learning 루프를 제공합니다.
  자세한 매트릭스: `docs/architectures/runtime_primitive_status.md`.

0.1B 클래스 (신규): Stage-1 / CPT 워밍업 목적. 소버린 파운데이션 모델의 1 단계 훈련 혹은 지속 사전학습 (CPT) 초기에 쓰기 좋은 ~100M 규모. MoE 는 이 규모에서 의미가 없어 제외하고 simple / mistral / jamba / mla 4 개 변형만 제공합니다.

이 순서로 읽으면, 검증된 baseline → 최신 연구의 실전 조합 → v1 에서만 가능한 새 primitive 로 자연스럽게 진입할 수 있습니다.

왜 프리셋이 필요한가

LLM 아키텍처를 처음부터 직접 설계하려면 20 개 이상의 파라미터 를 서로 맞춰야 합니다. 대표적으로 다음과 같은 항목들입니다.

이 모두를 동시에 맞추는 것은 초보자에게 부담이고, 숙련자에게도 실수가 잦습니다. EulerStack 프리셋은 이런 균형 잡기를 미리 검증/컴파일/파라미터 추정 까지 모두 완료한 출발점을 제공합니다. 대부분의 사용자는 프리셋을 골라서 약간만 수정하는 방식으로 시작하는 것이 효율적입니다.

프리셋의 세 축

EulerStack 프리셋은 세 축으로 구성됩니다.

  1. arch_ — 수준별 학습용 (20 개, ~1–2B) 초급 → 중급 → 고급 → 전문가의 4 단계로 현대 LLM 아키텍처의 발전 순서 를 재현합니다. 각 단계마다 경쟁 관계의 여러 접근법을 함께 배치하여, 같은 파라미터 예산에서 아키텍처 선택이 어떻게 다른 결과를 내는지 비교할 수 있게 합니다. v1 에서 advanced 2 종 (MLA, MoD), expert 3 종 (Reasoning R1, Titans memory, Dual-stream) 이 추가됐습니다.

  2. llm_ — 실전 배포용 (24 개, 0.1B–16B) 5 가지 크기(0.1B / 0.8B / 2B / 4B / 16B)와 최대 5 가지 변형(simple / mistral / jamba / moe / mla) 의 조합입니다. 0.1B 는 Stage-1 / CPT 워밍업용이며 MoE 는 이 규모에서 의미가 없어 제외합니다. 실제 서비스 배포나 프로젝트 스타터로 씁니다.

  3. arch_expert_*_mini — 소형 expert 실험용 (6 개, ~80M–360M) 전문가 단계 아키텍처를 소형 GPU 에서도 실험할 수 있게 축소한 버전입니다. 2B 급 전문가 프리셋의 설계 아이디어를 유지하면서 규모만 줄였습니다.

아래에서 각 축의 내용을 차례로 살펴봅니다.

1. arch_ 프리셋 (수준별 학습용, 20 개)

각 단계마다 경쟁 관계의 접근법이 여러 개 배치되어 있습니다. 같은 목표에 대한 여러 답을 나란히 비교할 수 있어야, 왜 어떤 선택이 다른 선택보다 좋은지 설명할 수 있습니다. 자세한 단계별 학습은 07_arch_walkthrough.md 를 먼저 읽는 것을 권장합니다.

수준 프리셋 한 줄 설명 연구 근거
beginner arch_beginner_gpt2 Classic Transformer (MHA + LayerNorm post + GeLU) Vaswani 2017, GPT-2
beginner arch_beginner_llama Modern baseline (GQA + RMSNorm pre + SwiGLU) Llama 2/3
intermediate arch_intermediate_mistral 1 global : 3 sliding attention Mistral 7B
intermediate arch_intermediate_gemma2 1:1 alternating global/local Gemma 2
intermediate arch_intermediate_qwen_longctx RoPE scaling (factor 4, 32K) Qwen 2/3
advanced arch_advanced_jamba Mamba + Attention 3:1 hybrid Jamba-1.5 (AI21)
advanced arch_advanced_samba Mamba + Sliding attention 1:1 Samba (Microsoft)
advanced arch_advanced_retnet Pure RetNet (attention-free) Sun et al. 2023
expert arch_expert_research 4 믹서 + MoE 3-phase Research-grade
expert arch_expert_mixtral_moe Pure attn + 매 레이어 MoE (8 experts × top-2) Mixtral 8x7B
expert arch_expert_striped_hyena Hyena + Attention 4:1, 128K context StripedHyena
expert arch_expert_blackmamba_moe Mamba + MoE (비-attn 믹서에 MoE) BlackMamba, MoE-Mamba
expert arch_expert_deepseek_moe Fine-grained MoE (32 experts × top-3) DeepSeek-V2/V3
expert arch_expert_retnet_moe RetNet + MoE (예측 조합, 논문 無) Sun 2023 + MoE 외삽
expert arch_expert_frontier_full_moe Attention-free, multi-mixer + all-MoE (가장 실험적) 복합 예측
expert arch_expert_progressive_stack 깊이별 점진 복잡도: hyena→mamba→retnet→attn+MoE (논문 無) 계층 구조 예측
expert arch_expert_dilated_longnet Temporal pyramid: mamba+sw(1K→4K→16K)+global+MoE (논문 無) Longnet + Jamba 외삽

target_params 는 대부분 1–2B 범위에 맞춰져 있어, 같은 예산에서 어느 아키텍처가 어떤 장점을 가지는지 를 직접 비교할 수 있습니다.

단계별 진화의 핵심 아이디어

초급 → 중급으로 갈 때 바뀌는 것: 슬라이딩 윈도우 도입 arch_beginner_llama 는 모든 레이어에서 O(N²) 전역 attention 을 사용합니다. 이는 시퀀스 길이가 길어질수록 비용이 제곱으로 늘어난다는 뜻입니다. 중급 단계의 arch_intermediate_mistral 은 4 개 레이어 중 1 개만 전역 attention 을 유지하고, 나머지 3 개는 4096 토큰 크기의 슬라이딩 윈도우로 제한합니다. 이렇게 하면 전체 attention KV 캐시 크기가 약 4 배 줄어들고, 긴 문맥 처리의 비용이 크게 낮아집니다.

중급 → 고급으로 갈 때 바뀌는 것: Attention 을 Mamba 로 교체 arch_advanced_jamba 는 레이어의 75% 를 Mamba2 SSM 으로 교체합니다. Mamba 는 O(N) 시간 복잡도를 가지므로 제곱 병목이 사라집니다. 나머지 25% 의 attention 은 "검색 앵커(retrieval anchor)" 역할을 맡아 in-context learning 능력을 유지시킵니다. 결과적으로 32K 토큰 같은 장문 처리가 실용적 수준이 되고 추론 처리량이 크게 올라갑니다.

고급 → 전문가로 갈 때 바뀌는 것: 여러 믹서 + MoE 결합 전문가 단계의 대표 프리셋인 arch_expert_research 는 EulerStack 의 4 개 믹서를 모두 한 스택에 섞고, attention 레이어에는 MoE FFN 을 추가합니다. 이 설계는 세 단계의 역할 분담을 갖습니다.

이런 조합은 실전 배포에 바로 쓰기 위한 것이라기보다는, "어떤 믹서와 MoE 조합이 가장 좋은가" 라는 연구 질문을 저렴하게 실험하기 위한 출발점입니다.

각 믹서의 내부 원리는 mixers/ 폴더의 문서들에서 더 자세히 설명합니다.

2. llm_ 프리셋 (실전 배포용, 24 개)

크기 5 개 (0.1B / 0.8B / 2B / 4B / 16B) × 변형 5 개 (simple / mistral / jamba / moe / mla) = 최대 25 개 중 24 개 (0.1B×MoE 제외). 각 변형이 어떤 상황에 어울리는지는 다음과 같습니다.

Variant 설명 어울리는 용도
simple 순수 attention (Llama 스타일) 가장 보편적. 모든 HF 도구와 호환
mistral attention + 슬라이딩 윈도우 KV 캐시 절약이 중요할 때, 중간 길이 문맥(8–16K)
jamba Mamba + attention 하이브리드 장문(32K+) 우선, 추론 처리량이 중요할 때
moe attention + MoE FFN (1-in-4) 활성 compute 대비 모델 용량 극대화

크기별 조합표는 다음과 같습니다.

Scale simple mistral jamba moe
0.8B llm_0p8b_simple llm_0p8b_mistral llm_0p8b_jamba llm_0p8b_moe
2B llm_2b_simple llm_2b_mistral llm_2b_jamba llm_2b_moe
4B llm_4b_simple llm_4b_mistral llm_4b_jamba llm_4b_moe
16B llm_16b_simple llm_16b_mistral llm_16b_jamba llm_16b_moe

MoE 변형의 d_model 이 작은 이유

MoE 변형의 d_model 은 같은 크기의 simple 변형의 약 65% 수준입니다. 이는 의도적인 선택입니다. MoE 는 여러 expert(전문가) FFN 을 포함하므로, 같은 d_model 로 만들면 총 파라미터가 불필요하게 커집니다. d_model 을 줄여서 총 파라미터를 표기된 크기(0.8B, 2B 등)에 맞춘 것 입니다. 그 결과 활성 파라미터(각 토큰이 실제로 쓰는 파라미터)는 총 파라미터의 약 1/4 수준이 됩니다.

크기 선택의 자유

프리셋은 출발점일 뿐입니다. EulerStack 은 d_model, n_layers 를 바꾸는 것만으로 70B, 100B 이상의 모델도 어셈블할 수 있습니다. 필요하면 기존 프리셋을 복사해서 원하는 대로 수정하면 됩니다.

3. arch_expert_*_mini 프리셋 (소형 expert 실험용, 6 개)

전문가급 프리셋은 보통 2B 규모라서 개인 GPU 한 대로 돌리기 부담스럽습니다. arch_expert_*_mini 는 같은 설계 아이디어를 12 레이어, d_model 384–512 수준으로 축소한 버전으로, 12–16 GB GPU 에서도 학습 가능합니다.

프리셋 ~총 params 핵심 포인트
arch_expert_progressive_stack_mini ~86M 가장 먼저 실험할 것. Zone 분리가 명확
arch_expert_blackmamba_moe_mini ~156M 부분 sparse MoE, 소형에서 가장 현실적
arch_expert_mixtral_moe_mini ~175M 고전적 MoE baseline
arch_expert_dilated_longnet_mini ~83M 장문 pyramid (512→2K→8K)
arch_expert_deepseek_moe_mini ~357M Fine-grained MoE 실패 모드 관찰용
arch_expert_frontier_full_moe_mini ~106M Attention-free + all-MoE, 가장 실험적

mini 의 설계 이유와 각 프리셋의 장단점은 08_expert_mini_walkthrough.md 에서 자세히 다룹니다.

프리셋 조회와 사용

설치 후 가장 먼저 해볼 명령은 전체 프리셋 목록 조회입니다.

# 전체 목록과 파라미터 추정치
eulerstack presets list

# 특정 프리셋의 상세 정보
eulerstack presets show arch_advanced_jamba
eulerstack presets show llm_4b_moe

# 언어를 바꿔서 보기
eulerstack --lang en presets show llm_2b_jamba

presets list 는 모든 프리셋의 이름, 추정 파라미터 수, 한 줄 요약을 표 형태로 출력합니다. presets show 는 특정 프리셋의 레이어 스케줄, 믹서 설정, MoE 설정 등을 모두 보여줍니다.

검증, 컴파일, export 체인

프리셋을 실제로 사용하는 전형적인 흐름은 다음과 같습니다.

# 1) 검증 (realism 리포트 포함)
eulerstack validate --preset configs/presets/arch_advanced_jamba.yml --report

# 2) 구조 파악
eulerstack explain --preset configs/presets/arch_advanced_jamba.yml

# 3) JSON 런타임 config 로 컴파일 (검사/디버깅용)
eulerstack compile --preset configs/presets/arch_advanced_jamba.yml --print-config

# 4) HuggingFace 모델 디렉토리로 export (훈련 준비)
eulerstack compile --preset configs/presets/arch_advanced_jamba.yml --output-dir ./my_jamba

각 단계의 구체적인 설명은 튜토리얼 4: 컴파일과 설명 에서 이어집니다.

Python 에서 모델 로드

export 된 HuggingFace 모델은 표준 AutoModelForCausalLM 인터페이스로 바로 로드할 수 있습니다.

from transformers import AutoModelForCausalLM
from eulerstack.hf.auto_register import register_eulerstack_auto_classes

register_eulerstack_auto_classes()

# Llama / Mistral 로드와 동일한 방식
model = AutoModelForCausalLM.from_pretrained("./my_jamba", trust_remote_code=True)
print(model.config.d_model, model.config.n_layers)

실행 가능한 예제 스크립트는 examples/ 디렉토리 아래에서 찾을 수 있습니다.

다음 단계