M4 맥북에서 로컬 LLM으로 5일을 살아본 후

지난주에 Google I/O 닷새 전, AI 전선이 세 갈래로 갈라졌다를 쓰면서 "로컬 LLM은 외롭다"는 한 줄을 마지막 자리에 박아두었다. 그 자리가 마음에 걸렸다. 한 시점 사진처럼 다섯 한계를 펼쳐놓고 끝낸 게, 너무 깔끔하게 정리한 결론처럼 보였다. 그래서 닷새 동안 직접 살아보기로 했다…

5월 11일 월요일 아침부터 5월 15일 금요일 저녁까지. 정확히 5일.

룰은 단순했다. 메인 워크플로를 로컬 LLM으로 돌린다. Anthropic API도, OpenAI API도 끄지는 않되, 손이 먼저 가는 자리를 의도적으로 Ollama 쪽으로 옮긴다. 도망갈 때마다 기록한다. 그리고 닷새가 끝나는 자리에서 무엇이 굳었고 무엇이 흩어졌는지 본다.

5일째 저녁, 두 가지가 동시에 일어났다. 평소 닷새 동안 $45 정도 나가던 API 청구서가 $14에 멈췄다. 그건 의도한 결과다. 그런데 매일 한두 번씩, 어떤 날은 세 번씩 클라우드로 도망갔다. 그 도망이 의지가 약해서 일어난 게 아니라는 점이 흥미로웠다. 매번 합리적인 이유가 있었고, 매번 같은 종류의 자리에서 일어났다. 그 도망의 패턴이 글의 진짜 발견이다. "로컬만 살기"는 단일한 룰이 아니라 사람마다 다른 분기였다.

이게 닷새 동안 일어난 일이다.

5일치 일지

긴 분석을 하기 전에 닷새가 어떻게 흘렀는지 시간순으로 적는다. 추상적 한계는 1편에서 다 펼쳤으니까. 여기는 화요일 오후 3시에 일어난 일, 목요일 새벽 1시에 일어난 일을 적는 자리다.

1일차 (월): 셋업과 첫 한 자릿수

월요일 아침에 셋업부터 다시 했다. 1편에서 깔아본 Qwen3.5 122B를 그대로 쓰되, 이번엔 의도적으로 Ollama 한 번, MLX-LM 한 번 두 가지 백엔드로 동일 모델을 돌려서 차이를 봤다.

Ollama에서 qwen3.5:122b-a10b-q4_K_M을 띄우니 짧은 답 6~8 토큰/초, 긴 답(2,000 토큰 이상 출력)이면 5~6 토큰/초. 첫 토큰 지연(TTFT)은 컨텍스트 4K 정도일 때 3초, 12K로 올라가면 6초까지 갔다. 모델 파일 자체는 70GB, 메모리 점유는 약 55GB. 64GB 통합 메모리에서 다른 앱 띄울 자리가 8~9GB밖에 안 남는다는 뜻이다. 크롬을 닫았다.

MLX-LM으로 같은 모델을 돌리니 토큰/초가 12~14 사이로 올랐다. 두 배 가까이. MLX 진영 벤치는 MoE 모델에서 세 배 차이까지 본다고 적혀 있는데, 내 환경(M4 Max 64GB, 컨텍스트 12K 안)에서는 두 배 좀 넘는 수준이다. 같은 모델 같은 양자화인데 백엔드만 바꿔서 두 배. 흥미로운 자리.

그런데도 Apple NPU는 안 쓴다. M4 Max에 38 TOPS NPU가 박혀 있고, MLX-LM이 Metal로 GPU를 쓰는 게 두 배 빠른 거다. NPU는 Core ML 경유로만 접근 가능해서 오픈 진영이 진입 못 한다. 1편에서 적어둔 "차 트렁크에 두 번째 엔진을 싣고 다니면서 안 쓴다"는 비유가 5일 워크플로 안에서 매일 그대로였다.

