- Continuous Batchingμ μμ² λ¨μκ° μλ ν ν° μμ± λ¨μ(iteration-level)λ‘ λ°°μΉλ₯Ό λμ κ΄λ¦¬νλ μ€μΌμ€λ§ κΈ°λ²
- μλ£λ μμ²μ μ리μ μ μμ²μ μ¦μ μ½μ
νμ¬ GPU μ ν΄ μκ°μ μ΅μννλ μΆλ‘ μ΅μ ν λ°©μ
- Static Batching λλΉ μ΅λ 23λ°° μ²λ¦¬λ ν₯μ, GPU νμ©λ₯ 30
60% β 8095%λ‘ κ°μ νλ μ€μκ° λ°°μΉ μ λ΅
ν΄λΉ κ°λ
μ΄ νμν μ΄μ
- LLM μμ²λ§λ€ μΆλ ₯ κΈΈμ΄κ° λ€λ¦ β μ΄λ€ μμ²μ 50ν ν°, μ΄λ€ μμ²μ 500ν ν°
- Static Batchingμ κ°μ₯ κΈ΄ μμ²μ΄ λλ λκΉμ§ λ€λ₯Έ μμ²μ κΈ°λ€λ¦¬κ² λ§λ¦
- μ€μκ° μλΉμ€(μ±λ΄, API)μμλ μλ΅ μ§μ°μ΄ κ³§ μ¬μ©μ κ²½ν μ ν
AS-IS (Static Batching)
sequenceDiagram
autonumber
participant R1 as μμ² 1 (50ν ν°)
participant R2 as μμ² 2 (100ν ν°)
participant R3 as μμ² 3 (500ν ν°)
participant GPU as GPU
Note over GPU: Batch μμ (3κ° μμ²)
R1->>GPU: 50ν ν° μμ± μλ£
Note over R1: β¬ λκΈ° (GPU λλΉ)
R2->>GPU: 100ν ν° μμ± μλ£
Note over R2: β¬ λκΈ° (GPU λλΉ)
R3->>GPU: 500ν ν° μμ± μλ£
Note over GPU: μ 체 Batch μλ£<br/>β κ·Έμ μμΌ μ μμ² μμ©
TO-BE (Continuous Batching)
sequenceDiagram
autonumber
participant R1 as μμ² 1 (50ν ν°)
participant R4 as μμ² 4 (μ μμ²)
participant R2 as μμ² 2 (100ν ν°)
participant R5 as μμ² 5 (μ μμ²)
participant GPU as GPU
Note over GPU: Iteration-level μ€μΌμ€λ§
R1->>GPU: 50ν ν° μλ£ β μ¦μ λΉ μ§
R4->>GPU: λΉμ리μ μ¦μ ν¬μ
R2->>GPU: 100ν ν° μλ£ β μ¦μ λΉ μ§
R5->>GPU: λΉμ리μ μ¦μ ν¬μ
Note over GPU: GPU νμ μ΅λ νμ©
Static vs Continuous Batching λΉκ΅
| Static Batching | Continuous Batching |
|---|
| μ€μΌμ€λ§ λ¨μ | λ°°μΉ(Batch) λ¨μ | μ΄ν°λ μ΄μ
(ν ν°) λ¨μ |
| λΉμ리 μ²λ¦¬ | λ°°μΉ λλ λκΉμ§ λκΈ° | μλ£ μ¦μ μ μμ² μ½μ
|
| ν¨λ© λλΉ | κ°μ₯ κΈ΄ μμ²μ λ§μΆ° ν¨λ© | κ° μμ²μ μ€μ ν ν°λ§ μ²λ¦¬ |
| GPU νμ©λ₯ | 30~60% | 80~95% |
| μ²λ¦¬λ | κΈ°μ€ | μ΅λ 23λ°° ν₯μ |
| μ ν©ν μ¬μ©μ² | μ€νλΌμΈ μΌκ΄ μ²λ¦¬ | μ€μκ° μλΉμ€ (μ±λ΄, API) |
λμ μ리 β Iteration-Level Scheduling
- μ¬λ¬ μμ²μ νλμ λ°°μΉλ‘ λ¬Άμ΄ GPUμ ν¬μ
- λ§€ ν ν° μμ± μ΄ν°λ μ΄μ
λ§λ€ λ°°μΉ κ΅¬μ±μ μ¬νκ°
- μλ£λ μμ²μ μ¦μ λ°°μΉμμ μ κ±°
- λΉ μ¬λ‘―μ λκΈ° μ€μΈ μ μμ²μ μ¦μ μ½μ
- λ°λ³΅ β GPUκ° νμ μ΅λ μ©λμΌλ‘ λμ
μ°Έκ³ λ¬Έμ