로컬 LLM의 첫 응답은 왜 가끔 10초씩 걸릴까 — 콜드 스타트(load_duration)를 직접 재봤다
잠깐 쉬었다가 에이전트를 다시 부르면 첫 응답이 유독 굼떴다. Ollama가 응답마다 주는 load_duration을 모델 크기별로 뜯어보니 2GB는 1.5초, 9.6GB는 최대 9.7초였다. keep_alive 하나로 이 콜드 스타트 비용이 어떻게 갈리는지 직접 측정해 정리했다.
jangwook.net
Personal technical notes on AI agents, automation, developer tools, and the process of building software.
Latest Notes
The root page stays intentionally small. Choose a language, then read the full archive and related posts there.
AI 에이전트, 자동화, 개발 도구, 소프트웨어 제작 과정을 한국어로 기록합니다.
잠깐 쉬었다가 에이전트를 다시 부르면 첫 응답이 유독 굼떴다. Ollama가 응답마다 주는 load_duration을 모델 크기별로 뜯어보니 2GB는 1.5초, 9.6GB는 최대 9.7초였다. keep_alive 하나로 이 콜드 스타트 비용이 어떻게 갈리는지 직접 측정해 정리했다.
같은 9,700토큰 프롬프트가 내 노트북에서 첫 토큰까지 55초 걸렸는데, 두 번째 호출은 65밀리초였다. Ollama 타임스탬프를 뜯어 prefill과 generation을 분리 측정하고, prefix 캐시가 왜 396배 빨랐는지, 에이전트 컨텍스트 설계에 어떻게 적용할지 정리했다.
같은 글을 ko/ja/en/zh 네 언어로 내는 내 블로그 285편을 실제 토크나이저 세 개로 토큰화해 비영어 토큰 비용을 측정했다. 한국어는 영어의 1.38배, 일본어 1.34배, 그리고 토크나이저 세대 교체가 사실상 비영어 할인이었다는 것까지 데이터로 확인했다.
Personal notes on AI agents, automation, developer tools, and building software.
After idling, my agent's first reply dragged. I pulled Ollama's load_duration across model sizes: 1.5s for 2GB up to 9.7s for 9.6GB, and split it by keep_alive.
A 9,700-token prompt took 55s to its first token, then 65ms on the identical second call. I split Ollama's timings into prefill vs generation to see why.
I tokenized 285 of my posts across ko/ja/en/zh with three tokenizers. Korean ran 1.38x English tokens, Japanese 1.34x. The non-English token tax, measured.
AIエージェント、自動化、開発ツール、ソフトウェア開発の記録です。
少し離れてからエージェントを呼び直すと、最初の応答だけやけに重い。Ollamaが応答ごとに返すload_durationをモデルサイズ別に 分解すると、2GBで1.5秒、9.6GBで最大9.7秒だった。しかも「コールド」には二種類あった。keep_alive一つでこの費用が どう分かれるかを実測してまとめた。
同じ9,700トークンのプロンプトが私のノートPCで最初のトークンまで55秒かかったのに、2回目の呼び出しは65ミリ秒だった。Ollamaのタイムスタンプを直接取り出してprefillとgenerationを分離測定し、prefixキャッシュがなぜ396倍速かったのか、エージェントのコンテキスト設計にどう活かすかをまとめた。
同じ記事をko/ja/en/zhの4言語で出している自分のブログ285本を、実トークナイザー3種でトークン化し非英語のトークン費用を測った。 韓国語は英語の1.38倍、日本語1.34倍、そしてトークナイザーの世代交代が実質的に非英語向けの割引だったことまでデータで確かめた。
记录 AI 代理、自动化、开发工具和软件构建过程。
离开一会儿再叫回代理,第一条响应就格外迟钝。我把Ollama每次响应都返回的load_duration按模型大小拆开看:2GB是1.5秒, 9.6GB最高9.7秒。而且"冷"原来有两种。keep_alive一个开关如何决定这笔开销,我做了实测整理。
同样一段9,700 token的提示词,在我的笔记本上第一个token要等55秒,而第二次相同调用只用了65毫秒。我直接取出Ollama的时间戳,分离测量prefill与generation,弄清prefix缓存为何快了396倍,以及如何把它用到代理的上下文设计上。
我把同一篇文章以ko/ja/en/zh四语发布的博客285篇,用三种真实分词器逐一分词,测量非英语的token成本。 韩语是英语的1.38倍,日语1.34倍,而且分词器的代际更替实质上是给非英语文本的一次打折。