Загружаем каталог…
Загружаем каталог…
요즘 회사에서 LLM 에이전트 또는 워크플로우를 구축하는 프롬프트를 여럿 담당하게 되었다. 처음 시작할때는 성능에 집중하게 되지만, 실제 go live를 하게 되면 발목을 붙잡게 되는건 성능보다도 비용인 것 같다. 호출 수를 줄이는 데에는 한계가 있어서, 결국 최종 해결책은 프롬프트 캐싱으로 귀결된다. 반복되는 앞부분을 캐시에 올려두고 다음 요청부터는 싸게, 빠르게 재사용하는 방식이다. 프롬프트 캐싱을 이용하면 비용이 싸진다는 것 정도의 피상적인 지식만 있어서, 프롬프트 캐싱을 위한 세팅만 해두고 실측은 미뤄두었었다. 보고용으로 프롬프트 캐싱을 적용한 실제 비용을 정리하다 보니, 프롬프트 캐싱이 내가 상상했던것과는 다르게 이루어지고 있었다. 한번 정리해두면 좋을 것 같아 글을 남긴다. 5.6 Luna에서는 user 입력이 캐싱되지 않았다 처음 쓰던 모델은 GPT-5.6 Luna였다. 참고로 우리 쪽은 OpenAI API를 직접 부르는 게 아니라 클라우드 제공사 배포를 거쳐서 호출하는 구조다. 비용을 정리하면서 usage를 열어보니 캐시 적중률이 생각보다 훨씬 낮았다. 공통으로 들어가는 긴 내용이 매 요청 앞부분에 똑같이 들어가 있었는데도 그랬다. 원인은 그 내용을 어디에 넣었느냐였다. 공통 내용(전표나 증빙 등을 파싱한 데이터)을 user 입력( input )에 넣어뒀었는데, 같은 내용을 아무리 반복해서 보내도 전혀 캐싱이 이루어지지 않았다. 클로드의 추천 대로, 해당 내용을 user 입력이 아닌 시스템 지시( instructions )로 옮겨봤더니 그때부터 캐싱이 이루어졌다. 캐싱이 이루어지는데는 워밍업이 필요하다 캐시가 실제로 비용 효율을 만들어내는 데에도 시간이 꽤 걸렸다. 나는 두번째 호출 부터 캐싱 효과가 발생하는 것을 기대했는데, 그게 아니였다. 같은 내용으로 적어도 열번 이상은 호출해야, 유의미한 캐싱이 이루어졌다. n번 호출하면 그때부터 100% 캐싱이 이루어진다 와 같은 것도 아니였고, 호출이 늘어나면 늘어날수록 캐시 적중률이 계단처럼 조금씩 올라갔다. 이러한 결과를 보고 나서, 나는 프롬프트 캐싱의 실효성이 없다고 결론을 내리고, 캐싱에 의존하지 않고 비용을 최소화 할 수 있는 방안을 고민하기 시작했다. 6 Luna로 바꾸고 나서 GPT-6 Luna가 출시되자마자, 모델을 변경했다. 바꾸기 전에 문서부터 봤는데, 두 모델은 "GPT-5.6 이후"라는 같은 그룹으로 묶여 있었고 최소 길이, 수명, 가격, 브레이크포인트 방식까지 다 같았다. GPT-6에서 새로 생긴 건 reasoning effort를 바꿀 때 캐시를 유지하는 방법( configuration_update ) 정도였다. 그런데 막상 바꾸고 보니 꽤 달랐다. 기존 모델과 달리 user 입력에 포함된 내용까지 캐싱이 적용되었다. 워밍업 속도도 비교가 안 될 정도로 빨랐고, 같은 테스트 세트로 돌린 결과를 검토해보니, 캐시 적중률이 기존과 비교가 안될 정도로 올랐다. 기존에는 20% 언저리라 캐시 쓰기 비용을 고려했을때 break-even 근처였는데, 수정 후에는 70% 수준이라서 캐싱으로 인한 비용 효율이 크게 올랐다. 캐싱은 일정 시간 동안만 유지가 되었는데, 30분이 기준 인 것으로 확인했다. 30분 내 이어진 배치까지는 캐싱이 적용되었고, 45분 뒤에 실행된 배치는 캐싱이 끊겼다. 이건 내가 실측해서 확인한 값이기 때문에 정확하지는 않다. 결국 문서상으로는 같은 규칙을 따르는 두 모델이, 실제로는 어디까지 캐싱되는지도, 얼마나 빨리 자리 잡는지도 달랐다. 캐싱은 항상 이득이 아니다. 이번 정리를 통해 캐싱이 항상 이득이 아니라는 것도 배웠다. 캐싱을 위해서는 캐시 쓰기를 활성화 해야 한다. 캐시 쓰기 비용의 경우, 일반 입력 비용보다 많은 비용이 청구된다. 내 케이스의 경우에는 캐싱 비중이 20%를 넘지 못하면, 오히려 캐시 쓰기 비용이 더 커져서 오히려 손해가 되는 경우가 있었다. 마치며 go live 이후에 발목을 잡는 게 비용이라면, 프롬프트 캐싱은 가장 쉽고 효과적인 해결책이다. 다만 프롬프트 캐싱이 되도록 입력값을 설정해두었다고 하더라도, 실제로 캐싱이 이루어지고 있는지, 그리고 캐싱으로 인한 비용 절감이 캐시 쓰기로 인한 비용 상승분보다 큰 것이 맞는지 실측하는 과정이 꼭 필요하다는 교훈을 얻었다.
То, что RADAR обнаружил и классифицировал для этой возможности. Это опубликованный источником текст, а не подтверждение, что предложение ещё действует.
프롬프트 캐싱에 대한 고찰. 요즘 회사에서 LLM 에이전트 또는 워크플로우를 구축하는 프롬프트를 여럿 담당하게 되었다. 처음 시작할때는 성능에 집중하게 되지만, 실제 go live를 하게 되면 발목을 붙잡게 되는건 성능보다도 비용인 것 같다. 호출 수를 줄이는 데에는 한계가 있어서, 결국 최종 해결책은 프롬프트 캐싱으로 귀결된다. 반복되는 앞부분을 캐시에 올려두고 다음 요청부터는 싸게, 빠르게 재사용하는 방식이다. 프롬프트 캐싱을 이용하면 비용이 싸진다는 것 정도의 피상적인 지식만 있어서, 프롬프트 캐싱을 위한 세팅만 해두고 실측은 미뤄두었었다. 보고용으로 프롬프트 캐싱을 적용한 실제 비용을 정리하다 보니, 프롬프트 캐싱이 내가 상상했던것과는 다르게 이루어지고 있었다. 한번 정리해두면 좋을 것 같아 글을…
Открыть источник