5. 자료를 밖으로 보내지 않기

로컬로 옮길 때 치르는 값

이 차시를 마치면

로컬 전환에서 무엇을 얻고 무엇을 내주는지 계산합니다.

로컬 전환은 공짜가 아닙니다. 무엇을 얻고 무엇을 내주는지 정확히 적습니다.

1. 추론 토큰 — 가장 먼저 만나는 함정

이 모델 계열은 답을 내기 전에 보이지 않는 추론 토큰을 씁니다. max_tokens 가 부족하면 추론만 하다 잘려서 본문이 빈 채로 돌아옵니다.

계측 결과입니다.

모델: google/gemma-4-e4b
질문: 한 문장으로만 답하세요: LangGraph의 State는 무엇입니까?

max_tokens   finish_reason  completion   reasoning    본문
----------------------------------------------------------------------
80           length         79           77           0자
300          length         299          297          0자
800          stop           479          438          81자
             → LangGraph의 State는 그래프를 통과하는 모든 노드들이 공유하고
               업데이트하며, 실행 흐름을 결정하는 단일화된 메모리 또는 컨텍스트입니다

2026-08-15 계측. 재현: python3 webapp/verify/local/probe_reasoning_tokens.py

읽는 법

신호
finish_reasonlength토큰이 모자라 잘렸습니다
reasoning_tokenscompletion_tokens 의 대부분추론에 다 썼습니다. max_tokens=800 에서도 479 중 438 이 추론이고 본문에는 41 토큰만 남았습니다
본문이 0자인데 오류가 없음가장 위험한 조합입니다. 그냥 "빈 응답" 으로 보입니다

응답 객체의 reasoning_content 필드에 잘린 추론이 들어 있어 확인할 수 있습니다.

왜 이것이 위험한가

오류가 나지 않습니다. HTTP 200 이고 응답 형식도 정상입니다. 내용만 비어 있습니다.

코드가 reply.content 를 그대로 다음 단계로 넘기면 빈 문자열이 흘러 들어갑니다. 어디서 잘못됐는지 찾기 어렵습니다.

대응

  1. max_tokens넉넉히 잡습니다. 이 교재의 연결 코드는 1200 을 씁니다
  2. finish_reason확인합니다. length 면 잘린 것입니다
  3. 본문이 비면 오류로 처리합니다. 조용히 넘기지 않습니다

2. 모델 크기와 품질

작은 모델이라고 다 못 하는 것은 아닙니다. 작업의 성격이 먼저입니다.

작업4B 모델로 되는가근거
회의록에서 실행항목 추출 (Structured Output)됩니다4차시에서 3건을 정확히 추출 분석
문서 요약됩니다5차시 관찰 과정에서 확인
복잡한 Tool calling확인 필요이 교재에서 시험하지 않았습니다
긴 코드 작성, 다단계 추론확인 필요시험하지 않았습니다

확인하지 않은 것을 된다고 쓰지 않습니다. 쓰려는 작업으로 직접 시험해 보는 것이 유일한 방법입니다.

3. 하드웨어

3차시에서 본 대로 디스크보다 메모리가 먼저 걸립니다.

모델디스크메모리가 모자라면
4B6.86 GB대체로 올라갑니다
31B18.85 GB못 올리거나, 올라가도 매우 느립니다

느린 것이 문제가 되는 지점이 있습니다. Agent 는 모델을 여러 번 부릅니다. 한 번에 10초 걸리는 모델로 5단계 그래프를 돌리면 한 번 실행에 1분이 듭니다.

4. 공급망 — 모델 가중치의 출처

패키지만 공급망 대상이 아닙니다. 모델 가중치도 남이 만든 파일입니다.

외부 근거 OWASP Top 10 for LLM Applications 2025 는 이를 두 항목으로 나눕니다. LLM03: Supply Chain VulnerabilitiesLLM04: Data and Model Poisoning. 확인일 2026-08-15.

확인할 것
누가 배포했는가공식 배포자인지, 재업로드본인지
파일 무결성내려받은 파일이 배포자가 올린 것과 같은지
어디서 받았는가같은 이름의 모델이 여러 곳에 있습니다

이 교재는 이미 기기에 있던 모델을 씁니다. 새로 내려받지 않으므로 이 절차를 실습하지 않습니다. 확인 필요 실제로 내려받을 때는 위 세 가지를 확인해야 합니다.

5. 업데이트는 자동이 아닙니다

외부 API 를 쓰면 제공자가 모델을 개선할 때 가만히 있어도 좋아집니다. 로컬은 그렇지 않습니다.

  • 새 모델이 나와도 사람이 받아서 바꿔야 합니다
  • 바꾸면 다시 시험해야 합니다. 프롬프트와 schema 가 그대로 통할지 모릅니다
  • 안 바꾸면 그 자리에 머뭅니다

3번 트랙의 "버전 고정의 두 얼굴" 과 같은 구조입니다. 고정은 재현 가능성을 주고 갱신 지연을 줍니다.

6. 비용은 사라지지 않고 형태만 바뀝니다

외부 API로컬
사용량에 비례한 요금하드웨어 구입비, 전력
시간거의 없음설치, 모델 관리, 갱신, 장애 대응
예측 가능성쓴 만큼. 갑자기 늘 수 있음고정비. 많이 써도 늘지 않음

사용량이 많으면 로컬이 싸고, 적으면 외부 API 가 쌉니다. 운영 시간까지 넣어 계산해야 실제 비교가 됩니다. 분석

정리 — 무엇을 얻고 무엇을 내주는가

얻는 것내주는 것
자료가 기기를 벗어나지 않음 · 인터넷 없이 동작 · 사용량이 늘어도 요금이 안 늘어남 · 요청 내용을 직접 관찰 가능 모델 품질과 속도 · 하드웨어 · 설치와 갱신에 드는 시간 · 최신 모델을 즉시 못 씀 · 공급망 확인 책임

이 표를 보고 자기 상황에서 답이 갈립니다. 어느 쪽이 옳다고 말할 수 없습니다.

2차시의 세 축(자료 민감도 · 품질 요구 · 운영 여력)으로 돌아가 다시 보십시오. 자료 민감도가 높으면 나머지 둘을 감수할 이유가 생깁니다. 그것이 이 트랙의 결론입니다.

이해도 확인

문항을 불러오는 중입니다.