월요일 저녁에 적은 메모: "한 자릿수가 두 배가 돼도 한 자릿수다." Ollama 6 토큰/초가 MLX 14 토큰/초가 됐다. GPT-5.5 API의 100+ 토큰/초와 비교하면 여전히 7배 차이. 그런데 이 차이가 작업 종류에 따라 다르게 체감된다는 걸 닷새 안에서 배웠다. 한 줄짜리 답에서는 7배 차이가 거의 느껴지지 않는다. 시스템 응답 자체의 첫 토큰 지연이 두 환경에서 비슷하기 때문이다. 긴 답이 길어질수록 차이가 누적된다. 그러니까 "토큰/초"라는 단일 숫자가 결정적 단점이 되는 자리와 그렇지 않은 자리가 분명히 갈렸다.

2일차 (화): 60줄 코드 4분

화요일 오후 3시쯤이었다. 한 파일을 통째로 리팩토링해 달라고 했다. 60줄짜리 React 컴포넌트, 상태 관리를 useState에서 useReducer로 옮기는 작업.

답이 시작되기까지 5초. 그러고 한 글자씩 떨어졌다. 60줄 출력 다 끝나는 데 4분 12초 걸렸다. 그 사이에 내가 뭘 했냐면, 다른 작업 탭으로 갔다. 슬랙 메시지 두 개 답했고, 다음 작업 메모를 정리했다. 답이 끝났을 때 돌아오니 흐름이 끊겨 있었다. 코드를 다시 들여다보면서 "내가 왜 이걸 부탁했지?"부터 떠올려야 했다.

이게 1편에서 적은 "추론 속도가 느리다"의 5일 안 버전이다. 한 시점에서 보면 "느리다" 한 줄이지만, 닷새 안에서 살아보니 다른 모양으로 나타났다. 느린 게 문제가 아니라, 느려서 흐름이 끊기고, 흐름이 끊겨서 컨텍스트가 머릿속에서 빠져나간다. 답을 받았을 때 내가 그 답을 평가할 인지 자원이 이미 다른 데로 옮겨가 있다.

해법은 두 가지로 갈렸다. 하나는 "4분 동안 다른 일 안 하기". 그러면 4분이 정말 통째로 비는 시간이 된다. 그 시간을 손해로 받아들이거나 짧은 책 한 권을 끼고 사는 워크플로로 바꿔야 한다. 다른 하나는 "60줄 단위 부탁 안 하기, 20줄씩 잘라서 세 번 부탁하기". 그러면 토큰/초가 한 자릿수여도 한 사이클이 1분 안에 끝나서 흐름이 살아난다. 대신 머리로 그 60줄을 미리 세 덩어리로 나눠놔야 하는 인지 부담이 추가된다.

화요일 저녁에는 두 번째 해법으로 굳었다. 작업 단위를 작게 쪼개는 습관이 5일 동안 가장 빨리 몸에 붙은 변화다.

3일차 (수): 컨텍스트 12K의 벽

수요일 새벽 1시. 이날은 글 한 편 다듬는 작업을 로컬에 맡겨봤다. 약 4,000자짜리 한글 글, 영문 번역 초안. Qwen3.5에 글 전체 붙여넣고 "이 문장의 호흡을 자연스럽게 다듬어줘"를 반복했다.

처음 다섯 번 정도는 답이 또렷했다. 그런데 여섯 번째쯤부터 답 품질이 갑자기 흔들렸다. 같은 문장을 두 번 추천하기 시작했고, 한 번은 본문에 없는 단어를 내가 쓴 것처럼 인용했다.

확인해보니 누적 컨텍스트가 12K 토큰 근처에 와 있었다. Ollama 문서를 다시 읽어보니, 기본 num_ctx는 2,048 토큰이고, 명시적으로 늘리지 않으면 그 이상은 사용자도 모르게 잘려나간다. 나는 32K로 설정해뒀는데, 그 안에서도 컨텍스트가 누적되면 attention 품질이 떨어지는 RoPE scaling 이슈가 같이 온다. 모델 카드가 보장하는 262K가 워크플로 안에서 그대로 살아 있지 않다는 뜻이다.

해법은 단순했다. Gemma 3 27B Q4 (17GB, 6 토큰/초 정도)로 갈아탔다. 더 작은 모델이라 같은 12K가 덜 부담이다. 글이 끝날 무렵엔 다시 Qwen으로 돌아왔다. 한 작업 안에서 두 모델을 갈아타며 쓰는 패턴. 클라우드 API로 돌릴 때는 안 해본 일이다. GPT-5.5는 그냥 한 세션 안에서 끝까지 간다.

