Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

생성 파라미터

같은 모델에 같은 프롬프트를 주어도, 출력을 만들어 내는 방식(디코딩)을 조절하는 인자에 따라 결과가 달라집니다. 앞 장에서 본 것처럼 언어 모델은 매 단계에서 어휘 전체에 대한 점수(로짓, logitsRV\text{logits} \in \mathbb{R}^{V})를 내고, 이를 확률 분포로 바꾼 뒤 다음 토큰 하나를 고릅니다. 이 "고르는 규칙"을 정하는 값들이 생성 파라미터입니다.

1디코딩 방식: 그리디 vs 샘플링

실무에서는 샘플링을 쓰되, 아래 인자들로 “얼마나 무작위로, 어떤 후보 중에서” 뽑을지를 제어합니다.

2분포를 조절하는 인자

3반복을 다스리는 인자

4길이와 종료

5재현성: seed

6엔진별 파라미터 이름

같은 개념이라도 엔진마다 이름이 조금씩 다릅니다.

개념OllamavLLMOpenAI
무작위성temperaturetemperaturetemperature
누적확률 컷오프top_ptop_ptop_p
상위 k 후보top_ktop_k(없음)
반복 억제repeat_penaltyrepetition_penaltyfrequency_penalty, presence_penalty
최대 길이num_predictmax_tokensmax_tokens
정지 시퀀스stopstopstop
시드seedseedseed

7실습: Ollama로 효과 확인

/api/generateoptions로 인자를 전달해 직접 비교해 봅니다.

!uv pip install httpx
import os
import httpx

OLLAMA_API_URL = f"{os.getenv('OLLAMA_HOST', 'http://localhost:11434')}/api/generate"
MODEL_NAME = "qwen3:latest"

def gen(prompt, **options):
    payload = {"model": MODEL_NAME, "prompt": prompt, "stream": False,
               "think": False, "options": options}
    response = httpx.post(OLLAMA_API_URL, json=payload, timeout=120)
    response.raise_for_status()
    return response.json()["response"].strip()

7.1temperature: 집중 vs 다양

prompt = "AI 스타트업 이름을 하나만 지어줘."

print("[temperature=0.1]", gen(prompt, temperature=0.1))
print("[temperature=0.1]", gen(prompt, temperature=0.1))   # 낮으면 거의 같은 답이 반복됨
print("[temperature=1.3]", gen(prompt, temperature=1.3))
print("[temperature=1.3]", gen(prompt, temperature=1.3))   # 높으면 매번 다른 답

낮은 온도에서는 NeuraLift처럼 같은 답이 반복되고, 높은 온도에서는 NeuraLeap, NeuraSphere처럼 매번 달라집니다.

7.2num_predict: 길이 제한

print(gen("로컬 LLM의 장점을 설명해줘.", num_predict=20))   # 약 20토큰에서 잘림

7.3stop: 정지 시퀀스

# 줄바꿈이 나오면 멈춰, 첫 줄만 받기
print(gen("로컬 LLM의 장점을 한 줄로 요약하고, 줄을 바꿔 예시를 들어줘.", stop=["\n"]))

8정리

생성 파라미터는 모델을 바꾸지 않고도 출력의 무작위성·길이·반복·형식을 제어하는 손잡이입니다. 정답이 중요한 작업(분류·추출·코드)에는 낮은 temperature와 좁은 top-p로 보수적으로, 창작·브레인스토밍에는 높은 temperature로 다양하게 두는 식으로 작업에 맞춰 조정합니다.

실제 설정 위치는 사용하는 도구마다 다릅니다.