모델 파일에는 그 모델을 어떻게 돌려야 하는지가 적혀 있습니다(RoPE 밑과 스케일링, soft-capping, sliding window, 채팅 템플릿). 이 선언이 엔진에 닿지 않아도 아무것도 실패하지 않고, 출력은 매끄럽게 틀립니다.
Hugging Face에서 가장 많이 받는 텍스트 생성 모델 300개의 설정을 vLLM 0.30이 하는 방식 그대로 만들어 봤습니다. 실행 때 rope_scaling 덮어쓰기(긴 문맥을 켜는 흔한 방법)가 해당하는 180개 중 64개가 경고 없이 다른 RoPE 밑으로 돕니다(36%). Transformers v5에서 이 대입이 rope_parameters를 통째로 바꿔 rope_theta가 사라지고, vLLM은 모델 파일에 기본값이 없으면 10000으로 돌아가기 때문입니다. RTX 4070 Ti 한 장에서 끝까지 재면 Llama-3.2-3B-Instruct의 GSM8K(앞 500문제)가 379 → 273, Qwen3-4B-Instruct-2507은 YaRN에서 183 → 175입니다. 상류에 보고했습니다(vLLM #58675, SGLang #41227).
같은 부류가 여럿입니다. Gemma 2의 soft-capping을 버리는 백엔드는 500문제 중 198문제의 답을 바꾸지만 GSM8K 점수는 3문제 차이라 평가로는 안 보입니다.
이 부류를 막는 작은 라이브러리 entail을 공개했습니다(pip install entail-ai, Apache-2.0). 파일이 이미 선언한 것을 읽어 엔진이 실제로 고른 값과 대조하고, 실측된 해소가 있으면 첫 토큰 전에 고치고, 없으면 알리고 실행은 잇습니다. 인기 모델 38개 × transformers/vLLM/SGLang 102회에서 출력은 entail 없는 실행과 모두 같았고 적재 비용 중앙값 0.7~0.9%, 틀린 경보 0입니다(첫 판 1.0.0은 17/81을 틀렸고 원인 다섯을 고쳐 기록에 남겼습니다). 실제 출력 버그 12건을 다시 돌려 재현된 8건 중 잡은 것은 없습니다. 커널 산술, 파서, 캐시 수명은 보는 곳 밖입니다.
- 글(영어): Your model files say how they must be run. Your engine doesn't always listen.
- 코드: GitHub - wwoosshh/Entail: Checks that what a model's files declare is what the inference engine runs (transformers, vLLM, SGLang, diffusers) · GitHub
- 측정 스크립트·프로토콜·원자료: GitHub - wwoosshh/entail-research: Research workspace behind entail: theory, design, roadmap, measurement scripts and result files (mostly Korean) · GitHub
- 내 모델 확인:
entail preflight --model <폴더> --engine vllm --list(GPU 불필요)
다른 하드웨어에서 정상 실행 스크립트를 돌린 결과가 있으면 알려 주시면 감사하겠습니다.