새벽 1시 38분에 글이 끝났다. 갈아타기 비용이 시간으로는 한 10분쯤 됐다. 비용으로 환산하면 그 사이 Sonnet 4.6 API로 같은 작업 했을 때 약 $0.40 정도 절약했다. 시간과 돈을 따로 평가해야 한다는 걸 알게 된 자리다.

4일차 (목): 첫 위반

목요일 아침 9시 47분. 10시에 클라이언트 미팅이 잡혀 있었고, 미팅 직전에 메일 한 통 빠르게 다듬어야 했다.

Qwen3.5는 그 시간에 4분 걸린다. Opus 4.7 API는 8초다.

10시 미팅이라는 단단한 마감 앞에서, 나는 별 망설임 없이 Opus로 갔다. "로컬만 살기" 룰의 첫 위반이다. 그 위반 자체보다 흥미로운 건 위반의 패턴이었다. 시간 마감이 있는 자리, 다른 사람이 기다리는 자리, 응답이 짧고 빠르게 필요한 자리. 이 세 조건이 겹치는 순간 도망갔다.

목요일 하루 동안 그런 자리가 세 번 있었다. 미팅 직전 메일, 슬랙에서 동료가 빨리 답 달라고 한 코드 리뷰 질문, 그리고 저녁에 자기 전에 어머니께 보낼 카톡 한 통(이건 좀 부끄럽지만 정직하게 적어두자).

목요일 저녁에 적은 메모: "도망의 패턴이 '품질'이 아니라 '시간'이다." 로컬 LLM의 답 품질이 모자라서 도망간 게 아니다. 답이 도착하는 데 걸리는 시간이 다른 사람의 시간과 맞물려서 도망갔다. 이게 사람마다 다를 거라는 첫 직감이 든 자리다. 미팅 직전 응답이 일상에 거의 없는 사람이면 도망 자체가 발생하지 않는다.

5일차 (금): Sonnet 5.1의 그림자

금요일 오후. X 타임라인을 보다가 누가 "Vertex AI에 claude-sonnet-5-1 식별자가 한 시간쯤 떴다가 사라졌다"는 트윗을 올렸다. 1편 끝에서 짚었던 Sonnet 5의 후속이다.

이 트윗을 보고 들었던 감각이 닷새 중 가장 정확한 한 줄이었다. "내 로컬은 영원히 한 분기 뒤다."

내가 닷새 동안 깐 Qwen3.5는 2026년 2월 모델이다. 5월에 클라우드 진영에서 Sonnet 5.1이 준비되고 있다는 신호가 또 한 번 떴고, 1편에서 적은 Anthropic 패턴(조용히 6~7월 발표)이 그대로 가고 있다. Opus 5도 다음 분기 어디쯤에 있다. 내가 노트북에 깐 모델은 그 흐름에서 한 분기 뒤를 따라가는 자리다. 한 분기가 더 길어지면 반 분기 뒤가 되고, 그게 오픈 진영이 따라잡는 자리다. 오픈 진영이 더디면 두 분기 뒤가 된다.

이 시간차가 단점만은 아니다. 안정성 측면에선 장점이기도 하다. 검증된 모델 위에서 한 분기를 사는 셈이다. 그런데 코딩 작업에서 분기당 SWE-bench 4~6점씩 올라가는 흐름을 5일째 새삼 의식했다. 한 분기 뒤라는 건 작업당 6~10% 정도 품질 차이가 있을 수 있다는 뜻이다.

금요일 저녁에 닷새가 끝났다. 메모 한 줄: "도망의 패턴은 '품질'도 있고 '시간'도 있다. 사람마다 비중이 다르다." 그리고 두 번째 메모: "한 분기 뒤라는 시간차가 안정성이라는 다른 이름으로 바뀌는 지점이 있다. 단지 그 지점이 누구에게나 같은 자리에 있지는 않다."

1편의 다섯 중 셋은 익숙해졌고, 둘은 끝까지 안 풀렸다

1편에서 디바이스 섹션에 펼쳐둔 다섯 한계를 다시 가져온다. 추론 속도, 에이전트 통합, NPU 미활용, 배터리와 발열, OS 통합 부재. 닷새가 끝난 자리에서 다섯 중 셋은 익숙해지는 한계였고, 둘은 끝까지 안 풀리는 한계로 갈라졌다.

