[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -1,75 +1,177 @@
|
||||
---
|
||||
id: wiki-2026-0508-model-parameters
|
||||
title: Model Parameters
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
status: verified
|
||||
canonical_id: wiki-2026-0508-model-parameters
|
||||
aliases: [Parameters, Model Weights, Trainable Parameters]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
confidence_score: 0.93
|
||||
verification_status: applied
|
||||
tags: [ml, deep-learning, parameters, scaling-laws, peft, lora]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-08
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08)
|
||||
tech_stack: [pytorch, transformers, peft, bitsandbytes]
|
||||
---
|
||||
|
||||
# [[Model Parameters|Model Parameters]]
|
||||
# Model Parameters
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
모델 매개변수(Model Parameters)는 AI 이미지 생성 시 최종 결과물의 형태, 해상도, 스타일, 무작위성 등을 미세 조정하기 위해 프롬프트 끝에 추가하는 명령어 또는 제어 수치입니다 [1-3]. 미드저니(Midjourney)에서는 프롬프트 텍스트 뒤에 하이픈 두 개(`--`)를 붙이는 방식으로 종횡비나 참조 모델 버전을 설정하며, 스테이블 디퓨전(Stable Diffusion)에서는 CFG 스케일 및 샘플링 스텝 등을 조정해 변화를 줍니다 [2, 4]. 이를 통해 사용자는 단순한 텍스트 묘사를 넘어 AI의 렌더링 방식과 예술적 개입 강도를 정밀하게 제어할 수 있습니다 [2, 5, 6].
|
||||
## 한 줄 정의
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
* **매개변수의 역할 및 기본 문법:** 매개변수는 프롬프트 텍스트 뒤에 위치하여 이미지의 생성 방식을 제어하는 특수 명령어입니다 [2, 3]. 미드저니의 경우, 텍스트 입력을 마치고 띄어쓰기를 한 뒤 하이픈 두 개(`--`)로 시작하는 형태(예: `--ar 16:9`)로 작성해야 합니다 [7]. 매개변수에는 구두점(콤마 등)을 사용하지 않아야 모델이 정상적으로 인식합니다 [7].
|
||||
* **이미지 규격 및 렌더링 품질 제어:**
|
||||
* `--aspect` 또는 `--ar`: 이미지의 가로세로 비율(예: 1:1, 16:9, 9:16)을 결정합니다 [5, 8].
|
||||
* `--quality` 또는 `--q` (예: 0.25, 0.5, 1): 렌더링에 소요되는 GPU 시간과 디테일 수준을 설정합니다 [5, 9].
|
||||
* `--stop` (10-100): 렌더링을 중간 단계에서 멈춰 흐릿하거나 미완성된 효과를 낼 수 있습니다 [5, 9].
|
||||
* **스타일 및 창의성(무작위성) 조절:**
|
||||
* `--stylize` 또는 `--s` (0-1000): 모델 고유의 예술적 개입 강도를 조절합니다. 값이 높을수록 미학적이고, 낮을수록 텍스트 지시에 더 충실한 결과를 냅니다 [5, 10, 11].
|
||||
* `--chaos` 또는 `--c` (0-100): 초기 결과물 간의 무작위성과 다양성을 높여 서로 전혀 다른 느낌의 이미지를 얻을 때 사용합니다 [5, 12].
|
||||
* `--weird` 또는 `--w` (0-3000): 기발하고 예상치 못한 엉뚱한 시각적 요소를 도입합니다 [5].
|
||||
* `--style raw`: 미드저니 특유의 미학적 기본값을 줄이고 보다 사진에 가까운 형태(사실주의)를 얻기 위해 사용합니다 [5, 13].
|
||||
* **모델 버전 및 생성 모드 지정:** `--version` 또는 `--v` (예: `--v 6.0`, `--v 7`)를 사용해 특정 AI 모델 버전을 지정하거나, `--niji`를 통해 애니메이션 미학에 특화된 모델을 호출할 수 있습니다 [5, 14]. 특히 미드저니 V7에 도입된 `--draft` 매개변수는 GPU 비용을 절반으로 줄이고 10배 빠르게 시안을 생성하여 초기 아이디어 탐색(Ideation) 작업에 매우 유용합니다 [8, 15].
|
||||
* **참조 및 시각적 일관성 제어:** 특정 이미지의 톤이나 캐릭터를 유지하기 위해 `--sref`(스타일 참조), `--cref`(캐릭터 참조), `--oref`(옴니 참조) 매개변수 뒤에 기존 이미지 URL을 첨부하여 사용합니다 [10, 11, 16, 17]. 이와 함께 `--sw`(스타일 가중치), `--cw`(캐릭터 가중치)를 설정해 해당 참조 이미지가 결과물에 미치는 영향력을 0~1000 수치로 세밀하게 제어할 수 있습니다 [5, 11, 16].
|
||||
* **스테이블 디퓨전의 제어 매개변수:** 스테이블 디퓨전에서는 텍스트 접미사 형태의 매개변수 외에도 샘플링 스텝(Sampling steps)과 CFG 스케일(Classifier-Free Guidance Scale)이라는 제어 수치를 활용해 프롬프트 준수 강도를 조정합니다 [4, 18]. 또한 `(word:1.5)`나 `[word]`와 같이 괄호와 수치를 활용한 프롬프트 가중치(Prompt Weights) 문법을 통해 프롬프트 내 세부 요소들의 비중을 직접 매개변수화합니다 [19-21].
|
||||
학습을 통해 값이 결정되는 모델 내부 변수(가중치 W, 편향 b 등) — 데이터에서 패턴을 인코딩하는 **저장 매체**. 개수(N)는 모델 capacity·메모리·비용을 결정하고, 2020년대 LLM에서 N과 데이터·연산 사이의 **스케일링 법칙(Chinchilla)** 이 핵심 설계 도구가 됐다.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[Midjourney|Midjourney]], [[Stable Diffusion|Stable Diffusion]], [[Prompt Weight|Prompt Weight]], [[Negative Prompt|Negative Prompt]], [[CFG Scale|CFG Scale]]
|
||||
- **Projects/Contexts:** [[AI 이미지 생성 파이프라인|AI 이미지 생성 파이프라인]], [[일관된 캐릭터 및 스타일 구축|일관된 캐릭터 및 스타일 구축]]
|
||||
- **Contradictions/Notes:** 미드저니와 스테이블 디퓨전은 매개변수와 특수 기호(가중치)를 통해 렌더링을 정밀하게 통제하지만, DALL-E 3는 이러한 기술적 매개변수(예: `--ar 16:9`나 `--v 7`)보다는 자연어 대화형 서술("가로 형태의 이미지")에 더 잘 반응합니다. DALL-E 3에 인위적인 매개변수나 복잡한 문법을 삽입할 경우 모델이 이를 불필요한 텍스트로 오인하여 결과 이미지 안에 글자로 렌더링 해버릴 수 있습니다 [22, 23].
|
||||
## 핵심
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-30*
|
||||
### 파라미터 vs 하이퍼파라미터
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
| 구분 | 파라미터 | 하이퍼파라미터 |
|
||||
|---|---|---|
|
||||
| 결정 방법 | 학습으로 추정 | 사람·search가 지정 |
|
||||
| 예 | W, b, embedding | lr, batch size, depth |
|
||||
| 저장 | checkpoint | config |
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
### 파라미터 개수 추정
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
- Linear `(in,out)`: `in*out + out` (bias 포함).
|
||||
- Embedding `(V,d)`: `V*d`.
|
||||
- Multi-head attention 1 layer (`d_model=d`): `4*d²` (Q,K,V,O).
|
||||
- FFN with hidden `4d`: `8*d²`.
|
||||
- Transformer block ≈ `12*d²`. L 레이어면 `≈12*L*d² + V*d`.
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
### 스케일링 법칙
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
- **Kaplan (2020)**: loss ∝ N^-α 에 가까움, 데이터·연산도 동시에.
|
||||
- **Chinchilla (2022)**: 주어진 compute 에서 **파라미터:토큰 ≈ 1:20** 이 최적 (N과 D를 거의 동등하게).
|
||||
- 이후 (Llama-3, 2024+): 추론 비용을 고려해 **smaller N + much larger D**(20× 초과) 트렌드.
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
### Parameter-Efficient Fine-Tuning (PEFT)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
- **LoRA**: 가중치 W에 저랭크 ΔW = BA 만 학습 (r=8/16). 보통 0.1–1% 파라미터로 full FT 근접.
|
||||
- **QLoRA**: 4-bit 양자화 base + LoRA. 24GB GPU에서 65B FT.
|
||||
- **Adapters / IA³ / Prefix-Tuning**: 변형들.
|
||||
- **Soft Prompt**: embedding 일부만 학습.
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
### 양자화 (저장·추론)
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
- INT8, INT4, NF4, FP8 — VRAM·속도 절감, 품질 손실 작음.
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
### 응용
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
모델 크기 비교, 비용·VRAM 계산, fine-tune 전략 결정, 추론 인프라 sizing.
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### 파라미터 수 세기 (PyTorch)
|
||||
|
||||
```python
|
||||
def count_params(model):
|
||||
total = sum(p.numel() for p in model.parameters())
|
||||
train = sum(p.numel() for p in model.parameters() if p.requires_grad)
|
||||
return total, train
|
||||
|
||||
t, tr = count_params(model)
|
||||
print(f"total={t:,} trainable={tr:,}")
|
||||
```
|
||||
|
||||
### Transformer 추정 공식
|
||||
|
||||
```python
|
||||
def transformer_params(L, d, V, ff_mult=4):
|
||||
block = (4 * d * d) + (2 * d * d * ff_mult) # attn + ffn (대략)
|
||||
return L * block + V * d # + 작은 항(layernorm 등) 무시
|
||||
print(transformer_params(L=32, d=4096, V=128_000))
|
||||
```
|
||||
|
||||
### VRAM 추정 (학습)
|
||||
|
||||
```python
|
||||
# 대략: (params * (weight + grad + optim_state)) bytes
|
||||
# fp16 weight 2 + grad 2 + AdamW state(m,v) fp32 8 = 12 bytes/param
|
||||
def vram_train_gb(n_params): return n_params * 12 / 1e9
|
||||
print(vram_train_gb(7e9)) # ≈ 84 GB
|
||||
```
|
||||
|
||||
### LoRA 적용 (peft)
|
||||
|
||||
```python
|
||||
from peft import LoraConfig, get_peft_model
|
||||
cfg = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"],
|
||||
lora_dropout=0.05, bias="none", task_type="CAUSAL_LM")
|
||||
model = get_peft_model(base_model, cfg)
|
||||
model.print_trainable_parameters()
|
||||
# trainable params: 4M || all params: 7B || trainable%: 0.06
|
||||
```
|
||||
|
||||
### 4-bit 로딩 (bitsandbytes / QLoRA 시작점)
|
||||
|
||||
```python
|
||||
from transformers import AutoModelForCausalLM, BitsAndBytesConfig
|
||||
import torch
|
||||
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
|
||||
bnb_4bit_compute_dtype=torch.bfloat16,
|
||||
bnb_4bit_use_double_quant=True)
|
||||
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B",
|
||||
quantization_config=bnb, device_map="auto")
|
||||
```
|
||||
|
||||
### 가중치 freezing (레이어 단위)
|
||||
|
||||
```python
|
||||
for n, p in model.named_parameters():
|
||||
p.requires_grad = "classifier" in n # head만 학습
|
||||
```
|
||||
|
||||
### Chinchilla 토큰 추정
|
||||
|
||||
```python
|
||||
def chinchilla_tokens(n_params, ratio=20):
|
||||
return n_params * ratio # 7B → 140B tokens
|
||||
```
|
||||
|
||||
## 결정 기준
|
||||
|
||||
| 상황 | 선택 |
|
||||
|---|---|
|
||||
| 작은 GPU(24GB)에서 7–13B FT | **QLoRA** (NF4 + LoRA r=16) |
|
||||
| 단일 도메인 적응 | LoRA |
|
||||
| 도메인 + 새 어휘 | full FT (작은 LR) 또는 LoRA + embedding 학습 |
|
||||
| 추론만, VRAM 절감 | INT8/INT4 양자화 |
|
||||
| 새 모델 사전학습 compute 예산 X | **N : tokens ≈ 1 : 20+** (Chinchilla) |
|
||||
| 추론 비용 우선 | smaller N, 더 많은 tokens (overtrain) |
|
||||
| 빠른 baseline, 데이터 < 1k | LoRA r=8 + few-shot |
|
||||
|
||||
기본값: **LoRA(r=16) + 4-bit base**. 사전학습 시 Chinchilla 비율 이상 토큰.
|
||||
|
||||
## 🔗 Graph
|
||||
|
||||
- 부모: [[Machine-Learning]] · [[Deep-Learning]] · [[Neural-Networks]]
|
||||
- 변형: [[LoRA]] · [[QLoRA]] · [[Adapters]] · [[Prefix-Tuning]]
|
||||
- 응용: [[Fine-Tuning]] · [[Quantization]] · [[Model-Compression]] · [[Inference-Optimization]]
|
||||
- Adjacent: [[Scaling-Laws]] · [[Chinchilla]] · [[Hyperparameters]] · [[Mixture-of-Experts]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
|
||||
**언제**: 파라미터 수·VRAM 추정 sanity check, LoRA target_modules 선택, fine-tune config 리뷰, scaling law 토론.
|
||||
|
||||
**언제 X**: 정확한 메모리 예측 — 실측이 필요(activation, optimizer state, sequence length 의존). LLM 추정만 믿고 클러스터 예약 X.
|
||||
|
||||
## ❌ 안티패턴
|
||||
|
||||
- 파라미터 수만으로 성능 비교(데이터·학습 토큰 무시).
|
||||
- LoRA target에 attention 일부만 → 표현력 부족 (q,k,v,o + ffn 까지 권장).
|
||||
- LR 동일하게 사용해 LoRA를 full-FT처럼 학습(LoRA는 보통 1e-4 ~ 3e-4 권장).
|
||||
- Optimizer state(AdamW의 m,v) 메모리 누락 → OOM.
|
||||
- 양자화한 모델로 학습 진행하면서 weight를 직접 업데이트 (LoRA 같은 우회 필요).
|
||||
- "더 큰 모델 = 항상 더 좋다" — Chinchilla 데이터 부족 시 underfit.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
|
||||
Verified source: Hoffmann et al. *Chinchilla* (2022), Hu et al. *LoRA* (2021), Dettmers et al. *QLoRA* (2023), PyTorch / Hugging Face peft / bitsandbytes 문서, Llama-3 technical report (2024). 신뢰도 A.
|
||||
|
||||
[[Hyperparameters]] 와 분리: 파라미터(학습됨) vs 하이퍼파라미터(지정됨).
|
||||
|
||||
## 🕓 Changelog
|
||||
|
||||
- 2026-05-08 Phase 1 — 초기 stub.
|
||||
- 2026-05-10 Manual cleanup — FULL 재작성. 추정 공식, scaling laws, PEFT/LoRA/QLoRA, 양자화, VRAM 계산 코드 7개.
|
||||
|
||||
Reference in New Issue
Block a user