본문으로 건너뛰기

[2편] 추론 파라미터 튜닝 Qwen3-Omni 6초 클립 분석 (OFAT 스윕)

1. 들어가며

SceneMaker의 클립 영상 분석은 영상에 포함된 시각·청각 정보를 안정적으로 생성 해내는 것을 목표로 한다. 6초 클립을 입력 받아 시청각 정보를 {summary, ocr, actions, sounds} json 형식의 4필드로 구조화한다.

  • 종합 분석

    • summary : 시각·청각을 종합한 한 문장 요약
  • 시각 분석

    • ocr (화면 텍스트: 자막·로고)

    • actions (행동·움직임 등)

  • 청각 분석

    • sounds (효과음: 박수·타이핑 등)

관건은 안정성 이다. 출력이 흔들리면 품질 점수를 믿을 수 없다. 1편 검증에서 이를 위협하는 네 가지 품질저하 패턴이 간헐적으로 발견됐다.

  1. 조기 종료 (Premature EOS) : 첫 토큰부터 EOS(문장 종료)를 출력해 content가 빈 문자열로 끝난다. strict JSON schema의 과도한 압박 등으로 모델이 "할 말 없이" 바로 닫아버리는 경우.
  2. 붕괴 (Text Degeneration) : 정상 확률분포를 잃고 이종문자·시스템 토큰을 쏟아내다 JSON을 완성 못 하고 터진다(Gibberish Generation).
  3. 반복 (Repetition Loop) : 같은 단어·항목·JSON 구조를 확률 갇힘으로 맴돌며 반복 생성한다.
  4. 탈주·미완 (Runaway / Length) : 종료 토큰을 내지 못하고 max_tokens (512)까지 생성을 이어가다 JSON이 미완으로 잘린다(finish_length ). 조기 종료의 정반대 실패.

본 편은 그 패턴들이 추론 파라미터로 통제되는지를 규명한다. 1편에서는 네 패턴을 관찰·식별했을 뿐, 파라미터로 잡을 수 있는지는 다루지 않았기 때문이다.
전제는 출력을 strict JSON Schema로 고정한 상태다. 그 위에서도 두드러지는 반복·degeneration 등을 대상으로, 파라미터를 한 번에 하나씩(OFAT) 크게 흔들어 어느 것이 통제에 듣는지 1차 조정 단계다.

2. 실험 환경

벤치마크와 동일한 모델·서빙·호출 경로 에서 수행했다. 파라미터 효과를 그 환경 그대로 관찰하기 위함이다. 환경 구성의 상세는 1편 「멀티모달 LLM 한국 방송 6초 클립 영상 이해 벤치마크 파이프라인 구축」에 있으므로, 여기서는 핵심 요약과 본 실험의 튜닝 대상 파라미터 만 다룬다.

2.1. 환경 요약

  • 모델

    • Qwen3-Omni-30B-A3B-Instruct (Thinker–Talker MoE, 추론 코어 총 30B·활성 3B).

    • Image·Video·Audio·Text 4 모달리티를 단일 모델로 처리하며, 본 PoC 는 텍스트 출력만 사용.

  • 서빙

    • AWS g7e.4xlarge 단일 GPU(NVIDIA RTX PRO 6000 Blackwell, 96 GB)에서 vLLM 서빙.

    • 실서빙 --max-model-len 은 16,384로 고해상도나 큰 fps 에서 컨텍스트 초과에 유의한다.

  • 호출 경로

    • 클라이언트(추론 요청) → 게이트웨이(1편의 게이트웨이와 동일) → vLLM → Qwen 3 Omni

    • vLLM 앞단 얇은 게이트웨이(FastAPI)를 거친다. 추론 본문을 변형 없이 패스하고 동시성 게이트(기본 4)·배치 NDJSON 스트리밍만 부가한다. 본 스윕은 고정 70 클립을 /chat/batch 한 요청으로 보내 완료 순서로 수집.

노트

📎 모델 스펙·서빙 설정·게이트웨이 라우트의 상세는 시리즈 1편 멀티모달 LLM 한국 방송 6초 클립 영상 이해 벤치마크 파이프라인 구축 문서를 참조한다.

2.2. 튜닝 대상 파라미터

추론 매개변수는 서버 설정이 아니라 클라이언트가 요청 본문에 직접 명시 한다. 파라미터는 작동 레이어에 따라 두 갈래로 나뉜다. vLLM 입력 처리 (미디어를 모델에 넣기 전 준비)와 Qwen3-Omni 생성 샘플링 (모델이 출력을 뽑는 디코딩). 본 실험의 OFAT 스윕은 생성 샘플링 그룹만 한 번에 하나씩(변동) 흔들고, 나머지는 전 구간 고정한다.

