본문 바로가기

전체 글

TriAttention: Efficient Long Reasoning with Trigonometric KV Compression KV Cache가 뭔지부터Transformer는 토큰을 하나씩 생성할 때마다 이전 모든 토큰의 K, V를 다시 계산해야 한다. 이걸 피하려고 이전에 계산한 K, V를 메모리에 저장해두는 게 KV Cache다. 매 step마다 새 토큰의 K, V만 추가하면 되니까 중복 계산을 없앨 수 있다.문제는 메모리다.메모리 = 2 × L × H × d_head × T × bytes_per_element 각 항의 의미는 이렇다. 2는 K와 V를 각각 저장하기 때문이고, L은 레이어 수, H는 레이어당 헤드 수, d_head는 헤드 하나의 차원, T는 시퀀스 길이, bytes_per_element는 dtype에 따른 바이트 수(FP16이면 2, BF16이면 2, FP32이면 4)다. d_model = H × d_head.. 더보기
DEO: Training-Free Negation-Aware Retrieval 실무에서 RAG를 구축하다 보면 반드시 마주치는 케이스가 있다. 쿼리에 특정 요소를 제외해야 하는 상황이다.일반적인 접근은 index를 분리하거나 metadata 필터링을 거는 것이다. 예를 들어 연도별로 index를 나누거나, 문서에 태그를 붙여 특정 조건을 만족하는 문서만 검색 pool에 포함시키는 식이다. 그러나 이 방식에는 명확한 한계가 있다. 같은 도메인 안에서는 index를 무한정 분리할 수 없다. 세분화할수록 index가 파편화되고, 각 shard의 문서 수가 줄어들면서 recall이 떨어지는 트레이드오프가 발생한다. 결국 "2024 결과를 제외한 최신 실적 전망"처럼 동일 도메인 내에서 특정 조건만 배제하는 쿼리는 index 분리로는 근본적으로 해결이 어렵다. dense retrieval은.. 더보기
Direct Preference Optimization(DPO)와 그 문제점 RLHF는 강력하지만 무겁다. Reward model, critic model, policy model, reference model — 최소 3~4개의 모델이 동시에 올라가야 한다. DPO(Direct Preference Optimization) 는 이 파이프라인을 목적 함수 하나로 압축한다.DPO 목적 함수DPO의 목적 함수는 다음과 같이 정의된다. $$\max_{\theta} \mathbb{E}{\mathcal{D}} [\log \sigma (r{\theta}(y_w) - r_{\theta}(y_l))]$$여기서 $r_\theta(y)$는 다음과 같이 정의된다.$$r_\theta(y) := \beta \log \frac{\pi_\theta(y \mid x)}{\pi_\text{ref}(y \mid .. 더보기
멀티 에이전트 설계에서 반복적으로 부딪히는 질문들 멀티 에이전트 시스템을 설계하다 보면 결국 반복적으로 부딪히는 질문들이 있다.특히 Context 전달, 제어 흐름, 도구 설계, 상태 관리는 시스템의 안정성과 성능을 직접적으로 좌우하는 요소다. 아래 질문들은 결국 세 가지로 귀결된다:- Context를 어떻게 전달할 것인가- 제어 흐름을 어떻게 구성할 것인가- 책임을 어디에 둘 것인가1. Context 전달 범위Q. Handoff를 사용할 때 반드시 전체 Context를 전달해야 할까?A. 기술적으로는 결과만 전달하는 것도 가능하다. 하지만 결과만으로 다음 작업을 이어가는 것은 맥락 부족으로 인해 오류가 발생할 가능성이 높다. 특히 복잡한 작업에서는 전체 Context를 공유하는 것이 안정적이다. 반면 단순한 작업이라면 결과만 전달하는 방식도 고려할 수.. 더보기
멀티 에이전트 시스템과 Context LLM 기반 시스템을 설계하다 보면 결국 하나의 질문으로 수렴한다.“모델에게 어떤 Context를 줄 것인가?”이다. LLM은 단순히 질문에 답하는 엔진이 아니라, 입력된 Context를 기반으로 다음 토큰을 생성하는 구조다. 즉, 모델의 성능은 모델 자체보다 어떤 정보를 어떤 방식으로 주입하느냐에 더 크게 영향을 받는다. 이때 Context는 단순한 프롬프트가 아니라, 모델이 참조하는 모든 정보의 집합이며 LLM은 이를 토큰 단위로 처리한다. 일반적으로 Context Window에는 지시문, 지식, 그리고 도구가 포함된다. 이 세 요소가 어떻게 구성되는지에 따라 모델의 행동이 달라지며, 특히 Tool 사용 방식과 정보 전달 전략은 시스템 아키텍처를 결정짓는 핵심 요소가 된다. 이러한 배경에서 등장한 개.. 더보기
하네스 엔지니어링(Harness Engineering) sLLM 모델을 활용해 실제 어플리케이션을 만드는 조직이라면 한 번쯤 반드시 고민하게 되는 지점이 있다. "우리가 할 일은 모델을 더 똑똑하게 만드는 것이 아니라, 모델이 잘 작동할 수 있는 환경을 만드는 것이다." 이 질문은 단순한 선택의 문제가 아니라 역할의 구분에 대한 문제다. 모델은 이미 학습된 상태로 주어지고, 우리가 실제로 다루는 것은 그 모델이 동작하는 환경이다. 물론 sLLM을 SFT(supervised fine-tuning)하거나 ORPO(odds ratio-based optimization)와 같은 방식으로 모델을 직접 개선하는 접근도 존재한다. 그러나 실제 서비스 환경에서는 이러한 방식이 비용과 시간 측면에서 매우 큰 부담이 된다. 결국 AI 엔지니어인 우리가 반복적으로 설계하고 개.. 더보기
LLM의 Dynamic Batching이 서비스를 안정시키는 이유 LLM 추론 서비스에서 동적 배치(Dynamic Batching)를 적용하고 부하 테스트를 수행하면 흥미로운 현상을 관찰하게 된다. 트래픽이 증가하는데도 p50(중앙값) 지연 시간이 일정 구간까지 거의 변하지 않거나 오히려 감소하는 경우가 있다. 직관적으로는 "요청이 늘어나면 당연히 느려져야 하는 것 아닌가?"라는 의문이 들지만, GPU 기반 추론 시스템에서는 그 반대 구간이 존재한다. 이를 이해하려면 먼저 지연 시간을 분해해야 한다. 개별 요청의 종단 간 지연을 아주 간단하게 표현하면 다음과 같이 표현할 수 있다. $Latency = T_{queue} + T_{compute}$ 여기서 $T_{queue}$는 배치에 합류하기 위해 기다리는 시간이고, $T_{compute}$는 GPU에서 실제 계산에 소요.. 더보기
[Experiment] 작은 효과와 실험의 민감도 프로덕트의 주요 지표에 대한 작은 영향도 기업 수익에 큰 영향을 줄 수 있다. 예를 들어 전환율이 0.1%만 올라가도 수익은 수십억 원 단위로 차이 날 수 있다. 하지만 문제는 작은 영향을 탐지하는 것이 매우 어렵다는 데 있다. 이 어려움은 실험의 민감도(Sensitivity)와 직결된다.왜 작은 영향을 탐지하는 것은 어려운가?간단한 예를 들어보자. Booking의 Power Calculator에 따르면, 전환율이 2%인 웹사이트에서 단 1%의 Relative MDE(minimum detectable effect)를 감지하기 위해서는 무려 1,200만 명 이상의 사용자가 필요하다고 한다.이는 매우 작은 효과를 탐지하기 위해서는 엄청난 트래픽과 실험 시간이 요구된다는 뜻이다. 결국 현실적인 제약 속에서 우.. 더보기