내가 구축한 아키텍처와 실제로 배포할 수 있는 아키텍처
요약
본 글은 오프라인 금융 자문 앱 Vicquant의 아키텍처를 소개합니다. 핵심은 클라우드 의존성이 없는 듀얼 로컬 모델(Llama-3.1-8B와 Phi-3.5-mini)을 사용하여 추론 품질과 속도를 모두 확보하는 것입니다. 현재 라이브 데모는 OpenRouter에 연결되어 있지만, 개발자는 투명하게 아키텍처의 제약 조건과 향후 계획을 공유하며 신뢰 구축의 중요성을 강조합니다.
핵심 포인트
- Vicquant는 Llama-3.1-8B와 Phi-3.5-mini를 활용한 듀얼 로컬 모델 설계를 채택했습니다.
- 추론 품질과 응답 속도라는 상충되는 목표를 하나의 모델로 최적화할 수 없어 분리했습니다.
- 현재 라이브 데모는 OpenRouter에 의존하며, 오프라인 로컬 추론은 호스팅 환경 구축 후 제공될 예정입니다.
- 기술적 주장의 신뢰도를 유지하기 위해 '설계'와 '배포 가능성' 사이의 간극을 투명하게 공개하는 것이 중요합니다.
저는 대회에 참가하게 되었고, 그 경험을 통해 흥미로운 통찰력을 얻게 되었으며, 이는 Vicquant를 구축하는 계기가 되었습니다. 오프라인 금융 자문 앱이었는데, 이를 만들면서 문제가 발생했고, 이 문제를 해결하고 당분간 혁신적인 방식으로 접근할 수 있게 되었습니다.
Vicquant의 핵심 아이디어는 클라우드 의존성이 전혀 없는 듀얼 로컬 모델(dual local-model) 설정입니다. 깊은 금융 추론을 위해 Llama-3.1-8B-Instruct를 사용하고, 빠르고 낮은 RAM 사양의 대체재로 Phi-3.5-mini를 사용하며, 이 두 모델 모두 사용자 기기에서 llama.cpp를 통해 직접 실행됩니다. 분할한 이유에 대해서는 곧 별도의 글로 설명하겠지만, 간단히 말해 추론 품질과 응답 속도는 서로 반대 방향으로 작용하기 때문에 하나의 모델로는 둘 다 최적화할 수 없습니다.
이 설계는 실제로 존재합니다. 코드가 있고, 모델 라우팅 로직도 있으며, 8GB RAM / 4 vCPU 환경에서 초당 약 12~15 토큰으로 테스트를 통과했습니다.
실제로 배포 가능한 부분
보통 이런 글에는 잘 포함되지 않는 부분이 바로 이것입니다. 8B 파라미터 모델을 실행하려면 의미 있는 RAM과 CPU가 필요합니다. 제가 현재 호스팅하고 있는 PaaS 계정은 Pro 플랜이 있지만, 아직 구매하지 않았습니다. 따라서 지금 라이브인 Vicquant 버전으로는 로컬 모델을 프로덕션 환경에서 실행할 수 없습니다.
배포를 중단하거나 아무것도 출시하지 않기보다는, OpenRouter에 연결하여 앱이 오늘 AI 응답을 제공할 수 있도록 했습니다. 실질적으로 이것은 다음과 같은 의미입니다: 현재 배포된 데모는 인터넷 연결이 필요하며 모델 호출을 OpenRouter를 통해 라우팅합니다. 오프라인 모드는 이 배포에서는 비활성화되어 있습니다. 로컬 추론 아키텍처가 사라진 것은 아니며, 코드베이스에 존재하고 테스트되었으며, 제가 호스팅 플랜 비용을 지불할 수 있게 되면 돌아올 것입니다. 하지만 현재 제공하지 못하는 기능을 라이브 데모가 암시하게 두는 것보다는 직접적으로 말하는 편이 낫다고 생각합니다.
왜 숨기지 않고 이 글을 쓰는지
두 가지 이유가 있습니다.
먼저, 신뢰도는 복리처럼 쌓입니다. 만약 누군가 라이브 데모에서 네트워크 요청을 검사하여 제가 주장한 내용과 불일치를 발견한다면, 제가 이전에 했던 모든 기술적 주장이 할인됩니다. 백테스팅 게이트, 테스트 스위트 등 모든 것이요. 지금 진실을 말하는 것은 저에게 약간 덜 인상적인 포스트 하나를 비용으로 요구합니다. 거짓말을 하는 것은 쉽게 재건할 수 없는 신뢰를 비용으로 요구합니다.
둘째, 이 제약 조건 자체가 글감이 됩니다. '설계한 아키텍처'와 '첫날 배포할 여유가 있는 아키텍처' 사이의 간극은 실제로 흔하고 일반적인 문제입니다. 그리고 이는 대부분 빌드-인-퍼블릭(build-in-public) 콘텐츠에서 깨끗한 서사 구조를 선호하는 바람에 무시되는 부분입니다. 깨끗한 서사가 항상 정직한 것은 아닙니다.
이것에 영향을 받지 않는 것들
어떤 모델이 답변하든 상관없이 의존하지 않는 것들:
147/147 테스트가 지표(SMA, EMA, RSI, MACD, Bollinger, ATR) 전반, 시그널 엔진(캔들스틱 패턴, z-score 평균 회귀, 모멘텀), 그리고 백테스팅 엔진(최소 2년 기록, 워크 포워드 검증, 비용 및 슬리피지 포함)에 걸쳐 통과합니다.
AI는 아무것도 계산하지 않습니다. 모든 숫자는 결정론적 Python에서 나옵니다. 설명이 로컬 Phi-3.5 모델에서 나오든 OpenRouter가 호스팅하는 모델에서 나오든, 그 역할은 동일합니다. 이미 정확한 숫자를 평이한 언어로 설명할 뿐, 절대로 생성하지 않습니다.
백테스트 게이트. 어떤 시그널도 실행되는 모델에 관계없이 2년의 과거 데이터로 스스로 증명되지 않고 사용자에게 도달할 수 없습니다.
다음 단계
호스팅 제약이 해제되면 로컬 추론(Local inference)을 제공할 것입니다. 그 일이 일어날 때 업데이트를 올릴 것이고, 그 이전에 올리지는 않을 것입니다. 읽어주셔서 감사합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기