1. Qwen3-Omni 생성 샘플링 파라미터 (Autoregressive Decoding · Sampling Strategies ).
파라미터역할값 범위본 실험
temperature샘플링 온도, 낮을수록 결정론적[0, 2] (기본값 1.0)변동
top_k후보를 확률 상위 k개로 제한-1 =비활성 / ≥1 (기본값 -1) 0 < temperature 일 때만 작동변동
top_pnucleus 컷오프, 누적확률 상위만 후보(0, 1] (기본값 1.0) 0 < temperature 일 때만 작동변동
frequency_penalty가산형 반복 억제 (등장 횟수 비례)[-2, 2] · 0 =비활성 (기본값 0.0)변동
repetition_penalty곱셈형 반복 억제 (등장 여부)>0 · 1 =비활성 · >1 =억제변동
max_tokenscompletion 토큰 상한 (출력 길이 캡)>0 · 남은 컨텍스트 이내512 고정
chat_template_kwargs.enable_thinking사고(thinking) 토큰 생성 on/offtrue / falsefalse 고정
seed재현성 (고정 시 동일 입력→동일 출력)정수 · <0 =비활성(매번 무작위)-1 고정
2. vLLM 입력 처리 파라미터 (Multimodal Ingestion · Context Conditioning )
파라미터역할값 범위본 실험
media_io_kwargs.video.fps영상 프레임 추출 레이트>00.5 고정
use_audio_in_videomp4 내 오디오 동시 디코딩true / falsetrue 고정
노트

📌 frequency_penalty vs repetition_penalty → 둘 다 반복을 억제하지만 방식이 다르다.

  • frequency(가산·빼기) 이미 나온 토큰일수록 패널티(횟수 비례·누적) → 반복 (공 공 공… ) 제동에 강함. 출력 토큰만 카운트.

  • repetition(곱셈·나눔) 한 번이라도 나오면 일정 비율 로 깎음(등장 여부만, 횟수 무관). vLLM 은 프롬프트 + 출력 모두 보므로 프롬프트 어휘까지 억제될 수 있음.

  • 둘 다 켜면 2중 과한 억제로 작용 한다.

2.3. 출력 스키마 / 환각 가드

본 실험은 아래 출력 계약을 변경 없이 고정 한 채 파라미터만 흔든다. 응답은 정확히 {summary, ocr, actions, sounds} 필드 로 고정한다.

  • vLLM response_format=json_schema(strict=True)
  • pydantic extra="forbid"

이중 강제라 후처리(파싱·정제·필드 추가/삭제) 코드 없이 그대로 저장할 수 있다.

SceneMaker 프로젝트에서 대사(STT)분석은 WhisperX의 별도 모듈 담당으로 Qwen3 Omini 모델에서는 sounds 로 설계해 배경음과 효과음 분석을 추가한다.

필드정의 및 가이드
summary (string)시각·청각을 종합한 한국어 한 문장 요약. 개별 필드의 표현을 그대로 복사 금지.
ocr (array of string)화면에 보이는 텍스트를 원문 그대로.
actions (array of string)영상에서 일어나는 행동·움직임·장면 전환 동사구 (중복 없이).
sounds (array of string)대사를 제외한 효과음 (박수·타이핑·발소리 등).
노트

🎙️ 대사(발화) 전사는 별도 WhisperX 오디오 모듈이 담당하므로 본 스키마에서 제외한다. 모델은 오디오를 듣되(use_audio_in_video on) 받아쓰지 않고 비-발화(sounds )만 기술한다.

3. 방법론

3.1. 표본과 설계

  • 고정 70 샘플 : 7장르 × 6초 간격 10클립. 모든 설정이 동일 샘플·동일 프롬프트 를 쓴다.
  • OFAT Sweep : 한 파라미터만 여러 단계로 바꾸고 나머지는 전부 고정한 채 그 변수의 영향만 관찰한다.
  • 샘플링 격리 : top_p·top_k·페널티 스윕은 모두 temp=0.7 에서 돌린다(temp=0 이면 top_p·top_k 효과가 없고, baseline 도 0.7 이므로 페널티도 0.7 에서 본다).
노트

