전체 글(108)
-
[LLM] DeepSeek-V3
이번 글에서는 DeepSeek-V3에서 사용된 방법론들에 대해 살펴볼 것이다. DeepSeek-V3은 기존 트랜스포머 아키텍처와 두 가지 주요 부분에서 차이를 보인다.1. Multi-Head Attention (MHA) → Multi-Head Latent Attention (MLA)2. FeedForward Network (FFN) → Mixture of Experts (MoE) 기반 FeedForward Network (FFN)1. Mutli-head Latent Attention (MLA)최근 CoT, 추론 모델(reasoning model)의 등장 등 inference-time scaling 방법론이 각광 받으면서, 답변 길이가 길어지는 추세가 나타나 KV Cache가 점유하는 메모리 사용량이 늘어..
2025.02.28 -
[LLM 시간 및 메모리 최적화] 2. KV Cache & Paged Attention
KV CacheTransformer 디코더의 각 레이어에서 $i$번째 Query, Key, Value의 행은 직전 레이어의 $i$번째 Query와 $1$부터 $i$번째 Key, Value의 행에 영향을 받는다.다시 말해, $i$번째 Query, Key, Value의 행은 직전 레이어의 $i$번째 이후의 Query, Key, Value의 행에 전혀 영향을 받지 않는다.$i$시점에 계산된 Query, Key, Value는 그 이후로도 변하지 않는다.그렇기 때문에, $i+1$번째 토큰을 예측할 때, 이전에 계산했던 $1$부터 $i$번째 Key, Value의 행을 그대로 재활용할 수 있다는 것이다.(참고로, $i+1$번째 토큰 예측 시 오직 $i+1$번째 Query 행만 필요하기 때문에, Query에서 재활용할..
2025.02.26 -
[LLM 시간 및 메모리 최적화] 1. Flash Attention
0. Background: TilingTiling 기법은 attention 연산 시 각 행렬($\mathbf Q, \mathbf K, \mathbf V$)을 블록 단위로 처리함으로써, 메모리 및 연산 효율성을 높이는 기법이다. 1. Standard Attention해당 알고리즘에서는 $O(N^2)$ matrix인 $\mathbf S$와 $\mathbf P$가 각각 한번 씩 총 2번 write/read된다. 아래 순서도와 같이 $O(N^2)$ I/O 연산 없이 $\mathbf O$를 도출할 수 없을까?기존 알고리즘에서 $\mathbf S$로 $\mathbf P$를 계산하기 위해서는, 각 행(row)별 최댓값(row-wise max value)이 필요하다. 즉, 각 행의 모든 요소가 필요하다. 그렇기 때문에..
2025.02.24 -
[RL] ColossalAI PPO 코드 리뷰 (작성중..)
배경InstructGPT 논문에서는 RLHF의 학습에 PPO 알고리즘이 사용된다고 설명한다.다만, 개인적으로 RLHF의 목표 함수와 PPO의 손실 함수 간의 연관성을 파악하지 못해 학습 과정이 어떻게 이루어지는지 알기 어려웠다. 이를 이해하기 위해 ColossalAI의 PPO 코드를 살펴봤다.코드 리뷰0. PPO 학습 파이프라인1. 학습 준비: PPOTrainer의 생성자PPO 학습에 필요한 네 가지 모델이 인자로 전달되는 것을 확인할 수 있다.- inital_model: SFT 모델- actor: Policy 모델 (=RL 모델)- critic: Value 모델 (= $V_\pi$, 추정 상태 가치 함수)- reward_model: Reward 모델 * 엄밀히 말하면, reward_model은 $Q..
2025.02.21 -
[DB] 5. 트랜잭션(Transaction)
트랜잭션(transaction)은 데이터베이스의 상태를 변경시키는 하나의 논리적 작업 단위를 의미한다.1. ACID트랜잭션은 4가지 성질을 충족해야 한다.1. 원자성 (Atomicity): 트랜잭션의 모든 연산(액션, action)이 수행되거나 수행되지 않아야 하는 성질2. 일관성 (Consistency): 3. 고립성 (Isolation): 여러 트랜잭션의 교차 수행 결과와 직렬 수행 결과가 동일해야 하는 성질4. 지속성 (Durability): 2. 스케줄(Schedule)- DBMS에서 트랜잭션은 일련의 작업(액션, action)들로 구성되어 있다. 트랜잭션의 작업에는 읽기(read), 쓰기(write), 완료(commit), 철회(abort)가 있다. - 스케줄은 (여러) 트랜잭션 실행 시 진행되..
2024.12.15 -
[DB] 4. 외부 정렬(External Sorting)
이번 글에서는 DB에서 자주 사용되고, 비용이 비싼 연산인 정렬에 대해 알아볼 것이다.탐색 키를 기준으로 한 정렬은 DBMS에서 자주 사용되는 연산이다. 대표적으로, 1. 인덱스 생성 시, 2. sort-merge 조인 시, 3. 중복 제거 시에 사용된다.1. 외부 합병 정렬(External Merge Sort)외부 합병 정렬은 이름에서 알 수 있듯이 합병 정렬 알고리즘의 아이디어(divide-and-conquer)를 기반으로 한 기법이다.외부 합병 정렬 알고리즘은 다음과 같다.1. 파일을 $N$개의 부분 파일로 분할한다.2. 부분 파일을 $b$개 씩 묶어 내부 정렬을 수행해 총 $\lceil N/b \rceil$개 부분 파일로 재구성한다.3. 부분 파일을 $b-1$개씩 묶어 정렬해 수행해 총 $\lce..
2024.12.14