prompt-caching

3 개의 포스트

github

각 토큰에서 더 많은 것을 얻기: Copilot이 컨텍스트 처리와 모델 라우팅을 개선하는 방법 (새 탭에서 열림)

GitHub Copilot은 에이전트형 작업이 길어질수록 단순히 토큰을 줄이는 것이 아니라, 반복되는 컨텍스트와 도구 정의를 효율적으로 재사용하고 작업에 맞는 모델을 선택해야 한다고 설명합니다. 이를 위해 VS Code에서는 프롬프트 캐싱과 지연된 도구 로딩을 개선하고, Auto 기능은 작업 난이도와 실시간 모델 상태를 바탕으로 적절한 모델로 라우팅합니다. 목표는 품질을 유지하면서 불필요한 비용과 지연을 줄이는 것입니다. ## 프롬프트 캐싱과 지연된 도구 로딩 - 긴 Copilot 세션에는 지침, 저장소 컨텍스트, 대화 기록, 도구 목록, 작업 상태 등 반복적으로 전달되는 정보가 많습니다. - **프롬프트 캐싱**은 반복되는 프롬프트 접두부의 모델 상태를 재사용해 매 요청마다 같은 내용을 다시 계산하지 않도록 합니다. - **도구 검색(tool search)**은 모든 도구의 전체 스키마를 처음부터 컨텍스트에 포함하지 않고, 모델이 필요할 때 관련 도구 정의만 불러옵니다. - MCP 도구, 터미널, 파일 조작, 워크스페이스 검색 등 도구가 많아질수록 이 방식의 효과가 커집니다. - 사용 가능한 도구의 범위는 넓게 유지하면서도, 현재 작업과 무관한 도구 정의가 매 턴마다 차지하는 토큰 비용을 줄일 수 있습니다. ## 작업별 모델 자동 선택 - Auto는 “현재 작업에 어떤 모델이 가장 적합한가?”를 자동으로 판단합니다. - 빠른 설명, 특정 파일의 간단한 수정, 여러 파일에 걸친 복잡한 변경은 요구되는 추론 수준이 서로 다르므로 동일한 모델을 사용할 필요가 없습니다. - 평가 결과 모든 작업에서 항상 최고 성능을 내는 단일 모델은 없었습니다. - 효율적인 모델이 더 적은 비용으로 같은 결과를 내는 경우가 많지만, 복잡한 추론이나 디버깅에서는 강력한 모델이 더 유리합니다. - Auto는 필요할 때만 더 강한 모델로 전환하고, 단순한 작업에는 효율적인 모델을 사용해 품질과 비용 사이의 균형을 맞춥니다. ## Auto의 라우팅 기준 Auto는 모델의 현재 상태와 작업의 특성이라는 두 가지 신호를 함께 사용합니다. - **실시간 모델 상태** - 모델의 가용성, 사용률, 응답 속도, 오류율, 비용을 동적으로 추적합니다. - 성능이 좋은 모델이라도 현재 과부하 상태이거나 응답 오류가 많다면 최적의 선택이 아닐 수 있습니다. - 따라서 작업을 처리할 능력뿐 아니라 현재 안정적으로 응답할 수 있는지도 고려합니다. - **HyDRA 기반 작업 인식 라우팅** - HyDRA는 추론 깊이, 코드 복잡도, 디버깅 난이도, 도구 오케스트레이션 필요성 등을 분석합니다. - 먼저 해당 작업의 품질 기준을 충족할 수 있는 모델들을 선별한 뒤, 그중 가장 적합한 모델을 선택합니다. - 게시글의 평가에서는 HyDRA가 품질과 비용 절감 수준을 조정할 수 있음을 보여줍니다. - 한 운영 지점에서는 Sonnet보다 높은 성능을 내면서 12.9% 비용을 절감했고, 다른 운영 지점에서는 품질을 균형 있게 유지하며 72.5%를 절감했습니다. - SWE-bench 평가에서 보수적 설정은 70.8% 해결률로 OpenRouter Auto와 동률을 기록하면서 3.3배 높은 절감 효과를 보였습니다. ## 캐시를 고려한 모델 전환 - 매 턴마다 모델을 바꾸면 유연성은 높아지지만, 기존 프롬프트 캐시가 깨져 오히려 비용이 증가할 수 있습니다. - 같은 모델을 계속 사용하면 대화의 프롬프트 접두부를 여러 턴에 걸쳐 재사용할 수 있습니다. - Auto는 다음과 같은 **자연스러운 캐시 경계**에서 주로 모델을 다시 선택합니다. - 첫 번째 요청: 아직 재사용할 캐시가 없는 시점 - 컨텍스트 압축(compaction) 이후: 이전 대화를 요약하면서 프롬프트 접두부가 초기화된 시점 - 그 사이에는 선택된 모델을 유지해 캐시가 축적되도록 합니다. - 즉, 모델 라우팅 자체의 이득뿐 아니라 모델 전환으로 발생하는 캐시 손실까지 함께 계산합니다. ## 여러 언어를 지원하는 라우팅 - Copilot은 영어뿐 아니라 다양한 언어로 사용되므로 라우팅 모델도 다국어 환경에서 작동해야 합니다. - 라우팅 모델은 CJK, 유럽 언어권 등을 포함한 16개 언어군의 대화 데이터로 학습되었습니다. - 19개 언어에서 추출한 VS Code Chat 텔레메트리 평가에서 언어군별 라우팅 정확도는 영어 기준선과 4포인트 이내의 차이를 보였습니다. - 언어군 사이에 통계적으로 유의미한 품질 격차도 나타나지 않았습니다. Copilot의 효율성을 높이려면 모든 정보를 매번 다시 보내거나 모든 작업에 가장 큰 모델을 사용하는 대신, 반복 컨텍스트는 캐시하고 도구는 필요할 때 불러오며 작업 난이도에 맞는 모델을 선택하는 것이 효과적입니다. 특히 긴 에이전트 세션에서는 모델 전환으로 캐시가 손실되지 않도록 하는 전략이 비용과 응답 속도 모두에 중요합니다.