📖 용어 정리

  • 스윕(sweep) : 한 파라미터 값을 여러 단계로 훑어가며(예: temperature 0 → 0.3 → 0.7 → 1.0) 각 단계의 출력을 측정하는 것. 본 실험의 OFAT 스윕 은 다른 파라미터를 고정한 채 한 축만 훑어 그 파라미터 단독 효과를 분리한다.
  • greedy(그리디 디코딩) : 매 스텝 확률이 가장 높은 토큰 하나만(argmax) 고르는 디코딩. temperature=0 이 곧 greedy 이며, 무작위성이 없어 같은 입력 → 같은 출력(결정론적)이다. 반대는 확률에 따라 후보를 흩어 뽑는 샘플링 (top_k ·top_p ·temperature ).

3.2. 무엇을 출력만으로 잴 수 있나. 순응 vs 품질

분석 출력의 평가는 성격이 다른 두 축으로 나뉜다. 시험에 빗대면 하나는 실격 여부, 다른 하나는 답안 점수다.

  • 순응(adherence) = 실격 축. 답안이 아무리 훌륭해도 백지·외국어·정해진 양식 위반이면 실격이다. 내용의 좋고 나쁨과 무관하게 규칙만 본다.
  • 품질(quality) = 점수 축. 실격을 면한 뒤, 분석이 얼마나 정확하고 빠짐없는지 실제로 채점한다.
구분판정 대상출력만으로 판정
순응 (adherence)한국어인가 · JSON 형식 맞나 · 항목이 짧은가 · 반복 없나가능
품질 (quality)완전성(빠뜨린 것 없나) · 정확성(환각 없나)불가

순응은 필요조건이지 충분조건이 아니다. 실격만 면했을 뿐 내용이 옳다는 보장은 아니다. 규칙을 먼저 잡고, 품질은 이후에 개선한다.

3.3. 측정 지표

네 가지 품질저하 패턴을 탐지·정량화하기 위해 아래 지표를 집계한다. 각 지표는 위 이상현상 중 하나 이상을 겨냥한다. fields ·score (repeat·degen)는 0~1 비율(1.0=100%)로 환산해 비율로 확인한다.

지표정의무엇을 보나
ok / fail스키마 통과 / 실패 레코드 수형식 순응 · 조기 종료
inference_ms (avg·p50·p95·min·max)클립당 추론 시간(ms)추론 시간 편차
fields필드별 '값이 있는' 비율 (summary ·ocr ·actions ·sounds )정보 커버리지
score.repeat배열 안에 같은 항목이 그대로 중복된 레코드 비율.반복
score.degen붕괴 신호별 비율. foreign (이종문자) · finish_length (max_tokens 도달=미완·탈주) · replacement (깨진 멀티바이트)붕괴

4. 파라미터별 효과

본 절에서 한 번에 하나씩(OFAT) 흔든 대상 파라미터다.

  • temperature : 0.0 / 0.3 / 0.7 / 1.0

  • top_k / top_p

    • top_k : 1 / 10 / 50 / -1 (temp=0.7)

    • top_p : 0.5 / 0.8 / 0.95 / 1.0 (temp=0.7)

  • frequency_penalty / repetition_penalty (temp=0.7)

    • frequency_penalty : 0.0 / 0.5 / 1.0 / 2.0

    • repetition_penalty : 1.0 / 1.05 / 1.1 / 1.3

본 절의 판정 기준은 "표현이 풍부한 설정"이 아니라 "명백한 결함(미완·이종문자·반복·탈주)이 최소인 설정 "이다. 커버리지·항목 수 증가는 환각(과생성)일 수 있어 가산점으로 치지 않는다.

4.0. 테스트 데이터 준비 및 실행 방법

모든 설정이 동일한 70클립 을 본다. 7장르 × 카테고리당 10클립.

make_sample.py 가 원본 mp4 를 복사·재인코딩하지 않고 symlink 로만 data/sample70/ 에 모은다. 영상 파생물을 data/ 한 곳에서만 관리해, 저작권상 data/ 하나만 지우면 일괄 정리된다(symlink 는 *.mp4 라 gitignore 로 커밋되지 않음).

  1. 표본 준비

    # 카테고리당 10개 등간격 → data/sample70/ 에 symlink (총 70)
    python make_sample.py
  2. 단건 스모크 (서버·스키마 정상 동작 확인)

    # 단일 클립 1건만 보내 서버·스키마 응답을 확인(배치 없이 단건)
    python run.py ../../data/sample70/news__0001_0600-0606.mp4 --no-batch --verbose
  3. OFAT 스윕 본실행

    # run.py 를 설정별로 한 줄씩(temperature·top_pk·freq_repe·fps·thinking) 호출.
    # sweep_out/ 의 다음 회차 번호를 자동 감지한다. 인자로 회차 수 지정(기본 1).
    bash sweep.sh 4 # 다음 4회차 누적 → N=4

