Trawling

Strata 실험 브랜치, DeepSeek 에이전트 프롬프트 재사용과 SSD 읽기 감소

Strata 기여자 PhialsBasement는 DeepSeek-V4.1 브랜치에 바뀐 프롬프트 줄만 다시 읽는 KV splice와 프롬프트 단계에서 VRAM·RAM 상주 전문가를 고르는 라우팅을 구현했습니다. 기여자의 RX 9070 XT 시스템에서 OpenCode 세션의 새 프롬프트 부분은 splice만 썼을 때 26초, 두 변경을 함께 썼을 때 5.1초에 처리됐습니다. HIP gfx1201 한 구성에서 나온 측정입니다.

본문

Strata는 모델을 PC에서 실행하고 OpenCode 같은 코딩 도구와 연결하는 로컬 추론 엔진입니다. Strata 기여자 PhialsBasement는 DeepSeek-V4.1 엔진의 프롬프트 처리 시간을 줄이는 두 변경을 원 저장소의 공개 이슈 #4921과 #4936에 제안하고, 별도 fork 브랜치에 구현했습니다.

첫 변경인 KV splice는 코딩 에이전트가 새 세션마다 시스템 프롬프트 전체를 다시 읽는 문제를 겨냥합니다. OpenCode는 작업 디렉터리, 날짜, Git 상태, 프로젝트의 지침 파일과 스킬 경로처럼 세션마다 달라지는 정보를 프롬프트 앞부분에 넣습니다. 그 뒤에는 MCP 도구 설명 등을 포함한 공통 내용이 길게 이어집니다. 기존 캐시는 앞에서부터 같은 접두부를 재사용하므로 프로젝트 경로나 날짜가 달라지면 그 지점 뒤의 공통 내용도 새로 읽어야 했습니다.

KV splice는 저장된 대화 상태와 새 프롬프트를 대조해 공통 구간을 찾습니다. 빠진 줄은 저장 상태에서 제거하고, 바뀌거나 새로 들어온 줄만 다시 읽습니다. 줄 중간을 잘라 모델에 전달하지 않도록 변경 단위를 완전한 줄로 맞추며, 캐시 내부 상태와 위치 기록도 함께 조정합니다. 이 방식으로 작성자의 OpenCode 측정에서는 약 37,482토큰 가운데 36,097토큰을 재사용하고 1,385토큰만 읽었습니다. 처리 시간은 26초였습니다. 기본 실행은 약 37,452토큰을 새로 읽는 데 100.3초가 걸렸습니다. 이 시험은 OpenCode 1.18.34와 MCP 서버 6개를 사용한 세션에서 이뤄졌습니다.

두 번째 변경인 resident routing은 프롬프트 처리 중 SSD에서 전문가 가중치를 계속 불러오는 상황을 줄입니다. DeepSeek-V4.1은 각 계층에서 여러 전문가 가운데 일부를 선택하는 모델입니다. 작성자는 40개 계층에서 짧은 프롬프트도 거의 모든 전문가를 건드릴 수 있어 NVMe 읽기가 병목이 된다고 설명했습니다. 이 모드에서는 프롬프트 토큰을 처리할 때 VRAM, RAM 저장소 또는 페이지 캐시에 이미 있는 전문가만 선택합니다. 생성 토큰은 모델의 원래 라우팅을 따릅니다. 한 계층에 상주 전문가가 2k보다 적으면 해당 계층은 일반 라우팅을 사용합니다.

작성자의 새 프롬프트 시험에서는 1,239~1,305토큰을 기본 경로로 읽을 때 NVMe에서 58GB를 읽어 22.8초가 걸렸습니다. 상주 전문가 라우팅을 적용하자 SSD 읽기는 1.3GB, 시간은 8.2초로 줄었습니다. 해당 기기에서는 전체 전문가 15,360개 가운데 약 4,900개가 VRAM이나 RAM에 상주했고, 나머지는 SSD에서 읽었습니다. 측정은 Strata 0.1.55, DeepSeek-V4.1-Flash 1.75bpw와 1M 컨텍스트, RX 9070 XT 16GB, RAM 64GB, PCIe 3.0 NVMe, HIP gfx1201에서 진행했습니다.

두 변경을 함께 쓴 실제 OpenCode 세션에서는 새로 읽은 부분이 513토큰, 재사용한 부분이 36,949토큰이었고 처리에 5.1초가 걸렸습니다. 같은 세션에서 KV splice만 사용했을 때는 26초였습니다. 이는 해당 기여자가 같은 장비에서 보고한 세션별 측정입니다. 일반적인 생성 속도나 모든 하드웨어에서의 개선 폭을 뜻하지는 않습니다.

속도 개선에는 품질상 절충이 있습니다. 상주 전문가 라우팅은 디스크에 있는 전문가 대신 RAM이나 VRAM에 있는 다른 전문가를 선택하므로 답변이 달라집니다. 작성자가 13개 코딩 문제를 각 설정에서 한 번씩 실행한 결과는 모두 12개 통과였지만 실패한 문제는 서로 달랐습니다. 반복 실행이나 더 넓은 품질 비교 결과는 이 시험에 포함되지 않았습니다. KV splice도 삭제한 줄이 들어 있는 맥락으로 계산된 뒤쪽 토큰 상태를 재사용하는 근사 방식입니다.

두 변경을 담은 fork 브랜치에서는 기능이 기본으로 켜져 있고 각각 STRATA_DS4_REORDER=0, STRATA_DS4_PROMPT_RESIDENT=0으로 끌 수 있습니다. 원 저장소에 올린 제안은 병합될 경우 선택 기능으로 두는 내용이며, 작성자는 범위를 정한 뒤 pull request로 나누겠다고 적었습니다. 빌드와 시험은 AMD HIP gfx1201에서만 진행됐고 CUDA, SYCL, Metal 빌드와 Strata C++ 테스트 모음은 실행하지 않았습니다.

자료: GitHub / 정리·해설: Trawling

참고 자료

오류 제보