HOME » WIKI » 밑바닥부터 시작하는 딥러닝

밑바닥부터 시작하는 딥러닝

밑바닥부터 시작하는 딥러닝 6 2026, 2026

★★★★☆

  • p91 유사도 계산. 가중치만큼 v를 곱한 결과를 직관적으로 보여주는 것은 좋으나 소프트 딕셔너리라는 용어는 일반적으로 통용되는 용어가 아니다.
# 01_soft_dict.py
각 영화의 가중치:
영화 (8, 2, 3): 0.00%
영화 (3, 9, 1): 88.05%
영화 (1, 2, 9): 0.00%
영화 (5, 5, 5): 0.00%
영화 (7, 6, 2): 11.92%
영화 (2, 7, 6): 0.03%
영화 (9, 1, 1): 0.00%

새로운 영화 (3, 5, 1)의 예측 평점: 71.19점
  • p136 Low Rank Approximation으로 어텐션 결과의 계산량을 줄인다고. 그런데 softmax 결과가 c x 128인데 애초에 12288로 결과가 계산되지 않는데…
  • p200 Dr. GRPO에서 advantage계산에 std 제외
  • p263 RoPE는 회전 행렬을 사용해 상대 위치 정보를 어텐션에 반영

RoPE는 (Q, K에만 적용) max_context_leng의 arange에서 각 attention head 크기 1/2 만큼 angles값을 먼저 만들어 낸다.

# angles
tensor([[   0.0000,    0.0000,    0.0000,    0.0000],
        [   1.0000,    0.1000,    0.0100,    0.0010],
        [   2.0000,    0.2000,    0.0200,    0.0020],
        ...,
        [1021.0000,  102.1000,   10.2100,    1.0210],
        [1022.0000,  102.2000,   10.2200,    1.0220],
        [1023.0000,  102.3000,   10.2300,    1.0230]])

cos = torch.cos(angles)
sin = torch.sin(angles)

>>> cos
tensor([[ 1.0000,  1.0000,  1.0000,  1.0000],
        [ 0.5403,  0.9950,  0.9999,  1.0000],
        [-0.4161,  0.9801,  0.9998,  1.0000],
        ...,
        [-0.9998,  0.0018, -0.7072,  0.5225],
        [-0.5550, -0.0981, -0.7001,  0.5217],
        [ 0.4001, -0.1969, -0.6930,  0.5208]])

회전 적용:

x_rot_even = x_even * cos - x_odd * sin
x_rot_odd  = x_even * sin + x_odd * cos

이후 원래 순서로 복원:

out = torch.stack([x_rot_even, x_rot_odd], dim=-1)
out = out.reshape(batch_size, num_head, context_len, key_dim)
  • p288 성능 측정 GPT forward 속도 및 kvache 크기

현재 내 PC는 Samsung DDR5-5200 32GB 듀얼 채널로 83.2GB/s,
RTX 4080 SUPER, GDDR6X 16GB는 736GB/s

GPT 모델: 11.39M (CPU)
생성 토큰 수: 512
kvcache X: 17.47초
kvcache O: 2.52초 (6.9x, 2.36M)

GPT 모델: 11.39M (CPU)
생성 토큰 수: 1024
kvcache X: 91.18초
kvcache O: 5.83초 (15.6x, 4.72M)

GPT 모델: 11.39M (CPU)
생성 토큰 수: 2048
kvcache O: 13.78초 (N/A, 9.44M)

GPT 모델: 11.39M (CPU)
생성 토큰 수: 4096
kvcache O: 38.15초 (N/A, 18.87M)

CPU가 코어가 적으므로 kvcache 없을 때 시간이 훨신 더 오래 걸린다.

GPT 모델: 11.39M (GPU)
생성 토큰 수: 512
kvcache X: 2.49초
kvcache O: 2.08초 (1.2x, 2.36M)

GPT 모델: 11.39M (GPU)
생성 토큰 수: 1024
kvcache X: 4.33초
kvcache O: 3.56초 (1.2x, 4.72M)

GPT 모델: 11.39M (GPU)
생성 토큰 수: 2048
kvcache X: 12.85초
kvcache O: 6.98초 (1.8x, 9.44M)

GPT 모델: 11.39M (GPU)
생성 토큰 수: 4096
kvcache X: 611.35초
kvcache O: 14.49초 (42.2x, 18.87M)

GPT 모델: 11.39M (GPU)
생성 토큰 수: 8192
kvcache O: 30.53초 (N/A, 37.75M)

GPT 모델: 11.39M (GPU)
생성 토큰 수: 16384
kvcache O: 60.47초 (N/A, 75.50M)

GPU는 kvcache를 사용하면 50% Util도 제대로 채우지 못하고, CPU 코어 1개만 100% 사용한다. (kvcache X일때는 GPU-Util 100%)

  • p358 Gradient Checkpoint: forward시 중간 출력을 적게 저장해 메모리를 절약. 저장하지 않은 값은 backprop시 다시 계산. 메모리를 아낄 수 있는 대신 같은 연산을 다시 수행하므로 학습 시간은 늘어난다.
Last Modified: 2026/10/08 21:43:55
자바 알고리즘 인터뷰 파이썬 알고리즘 인터뷰

카카오 코딩 테스트 출제위원이 직접 집필한,
리트코드(LeetCode) 문제로 풀어보는,
구글, 마이크로소프트, 네이버, 카카오
코딩 테스트 완벽 가이드
『자바 알고리즘 인터뷰』,
『파이썬 알고리즘 인터뷰』

© 2000 - Sang Park Except where otherwise noted, content on this site is licensed under a CC BY-NC 4.0.
This site design was brought from Distill. Logo and wiki background image was brought from Bear.