다섯 개의 연구소, 다섯 개의 지능: 소형 모델로 구축한 멀티 모델 금융 드라마
요약
다양한 연구소의 소형 모델(SLM)을 활용하여 금융 에이전트들이 상호작용하는 멀티 모델 시뮬레이션 환경 구축 사례를 다룹니다. 서로 다른 모델을 하나의 플랫폼에서 운영할 때 발생하는 서빙 계층의 기술적 이슈와 해결 방법을 엔지니어링 관점에서 설명합니다.
핵심 포인트
- 서로 다른 데이터와 학습 과정을 가진 소형 모델 간의 차별화된 에이전트 행동 유도
- vLLM 사용 시 CUDA devel 이미지 기반의 환경 설정 필요성 확인
- 모델별 양자화 및 특수 설정(trust_remote_code 등) 대응 방법
- 이질적인 모델 출력을 통합하기 위한 JSON 파싱 및 복구 레이어의 중요성
두 번째 Build Small Hackathon 현장 보고서: 창발적 경제(emergent economy)의 각 에이전트가 서로 다른 연구소의 소형 모델(small model)로 구동되고, 플레이어가 배후에서 조종하는 금융가가 된다면 어떤 일이 벌어질까?
Thousand Token Wood의 첫 번째 버전은 날씨의 신이 되어 즐기는 샌드박스였습니다. 하나의 미세 조정된(fine-tuned) 0.5B 모델 위에서 다섯 마리의 숲속 생물들이 물건을 거래했고, 플레이어는 충격을 가해 세계를 자극하며 거품과 폭락이 발생하는 과정을 지켜보았습니다. 그것은 멋진 장난감이었지만, 플레이하기보다는 관찰하는 것에 가까웠습니다.
v2는 이를 플레이어가 직접 운영하는 게임으로 재구축했습니다. 당신은 숲의 후원자(Patron of the Wood)이자 그림자 금융가입니다. 당신은 이자를 받고 돈을 빌려주며, 사실일 수도 혹은 의도적으로 심어둔 것일 수도 있는 팁을 속삭이고, 시장에서 공매도(short)를 하며, 뇌물을 주고, 동맹을 중재합니다. 그동안 치안관(magistrate)은 당신이 알지 말아야 할 정보로 거래하는 것을 추적하며 당신을 쫓습니다. 생물들은 당신이 자신들을 어떻게 대했는지 기억하고 이에 맞서 음모를 꾸밉니다. 그리고 가장 큰 변화는 내부 엔진에 있습니다. 이제 모든 생물은 서로 다른 연구소의 소형 모델로 사고합니다. 이것은 엔지니어링 보고서입니다.
에이전트 의회를 운영하는 가장 명백한 방법은 하나의 모델에 여러 프롬프트(prompts)를 사용하는 것입니다. 하지만 v2는 네 가지 모델을 실행합니다: gpt-oss-20b (OpenAI), MiniCPM3-4B (OpenBMB), Nemotron-Mini-4B (NVIDIA), 그리고 제가 직접 미세 조정한 Qwen 0.5B입니다. 목적은 단순히 새로움을 추구하는 것이 아닙니다. 시장은 참여자들이 진정으로 다를 때 흥미로워지며, 서로 다른 데이터와 서로 다른 사후 학습(post-training) 과정을 거친 네 연구소의 모델은 소형 모델이 가질 수 있는 최대한의 차이점을 보여줍니다. 부엉이는 여우의 투기 방식과는 다르게 재산을 축적합니다. 의회는 짜여진 대본이 아니라 실시간으로 벌어지는 논쟁입니다.
하나의 플랫폼 위에 네 개의 서로 다른 모델을 세워보니 진짜 교훈이 드러났습니다. 마찰(friction)은 모델링 계층(modeling layer)이 아니라 거의 전적으로 서빙 계층(serving layer)에서 발생한다는 점입니다.
- 현재의 vLLM (0.22.1)은 로드 시 커널을 JIT 컴파일하며 CUDA 툴킷(
nvcc...
) 존재. 가벼운 베이스 이미지(lean base image)에는 이것이 포함되어 있지 않으므로, CUDA devel 이미지(CUDA development image)를 기반으로 하기 전까지 네 가지 모델 모두 "could not find nvcc" 오류와 함께 동일하게 실패했습니다. 이는 gpt-oss만의 특이한 현상이 아니라, 해당 vLLM 버전의 보편적인 문제였습니다. 이미지 하나를 수정함으로써 모든 문제가 해결되었습니다. - gpt-oss-20b는 네이티브 MXFP4 양자화 (quantization) 상태로 실행되며, 24GB L4 GPU에 여유 공간을 두고 들어갑니다. 따라서 고사양 GPU가 필요하지 않습니다. 또한 이 모델은 답변을 분석 서문(analysis preamble)으로 감싸는 채널 형식을 사용하므로, 소비자(consumer)는 최종 채널을 추출해야 합니다.
- MiniCPM3는
trust_remote_code=True가 필요했습니다. - Nemotron은 문제없이 로드되었습니다. 모델별 주의사항(footguns)은 각각 한 줄의 설정으로 해결 가능했습니다.
네 개의 이질적인 모델을 다룰 수 있게 만든 핵심은 v1에서 단일 모델을 다룰 수 있게 했던 것과 동일한 기본 요소, 즉 모든 모델의 출력이 통과하는 관대한 JSON 파싱 및 복구 레이어 (JSON parse-and-repair layer)였습니다. 서로 다른 토크나이저 (tokenizer)와 포맷팅 습관은 각기 다른 형태의 오류를 생성하지만, 파서 (parser)는 복구할 수 없는 부분을 버리며 시뮬레이션은 절대 충돌하지 않습니다. 이 레이어를 한 번 구축해 두면, 모델을 추가하는 것은 리팩토링 (refactor)이 아닌 단순한 설정 항목 추가가 됩니다.
v2의 극적인 핵심은 내부 정보 (insider tip)입니다. 당신은 진실된 정보(이 카드가 끌어올 다음 시장 광풍에 대한 실제 예측, 즉 당신의 진정한 우위) 또는 거짓된 정보(미끼)를 생명체에게 속삭일 수 있습니다. 진실된 정보를 바탕으로 행동하여 이익을 얻으면 당신의 열기 (heat)가 상승합니다. 임계값을 넘어서면 판관 (magistrate)이 조사를 시작하며, 이는 벌금, 자산 동결 또는 추방으로 끝납니다.
그것이 진정한 게임이 되려면, 팁(tip)의 진실은 생명체(creatures)들로부터 숨겨져야 합니다. 그들은 루머 텍스트(rumor text)는 볼 수 있지만, 플래그(flag)는 절대로 봐서는 안 됩니다. 이것은 UI의 편의성이 아니라 보안 속성(security property)이며, 소형 모델 에이전트(small-model agents)는 이를 더욱 날카롭게 만듭니다. 모델이 다시 반복할 수 있는 모든 것은 프롬프트(prompt)에 넣은 내용이기 때문입니다. 따라서 숨겨진 플래그는 프롬프트 외부(플레이어의 원장(ledger) 상)에 완전히 존재하며, 생성 시 공용 이벤트 기록(public event record)에서 제거됩니다. 내레이터(narrator)가 요약하는 유일한 것은 공용 이벤트뿐입니다. 단일 테스트는 금지된 토큰(banned tokens)을 찾기 위해 매 턴마다 모든 생명체의 전체 프롬프트를 스캔합니다. 이 테스트는 전체 테스트 스위트(suite)에서 가장 중요한 테스트입니다. 에이전트에게 비밀 정보를 제공할 때는, 테스트를 통해 유출될 수 없음을 증명하기 전까지는 반드시 유출될 것이라고 가정하십시오.
생명체들은 지속적인 관계(persistent relationships)를 유지합니다. 즉, 이벤트에 의해 유도되는(예: 당신이 내 작물을 공매도했다, 당신이 대출금을 상환했다, 당신이 나를 라이벌과 동맹 맺게 했다) 후원자(Patron) 및 서로에 대한 서명된 감정(signed sentiment)입니다. 적대적으로 변한 생명체는 당신의 대출을 거부하고 더 나쁜 조건을 제시하며, 동맹 관계인 생명체들은 서로 가격을 깎는 행위를 멈추고 카르텔(cartel)처럼 행동합니다.
함정은 프롬프트 인플레이션(prompt inflation)입니다. 가공되지 않은 이력(Raw history)은 무한히 커지며, 소형 모델은 그 안에서 침몰합니다. 해결책은 이력을 프롬프트에 절대 넣지 않는 것입니다. 모델은 정수형 감정(integer sentiment)에서 도출되어 가장 강한 몇 가지 감정으로 제한된, 한 줄짜리 버킷형 요약(
소형 모델은 신뢰할 수 있는 형식 생성기(format generator)이지만 신뢰할 수 없는 추론기(reasoner)입니다. 규모(scale)가 아닌 구조(structure), 프롬프팅(prompting), 그리고 소규모 미세 조정(fine-tune)을 통해 그 간극을 메워야 합니다. 이질적인 위원회(heterogeneous council)는 동질적인 위원회(homogeneous council)보다 더 흥미로우며, 서빙 레이어(serving layer)가 견고하다면 설정(config)을 한 번만 수행하는 것으로 충분합니다. 에이전트(agent)에게 제공되는 비밀 정보는 방화벽(firewall)의 문제이며, 방화벽은 프롬프트 지침(prompt instruction)이 아니라 테스트로 증명된 데이터 흐름(data flow) 내에 존재해야 합니다. 그리고 지속성 메모리(persistent memory)는 프롬프트가 오직 제한된 요약(bounded summary)만을 보게 하는 한, 에이전트가 살아있는 것처럼 느끼게 만드는 가장 저렴한 방법입니다.
소형 모델, 거대한 모험. 위원회 전체는 공개되어 있으며, 그 흔적(traces) 또한 공개되어 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Hugging Face Blog의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기