4.1. temperature

회차 평균 (1·2·3·4회 · 각 n=70)

노트

📐 penalty = (repeat + finish_length + foreign + replacement ) ÷ 4 → 평균

field = (summary + ocr + actions + sounds ) ÷ 4 → 커버리지 평균.

tempok/failinfer_mspenaltyfield
0.083.21%27318.9%95.7%
0.383.93%27358.9%95.3%
0.787.50%28187.5%96.0%
1.092.14%286314.4%93.4%
📊 회차별 히스토리 (1·2·3·4회)
회차tempokinfer_msrepeatforeignfinish_lenreplacementpenaltysummaryocractionssounds
10.081.43%2834.117.10%0.00%18.60%0.00%8.93%100.00%91.20%100.00%91.20%
20.082.86%2751.917.10%0.00%17.10%0.00%8.55%100.00%91.40%100.00%93.10%
30.084.29%2653.521.40%0.00%15.70%0.00%9.28%100.00%91.50%100.00%91.50%
40.084.29%2685.320.00%0.00%15.70%0.00%8.93%100.00%91.50%100.00%89.80%
10.385.71%2656.718.60%0.00%14.30%0.00%8.22%100.00%90.00%100.00%90.00%
20.381.43%2781.218.60%0.00%18.60%0.00%9.30%100.00%87.70%100.00%93.00%
30.387.14%2665.125.70%0.00%12.90%0.00%9.65%100.00%88.50%100.00%90.20%
40.381.43%2838.715.70%0.00%18.60%0.00%8.57%100.00%89.50%100.00%96.50%
10.791.43%2718.627.10%1.40%8.60%0.00%9.28%100.00%90.60%100.00%95.30%
20.784.29%3086.310.00%0.00%15.70%0.00%6.43%100.00%89.80%100.00%93.20%
30.785.71%2763.914.30%0.00%14.30%0.00%7.15%100.00%90.00%100.00%93.30%
40.788.57%2702.917.10%0.00%11.40%0.00%7.13%100.00%90.30%100.00%93.50%
11.088.57%2924.911.40%35.70%11.40%1.40%14.98%100.00%88.70%100.00%88.70%
21.094.29%3085.717.10%38.60%5.70%0.00%15.35%100.00%89.40%98.50%90.90%
31.091.43%2758.112.90%35.70%8.60%0.00%14.30%100.00%90.60%98.40%81.20%
41.094.29%2683.714.30%31.40%5.70%0.00%12.85%100.00%84.80%98.50%84.80%

핵심 지표 비교 표(Benchmark Matrix)

평가 지표Greedy (0.0)Sweet Spot (0.7)High Temp (1.0)
완주율(ok)83.21%87.50%92.14% (최고)
페널티 (Penalty)8.9%7.5% (최저)14.4% (최악)
이종문자(foreign)0%0.35%35.4% (폭증)

1. 완주율 vs 페널티(Penalty)의 트레이드 오프

  • Temperature와 완주율은 정비례

    • 값이 높을수록 탈주 및 미완료(finish_length ) 지표가 16.8%에서 7.9%로 감소하며 완주율 상승
  • Hight Temperature(1.0)의 함정

    • 완주율은 최고치이나 출력이 깨지는 결함이 동반되어 페널티가 14.4%로 폭증.
  • Temperature 0.7 지점의 최적화

    • 완주율 87.5%를 확보하면서 페널티(7.5%)는 전 구간 최저치를 달성.

2. 이종문자(Foreign)와 반복

  • Temperature 1.0은 극심한 결함 발생

    • 이종문자 발생률 35.4%로 급증
  • Temperature 0.7은 안전 영역

    • Temp 0.0, 0.7 구간은 이종문자 발생률이 0~0.35%로 매우 안정적
  • Temperature은 ‘반복 제어 레버’가 아님

    • 반복률이 14%~20%로 큰 변동없이 유지됨
노트

💡 결론 = Temperature 0.7 Greedy(0.0)는 회차마다 결과가 흔들려 '결정론'이라는 이점조차 없고, penalty(8.9%)도 0.7보다 높다. 1.0은 완주율이 가장 높지만 이종문자가 터지면서 penalty가 2배(14.4%)로 뛴다. 반면 0.7은 penalty가 가장 낮고(7.5%) 이종문자도 사실상 0이라, 결함이 가장 적은 균형점이다.