익숙해진 셋: 속도, 배터리, 발열

추론 속도는 닷새 안에서 가장 빨리 익숙해진 한계다. 화요일 4분 사건 이후로 "작업 단위를 작게 쪼개기"가 몸에 붙었다. 60줄 한 번이 아니라 20줄 세 번. 그러면 토큰/초 한 자릿수가 결정적 단점이 아니다. 한 사이클이 1분 안에 끝나면 사람 인지가 따라간다. 4분 사이클이 되면 따라가지 못한다. 같은 한 자릿수인데 작업 설계만 바꾸면 다른 경험이 된다.

배터리와 발열은 워크플로 자체를 책상으로 한정하면 풀린다. 카페에서 노트북 펴고 로컬 LLM 돌리는 건 닷새 안에서 한 번도 시도 안 했다. 시도할 생각도 안 들었다. 5일 동안 노트북은 거의 책상 위에서 충전기 꽂은 채로 살았다. CPU 온도가 85~92°C, GPU 80°C에서 머물고 팬은 6,000 RPM 풀스피드. 책상이라는 자리에서는 견딜 만하다. "카페 워크플로"라는 자리를 미리 포기한 셈이다.

이 세 한계가 익숙해지는 패턴은 비슷하다. 한계 자체를 없애는 게 아니라, 그 한계에 맞춰 워크플로의 모양을 줄이는 방식으로 견딘다. 작업 단위를 작게, 자리는 책상으로, 시간은 충전기 있는 곳으로. 줄어든 자리 안에서는 로컬 LLM이 충분히 일한다.

안 풀린 둘: 긴 호라이즌, OS 통합

에이전트 긴 호라이즌은 닷새가 다 끝나는 자리에서도 풀리지 않았다. 1편에서 짚은 Rakuten 7시간 자율 작업 같은 영역에는 닷새 동안 한 번도 들어가 보지 못했다. Aider에 Qwen3.5를 연결해서 5분짜리 단발 작업은 잘 돌았다. 30분 넘어가니 컨텍스트 부패가 시작됐고, 한 번은 변수명을 두 번 바꿔서 디버깅에 추가로 한 시간이 들었다. 모델이 자기가 한 시간 전에 정한 식별자를 30분 뒤에 까먹는다.

이건 워크플로 모양을 바꿔도 안 풀리는 한계다. 작업을 작게 쪼개면 추론 속도 한계는 풀린다. 그런데 긴 호라이즌은 정의상 한 번에 길게 가야 의미가 있다. 쪼개는 순간 다른 작업이 된다. Anthropic이 7시간 자율 작업을 강조하는 이유가 이 자리다. 한 세션 안에서 메모리 관리, 중간 검증, 자기 회고가 일어나야 하는 영역이다. 오픈 모델은 이 영역에 도달하기 전에 컨텍스트가 흔들린다.

OS 통합 부재도 닷새 동안 그대로였다. "Hey Siri"처럼 백그라운드에서 항상 듣고 있는 자리에 Qwen3.5가 못 들어간다. 글을 쓰다가 자연스럽게 "이 문장 좀 다듬어줘"라고 말하는 흐름을 만들고 싶었는데, 매번 Open WebUI 탭을 열고 프롬프트를 쳤다. 5일 동안 이 패턴은 한 번도 매끄러워지지 않았다.

이 두 한계는 5일이 아니라 5개월이 가도 안 풀린다. 1년이 가도 풀리지 않을 가능성이 더 높다. 풀리려면 두 가지 중 하나가 일어나야 한다. 사용자가 NPU에 자기가 고른 오픈 모델을 직접 올릴 수 있게 되거나, OEM이 사용자 모델을 받아서 자기 칩에 맞게 증류해주는 표준이 생기거나. 둘 다 단일 회사의 결정이 아니라 업계 합의가 필요한 자리다. Apple이 NPU API를 더 열거나, Google이 Tensor에 사용자 모델 슬롯을 만들거나. 그 결정이 다음 분기에 일어날 가능성은 낮다. 1편에서 적은 "두 갈래가 따로 도는 자리"가 닷새 안에서도 그대로 따로 돌았다.

워크플로의 60/40 분기