gitlab

GitLab의 Claude Opus 4.8: 복잡한 에이전트 작업, 중단은 줄이고 (새 탭에서 열림)

Claude Opus 4.8은 GitLab Duo Agent Platform에서 복잡한 다단계 에이전트 작업을 더 정확하고 안정적으로 수행하도록 설계된 최신 모델이다. 장시간 자율 실행 과정에서 지시를 더 충실히 따르며, 중간에 사용자가 개입하거나 결과를 수정해야 하는 상황을 줄이는 것이 핵심이다. 또한 코딩뿐 아니라 문서 작성, 데이터 분석, 구조화된 지식 작업과 세션 중 시스템 프롬프트 변경도 지원한다. ## 복잡한 장기 에이전트 작업의 안정성 향상 - 여러 도구를 사용하고, 사용자의 의도부터 실제 배포까지 이어지는 복잡한 작업에 초점을 맞춘 모델이다. - 장시간 자율적으로 실행되는 에이전트가 각 단계를 지시대로 처리하도록 해 최종 결과의 정확도를 높인다. - 이전 모델보다 지시 해석과 계획 수립 능력이 향상되어, 실행 중 에이전트를 다시 안내하거나 결과를 검토·수정하는 시간이 줄어든다. - GitLab Duo Agent Platform의 Agentic Chat과 인스턴스 내 다양한 에이전트 워크플로에서 모델을 선택해 사용할 수 있다. ## 코딩 외 업무 지원 확대 - Opus 4.8은 소프트웨어 개발뿐 아니라 다음과 같은 전문 업무도 안정적으로 처리한다. - 문서 초안 작성 - 데이터 분석 - 구조화된 지식 처리 - GitLab Duo 에이전트를 기획, 문서화, 코딩 전반에 활용하는 팀은 여러 업무 흐름에서 일관된 결과를 기대할 수 있다. ## 대화 중 시스템 프롬프트 변경 - 세션 중간에 시스템 지침을 업데이트하는 기능을 지원한다. - 시스템 프롬프트가 변경되어도 기존 프롬프트 캐시를 무효화하거나 세션을 다시 시작할 필요가 없다. - API를 사용하는 팀은 다음과 같은 비동기 상황에 대응할 수 있다. - 디스크의 파일이 변경된 경우 - 사용 가능한 토큰 예산이 달라진 경우 - 사용자 컨텍스트가 업데이트된 경우 - 이를 통해 긴 에이전트 세션의 상태와 캐시를 유지하면서 최신 정보를 반영할 수 있다. ## GitLab에서의 이용 방식 - Claude Opus 4.8은 GitLab Duo Agent Platform에서 즉시 사용할 수 있다. - 다른 모델과 마찬가지로 GitLab Credits를 사용하며, 모델별 크레딧 소비량은 GitLab 문서에서 확인할 수 있다. - 무료 체험 또는 GitLab Free 가입으로 시작할 수 있다. - 기존 GitLab Premium·Ultimate 구독자는 구독에 포함된 GitLab Credits를 활용할 수 있다. ## 실용적인 결론 복잡한 작업을 여러 단계로 나누어 장시간 실행하는 팀이라면 Opus 4.8을 GitLab Duo의 코딩·기획·문서화 워크플로에 적용해볼 만하다. 특히 에이전트의 잦은 방향 수정이 문제였던 환경에서는 향상된 지시 준수와 중간 프롬프트 갱신 기능이 운영 부담을 줄이는 데 도움이 될 수 있다.