4.2. top_k / top_p

회차 평균 (1·2·3·4회 · anchor temperature=0.7 · 각 n=70)

설정ok/failinfer_mspenaltyfield
top_k 182.14%28047.9%95.9%
top_k 1092.50%24476.7%94.5%
top_k 5090.71%25668.4%95.3%
top_k -187.86%26777.6%94.6%
top_p 0.578.57%29588.9%95.4%
top_p 0.885.00%27737.5%95.6%
top_p 0.9587.50%26277.2%95.4%
top_p 1.090.36%25727.2%94.7%
📊 회차별 히스토리 (1·2·3·4회)
회차설정okinfer_msrepeatforeignfinish_lenreplacementpenaltysummaryocractionssounds
1top_k 182.86%2859.711.40%0.00%17.10%0.00%7.13%100.00%91.40%100.00%94.80%
2top_k 181.43%2825.512.90%0.00%18.60%0.00%7.88%100.00%91.20%100.00%93.00%
3top_k 184.29%2690.417.10%0.00%15.70%0.00%8.20%100.00%91.50%100.00%89.80%
4top_k 180.00%284212.90%0.00%20.00%0.00%8.23%100.00%91.10%100.00%91.10%
1top_k 1092.86%2438.920.00%0.00%7.10%0.00%6.78%100.00%86.20%100.00%89.20%
2top_k 1091.43%2458.618.60%0.00%8.60%0.00%6.80%100.00%89.10%100.00%93.80%
3top_k 1094.29%2377.514.30%0.00%5.70%0.00%5.00%100.00%86.40%100.00%90.90%
4top_k 1091.43%2512.124.30%0.00%8.60%0.00%8.22%100.00%89.10%100.00%87.50%
1top_k 5091.43%2511.217.10%2.90%8.60%0.00%7.15%100.00%84.40%100.00%89.10%
2top_k 5090.00%2559.525.70%0.00%10.00%0.00%8.93%100.00%88.90%100.00%95.20%
3top_k 5091.43%2554.728.60%0.00%8.60%0.00%9.30%100.00%89.10%100.00%90.60%
4top_k 5090.00%264022.90%0.00%10.00%0.00%8.23%100.00%92.10%100.00%95.20%
1top_k -185.71%2800.314.30%1.40%14.30%0.00%7.50%100.00%85.00%100.00%86.70%
2top_k -187.14%271521.40%0.00%12.90%0.00%8.57%100.00%86.90%100.00%90.20%
3top_k -188.57%268217.10%0.00%11.40%0.00%7.13%100.00%88.70%100.00%96.80%
4top_k -190.00%2508.918.60%0.00%10.00%0.00%7.15%100.00%90.50%100.00%88.90%
1top_p 0.575.71%314411.40%0.00%24.30%0.00%8.93%100.00%90.60%100.00%86.80%
2top_p 0.580.00%2901.217.10%0.00%20.00%0.00%9.28%100.00%91.10%100.00%96.40%
3top_p 0.581.43%2825.912.90%0.00%18.60%0.00%7.88%100.00%91.20%100.00%91.20%
4top_p 0.577.14%2962.415.70%0.00%22.90%0.00%9.65%100.00%90.70%100.00%88.90%
1top_p 0.887.14%2817.318.60%1.40%12.90%0.00%8.23%100.00%91.80%100.00%95.10%
2top_p 0.888.57%2563.215.70%0.00%11.40%0.00%6.78%100.00%91.90%100.00%90.30%
3top_p 0.884.29%2826.614.30%0.00%15.70%0.00%7.50%100.00%89.80%100.00%91.50%
4top_p 0.880.00%2883.210.00%0.00%20.00%0.00%7.50%100.00%85.70%100.00%92.90%
1top_p 0.9587.14%2699.720.00%0.00%12.90%0.00%8.23%100.00%88.50%100.00%93.40%
2top_p 0.9590.00%2542.218.60%0.00%10.00%0.00%7.15%100.00%88.90%100.00%93.70%
3top_p 0.9588.57%2559.912.90%0.00%11.40%0.00%6.08%100.00%87.10%100.00%93.50%
4top_p 0.9584.29%2707.314.30%0.00%15.70%0.00%7.50%100.00%89.80%100.00%91.50%
1top_p 1.088.57%2609.715.70%0.00%11.40%0.00%6.78%100.00%90.30%100.00%91.90%
2top_p 1.090.00%2612.322.90%0.00%10.00%0.00%8.23%100.00%87.30%100.00%92.10%
3top_p 1.087.14%272415.70%1.40%12.90%0.00%7.50%100.00%86.90%100.00%91.80%
4top_p 1.095.71%2341.518.60%2.90%4.30%0.00%6.45%100.00%83.60%100.00%91.00%

