Skip to content

Commit 31db8ac

Browse files
committed
chore: Notion 동기화 2026-06-27 17:00
1 parent ed2fd21 commit 31db8ac

2 files changed

Lines changed: 25 additions & 29 deletions

File tree

docs/poc/.notion-sync.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
},
3030
"373e15b4-0359-8150-88f3-eedc5ebd727b": {
3131
"file": "docs/poc/vision-bench/2편-추론-파라미터-튜닝-qwen3-omni-6초-클립-분석-ofat-스윕.md",
32-
"last_edited": "2026-06-27T07:00:00.000Z",
33-
"content_hash": "57c5e64f3006b49dae24789b3f2d0c19423be9718c9a108b515d12e449c37c08",
32+
"last_edited": "2026-06-27T07:22:00.000Z",
33+
"content_hash": "2543485e1804d0ba14a3b1b0ba92e1f39657b09cf04cb2fd7cd139368c63de2a",
3434
"order": 3,
3535
"parent_id": "vision-bench"
3636
},

docs/poc/vision-bench/2편-추론-파라미터-튜닝-qwen3-omni-6초-클립-분석-ofat-스윕.md

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -85,40 +85,38 @@ SceneMaker의 클립 영상 분석은 영상에 포함된 **시각·청각 정
8585
📌 `frequency_penalty` **vs** `repetition_penalty` → 둘 다 반복을 억제하지만 방식이 다르다.
8686

8787
- **frequency** (가산·빼기) : 이미 **많이** 나온 토큰일수록 **** 패널티(횟수 비례·누적) → 반복 (`공 공 공…` ) 제동에 강함. **출력 토큰만** 카운트.
88-
- **repetition** (곱셈·나눔) : 한 번이라도 나오면 **일정 비율** 로 깎음(등장 여부만, 횟수 무관). vLLM 은 **프롬프트 + 출력** 모두 보므로 프롬프트 어휘까지 억제될 수 있음(recall 손실 소지↑).
89-
- ⚠️ 둘 다 켜면 **2중 억제(과함)**
88+
- **repetition** (곱셈·나눔) : 한 번이라도 나오면 **일정 비율** 로 깎음(등장 여부만, 횟수 무관). vLLM 은 **프롬프트 + 출력** 모두 보므로 프롬프트 어휘까지 억제될 수 있음.
89+
- ⚠️ 둘 다 켜면 **2중 과한 억제로 작용한다.**
9090
:::
9191

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

94-
본 실험은 아래 출력 계약을 **변경 없이 고정** 한 채 파라미터만 흔든다(프롬프트도 동일). 응답은 **정확히** `{summary, objects, ocr, actions, bgm, sfx}` **6 필드** 로 고정한다
94+
본 실험은 아래 출력 계약을 **변경 없이 고정** 한 채 파라미터만 흔든다. 응답은 **정확히** `{summary, ocr, actions, sounds}` **4필드** 로 고정한다
9595

9696
- vLLM `response_format=json_schema(strict=True)`
9797
- pydantic `extra="forbid"`
9898

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

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

103103
| **필드** | **정의 및 가이드** |
104104
| --- | --- |
105105
| `summary` (string) | 시각·청각을 종합한 한국어 한 문장 요약. 개별 필드의 표현을 그대로 복사 금지. |
106-
| `objects` (array of string) | 영상 속 핵심 객체·인물 명사 키워드 (중복 없이, 각 항목 3 어절 이내). 화면 텍스트는 `ocr` 로. |
107-
| `ocr` (array of string) | 화면에 보이는 텍스트(자막·로고·표지)를 원문 그대로. |
106+
| `ocr` (array of string) | 화면에 보이는 텍스트를 원문 그대로. |
108107
| `actions` (array of string) | 영상에서 일어나는 행동·움직임·장면 전환 동사구 (중복 없이). |
109-
| `bgm` (array of string) | 배경음·음악·전반적 분위기. |
110-
| `sfx` (array of string) | 이산 효과음 (박수·타이핑·발소리 등). |
108+
| `sounds` (array of string) | 대사를 제외한 효과음 (박수·타이핑·발소리 등). |
111109

