OntoPrune 프로젝트: 신경-기호 컨텍스트 가지치기를 통해 로컬 CPU에서 6.7배 빠른 TTFT 달성 (83~86% 토큰 절감 + 환각
요약
OntoPrune은 온톨로지 기반의 신경-기호 컨텍스트 가지치기(neuro-symbolic context pruning)를 수행하는 경량 미들웨어입니다. 이를 통해 대규모 소스 코드 컨텍스트에서 필요한 정보만 추출하여 LLM 입력 토큰을 획기적으로 줄이고, 로컬 CPU 환경에서도 TTFT와 총 생성 시간을 크게 단축시킵니다.
핵심 포인트
- 온톨로지 기반 가지치기로 입력 토큰을 최대 86% 절감합니다.
- CPU에서 TTFT를 6.7배 빠르게 달성하여 개발 생산성을 높입니다.
- API 환각 현상을 포착하고 계약 검증 기능을 제공합니다.
- Python 스텁 형태로 결과를 출력하여 사용하기 쉽습니다.
[Project] OntoPrune: neuro-symbolic context pruning을 이용한 로컬 CPU에서의 6.7배 빠른 TTFT 달성 (83-86% 토큰 절감 + 0% 환각)
Repository: https://github.com/vigmarcarlo/OntoPrune License: MIT
안녕하세요 r/LocalLLaMA!
만약 일반 하드웨어(CPU 전용 노트북이나 Ollama를 사용하는 미니 PC 등)에서 소형 코딩 모델(Qwen 2.5 Coder 1.5B/3B, Gemma 2B, DeepSeek Coder 등)을 실행한다면, 프롬프트 평가 병목 현상을 알고 계실 겁니다.
300줄 분량의 서비스 파일을 CPU에서 3B 모델에 입력하는 것만으로도 첫 토큰을 생성하는 데 22.4초(TTFT)가 걸렸습니다. 게다가, 더 작은 모델들은 너무 많은 노이즈 컨텍스트를 받으면 가짜 메서드를 자주 지어냅니다.
저는 이 문제를 해결하기 위해 OntoPrune을 만들었습니다. 이것은 상징적 컨텍스트 컴파일러 역할을 하는 경량의 100% 오프라인 Python 미들웨어입니다:
무엇을 하는가:
내부 온톨로지(ontology)를 사용하여 소스 코드를 인메모리 지식 그래프(knowledge graph)로 변환합니다.
SPARQL을 통해 편집 중인 함수와 실제로 상호 작용하는 클래스, 함수 및 인터페이스의 정확한 1-hop closure를 추출합니다.
가지치기된 그래프를 깨끗하고 타입이 지정된 Python 스텁으로 다시 렌더링합니다(~2,400개 이상 대신 약 400 토큰).
모델이 생성한 코드를 컨트랙트 AST(Abstract Syntax Tree)와 비교하여 API 환각 현상(hallucinations)을 포착합니다.
로컬 CPU에서의 벤치마크 (12코어, Ollama 스트리밍):
모델: qwen2.5-coder:3b
입력 토큰: 2,390 -> 406 토큰 (-83.0%)
TTFT (Time to First Token): 22.4초 -> 3.3초 (6.7배 빠름, 19.1초 절약!)
총 생성 시간: 59.9초 -> 16.5초 (-72.5%)
환각 현상: 전체 파일 컨텍스트에서 존재하지 않는 메서드 호출 1건을 환각했으나; OntoPrune은 유효하지 않은 호출이 0건이었습니다.
OntoPrune의 CPU 오버헤드: AST 파싱 + RDF 그래프 생성 + SPARQL 쿼리는 총 9.9ms가 소요됩니다.
Gemini 3.8 Flash (클라우드)에서도 테스트:
2,815 토큰 -> 393 토큰 (-86.0% 비용 절감).
주요 기능:
RDF 노출 없음: 사용자와 LLM은 일반적인 Python 시그니처 및 스텁과만 상호 작용합니다.
Model Context Protocol (MCP): ontoprune-mcp가 포함되어 있어 Cursor, Claude Desktop, Antigravity 또는 모든 에이전트에서 사용할 수 있습니다.
다중 모듈 해결(Multi-module resolution): 순환 종속성(circular dependencies)에 막히지 않고 파일 전반의 프로젝트 임포트를 추적합니다.
계약 검증(Contract verification): CI/CD 또는 CLI 파이프에서 환각된 API를 결정론적으로 플래그 지정합니다.
사용 방법:
pip install ontoprune # Ollama로 직접 연결하는 CLI 파이프: ontoprune translate services/order_service.py procesar_orden --format stubs | ollama run qwen2.5-coder:3b # 사용자의 장비에서 벤치마크 실행: python -m ontoprune.benchmark --file fixtures/sample_service.py --func procesar_orden --backend ollama --model qwen2.5-coder:3b
논문과 재현 가능한 코드는 모두 GitHub에 오픈 소스로 공개되어 있습니다: https://github.com/vigmarcarlo/OntoPrune
피드백, PR(Pull Request), 그리고 다양한 하드웨어에서의 벤치마크 실행은 언제나 환영합니다!
제출자 /u/vigmarcarlo
[링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기