top_k·top_p 는 temperature 위에 얹는 미세 노브다. 결과는 세 갈래로 갈린다. 과조임은 손해, 무제한(기본값)은 안전, top_k 10 은 완주 단일 최고 . 반면 반복·커버리지는 어느 노브로도 움직이지 않는다.

핵심 지표 비교 표

평가 지표과조임 (top_k 1 / top_p 0.5)기본값 (top_k -1 / top_p 1.0)top_k 10 (후보)
완주율(ok)82.1% / 78.6%87.9% / 90.4%92.5% (Best)
penalty7.9% / 8.9%7.6% /7.2%6.7% (Best)
미완료(finish_len)17.9% / 21.5%12.2% / 9.7%7.5% (Best)
반복(repeat)13.6% / 14.3%17.8% / 18.2%19%
커버리지(field)95.9% / 95.4%94.6% / 94.7%94.5%
이종문자(foreign)0% / 0%0.4% / 1.1%0%

1. 완주율은 '적당히 느슨'할 때 최고, 과조임도 무제한도 아님

  • 과조임 역효과

    • top_k 1·top_p 0.5 는 finish_len 18 / 21%, 완주율은 82% / 79%로 최악. Greedy 와 같은 폭주 유발.
  • 내부 최적

    • top_k 는 1→10→50→-1 에서 완주가 k=10(92.5%)에서 정점을 찍고 무제한(-1, 87.9%)으로 갈수록 다시 내려감. 가벼운 top-k 컷이 꼬리 노이즈를 쳐내 완주를 더 안정화하는 것으로 보임.

2. 반복·커버리지의 조정값 아님

  • repeat 평탄·무추세

    • 전 구간 14~24%(top_k 10 도 19%)로 추세 없음 → 반복 레버가 아님(반복은 dedup + freq penalty 의 몫).
  • 커버리지 무손상

    • field 전 구간 94~96% 평탄 → 어떤 설정도 내용을 깎지 않음(top_k 10 의 truncation 도 눈에 보이는 손실 0).

3. top_k 10 = 완주율 후보

  • 단일 최고

    • ok 92.5%(4회 모두 91%+·바닥 91.4%·분산 최저 ±1.2)·penalty 6.7% — 둘 다 8개 설정 중 1위, 기본값 대비 +2~5p 로 노이즈 아님.
  • 검증할 비용

    • top-10 컷이 드문 정답 토큰(특이 OCR·희귀 효과음)을 누락하는지는 출력만으론 안 보임(커버리지 평탄)

4.3. frequency / repetition penalty

회차 평균 (1·2·3·4회 · anchor temperature=0.7 · 각 n=70)

