@@ -20,16 +20,25 @@ SceneMaker 의 6초 클립 분석은 시청각 정보를 `{summary, ocr, actions
2020| frequency penalty | 0\~ 0.5 구간 (완주·반복 개선, 단 sounds 감소) |
2121| repetition penalty | 제외 (이종문자 유발) |
2222
23- OFAT 는 한 축만 본다. 그러나 실제 운영값은 ** 여러 축을 동시에** 적용한다. 본 편은 2편이 좁힌 후보들을 ** 조합** 해, 단독 효과가 겹칠 때의 거동을 확인하고 ** 최적 샘플링 구성 ** 을 확정한다. 확정한 구성은 이후 미세조정으로 다듬는다 .
23+ OFAT 는 한 축만 본다. 그러나 실제 운영값은 ** 여러 축을 동시에** 적용한다. 본 편은 2편이 좁힌 후보들을 ** 조합** 해, 단독 효과가 겹칠 때의 거동을 확인하고 최적 구성을 확정한다.
2424
25- 조합 평가는 2편과 동일하게 ** 출력만으로 판정 가능한 축** 으로 한다. 완주율·degeneration(이종문자·미완·반복)·커버리지·추론 비용. 내용 정확성(환각·완전성)은 자동 채점 대상이 아니며 본 편 범위 밖이다.
25+ 단, ** 프롬프트와 샘플링을 동시에 바꾸면 효과가 교란** 된다. 그래서 한 번에 하나씩, ** 두 단계로 분리** 한다.
26+
27+ 1 . ** 샘플링 조합** : 2편과 ** 같은 프롬프트** 를 고정하고 샘플링 파라미터만 조합해 최선 샘플링을 찾는다.
28+ 2 . ** 프롬프트 조합** : 1단계 최선 샘플링 위에 프롬프트를 손봐 최종 구성을 확정한다.
29+
30+ 조합 평가는 2편과 동일하게 ** 출력만으로 판정 가능한 축** 으로 한다. 완주율·degeneration(이종문자·미완·반복)·커버리지·추론 비용.
2631
2732## 2. 실험 설계
2833
29- ### 2.1. 고정 · 변동
34+ ### 2.1. 두 단계 구성
3035
31- - ** 고정** : temperature 0.7 · top_p 1.0 · repetition penalty off · max_tokens 512 · ` media_io_kwargs.video.fps ` 0.5 · 오디오 on · 동일 70클립(7장르 × 10) · 동일 프롬프트 · 4필드 strict 스키마
32- - ** 변동(조합 축)** : frequency penalty {0, 0.3, 0.5} × top_k {-1, 10}
36+ | ** 단계** | ** 고정** | ** 변동** | ** 목적** |
37+ | --- | --- | --- | --- |
38+ | 1단계(샘플링 조합) | 2편 프롬프트 · temp 0.7 · top_p 1.0 · rep off · fps 0.5 | frequency penalty {0, 0.3, 0.5} × top_k {-1, 10} | 최선 샘플링 도출 |
39+ | ** 2단계(** 프롬프트 조합) | 1단계 최적 샘플링 | 프롬프트 (구조·개수 한도 등) | 최종 구성 확정 |
40+
41+ 공통 고정: max_tokens 512 · 오디오 on · 동일 70클립(7장르 × 10) · 4필드 strict 스키마.
3342
3443### 2.2. 출력 스키마 (4필드)
3544
@@ -42,36 +51,98 @@ OFAT 는 한 축만 본다. 그러나 실제 운영값은 **여러 축을 동시
4251| ` actions ` (array) | 행동·움직임·장면 전환 |
4352| ` sounds ` (array) | 대사를 제외한 배경음·효과음 |
4453
45- ### 2.3. 조합 셀 (2 × 3)
54+ ### 2.3. 측정 지표
55+
56+ 2편과 동일한 출력 기반 지표로 평가한다.
57+
58+ | ** 지표** | ** 정의** |
59+ | --- | --- |
60+ | ` ok ` / ` fail ` | 스키마 통과 / 실패 레코드 수 (완주율) |
61+ | ` infer_ms ` | 클립당 추론 시간 (비용·20분 예산) |
62+ | ` penalty ` | (` repeat ` + ` finish_length ` + ` foreign ` + ` replacement ` ) ÷ 4 |
63+ | ` field ` | (` summary ` + ` ocr ` + ` actions ` + ` sounds ` ) ÷ 4 |
64+
65+ ## 3. 샘플링 조합
66+
67+ ### 3.0. 테스트 데이터 및 실행
4668
47- 2편·2.5편이 객관적으로 정한 값만 교차한다. frequency penalty 3수준 × top_k 2수준 = 6 셀.
69+ 표본·프롬프트·준비 절차 모두 ** 2편과 동일** 하다. 7장르 × 카테고리당 10클립 = 고정 70클립(` make_sample.py ` 가 원본 mp4 를 재인코딩 없이 symlink 로만 ` data/sample70/ ` 에 모은다), 프롬프트는 2편 것을 그대로 쓴다. 6 조합 모두 같은 입력을 본다.
70+
71+ 실행은 ` experiments/03_param_combo/ ` 에서 ` bash sweep.sh 3 ` (6 조합 C1\~ C6 × 3회차 누적 → N=3) 후 ` python analyze.py ` (회차평균 표 집계) 한 줄로 돌린다. ` sweep_out/ ` 다음 회차는 자동 누적.
72+
73+ ### 3.1. 조합
74+
75+ 2편이 객관적으로 좁힌 값만 교차한다 (frequency 0\~ 0.5 구간, top_k -1/10). frequency penalty 3수준 × top_k 2수준 = 6 조합.
4876
4977| | ** top_k -1** | ** top_k 10** |
5078| --- | --- | --- |
5179| ** freq 0** | C1 (2편 baseline) | C4 |
5280| ** freq 0.3** | C2 | C5 |
5381| ** freq 0.5** | C3 | C6 |
5482
55- ### 2.4. 측정 지표
83+ ### 3.2. 결과
5684
57- 2편과 동일한 출력 기반 지표로 평가한다 .
85+ 6 조합 회차 평균(N=3 · 각 조합 70클립). 2편과 같은 프롬프트·표본에서 ** freq 가 완주 레버 ** 임을 재현. freq 0→0.3 에서 완주 90.5→99.5%, finish_length 9.5→0.5%. ** 1단계 최선 = C2 (freq 0.3 · top_k -1) ** .
5886
59- | ** 지표** | ** 정의** |
60- | --- | --- |
61- | ` ok ` / ` fail ` | 스키마 통과 / 실패 레코드 수 (완주율) |
62- | ` infer_ms ` | 클립당 추론 시간 (비용·20분 예산) |
63- | ` penalty ` | (` repeat ` • ` finish_length ` • ` foreign ` • ` replacement ` ) ÷ 4 — degeneration 종합 |
64- | ` field ` | (` summary ` • ` ocr ` • ` actions ` • ` sounds ` ) ÷ 4 — 정보 커버리지 |
87+ | ** 조합** | ** freq** | ** top_k** | ** 완주(ok)** | infer_ms | ** penalty** | ** field** |
88+ | --- | --- | --- | --- | --- | --- | --- |
89+ | C1 | 0 | -1 | 90.5% | 2719 | 6.2% | ** 95.6%** |
90+ | ** C2 (최선)** | ** 0.3** | ** -1** | ** 99.5%** | 2080 | 3.2% | 93.7% |
91+ | C3 | 0.5 | -1 | 99.0% | 1936 | ** 2.6%** | 90.6% |
92+ | C4 | 0 | 10 | 89.5% | 2695 | 8.0% | 94.9% |
93+ | C5 | 0.3 | 10 | 100% | 2022 | 2.7% | 93.3% |
94+ | C6 | 0.5 | 10 | 100% | 1966 | 2.9% | 91.8% |
95+
96+ <details >
97+ <summary >📊 회차별 히스토리 (N=3 · 조합별 1·2·3회)</summary >
98+
99+ | ** 회차** | ** 조합** | ok/fail | infer_ms | repeat | finish_len | foreign | penalty | field |
100+ | --- | --- | --- | --- | --- | --- | --- | --- | --- |
101+ | 1 | C1 (f0·k-1) | 65/5 | 2743 | 20.0% | 7.1% | 1.4% | 7.1% | 94.6% |
102+ | 2 | C1 (f0·k-1) | 64/6 | 2528 | 12.9% | 8.6% | 0.0% | 5.4% | 94.9% |
103+ | 3 | C1 (f0·k-1) | 61/9 | 2887 | 11.4% | 12.9% | 0.0% | 6.1% | 97.1% |
104+ | 1 | C2 (f0.3·k-1) | 69/1 | 2110 | 14.3% | 1.4% | 1.4% | 4.3% | 93.1% |
105+ | 2 | C2 (f0.3·k-1) | 70/0 | 2110 | 8.6% | 0.0% | 1.4% | 2.5% | 94.7% |
106+ | 3 | C2 (f0.3·k-1) | 70/0 | 2021 | 11.4% | 0.0% | 0.0% | 2.9% | 93.2% |
107+ | 1 | C3 (f0.5·k-1) | 69/1 | 1986 | 5.7% | 1.4% | 0.0% | 1.8% | 91.0% |
108+ | 2 | C3 (f0.5·k-1) | 70/0 | 1889 | 11.4% | 0.0% | 0.0% | 2.9% | 90.0% |
109+ | 3 | C3 (f0.5·k-1) | 69/1 | 1932 | 11.4% | 1.4% | 0.0% | 3.2% | 91.0% |
110+ | 1 | C4 (f0·k10) | 61/9 | 2721 | 18.6% | 12.9% | 0.0% | 7.9% | 94.2% |
111+ | 2 | C4 (f0·k10) | 66/4 | 2539 | 15.7% | 5.7% | 0.0% | 5.3% | 95.5% |
112+ | 3 | C4 (f0·k10) | 61/9 | 2825 | 27.1% | 12.9% | 2.9% | 10.7% | 95.1% |
113+ | 1 | C5 (f0.3·k10) | 70/0 | 2053 | 12.9% | 0.0% | 1.4% | 3.6% | 93.2% |
114+ | 2 | C5 (f0.3·k10) | 70/0 | 2075 | 7.1% | 0.0% | 0.0% | 1.8% | 93.2% |
115+ | 3 | C5 (f0.3·k10) | 70/0 | 1938 | 11.4% | 0.0% | 0.0% | 2.9% | 93.6% |
116+ | 1 | C6 (f0.5·k10) | 70/0 | 1929 | 8.6% | 0.0% | 0.0% | 2.1% | 91.0% |
117+ | 2 | C6 (f0.5·k10) | 70/0 | 1959 | 12.9% | 0.0% | 0.0% | 3.2% | 93.2% |
118+ | 3 | C6 (f0.5·k10) | 70/0 | 2009 | 11.4% | 0.0% | 1.4% | 3.2% | 91.1% |
119+
120+
121+ </details >
122+
123+ ### 3.3. 분석
124+
125+ #### 1. frequency 가 완주 레버
126+
127+ freq 0→0.3 에서 완주 90.5→99.5%, finish_length 9.5→0.5%, penalty 6.2→3.2% (매 회차 재현). 2편의 단일축 결론이 같은 프롬프트·표본에서 그대로 확인됐다. top_k 10 단독(C4)은 완주를 못 살린다(89.5%). 완주는 freq 의 몫이다.
128+
129+ #### 2. top_k 는 무승부
130+
131+ freq≥0.3 에서 top_k -1 vs 10 차이(C2 vs C5)는 완주 99.5 vs 100%(1클립)·penalty 뒤섞임·커버리지 동일로 전부 회차 jitter 범위다. 기본값 ** -1 유지** .
132+
133+ #### 3. 커버리지 — 유일하게 일관된 trade, 판정 불가
134+
135+ freq 를 올리면 커버리지가 단조 감소한다(95.6→93.7→90.6%, 매 회차 재현). 이 감소가 ** 잉여 제거(좋음)인지 정보 삭제(나쁨)인지는 정답지 없이 가릴 수 없다.**
65136
66- ## 3. 결과
137+ #### 1단계 최선 샘플링
67138
68- > ⏳ 테스트(C1 \~ C6 · 회차 누적) 후 작성 — 조합별 완주·degen·비용·커버리지
139+ 완주·penalty 가 포화된 freq≥0.3 구간에서 조합을 가르는 건 커버리지뿐이고, freq 0.3 이 0.5 보다 일관되게 우세하다(top_k 는 무승부). 1단계 최선은 ** temp 0.7 · frequency 0.3 · top_p 1.0 · top_k -1 · rep off ** 이며, 이 위에서 2단계(프롬프트 조합)를 진행한다.
69140
70- ## 4. 분석
141+ ## 4. 2단계 — 프롬프트 조합
71142
72- > ⏳ 테스트 후 작성 — frequency × top_k 상호작용 · 최적 셀 · 최적 샘플링 구성 도출
143+ > ⏳ 1단계 최선 샘플링 확정 후 진행(가장 나중) — 프롬프트 변경의 완주·degen·커버리지 효과 측정
73144
74145## 5. 결론
75146
76- > ⏳ 테스트 후 작성 — 최적 샘플링 구성 확정 · 미세조정 방향 · 운영(vision-cognition) 핸드오프
147+ > ⏳ 두 단계 종합 후 작성 — 최종 샘플링·프롬프트 구성 확정 · 미세조정 방향 · 운영(vision-cognition) 핸드오프
77148
0 commit comments