닷새가 끝났을 때 메인 워크플로의 어느 자리에서 로컬이 굳었고 어느 자리에서 클라우드가 남았는지가 드러났다. 대략 60대 40, 어떤 날은 70대 30. 그 분기의 모양이 글의 진짜 발견이다.

로컬에 굳은 60~70%

단발 코드 리뷰. 10줄에서 50줄 사이의 한 함수, 한 컴포넌트, 한 SQL 쿼리. 이런 단위는 Qwen3.5가 충분히 일했다. 토큰/초 한 자릿수가 문제 되지 않는다. 한 사이클이 30초에서 1분 사이에 끝난다.

짧은 글 다듬기. 한 문단, 한 트윗, 한 슬랙 메시지. 영문 메일 초안. 이 자리도 로컬이 굳었다. 답 품질이 클라우드와 차이가 거의 안 났다.

정규식, SQL 빠른 생성. 이 자리는 의외로 로컬이 잘했다. 한 줄짜리 답이 1초 만에 떨어진다. 토큰/초 한 자릿수가 한 줄 답에는 차이를 만들지 않는다.

영문 번역 초안. 닷새 동안 영문 블로그 초안 한 편을 Qwen3.5로 돌렸다. 직역으로 한 번 뽑고, 의역으로 한 번 다듬는 두 단계. 클라우드 API로 했을 때와 결과물이 거의 비슷했다. 시간은 한 8분 더 걸렸지만, 그 시간 동안 차 한 잔 끓였다.

이 자리들의 공통점은 한 사이클이 짧다는 것. 그리고 다른 사람이 기다리지 않는다는 것. 이 두 조건이 겹치는 자리는 로컬 LLM이 이미 충분히 한다.

클라우드가 남은 30~40%

30분 넘는 자율 코딩. Aider + Claude Code 조합으로 한 시간 자율 작업이 일상이었던 자리. 이건 닷새 동안 단 한 번도 로컬에 못 맡겼다. 한 시간이 지나면 모델이 자기가 한 일을 까먹는다.

미팅 직전 빠른 응답. 목요일 아침의 첫 위반이 그 자리다. 시간 마감이 단단하고 답이 짧고 빠르게 필요한 순간. 도망이 합리적 선택이다. Opus 4.7이 8초 만에 답한다.

최신 라이브러리 API 질문. Qwen3.5의 학습 데이터는 어딘가에서 끊긴다. Next.js 16이나 React 19의 최신 패턴 같은 자리는 클라우드 모델이 더 새롭다. 닷새 동안 두 번 도망갔다.

음성 입력 받는 자리. 길에서 걸으면서 또는 차 안에서 메모 받는 자리. ChatGPT 앱의 음성 모드를 그대로 쓴다. 로컬 LLM에 음성 인터페이스를 붙이려면 OS 통합이 필요한데, 그게 안 풀리는 두 한계 중 하나다.

이 자리들의 공통점은 시간 마감이 있거나, 컨텍스트가 정의상 길어야 하거나, OS 레벨 진입이 필요하다는 것. 1편에서 적은 두 안 풀리는 한계가 정확히 이 영역에 살아 있다.

비용 그림: $45가 $14가 됐는데 노트북 전기도 비용

5일 평소 API 청구서: 약 $45. Sonnet 4.6 호출이 주력이고 가끔 Opus 4.7.

5일 로컬 시도 기간 API 청구서: 약 $14. 도망간 호출만 남은 결과.

겉으로 보면 $31 절감. 그런데 이 자리에 빠진 비용이 둘 있다. 노트북이 5일 내내 풀가동되면서 쓴 전기, 그리고 발열로 인한 노트북 수명 단축. 한국 전기료 기준으로 5일 풀가동 비용은 대략 $3~5 사이. 발열로 인한 마모는 숫자로 잡히지 않는다. 다만 2년 뒤 같은 노트북의 중고가에서 표가 난다.

실질 절감을 $25라고 잡자. 5일 만에 작은 절감이 아니다. 한 달이면 $100~150, 1년이면 $1,200~1,800. 개인 단위에서는 적지 않은 돈이다. 그런데 이 비용이 "완전한 0"이 아니라 "다른 모양의 비용"으로 옮겨갔다는 점이 핵심이다.

