b11506: 서버 - 슬롯 저장/복원 전반에 걸쳐 컨텍스트 체크포인트 유지 기능 추가 (#26004)
요약
llama.cpp 서버 측에서 컨텍스트 체크포인트 유지 기능을 대폭 개선했습니다. 이를 통해 슬롯 저장/복원 과정 전반에 걸쳐 상태를 효율적으로 관리하고, 전체 프롬프트 재처리 없이도 롤백이 가능해졌습니다. 또한 드래프트 KV 캐시 타입 불일치 문제 해결 및 파일 I/O 안정성이 강화되었습니다.
핵심 포인트
- 슬롯 저장/복원 시 컨텍스트 체크포인트 유지 기능 추가
- 전체 프롬프트 재처리 없이 상태 롤백이 가능해져 효율성 증대
- 드래프트 KV 캐시 타입 불일치 문제 해결로 안정성 확보
- 파일 I/O 및 할당 로직 강화로 신뢰도 향상
-
서버 : 슬롯 저장/복원 전반에 걸쳐 컨텍스트 체크포인트 유지
#26640에서 추가된 packed server_tokens 페이로드 뒤에 체크포인트를 추가하고, 이를 n_written / n_read에 포함하여 카운트합니다. 따라서 복원된 슬롯은 전체 프롬프트를 재처리하는 대신 체크포인트로 롤백할 수 있습니다. -
서버 : 드래프트 컨텍스트와 일치하지 않는 드래프트 체크포인트 데이터 제거
load_dft()에서 다른 드래프트 KV 캐시 타입으로 저장된 슬롯 복원 시 중단되던 문제를 해결했습니다. 복원 시 하나의 드래프트 체크포인트를 테스트 로드하고, 적합하지 않으면 데이터를 제거하여 충돌하는 대신 처리합니다. 회귀 테스트를 추가했습니다.
공동 작성자: Igor Okulist [email protected]
-
서버 : 슬롯 저장 파일의 체크포인트 부록 강화
할당 전에 남은 파일 바이트 수로 각 블롭 크기를 제한하고, llama 상태 페이로드와 같이 Windows에서 UTF-8 경로를 사용하여 파일을 엽니다. 체크포인트를 포함하는 슬롯 파일 복원이 실패하면 전체 프롬프트 재처리로 폴백하며, 읽기 시 마지막 n_ctx_checkpoints를 유지하여 1024 카운트 제한을 대체합니다. -
서버 : 불완전한 체크포인트 부록을 실패한 슬롯 저장으로 보고
부록을 작성할 수 없을 때 클라이언트에게 오류를 반환하고, oversized-blob 테스트가 할당할 수 없는 크기를 선언하도록 하여 무제한 할당이 테스트에 실패하게 만듭니다. -
서버 : 체크포인트 부록에서 빈 대상 상태 거부
저장된 체크포인트는 항상 대상 상태를 포함해야 합니다. 빈 블롭은 아무것도 복원하지 않고 롤백할 것입니다. 또한 슬롯 ID와 함께 로깅하고, 두 번째 다운로드 대신 HF 캐시에서 드래프트 테스트 모델을 로드합니다. -
공통 : 체크포인트 load_tgt / load_dft에서 bool 반환
슬롯 파일에서 복원된 체크포인트는 로드에 실패하면 전체 프롬프트 재처리로 폴백하지만, 메모리에서 생성된 체크포인트는 여전히 중단됩니다.
공동 작성자: Igor Okulist [email protected]
AI 자동 생성 콘텐츠
본 콘텐츠는 llama.cpp Releases의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기