cloudflare

초거대 언어 모델 구동을 위한 기반 구축 (새 탭에서 열림)

Cloudflare의 Workers AI는 Kimi K2.5와 같은 초대형 언어 모델(LLM)을 효율적으로 구동하기 위해 소프트웨어와 하드웨어의 균형을 맞춘 최적화된 인프라를 구축하고 있습니다. 특히 에이전트 기반 서비스에서 발생하는 긴 컨텍스트와 반복되는 입력을 처리하기 위해 입력(Prefill)과 출력(Decode) 단계를 분리하고 캐싱 효율을 극대화하는 전략을 취했습니다. 이를 통해 기존 대비 추론 속도를 3배 향상시키고 지연 시간의 변동성을 대폭 줄이는 성과를 거두었습니다. ### Prefill과 Decode 단계의 분리 (PD Disaggregation) * LLM 추론의 두 단계인 'Prefill'(입력 토큰 처리, 연산 중심)과 'Decode'(출력 토큰 생성, 메모리 대역폭 중심)를 별도의 서버에서 독립적으로 수행하도록 아키텍처를 설계했습니다. * 단일 GPU에서 두 단계가 서로를 방해(Blocking)하며 자원 효율을 떨어뜨리는 문제를 해결하여 GPU 활용도를 극대화했습니다. * 토큰 인식 부하 분산(Token-aware load balancing) 기술을 적용해 각 서버의 처리량을 실시간으로 추정하고 부하를 균등하게 배분합니다. * 이 구조를 통해 첫 토큰 생성 시간(TTFT)의 편차를 줄이고, 토큰 당 생성 시간을 기존 100ms에서 20~30ms 수준으로 개선했습니다. ### 프롬프트 캐싱 및 세션 어피니티 (Prompt Caching) * 에이전트형 서비스의 특성상 시스템 프롬프트나 이전 대화 기록 등 반복되는 긴 입력이 많다는 점에 착안하여 프롬프트 캐싱을 최적화했습니다. * `x-session-affinity` 헤더를 도입하여 동일한 세션의 요청이 이전 입력 텐서가 계산된 리전으로 라우팅되도록 유도했습니다. * 이러한 세션 고정 라우팅을 통해 피크 시간대 입력 토큰 캐시 히트율을 60%에서 80%까지 끌어올렸으며, 전체적인 처리량을 크게 향상시켰습니다. * 사용자가 캐싱을 적극적으로 활용하도록 캐시된 토큰에 대해 할인된 가격을 제공하는 경제적 유인책을 병행합니다. ### KV 캐시 최적화 및 Mooncake 엔진 활용 * 초대형 모델은 여러 GPU에 걸쳐 실행되므로, GPU 간에 KV 캐시(입력 텐서 저장 공간)를 효율적으로 공유하는 것이 필수적입니다. * Moonshot AI의 'Mooncake' 전송 엔진을 활용해 NVLink 및 NVMe over Fabric과 같은 RDMA 프로토콜 기반의 직접 메모리 전송을 구현, CPU 개입 없이 데이터를 빠르게 전달합니다. * LMCache 및 SGLang HiCache를 사용하여 클러스터 내 모든 노드가 캐시를 공유하므로, 특정 노드에 종속되지 않고 캐시를 재사용할 수 있습니다. * 캐시 저장소를 GPU VRAM에서 NVMe 스토리지로 확장하여 세션 유지 시간을 늘리고 더 많은 트래픽을 효율적으로 수용합니다. ### 결론 및 제언 Cloudflare Workers AI에서 대규모 모델을 사용하는 개발자라면 `x-session-affinity` 헤더를 반드시 사용하여 프롬프트 캐싱 혜택을 받는 것이 권장됩니다. 이는 단순한 속도 향상을 넘어 토큰 비용 절감으로 이어지며, 특히 긴 대화 맥락을 유지해야 하는 AI 에이전트 서비스에서 성능 차이를 만드는 핵심 요소가 됩니다.