회사 단위로 가면 그림이 더 복잡해진다. 10명이 동시에 로컬 LLM을 쓰면 노트북 10대의 발열과 팬 소음이 사무실 환경에 영향을 준다. 한 명이 책상에서 견디는 6,000 RPM 팬 소리가 열 명이 모이면 회의실 옆자리에서도 들린다. Anthropic이 Bedrock과 Vertex 경유로 받는 베이스 가격은 직접 API와 동일하다. 리전 엔드포인트는 10% 프리미엄이 붙고, 배치 API는 50% 할인. 로컬 LLM이 절감하는 자리는 클라우드 비용이고, 회사 단위에서 발열과 소음과 관리, 온보딩 비용이 그 자리로 옮겨간다. 비용은 사라지지 않고 형태가 바뀐다.

"로컬만 살기"는 룰이 아니라 분기

닷새 마지막 자리에 도달한 한 줄. 누구는 이미 살 수 있고, 누구는 한 분기 더 기다려야 한다.

이미 살 수 있는 사람

개인 사이드 프로젝트 중심. 한 사람이 자기 페이스로 일하는 자리. 단발 작업 위주. 데스크탑 환경 중심. 영문과 한글 텍스트 작업이 메인이고, 미팅 직전 응답이 일상에 거의 없는 사람.

이 프로필이면 닷새가 아니라 닷새가 길어진 다섯 달도 무리 없다. 60~70% 워크플로가 로컬로 굳는다는 건 30~40%만 클라우드가 남는다는 뜻이고, 그 30~40%도 시간이 갈수록 줄어들 가능성이 크다. 오픈 모델이 분기마다 따라잡으니까.

한 분기 더 기다려야 하는 사람

팀 협업 코드베이스. 다른 사람의 시간과 자주 맞물리는 자리. 30분 넘는 자율 작업이 일상이고, 모바일과 차 안 같은 비-책상 환경 워크플로가 중요한 사람. 음성과 이미지 멀티모달을 자주 쓰고, 미팅 직전 응답이 잦은 자리.

이 프로필이면 한 분기, 어쩌면 두 분기 더 기다리는 게 합리적이다. 안 풀리는 두 한계(긴 호라이즌, OS 통합)가 이 프로필의 핵심 워크플로에 그대로 살아 있다. 가속이 어디서 오는지를 보고 결정하는 게 낫다.

회사가 들이려 한다면, 답해야 할 세 자리

회사 단위로 가면 1편의 23조원 모순이 다른 방향에서 돌아온다. OpenAI가 적자를 메우려 분화와 디바이스로 도망치는 동안, 회사는 그 클라우드 비용을 어떻게 분산할지 고민해야 한다. 로컬 LLM은 그 분산의 한 선택지지만, 모두를 위한 답은 아니다.

회사가 들이기 전에 답해야 하는 자리가 셋 있다.

가장 먼저 물어야 하는 건 작업의 평균 호라이즌이다. 사람들이 한 번에 모델에 맡기는 작업의 길이가 평균 몇 분인가. 평균이 5분 안에 끝나면 로컬이 80% 자리를 차지할 여지가 있다. 평균이 30분을 넘어가면 60%를 못 넘는다. 평균이 한 시간이면 로컬은 보조 자리로 내려간다. 이 평균값을 모르는 채로 도입을 시작하면, 몇 달 뒤에 "왜 다들 클라우드로 도망가는지 모르겠다"는 회고가 나온다.

그다음은 비-책상 워크플로의 비중이다. 모바일과 차 안 같은 자리에서 일하는 시간이 얼마나 되는가. 영업과 필드 작업이 많은 회사면 OEM 온디바이스(Apple Intelligence, Gemini Nano) 쪽을 같이 봐야 한다. 로컬 LLM은 그 자리에 들어가지 못한다. 노트북을 안 펴는 시간에 모델이 일을 안 한다.

마지막은 모델 통제권의 필요 정도다. 가중치를 회사가 직접 들고 있어야 하는 규제 산업(금융, 의료, 정부)이면 로컬이 답에 가깝다. 그게 아니면 클라우드 API에 프롬프트 캐싱 90% 할인과 배치 50% 할인을 붙이는 쪽이 회계상 단순할 가능성이 더 높다. Anthropic이 Bedrock과 Vertex 양쪽에 같은 베이스 가격으로 들어가 있는 것이 그 단순함을 받쳐준다. 회사가 AWS를 깊게 쓰면 Bedrock, GCP를 쓰면 Vertex로 가는 게 절차가 짧다.

