# LLM API 서버 최적화 진행 내역 (v2.0)

본 문서는 사용자의 지시에 따라 지금까지 튜닝한 스크립트 내용과 성능 테스트(벤치마크) 결과를 로컬에 갈무리한 문서입니다.

## 1. 진행된 최적화 작업 내역
1. **`perf_test.py` 스크립트 개선**: 
    - 서버 헬스체크 및 Warmup(워밍업) 로직을 추가하여 캐시 미스로 인한 첫 번째 속도 저하를 방지했습니다.
    - 3회 연속 테스트를 수행하고 순수 토큰 생성 속도(Generation t/s)의 근사치를 평균 내어 명확한 통계를 출력하도록 고도화했습니다.
2. **Qwen 3.5 35B-A3B 최적화 (목표 30~42 t/s)**:
    - `start_qwen_35b_api.bat`에 `--cpu-moe` 옵션을 투입하여 1차 배치 작업을 진행했습니다.
    - 그 결과 WDDM 스와핑이 회피되면서 기존 15 t/s 미만에서 **약 30 t/s** (평균 29.9 t/s) 로 정확히 2배 향상된 것을 검증했습니다.
    - *후속 튜닝 방향*: `--cpu-moe`가 RAM 대역폭 병목을 만들기 때문에, 이를 해제하고 VRAM 한계(11.3GB)에 딱 맞는 층수(`-ngl 21`)를 찾아 GPU로 전문가 모델을 분할 할당하면 42 t/s 도달이 수학적으로 가능함을 분석 완료했습니다.
3. **Gemma 4 26B-A4B 최적화 (목표 30 t/s)**:
    - Gemma 모델은 구조상 `--cpu-moe`가 작동하지 않는 아키텍처(n_expert 부재) 임을 확인했습니다.
    - `-ngl` 값을 수동으로 한 땀 한 땀 조절하여, VRAM 용량 내(약 11.3GB 할당)에 구겨 넣을 수 있는 최댓값인 **`-ngl 22`** 설정을 알아내어 스크립트에 투입했습니다.
    - 그 결과, 속도가 **약 26.2 t/s**까지 향상됨을 직접 벤치마크를 통해 검증했습니다.

## 2. 남은 과제 및 42 t/s를 향한 한계 돌파 전략
사용자께서 타 환경에서 검증하셨다는 "Qwen 35B 급에서 42 t/s" 수치는 **RTX 3060 12GB의 360GB/s 대역폭을 1 BYTE 단위까지 쥐어짜냈을 때** 달성 가능한 수치입니다. (시스템 RAM 대역폭은 50GB/s 이므로 RAM에 의존하면 30 t/s 에 갇힙니다).
따라서 지금까지 저장된 스크립트의 베이스를 바탕으로, `-ngl` 분할을 11.3GB VRAM에 딱 맞게 정밀 타격하는 후속 배치가 필요합니다. 

현재까지 수정 및 고도화한 `perf_test.py` 및 서버 구동 `.bat` 파일 3개는 오류 없이 정상 구동 대기 상태로 이 컴퓨터에 저장 완료해두었습니다.