설정ok/failinfer_mspenaltyfield
freq 0.090.00%25897.0%94.0%
freq 0.599.64%20122.0%92.0%
freq 1.0100%19341.6%88.2%
freq 2.098.57%19882.0%81.6%
rep 1.090.00%26468.2%94.6%
rep 1.0596.07%22174.0%93.9%
rep 1.199.64%19503.7%92.7%
rep 1.399.64%16292.0%82.4%
📊 회차별 히스토리 (1·2·3·4회)
회차설정okinfer_msrepeatforeignfinish_lenreplacementpenaltysummaryocractionssounds
1freq 0.090.00%2585.314.30%0.00%10.00%0.00%6.08%100.00%88.90%100.00%84.10%
2freq 0.088.57%2731.517.10%0.00%11.40%0.00%7.13%100.00%87.10%100.00%88.70%
3freq 0.091.43%2550.622.90%1.40%8.60%0.00%8.23%100.00%87.50%100.00%90.60%
4freq 0.090.00%2487.414.30%1.40%10.00%0.00%6.43%100.00%87.30%100.00%88.90%
1freq 0.5100.00%1945.98.60%0.00%0.00%0.00%2.15%100.00%91.40%100.00%78.60%
2freq 0.5100.00%2033.37.10%1.40%0.00%0.00%2.12%100.00%88.60%100.00%78.60%
3freq 0.598.57%2044.210.00%0.00%1.40%0.00%2.85%100.00%85.50%100.00%79.70%
4freq 0.5100.00%2023.82.90%0.00%0.00%0.00%0.73%100.00%90.00%100.00%80.00%
1freq 1.0100.00%1997.35.70%2.90%0.00%0.00%2.15%100.00%90.00%98.60%68.60%
2freq 1.0100.00%1909.71.40%1.40%0.00%0.00%0.70%100.00%88.60%95.70%67.10%
3freq 1.0100.00%1893.72.90%1.40%0.00%0.00%1.08%100.00%91.40%100.00%62.90%
4freq 1.0100.00%1935.410.00%0.00%0.00%0.00%2.50%100.00%87.10%100.00%61.40%
1freq 2.098.57%1984.18.60%5.70%1.40%0.00%3.93%100.00%85.50%95.70%44.90%
2freq 2.098.57%2046.90.00%2.90%1.40%1.40%1.43%100.00%88.40%98.60%37.70%
3freq 2.098.57%1968.12.90%1.40%1.40%0.00%1.43%100.00%85.50%95.70%44.90%
4freq 2.098.57%1951.42.90%0.00%1.40%0.00%1.08%100.00%84.10%98.60%44.90%
1rep 1.094.29%2534.624.30%4.30%5.70%0.00%8.57%100.00%87.90%100.00%92.40%
2rep 1.087.14%2718.620.00%0.00%12.90%0.00%8.23%100.00%86.90%100.00%95.10%
3rep 1.091.43%2557.917.10%1.40%8.60%0.00%6.78%100.00%87.50%100.00%90.60%
4rep 1.087.14%2771.522.90%1.40%12.90%0.00%9.30%100.00%85.20%100.00%88.50%
1rep 1.0594.29%2251.17.10%0.00%5.70%0.00%3.20%100.00%83.30%100.00%84.80%
2rep 1.0595.71%2243.58.60%0.00%4.30%0.00%3.23%100.00%89.60%100.00%88.10%
3rep 1.0598.57%2087.911.40%1.40%1.40%0.00%3.55%100.00%85.50%100.00%92.80%
4rep 1.0595.71%2285.417.10%2.90%4.30%0.00%6.08%100.00%89.60%100.00%88.10%
1rep 1.1100.00%2035.814.30%4.30%0.00%0.00%4.65%100.00%91.40%98.60%85.70%
2rep 1.1100.00%194915.70%0.00%0.00%0.00%3.93%100.00%85.70%100.00%82.90%
3rep 1.1100.00%1827.612.90%2.90%0.00%0.00%3.95%100.00%91.40%100.00%78.60%
4rep 1.198.57%1988.57.10%0.00%1.40%0.00%2.12%100.00%87.00%100.00%81.20%
1rep 1.3100.00%1641.31.40%8.60%0.00%0.00%2.50%100.00%87.10%80.00%68.60%
2rep 1.398.57%1711.90.00%8.60%1.40%0.00%2.50%100.00%91.30%75.40%59.40%
3rep 1.3100.00%1654.80.00%5.70%0.00%1.40%1.78%100.00%88.60%77.10%61.40%
4rep 1.3100.00%1509.30.00%5.70%0.00%0.00%1.43%100.00%90.00%78.60%61.40%

페널티는 temperature 0.7 에서 완주를 확실히 끌어올리는 레버로 확인됐다. freq 0.0→0.5 만으로 완주율이 90%→99.6%, penalty 가 7.0%→2.0%로 떨어짐. 다만 강도에 비례해 sounds 커버리지가 함께 줄어들며(88%→79%→65%→43%), 이 감소가 잉여 제거인지 정보 삭제인지는 수치만으로 판정할 수 없음.

핵심 지표 비교 표

평가 지표기준 (freq 0.0)freq 0.5 (후보)freq 2.0rep 1.3
완주율(ok)90.0%99.6%98.6%99.6%
페널티(penalty)7.0%2.0%2.0%2.0%
sounds 커버리지88%79%43% (붕괴)63% (붕괴)
이종문자(foreign)0.7%0.4%2.5%7.2% (폭발)

1. 효익: 완주·반복 제동

  • 완주율 정상화

    • freq 0.5 만으로 ok 90%→99.6%, finish_len 10%→0.4%, penalty 7.0%→2.0%. 4회 모두 재현.
  • 반복 억제·지연 단축

    • repeat 17%→7%(freq 0.5)→5%(freq 1.0). 출력이 짧아지며 infer_ms 도 2589→2012ms 로 단축