112110
:::note
113-
🎙️ 대사(발화) 전사는 별도 WhisperX 오디오 모듈이 담당하므로 본 스키마에서 제외한다. 모델은 오디오를 듣되(`use_audio_in_video` on) 받아쓰지 않고 비-발화 사운드스케이프(`bgm` ·`sfx` )만 기술한다.
111+
🎙️ 대사(발화) 전사는 별도 WhisperX 오디오 모듈이 담당하므로 본 스키마에서 제외한다. 모델은 오디오를 듣되(`use_audio_in_video` on) 받아쓰지 않고 비-발화 사운드스케이프(`sounds` )만 기술한다.
114112
:::
115113

116114
## 3. 방법론
117115

118116
### 3.1. 표본과 설계
119117

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

124122
:::note
@@ -128,34 +126,32 @@ SceneMaker 프로젝트에서 **대사(STT)분석은 WhisperX의** 별도 모듈
128126
- **greedy(그리디 디코딩)** : 매 스텝 확률이 가장 높은 토큰 하나만(argmax) 고르는 디코딩. `temperature=0` 이 곧 greedy 이며, 무작위성이 없어 같은 입력 → 같은 출력(결정론적)이다. 반대는 확률에 따라 후보를 흩어 뽑는 **샘플링** (`top_k` ·`top_p` ·`temperature` ).
129127
:::
130128

131-
### 3.2. 무엇을 정답지 없이 잴 수 있나 순응 vs 품질
129+
### 3.2. 무엇을 정답지 없이 잴 수 있나. 순응 vs 품질
132130

133-
본 실험에서는 **정답지 없이 판정 가능한 것만** 다룬다. 출력 품질은 두 층위로 갈리는데, 그 경계가 곧 1단계와 다음 단계의 분담선이다.
131+
본 실험에서는 **정답지 없이 판정 가능한 것만** 다룬다.
134132

135-
| **구분** | **판정 대상** | **정답지** | **어디서** |
136-
| --- | --- | --- | --- |
137-
| **순응 (adherence)** | 한국어인가 · JSON 형식 맞나 · 항목이 짧은가 · 반복 없나 (전부 *프롬프트가 명시한 규칙* ) | 불필요 | **본 문서 (1단계)** |
138-
| **품질 (quality)** | 완전성(빠뜨린 것 없나) · 정확성(환각 없나) | **필요** | **다음 단계 (Gemini 목적함수)** |
133+
| **구분** | **판정 대상** | **정답지** |
134+
| --- | --- | --- |
135+
| **순응 (adherence)** | 한국어인가 · JSON 형식 맞나 · 항목이 짧은가 · 반복 없나 | 불필요 |
136+
| **품질 (quality)** | 완전성(빠뜨린 것 없나) · 정확성(환각 없나) | **필요** |
139137

140-
순응은 프롬프트가 명시한 규칙이라 출력만 보고 판정할 수 있다. 반면 품질은 "정답"이 있어야 평가 가능함. **순응은 필요조건이지 충분조건이 아니라** 경계가 깔끔히 나뉜다. 규칙을 지켰다고 내용이 옳은 건 아니지만, 규칙을 먼저 잡고 후에 품질을 개선한다.
138+
순응은 프롬프트가 명시한 규칙이라 출력만 보고 판정할 수 있다. 반면 품질은 "정답"이 있어야 평가 가능함. **순응은 필요조건** 이지 **충분조건이 아니라** 경계가 깔끔히 나뉜다. 규칙을 지켰다고 내용이 옳은 건 아니지만, 규칙을 먼저 잡고 후에 품질을 개선한다.
141139

142140
### 3.3. 측정 지표
143141

144-
1편에서 식별된 네 가지 품질저하 패턴(**조기 종료·붕괴·반복·추론 시간 편차** )을 **정답지 없이 출력만으로** 탐지·정량화하기 위해, 각 설정의 70개 출력에서 아래 지표를 집계한다. 각 지표는 위 이상현상 중 하나 이상을 겨냥하며, 모두 단일 패스(n=70)로 안정적으로 잡히는 순응·형태 지표이며, `fields` ·`score` (repeat·degen)는 0\~1 소수 비율(1.0=100%)로 떨어진다.
142+
네 가지 품질저하 패턴을 **정답지 없이 출력** 만으로 탐지·정량화하기 위해 아래 지표를 집계한다. 각 지표는 위 이상현상 중 하나 이상을 겨냥한다. `fields` ·`score` (repeat·degen)는 0\~1 비율(1.0=100%)로 환산해 비율로 확인한다.
145143

