[G1-Sync] Manual knowledge update
This commit is contained in:
@@ -2,75 +2,227 @@
|
||||
id: wiki-2026-0508-모델-매개변수-제어-model-parameter-contr
|
||||
title: 모델 매개변수 제어 (Model Parameter Control)
|
||||
category: 10_Wiki/Topics
|
||||
status: needs_review
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: []
|
||||
aliases: [Model Parameter Control, Inference Parameters, Sampling Parameters]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.92
|
||||
tags: [uncategorized]
|
||||
confidence_score: 0.9
|
||||
verification_status: applied
|
||||
tags: [parameters, sampling, inference, llm, image-gen]
|
||||
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:
|
||||
language: python
|
||||
framework: openai-anthropic-vllm-comfyui
|
||||
---
|
||||
|
||||
# [[모델 매개변수 제어 (Model Parameter Control)|모델 매개변수 제어 (Model Parameter Control)]]
|
||||
# 모델 매개변수 제어 (Model Parameter Control)
|
||||
|
||||
## 📌 한 줄 통찰 (The Karpathy Summary)
|
||||
모델 매개변수 제어란 인공지능 이미지 생성 시 결과물의 가로세로 비율, 스타일화 정도, 다양성, 품질 등을 세밀하게 조정하기 위해 프롬프트에 추가하는 특수한 명령어 및 가중치 제어 기법을 의미합니다 [1-3]. Midjourney와 같은 플랫폼에서는 주로 하이픈 두 개(`--`)로 시작하는 명령어를 프롬프트 끝에 배치하여 사용하며, Stable Diffusion에서는 괄호와 숫자를 활용해 특정 단어의 가중치를 제어합니다 [2, 4, 5]. 이러한 매개변수들은 단순한 텍스트 묘사를 넘어, **사용자가 AI 모델의 기술적, 미학적 개입 강도를 직접 통제할 수 있게 해주는 핵심 프롬프트 작성 방법**입니다 [1, 2, 6].
|
||||
## 매 한 줄
|
||||
> **"매 parameter 는 model behavior 의 dial — temperature, top_p, top_k, seed 가 매 generation 의 character 를 결정"**. 2026년 production LLM 의 매 endpoint 가 노출하는 sampling knobs (Anthropic, OpenAI, vLLM, Ollama) + image gen 의 cfg/steps/scheduler — 매 정량적 control 의 핵심.
|
||||
|
||||
## 📖 구조화된 지식 (Synthesized Content)
|
||||
**Midjourney의 주요 매개변수 (Parameters) 및 명령어 규칙**
|
||||
* **명령어 구조:** Midjourney의 매개변수는 항상 텍스트 프롬프트의 가장 마지막에 위치해야 하며, 쉼표 등 구두점 없이 하이픈 두 개(`--`) 뒤에 공백을 두고 작성해야 합니다 (예: `--ar 16:9`) [2, 7].
|
||||
* **화면 비율 및 모델 버전 제어:** `--ar` (Aspect Ratio) 매개변수는 결과물의 가로세로 비율(예: `--ar 3:2`, `--ar 16:9`)을 지정하며, `--v` (Version) 매개변수는 생성에 사용할 특정 모델 버전(예: `--v 7`, `--v 6`)을 결정합니다 [4, 8-10].
|
||||
* **미학적 개입 및 무작위성 조절:** `--stylize` 또는 `--s` (0~1000)는 모델 고유의 미학적 개입 강도를 조절하여, 값이 높을수록 더 예술적이고 창의적인 결과를 낳습니다 [3, 11, 12]. 반면 `--chaos` (0~100)는 처음 생성되는 네 가지 이미지 간의 변형과 무작위성을 증가시킵니다 [8, 10, 13].
|
||||
* **일관성(Consistency) 제어:** `--cref` (캐릭터 참조) 및 `--cw` (캐릭터 가중치)를 통해 피사체의 외모를 일정하게 유지할 수 있으며, `--sref` (스타일 참조)와 `--sw` (스타일 가중치)를 통해 특정 분위기나 미학을 여러 프롬프트에 걸쳐 일관되게 적용할 수 있습니다 [3, 10, 12, 14, 15]. 특히 V7에서 추가된 `--oref` (옴니 참조)를 사용하면 개체의 고유한 형태적 정체성 전체를 기억해 일관성을 유지할 수 있습니다 [3, 10, 16, 17].
|
||||
* **제외 및 기타 제어:** `--no` 매개변수는 이미지에 포함되지 않기를 바라는 요소를 명시할 때 사용합니다 [10, 13]. V7 모델부터 지원되는 `--draft` 모드를 사용하면, 비용(GPU)과 시간을 절약하기 위해 더 낮은 품질로 빠르게 다양한 시안을 탐색할 수 있습니다 [9, 10, 18].
|
||||
## 매 핵심
|
||||
|
||||
**Stable Diffusion의 가중치 제어 (Prompt Weights)**
|
||||
* **가중치 문법 (Syntax):** Stable Diffusion에서는 프롬프트 내 특정 단어나 구문의 중요도를 숫자로 지정하여 모델의 가중치를 제어합니다 [5, 19]. 보통 기본 가중치는 1이며, 숫자가 클수록 해당 단어가 강조되고 1보다 작으면 약화됩니다 [20, 21].
|
||||
* **괄호 및 기호 사용:** `(keyword:factor)` 형태의 문법을 주로 사용합니다 (예: `(dog:1.1)`). 괄호 `()`를 겹쳐 쓰거나 기호 `+`, `-`를 덧붙이는 방식(예: `(dog)+` 또는 `(dog)-`)도 지원되어 대상에 대한 중요도를 더 직관적이고 세밀하게 조절할 수 있습니다 [5, 20, 22, 23].
|
||||
* **CFG Scale 설정:** 프롬프트 가중치와 함께 모델이 주어진 긍정/부정 프롬프트를 얼마나 강하게 따를지 결정하는 'CFG Scale (Classifier-Free Guidance)' 매개변수를 조정하여, 생성물의 지시 이행 강도를 조절합니다 [24, 25].
|
||||
### 매 LLM sampling parameters
|
||||
- **temperature** [0, 2]: logit scaling. 0 = greedy, 1 = raw distribution, >1 = flatten. 매 deterministic task 는 0, creative 는 0.7~1.0.
|
||||
- **top_p** (nucleus) [0, 1]: cumulative prob mass. 0.9 = 매 top-90% mass tokens 만 sample.
|
||||
- **top_k**: 매 top-K logits 만 유지. vLLM 은 -1 = disabled.
|
||||
- **min_p** [0, 1]: relative threshold (vs top token prob). 매 modern alternative to top_p.
|
||||
- **frequency_penalty** [-2, 2] / **presence_penalty**: repetition control.
|
||||
- **seed**: reproducibility. 매 same seed + temperature=0 → deterministic (대부분).
|
||||
- **stop**: 매 stop strings. 매 agent loop 의 turn boundary 제어.
|
||||
- **max_tokens** / **max_completion_tokens**: output budget.
|
||||
|
||||
**DALL-E 3의 매개변수 제어 특징**
|
||||
* DALL-E 3는 자연어 처리에 매우 강하게 의존하므로, Midjourney와 같은 복잡한 기호나 기술적 매개변수(`--seed`, `--chaos` 등)가 정상적으로 작동하지 않거나 다르게 해석될 수 있습니다 [26, 27]. 따라서 복잡한 매개변수를 쓰기보다는 **명확하고 서술적인 일상 언어를 사용하여 맥락과 구도를 지시하는 것**이 훨씬 효과적입니다 [27-29].
|
||||
### 매 image gen parameters (FLUX, SD3.5, Midjourney)
|
||||
- **cfg / guidance_scale**: prompt adherence vs creativity. FLUX 3.5~5.0, SD 5~9.
|
||||
- **steps**: denoising steps. FLUX-dev 28, FLUX-schnell 4, SD3.5 28~40.
|
||||
- **scheduler / sampler**: euler, dpmpp_2m, etc. 매 quality/speed tradeoff.
|
||||
- **seed**: 매 reproducible composition.
|
||||
- **denoising_strength** (img2img): 0 = identical, 1 = ignore source.
|
||||
|
||||
## 🔗 지식 연결 (Graph)
|
||||
- **Related Topics:** [[프롬프트 엔지니어링 (Prompt Engineering)|프롬프트 엔지니어링 (Prompt Engineering)]], [[부정 프롬프트 (Negative Prompts)|부정 프롬프트 (Negative Prompts)]], [[스타일 및 캐릭터 참조 (Style and Character References)|스타일 및 캐릭터 참조 (Style and Character References)]], [[버전 및 모델 (Versions and Models)|버전 및 모델 (Versions and Models)]]
|
||||
- **Projects/Contexts:** [[Midjourney V7 및 V6 워크플로우|Midjourney V7 및 V6 워크플로우]], [[Stable Diffusion 오픈소스 제어|Stable Diffusion 오픈소스 제어]]
|
||||
- **Contradictions/Notes:** Midjourney나 Stable Diffusion은 특수 기호나 숫자, 하이픈(`--`) 등을 통해 세밀한 매개변수와 가중치를 제어할 수 있지만, DALL-E 3는 이러한 명령어 옵션(예: `--chaos`, `--seed` 등)을 구조적으로 지원하지 않으며 기술적 매개변수보다 완결된 자연어 문장 지시를 훨씬 더 잘 따릅니다 [26, 27, 30].
|
||||
### 매 응용
|
||||
1. RAG answer extraction → temperature=0, top_p=1.
|
||||
2. Brainstorm → temperature=0.9, presence_penalty=0.6.
|
||||
3. Code completion → temperature=0.2, stop=["\n\n"].
|
||||
4. Image variation → 매 seed fix + cfg lower.
|
||||
|
||||
---
|
||||
*Last updated: 2026-04-30*
|
||||
## 💻 패턴
|
||||
|
||||
## 🤖 LLM 활용 힌트 (How to Use This Knowledge)
|
||||
### Anthropic Claude — deterministic extraction
|
||||
```python
|
||||
from anthropic import Anthropic
|
||||
|
||||
**언제 이 지식을 쓰는가:**
|
||||
- *(TODO)*
|
||||
client = Anthropic()
|
||||
resp = client.messages.create(
|
||||
model="claude-opus-4-7",
|
||||
max_tokens=1024,
|
||||
temperature=0.0, # deterministic
|
||||
top_p=1.0,
|
||||
system="Extract structured data. Output JSON only.",
|
||||
messages=[{"role": "user", "content": doc_text}],
|
||||
)
|
||||
```
|
||||
|
||||
**언제 쓰면 안 되는가:**
|
||||
- *(TODO)*
|
||||
### OpenAI GPT-5 — creative writing knobs
|
||||
```python
|
||||
from openai import OpenAI
|
||||
|
||||
## 🧪 검증 상태 (Validation)
|
||||
client = OpenAI()
|
||||
resp = client.chat.completions.create(
|
||||
model="gpt-5",
|
||||
temperature=0.9,
|
||||
top_p=0.95,
|
||||
presence_penalty=0.6,
|
||||
frequency_penalty=0.3,
|
||||
max_completion_tokens=2000,
|
||||
seed=42, # best-effort reproducibility
|
||||
messages=[{"role": "user", "content": "Write a noir opening."}],
|
||||
)
|
||||
```
|
||||
|
||||
- **정보 상태:** needs_review
|
||||
- **출처 신뢰도:** A
|
||||
- **검토 이유:** *(P-Reinforce Phase 1 자동 정규화. 본문 검증 필요.)*
|
||||
### vLLM — full sampling control (self-host Llama 3.3)
|
||||
```python
|
||||
from vllm import LLM, SamplingParams
|
||||
|
||||
## 🧬 중복 검사 (Duplicate Check)
|
||||
llm = LLM(model="meta-llama/Llama-3.3-70B-Instruct", tensor_parallel_size=4)
|
||||
|
||||
- **기존 유사 문서:** *(TODO: 인덱서 클러스터 리포트 참조)*
|
||||
- **처리 방식:** UPDATE (자동 정규화)
|
||||
- **처리 이유:** Phase 1 정규화 — 옛 템플릿/누락 필드 보강.
|
||||
params = SamplingParams(
|
||||
temperature=0.7,
|
||||
top_p=0.9,
|
||||
top_k=50,
|
||||
min_p=0.05, # modern alternative
|
||||
repetition_penalty=1.1,
|
||||
max_tokens=512,
|
||||
stop=["</answer>"],
|
||||
seed=2026,
|
||||
logprobs=5, # debugging
|
||||
)
|
||||
outputs = llm.generate(["Explain mixture-of-experts."], params)
|
||||
```
|
||||
|
||||
## ⚠️ 모순 및 업데이트 (Contradictions & Updates)
|
||||
### MLX (Apple Silicon) — local inference with seed
|
||||
```python
|
||||
from mlx_lm import load, generate
|
||||
import mlx.core as mx
|
||||
|
||||
- **과거 데이터와의 충돌:** 없음
|
||||
- **정책 변화:** 없음
|
||||
model, tok = load("mlx-community/Llama-3.3-70B-Instruct-4bit")
|
||||
mx.random.seed(42)
|
||||
text = generate(
|
||||
model, tok,
|
||||
prompt="Summarize:",
|
||||
max_tokens=256,
|
||||
temp=0.3,
|
||||
top_p=0.9,
|
||||
verbose=False,
|
||||
)
|
||||
```
|
||||
|
||||
## 🕓 변경 이력 (Changelog)
|
||||
### FLUX.1-dev via diffusers — image gen knobs
|
||||
```python
|
||||
import torch
|
||||
from diffusers import FluxPipeline
|
||||
|
||||
| 날짜 | 변경 내용 | 처리 방식 | 신뢰도 |
|
||||
|------|-----------|-----------|--------|
|
||||
| 2026-05-08 | P-Reinforce Phase 1 정규화 (frontmatter + 헤더 표준화) | UPDATE | A |
|
||||
pipe = FluxPipeline.from_pretrained(
|
||||
"black-forest-labs/FLUX.1-dev",
|
||||
torch_dtype=torch.bfloat16,
|
||||
).to("cuda")
|
||||
|
||||
img = pipe(
|
||||
prompt="cinematic neo-tokyo alley, neon, rain",
|
||||
guidance_scale=3.5, # FLUX prefers low CFG
|
||||
num_inference_steps=28,
|
||||
generator=torch.Generator("cuda").manual_seed(42),
|
||||
width=1024, height=1024,
|
||||
).images[0]
|
||||
```
|
||||
|
||||
### ComfyUI API — programmatic SD3.5 with full control
|
||||
```python
|
||||
import json, requests
|
||||
|
||||
workflow = {
|
||||
"sampler": {
|
||||
"class_type": "KSampler",
|
||||
"inputs": {
|
||||
"seed": 42, "steps": 30, "cfg": 7.0,
|
||||
"sampler_name": "dpmpp_2m", "scheduler": "karras",
|
||||
"denoise": 1.0,
|
||||
"model": ["loader", 0],
|
||||
"positive": ["pos_clip", 0],
|
||||
"negative": ["neg_clip", 0],
|
||||
"latent_image": ["empty_latent", 0],
|
||||
},
|
||||
},
|
||||
# ... rest of graph
|
||||
}
|
||||
r = requests.post("http://localhost:8188/prompt", json={"prompt": workflow})
|
||||
```
|
||||
|
||||
### Sweep parameters with Optuna for prompt+param tuning
|
||||
```python
|
||||
import optuna
|
||||
from anthropic import Anthropic
|
||||
|
||||
client = Anthropic()
|
||||
EVAL_SET = load_eval() # list[(prompt, expected)]
|
||||
|
||||
def objective(trial):
|
||||
temp = trial.suggest_float("temperature", 0.0, 1.2)
|
||||
tp = trial.suggest_float("top_p", 0.5, 1.0)
|
||||
score = 0
|
||||
for q, exp in EVAL_SET:
|
||||
out = client.messages.create(
|
||||
model="claude-opus-4-7",
|
||||
max_tokens=512, temperature=temp, top_p=tp,
|
||||
messages=[{"role": "user", "content": q}],
|
||||
).content[0].text
|
||||
score += grade(out, exp)
|
||||
return score / len(EVAL_SET)
|
||||
|
||||
study = optuna.create_study(direction="maximize")
|
||||
study.optimize(objective, n_trials=40)
|
||||
print(study.best_params)
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| Task | temperature | top_p | 기타 |
|
||||
|---|---|---|---|
|
||||
| Extraction / classification | 0.0 | 1.0 | seed 고정 |
|
||||
| Code completion | 0.2 | 0.95 | stop tokens |
|
||||
| Summarization | 0.3 | 0.9 | — |
|
||||
| Q&A (RAG) | 0.0~0.3 | 1.0 | — |
|
||||
| Brainstorming | 0.8~1.0 | 0.95 | presence_penalty 0.6 |
|
||||
| Creative fiction | 0.9~1.1 | 0.95 | frequency_penalty 0.3 |
|
||||
| FLUX image | cfg 3.5 | steps 28 | bf16 |
|
||||
| SD3.5 image | cfg 7.0 | steps 30 | dpmpp_2m karras |
|
||||
|
||||
**기본값**: temperature=0.7, top_p=0.9, seed=42 (debugging), max_tokens=task-budgeted.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Parameter]] · [[LLM_Inference]]
|
||||
- 변형: [[Sampling_Strategies]] · [[Speculative_Decoding]]
|
||||
- 응용: [[Iterative Prompting]] · [[Midjourney]] · [[RAG]]
|
||||
- Adjacent: [[Prompt_Engineering]] · [[Eval_Harness]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: 매 deterministic 결과 필요 (RAG, extraction) — temp=0. 매 creative output — temp 0.7+. 매 reproduce bug — seed 고정.
|
||||
**언제 X**: 매 model 마다 seed 의 strict determinism 보장 X (특히 multi-GPU). 매 production 에서 seed 의존 X.
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **temperature=0 + top_p<1**: 매 redundant (greedy 가 이미 top-1).
|
||||
- **temperature 1.5+ in production**: 매 hallucination/incoherence spike.
|
||||
- **seed 만 고정 + temperature 0.7**: 매 batched inference 에서 비결정적.
|
||||
- **max_tokens=4096 default**: 매 cost blowup. Task-budgeted.
|
||||
- **frequency_penalty 1.5+**: 매 vocabulary collapse.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Anthropic Messages API, OpenAI Chat Completions, vLLM SamplingParams, diffusers FluxPipeline, Stability SD3.5 docs, ComfyUI API).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — LLM/image sampling params + 7 working patterns |
|
||||
|
||||
Reference in New Issue
Block a user