GPU 고정(Pinning) 문제 해결과 Gemma의 메타 코멘터리(Meta-Commentary) 대응
요약
LiteLLM의 전역 설정 문제와 GPU 고정(Pinning) 오류를 해결하여 모델 라우팅 및 GPU 자원 할당의 안정성을 확보했습니다. 또한 Gemma 모델의 메타 코멘터리가 제목으로 유출되는 현상을 방지하기 위한 필터링 로직을 강화했습니다.
핵심 포인트
- LiteLLM의 api_base 전역 설정 우선순위 문제를 해결하여 모델별 오버라이드 구현
- Windows 환경에서 GPU UUID를 사용하여 CUDA 장치 할당의 신뢰성 확보
- Ollama의 Vulkan 백엔드 이슈를 해결하여 특정 GPU(RTX 5090) 점유 문제 방지
- Gemma의 내부 계획 노트가 제목으로 유출되는 것을 막기 위한 주제 건전성 검증 추가
- 쉘 스크립트의 반환 코드(rc) 캡처 오류를 수정하여 백업 실패 감지 개선
2026-07-03에 배포된 내용
우리는 오늘 fix(llm): stop setting litellm.api_base global (PR #2082)을 시작으로 GPU 오케스트레이션(orchestration) 내의 유령과 싸우며 시간을 보냈습니다. 우리는 비전(vision) 작업을 전용 레일로 라우팅하기 위해 모델별 api_base 오버라이드(override)를 구현했지만, 요청들이 여전히 기본 포트로 접속되어 우리의 RTX 5090에 qwen3-vl을 콜드 로딩(cold-loading)하고 있었습니다. 원인은 LiteLLM 1.89.2였습니다. 이 버전의 내부 로직은 모듈 전역(global) 설정인 litellm.api_base가 호출 시 전달되는 kwargs보다 우선하도록 되어 있었습니다. 오버라이드가 실제로 작동하게 하려면 전역 할당을 완전히 제거해야만 했습니다.
이는 GPU 1에 고정(pinned)된 두 번째 Ollama 인스턴스와 관련된(PR #2075) 좌절스러운 퍼즐의 마지막 조각이었습니다. 목표는 간단했습니다. gemma 라이터(writer)가 qwen3-vl을 퇴거(evicting)시켜 qa.vision 타임아웃을 유발하는 것을 방지하는 것이었습니다. 하지만 '고정(pinned)' 상태에 도달하는 과정은 장애물 경기와 같았습니다. 먼저, 스케줄된 작업(scheduled-task) 프로세스들이 HKCU 사용자 환경 변수를 상속받지 못해 모델 디렉토리가 404 오류를 일으킨다는 것을 발견했습니다 (PR #2076). 그다음으로, Windows 환경에서 CUDA_VISIBLE_DEVICES의 숫자 인덱스가 신뢰할 수 없다는 것이 증명되었습니다. 모델이 3090에 안착하도록 보장하기 위해 GPU UUID로 전환해야 했습니다 (PR #2077). 그럼에도 불구하고, Ollama 0.31의 기본 Vulkan 백엔드(backend)가 CUDA 고정(pin)을 무시하고 5090을 점유해 버렸습니다. 우리는 결국 OLLAMA_VULKAN=false를 설정함으로써 이를 확실히 제어했습니다 (PR #2078).
콘텐츠 측면에서는 Gemma의 "메타 코멘터리(meta-commentary)" 방언에 대한 방어 체계를 강화해야 했습니다 (PR #2084). 라이터의 계획 노트(예: "Focuses on specific metrics (TPS)...")가 실제 제목으로 유출되는 6월의 여러 행을 포착했습니다. 이를 방지하기 위해 생략된 주어 서술을 잡아내는 _META_LEADING_VERB_PREP_RE를 구현하였고, 탭 인제스트(tap ingest) 단계에서 evaluate_topic_sanity를 사용하여 주제 건전성(topic-sanity) 게이트를 추가했습니다 (PR #2081). 이를 통해 "점(dots)으로만 구성된" 헤드라인이나 디스틸러 센티넬(distiller sentinels)이 topic_pool에 진입하는 것을 원천 차단합니다.
또한 오프사이트 백업(offsite backups)에서 발생한 무음 실패(silent failure)를 포착했습니다 (PR #2079). 실제 restic 실패가 발생했음에도 불구하고 rc=0을 보고하는 경고가 발생했습니다. 이 버그는 전형적인 쉘 스크립팅(shell scripting)의 함정이었습니다. else 문이 없는 if 문 다음에 local rc=$?를 캡처하고 있었는데, 이는 우리가 반환 코드(return code)를 읽기 전에 0으로 재설정되었음을 의미합니다.
이러한 수정 사항들과 Grafana의 퍼블리싱 퍼널(publishing funnel)을 코호트 기반 통계(cohort-based stats)로 업그레이드한 것(PR #2069) 덕분에, 시스템이 훨씬 더 안정되었습니다. 이제 실제로 제자리에 유지되는 전용 비전 레일(vision rail)을 갖추게 되었으며, 파이프라인은 마침내 LLM의 내부 계획 노트(internal planning notes)를 인식하지 않게 되었습니다.
Poindexter가 오늘의 커밋(commits)과 PR로부터 자동 컴파일함. 작업 내용 확인: github.com/Glad-Labs/poindexter.
출처
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기