2. 대가: 청각 정보(sounds)의 동반 감소

  • 강도에 비례한 감소

    • sounds 커버리지가 88%→79%(0.5)→65%(1.0)→43%(2.0)로 무너짐
  • 해석 불가의 벽

    • '잉여 제거(좋음)'인지 '정보 삭제(나쁨)'인지는 구분할 수 없음
  • (참고: summary·actions 는 전 구간 ~100%, ocr 도 85~89%로 유지)

3. Repetition Penalty의 신규 결함: 이종문자 유발

  • 용량-반응성 foreign
    • rep 계열은 강도를 올릴수록 이종문자가 늘어남.
노트

💾 frequency Penalty 0.5 후보 · repetition Penalty 제외 temp 0.7 baseline 은 완주 90%, finish_len 10%로 깨끗하지 않지만 freq 0.5 가 완주를 99.6%까지 끌어올린다. 다만 sounds 커버리지 감소의 손익은 정답지 없이 판정 불가하다. repetition penalty 는 이종문자를 유발해 제외.

5. 정리 및 요약

파라미터 특성은 세 유형으로 갈린다. 초기 최적·후기 붕괴형(penalty, 조금은 약·과하면 독), 중기 최적형(temperature·top_k, 가운데가 최적), 후기 최적형(top_p, 한쪽 끝이 최적). 각 축의 구간 특성은 회차 평균 기준 아래와 같다.

파라미터별 특성 구간

파라미터특성구간별 특성결론
temperature중기 최적형0.0~0.3 정체(ok ~83%·foreign 0) 0.3~0.7 개선 (penalty 7.5% 최저) 0.7~1.0 완주↑·foreign 35% 폭발·penalty 2배0.7 확정 · 0.3 정밀도 비교는 안전장치
top_k중기 최적형k=1 과조임(ok 82%·finish 18%) k≈10 정점 (ok 92.5%·penalty 6.7%) k=50~무제한 완만 후퇴(ok 88~91%)기본값 -1 · k=10 후보
top_p후기 최적형0.5 최악(ok 79%·finish 21%) 0.8~0.95 점진 개선(ok 85→87.5%) 1.0 최선 (ok 90%·finish 10%), 내부 정점 없음1.0 (off)
frequency_penalty초기 최적·후기 붕괴형0~0.5 급개선 (ok 90→99.6%·penalty 7→2%) 0.5~1.0 순응 포화(이득 노이즈)·sounds 79→65% 1.0~2.0 붕괴(sounds 43%)0~0.5 후보 · >1.0 손해
repetition_penalty초기 최적·후기 붕괴형1.0~1.1 완주 개선(ok 90→99.6%) 1.1~1.3 foreign 1.8→7.2%·actions 100→78% 붕괴제외

1. 완주율은 Temperture의 수렴구간 존재

  • greedy(0.0)가 최약

    • 완주 83%(≈58/70)·미완(finish_len) 17%, 반복 루프에 갇혀 max_tokens 까지 폭주.

    • temp 0.7은 88%(≈61/70)·12.5% 로 최적 포인트.

    • 현 서빙에서는 동일 설정이 회차마다 출렁여, 저온의 이점이라던 '안정성' 보장 안됨

  • High Temperature의 대가는 이종문자

    • 1.0에서만 35%로 폭발, 0.0~0.7은 0~0.35% 산발

    • penalty 가 가장 낮은(7.5%) 균형점은 temperature 0.7 이였음.

2. 반복 개선은 Frequency Penalty 파라미터가 핵심

  • 완주 개선 확인

    • freq 0.5가 의 완주를 90% → 99.6%

    • penalty 를 7.0% → 2.0%로 개선함

  • 대가는 sounds 커버리지

    • 강도에 비례해 88% → 43%로 감소하나, 잉여 제거인지 정보 삭제인지는 정답지 없이 판정 어려움

6. 결론

출력만으로 판정 가능한 것 의 경계까지 OFAT 로 좁혔다. 확정한 값과 미세조정 구간은 아래와 같다.

파라미터결론상태
temperature0.7 — greedy 폭주·1.0 이종문자 동시 회피 (추후 개선 여지)확정
top_p / top_k1.0 / -1 유지 (top_k 10 완주 후보)확정
frequency penalty0~0.5 — 완주·반복 동시 개선, 단 sounds 감소구간
repetition penalty이종문자 유발제외

다음 문서에서는 확정값을 출발점으로, 구간(frequency penalty·top_k·temperature)과 OFAT 가 드러낸 수치 특성을 종합해 최종값을 정한다.