이 세 질문에 답하고 나면 "회사 전체가 로컬"이라는 단정도, "회사 전체가 클라우드"라는 단정도 안 나온다. 사람마다 자리마다 다른 답이 나온다. 그게 1편의 두 갈래(로컬 LLM ↔ OEM 온디바이스)가 따로 도는 이유고, 회사 단위에선 그 두 갈래를 동시에 운영하는 셋업이 한동안 표준이 된다.

I/O 키노트가 답한 것, 답 안 한 것

이 글을 쓰는 자리에서 어제 Google I/O 키노트가 끝났다. 5월 19일 키노트 본 행사가 끝났고 20일 개발자 세션이 이어졌다. 닷새 살아본 직후에 키노트를 본 셈이다. 풀 분석은 3편으로 미루되, 두 가지만 짚는다.

1편에서 예측한 "Gemini가 안드로이드 운영 계층"이라는 그림은 키노트에서 더 깊은 통합으로 펼쳐졌다. Gemini 3.2 Pro가 공식 발표됐고, Android 17에서 Gemini가 시스템 레벨로 더 들어왔다. OEM 진영의 가속은 예상보다 빨랐다. 닷새 동안 내가 노트북에서 Qwen3.5에 시도한 일들(글 다듬기, 코드 리뷰, 영문 번역)을 OEM 진영은 Gemini Nano로 폰 위에서 더 매끄럽게 한다. 한 분기 뒤가 아니라 이미 한 분기 앞이라고 봐도 된다.

그런데 답하지 않은 자리가 있었다. 사용자가 NPU에 자기가 고른 오픈 모델을 올릴 수 있는가. Apple이 이 자리에서 침묵했고, Google도 자기 Nano만 깔았다. 두 갈래가 만나는 자리에 대해선 키노트가 답하지 않았다. 그게 의미하는 건 다음 분기에도, 어쩌면 6~9월 내내 두 갈래가 따로 돈다는 것. 1편 디바이스 섹션의 모순이 그대로 살아 있다.

3편에서 키노트 풀 분석과 6~9월 분기 전망을 다듬는다. 5월 말에 발행 예정이다.

마치며

1편 도입에서 "내 M4에서 본 한 자릿수 두 개의 어긋남"을 적었다. 닷새가 끝나는 자리에서 그 어긋남이 어떻게 살았는지가 이 글의 정리다.

비용은 한 자릿수로 떨어졌다. $45가 $14가 됐다. 그건 의도한 결과이고 5일째에도 그대로다. 속도도 한 자릿수다. 토큰/초 7~14 사이에서 닷새 동안 머물렀다. 그것도 그대로다. 그런데 이 두 한 자릿수의 어긋남이 단정짓는 결론으로 가지 않았다. "로컬은 외롭다"라는 1편의 한 줄이 닷새 안에서 "로컬은 누군가에겐 이미 충분하고 누군가에겐 한 분기 뒤다"라는 분기로 바뀌었다.

분기인 이유는 단순하다. 시간 마감, 작업 호라이즌, 모바일 여부, 멀티모달 필요. 이 네 축에서 사람마다 무게중심이 다르다. 그래서 같은 노트북 같은 모델 같은 닷새를 살아도, 누구는 60% 자리에서 만족하고 누구는 30% 자리에서 답답하다. "로컬만 살기"가 룰이 될 수 없는 이유다.

3편은 I/O 키노트 풀 분석과 6~9월 분기 전망이다. 1편 가설이 어디까지 맞았는지, 두 갈래가 만나는 자리가 다음 분기에 보이는지 검증하는 글로 닫는다.

닷새 동안 도망간 자리들을 적어둔 메모는 그대로 책상 위에 있다. 그 메모가 글의 가장 정직한 부분이다.

댓글

이 블로그의 인기 게시물

개발자는 코드를 쓰는 사람이 아니다 — AI 시대에 남는 자리는 '책임'에 있다

Harness Engineering in Practice — How Anthropic Designs AI Agents

What Is Harness Engineering — Designing the Reins for AI Agents