"이번 주 수요일 교육 자료 어디 있어요?" 배달의민족 교육 운영팀에서 이 질문이 반복될 때마다 누군가는 DB를 열고, 구글 드라이브를 뒤지고, 캘린더를 확인했다.
70B 모델을 A100 4장에 올리고 vLLM으로 서빙을 시작했다. nvidia-smi를 찍어보니 GPU 사용률이 30% 언저리.
사내 기술 문서 3만 건을 벡터 DB에 넣고 RAG 챗봇을 만들었다. 데모 날, 팀장이 던진 질문 5개 중 4개를 정확하게 답했고 프로젝트 예산이 승인됐다.
지난달 우리 팀은 고객 응대 챗봇의 시스템 프롬프트에 문장 두 개를 추가했다 — 그게 전부였다. PR을 올리고, 유닛 테스트 187개가 돌았고, 통합 테스트도 통과했고, 코드 리뷰도 받았다.
지난달 팀에서 고객 응대 챗봇의 시스템 프롬프트를 딱 한 줄 수정했다. "친절하고 상세하게 답변하세요"를 "핵심만 간결하게 답변하세요"로 바꿨다.
파인튜닝 프로젝트의 가장 위험한 순간은 학습이 끝난 직후가 아니다. 모든 게 잘 돌아가는 것처럼 보이는 한 달 후다.
지난 3월, 우리 팀은 모든 API 요청을 Claude Sonnet 하나로 보내던 구조에서 하이브리드 분배 구조로 전환했다. 단순 분류, 키워드 추출, 포맷 변환 같은 요청은 Haiku급 소형 모델로, 복잡한 추론이 필요한 건만 프론티어 모델로 보내는 방식이다.
API 토큰 비용이 월 2,200만 원을 넘기 시작하면 누구나 같은 생각을 한다. "이거 직접 돌리면 절반도 안 되지 않나?
시맨틱 캐시를 처음 붙였을 때 가장 먼저 한 일은 대시보드에 히트율 그래프를 올린 거였다. 첫 주 22%, 둘째 주 31%, 셋째 주 38%.
프로덕션에 올린 에이전트가 밤새 47,000달러어치 API 호출을 했다는 사후 보고서를 읽었다. 분석 에이전트와 검증 에이전트가 서로에게 피드백을 주고받는 루프에 빠졌는데, 기술적으로는 '정상 동작'이었다.
지난 달 우리 팀 슬랙에 올라온 메시지: "파싱 에러 0건 달성했습니다 🎉". Structured output 도입 후 3주, JSON 깨짐으로 인한 재시도가 완전히 사라졌다.
사내 기술 문서 5만 건을 RAG에 태우는 프로젝트를 맡았다. PM이 "PDF 넣으면 되잖아"라고 했을 때 별 생각 없이 고개를 끄덕였는데, 그게 석 달짜리 삽질의 시작이었다.
프롬프트 하나를 바꿨다. 기존 버전 대비 응답 품질이 나아졌는지 확인하려고 A/B 테스트를 세팅했다.
고객 상담 에이전트에 메모리를 붙이는 건 30분이면 된다. Mem0 SDK 깔고, 대화 끝날 때마다 add() 호출하고, 다음 세션에서 search()로 관련 기억을 불러오면 끝.
파인튜닝 완료 보고서에는 보통 벤치마크 점수, 학습 곡선 그래프, 비용 절감 예상치가 깔끔하게 정리되어 있다. 문제는 그 보고서가 나온 다음 날부터 모델이 늙기 시작한다는 거다.