b11596: 테스트 통합 - 컨텍스트 상태 테스트를 test-llama-context로 통합 (#30023)
요약
llama.cpp 프로젝트에서 컨텍스트 상태 테스트들을 test-llama-context로 통합하여 구조를 개선했습니다. 이 새로운 통합 테스트는 KV 캐시 저장/로드, 순환 상태 롤백 등 핵심 기능을 하나의 바이너리로 검증하며, 모델 로딩 및 설정 변경 시 발생하던 스레드 간의 문제를 해결했습니다.
핵심 포인트
- 컨텍스트 상태 테스트가 test-llama-context로 통합되어 구조적 안정성을 높임.
- KV 캐시 저장/로드, 순환 상태 롤백 등 핵심 기능을 단일 바이너리로 검증함.
- 모델 로딩 및 설정 변경 시 발생하던 스레드 간의 문제를 해결하여 신뢰도를 향상시킴.
- 테스트 : 컨텍스트 상태 테스트들을 test-llama-context로 통합
test-save-load-state, test-recurrent-state-rollback 및 test-state-restore-fragmented는 세 곳의 동일한 객체(KV 캐시와 llama_context의 순환 상태)를 확인합니다: 저장, 로드, 복사, 롤백. 이전에는 각각 메인 함수, 모델을 반복하는 루프, 토큰 사본, 비교 도우미가 있었고, 이 세 가지 테스트를 모두 실행하면 동일한 모델들을 여러 번 로드했습니다.
이제는 하나의 바이너리로 통합되었으며, 케이스 자체가 테스트의 단위입니다:
tests/llama-context/test-case.h: 케이스가 구현하는 인터페이스
tests/llama-context/cases-kv.cpp: KV 캐시 관련 케이스들
tests/llama-context/cases-rs.cpp: 순환 상태(recurrent state) 관련 케이스들
tests/llama-context/test-util.cpp: 토큰, 생성, 비교
tests/llama-context/test-runner.cpp: 케이스의 모델들, 스레드 처리
tests/llama-context/test-log.cpp: 모델의 로그 파일
실행(A run)은 표와 같습니다: 행은 모델별, 열은 케이스별이며, 셀에는 해당 쌍의 판결(verdict)이 담깁니다. 모델들은 여러 스레드(-j, --threads, 기본값 min(cores, 4))에서 로드되며, 표가 완성되면 출력되고 실패한 모델의 로그는 행 순서에 따라 그 뒤에 출력됩니다. 케이스는 판결과 그 이유를 반환하며, 러너(runner)만이 이를 보고합니다. 이 테스트는 tests/testing.h를 사용하지 않으며, 130개 모델을 대상으로 한 실행은 서브테스트의 트리가 아니라 판결의 행렬입니다.
스테이징 과정이 더 이상 환경을 통과하지 않습니다: llama_model_set_attn_rot은 LLAMA_ATTN_ROT_DISABLE 변수를 대체합니다. 이전에는 하나의 스레드에서 로드된 모델이 다른 스레드가 로드하는 모델의 설정을 변경하는 문제가 있었는데, 이제는 이 문제를 해결했습니다. 또한 메모리 버퍼를 복사하는 케이스들을 위해 llama_memory_get_buffers가 추가되었습니다. common_log_set_stdo는 표가 생성되는 동안 콘솔을 조용하게 유지합니다.
ggml_aligned_malloc은 thread sanitizer가 활성화된 경우 posix_memalign으로 할당합니다. macOS에서는 Mach VM을 사용하는데, 이 VM은 sanitizer가 가로채지 않기 때문에 페이지 범위 변경이 감지되지 않아 재활용 메모리에 대한 첫 번째 쓰기를 race condition으로 보고하며, 이 테스트에서 30번이나 발생하고 모두 거짓입니다.
Assisted-by: pi:llama.cpp/Qwen3.8-Flash-Next
-
cont : 기본적으로 단일 스레드로 실행합니다
-
cont : 모든 플랫폼에서 테스트를 빌드해 봅니다
-
cont : 일부 군살을 빼줍니다
-
cont : 수정
-
cont : 수정을 수정합니다
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기