146144
| **지표** | **정의** | **무엇을 보나** |
147145
| --- | --- | --- |
148146
| `ok` / `fail` | 스키마 통과 / 실패 레코드 수 (/70) | 형식 순응 · 조기 종료 |
149147
| `inference_ms` (avg·p50·p95·min·max) | 클립당 추론 시간(ms) | 추론 시간 편차 |
150-
| `fields` | 필드별 '값이 있는' 비율 (`summary` ·`objects` ·`ocr` ·`actions` ·`bgm` ·`sfx` , ok 기준) | 정보 커버리지 |
151-
| `score.repeat` | 배열 안에 같은 항목이 그대로(exact) 중복된 레코드 비율 — 유사·부분포함(near-dup)은 미측정이라 실제 반복의 **하한** | 반복 |
152-
| `score.degen` | 붕괴 신호별 비율 — `foreign` (종문자) · `finish_length` (max_tokens 도달=미완·탈주) · `replacement` (깨진 멀티바이트) | 붕괴 |
153-
154-
`score.repeat` ·`score.degen` 은 레코드별 `flags` (signals)를 집계한 값이라 **지표 계산과 디버깅(어느 클립이 깨졌는지)이 같은 소스** 다. 그리고 측정한 이상현상은 **처방이 갈린다** — 배열 내 exact-중복(`repeat` )은 후처리(dedup)로 **무손실 제거** 되지만, 이종문자·미완 같은 **붕괴(** `degen` **)는 후처리로 복원 불가 → 생성 단계(파라미터)에서 막아야** 한다. 이 구분이 뒤의 파라미터 효과·결론 절에서 "무엇을 파라미터로 풀고 무엇을 후처리로 푸나"를 가른다. 단 붕괴는 드물게 터지는 희귀사건이라 n=70 단일 패스의 빈도는 참고로 본다.
148+
| `fields` | 필드별 '값이 있는' 비율 (`summary` ·`ocr` ·`actions` ·`sounds` ) | 정보 커버리지 |
149+
| `score.repeat` | 배열 안에 같은 항목이 그대로 중복된 레코드 비율. | 반복 |
150+
| `score.degen` | 붕괴 신호별 비율. `foreign` (이종문자) · `finish_length` (max_tokens 도달=미완·탈주) · `replacement` (깨진 멀티바이트) | 붕괴 |
155151

156-
## 4. 파라미터별 효과
152+
## **4. 파라미터별 효과**
157153

158-
본 절에서 한 번에 하나씩(OFAT) 흔든 대상 파라미터다. 괄호는 격리용 anchor.
154+
본 절에서 한 번에 하나씩(OFAT) 흔든 대상 파라미터다.
159155

160156
- `temperature` : 0.0 / 0.3 / 0.7 / 1.0
161157
- `top_k / top_p`
@@ -171,7 +167,7 @@ SceneMaker 프로젝트에서 **대사(STT)분석은 WhisperX의** 별도 모듈
171167
- `fps` : 0.5 / 1.0 / 2.0 (별도 측정 · 토큰/지연)
172168
- `enable_thinking` : True / False (**별도 측정** · 품질/지연)
173169

174-
본 절의 판정 기준은 "표현이 풍부한 설정"이 아니라 **"명백한 결함(미완·이종문자·반복·탈주)이 최소인 설정"** 이다. 커버리지·항목 수 증가는 환각(과생성)일 수 있어 가산점으로 치지 않는다 — 표현이 다소 부족해도 정확한 쪽을 택하며, 그 판정(환각 여부)은 정답지가 있는 다음 단계의 몫이다.
170+
본 절의 판정 기준은 "표현이 풍부한 설정"이 아니라 **"명백한 결함(미완·이종문자·반복·탈주)이 최소인 설정"** 이다. 커버리지·항목 수 증가는 환각(과생성)일 수 있어 가산점으로 치지 않는다.
175171

176172
### 4.0. 테스트 데이터 준비
177173

0 commit comments

Comments
 (0)