VLMEvalKit

LLM FrameworksCLIPython

★ 4,385주당 +14조회 4

무엇인가

VLMEvalKit은 대형 비전-언어 모델(LVLM)의 평가 파이프라인을 한 저장소에 모은 Python 패키지다. 패키지 이름은 vlmeval이며, 모델 추론과 답 생성, 채점, 결과 집계를 하나의 실행 흐름으로 묶는다. 벤치마크별 저장소와 모델별 평가 스크립트를 각각 관리하던 구조를 대체하는 자리에 있다.

어떻게 동작하나

모든 LVLM에 대해 생성 기반 평가(generation-based evaluation)를 채택한다. 모델이 자유 형식으로 답을 생성하면, 정확 일치(exact matching)와 LLM 기반 답 추출 두 경로로 채점한다. 모델 정의는 config.py에 등록하고, 추론 백엔드로 transformers, LMDeploy, VLLM을 쓴다. 예측 결과는 기본적으로 .xlsx 파일에 저장되며, PRED_FORMAT=tsv 환경변수로 TSV 저장으로 전환한다. 사고 모드 모델은 SPLIT_THINK=True를 켜면 ... 태그 안의 내용을 출력의 thinking 키로 분리한다.

무엇과 다른가

벤치마크마다 별도 저장소와 데이터 준비 스크립트를 요구하는 개별 평가 코드베이스와 달리, 모델과 벤치마크를 같은 인터페이스에 등록해 한 명령으로 실행한다. 채점도 규칙 기반 정확 일치에만 머물지 않고, can_infer_option과 can_infer_text가 판정을 LLM 선택지 추출기로 넘기는 경로를 둔다.

어떻게 쓰나

시작은 QuickStart 문서를 따른다. 새 모델은 config.py에 항목을 추가하고, 다중 노드 분산 추론은 모델 설정에 LMDeploy 또는 VLLM 플래그를 넣어 활성화한다. 비디오 벤치마크는 VLMEVALKIT_USE_MODELSCOPE 환경변수를 설정해 modelscope에서 내려받는다. 산출된 수치는 HuggingFace의 OpenVLM 리더보드와 공개 평가 기록에 대조할 수 있다.

전제와 한계

transformers 버전에 따라 일부 VLM이 동작하지 않는다. Qwen 계열, Monkey 계열, InternLM-XComposer 계열, mPLUG-Owl2, OpenFlamingo v2는 transformers==4.33.0을 권장한다. .xlsx 셀은 32,767자로 제한되어 16k/32k 토큰을 넘는 긴 응답은 잘릴 수 있으므로 TSV 저장을 써야 한다. 분산 추론은 LMDeploy(InternVL, QwenVL, LLaMa4 계열)와 VLLM(QwenVL, LLaMa4 계열)에서만 동작한다.

관련 논문 4

유사 도구