Routing LLM Inference in Production: From Engine Signals to Policy โ Qianru Lao & Lu Zhang, OpenAI
ํ ์ค ํต์ฌ
OpenAI์ ์ถ๋ก ํธ๋ํฝ ๋ผ์ฐํ ์ ์์ง ์ ํธ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ๋ ํผ๋๋ฐฑ ๋ฃจํ์์ ๋ฒ์ด๋, ์ ์ญ ์ต์ ํ๋ ์ ์ฑ ์ ์ปจํธ๋กค ํ๋ ์ธ๊ณผ ๋ฐ์ดํฐ ํ๋ ์ธ์ผ๋ก ๋ถ๋ฆฌํด ๋ ์์ธก ๊ฐ๋ฅํ๊ณ ์์ ์ ์ผ๋ก ์ด์ํ๋ ๋ฐฉํฅ์ผ๋ก ์งํํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:00
์์ง ์ ํธ ํผ๋๋ฐฑ ๋ฃจํ์์ ๋ช ์์ ์ ์ฑ ์ผ๋ก ์ถ๋ก ๋ก๋ ๋ฐธ๋ฐ์๋ ํ๋ฐํธ์๋ CPU ํด๋ฌ์คํฐ์ GPU ์์ง ํด๋ฌ์คํฐ ์ฌ์ด์์ ์์ฒญ์ ์ค๊ณํ๋ฉฐ, ํต์ฌ ์ญํ ์ ์์ง ์ ํ๊ณผ ํ๋ก์๋ค. ์ด์ ์ ์์ง ์ ํธ์ ๋ฐ์ํ๋ ๋ ์์ธก ๊ฐ๋ฅํ ๋ผ์ฐํ ์ ์ฑ ์ผ๋ก ๋ฐ๋๋ ๊ณผ์ ์ ์๋ค.
-
2:44
์ถ๋ก ๋ผ์ฐํ ์ด ํน๋ณํ ์ด์ ์ถ๋ก ๋ผ์ฐํ ์ TTF(TTFT), token throughput(TBOT), ๊ฑด๊ฐ ์ํ, ํ์ฉ๋ ๊ฐ์ ์ค์๊ฐ ์ ํธ์ KV cache ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ์ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค. ๊ฐ์ ๋ํ์ ํ์ ์์ฒญ์ ๊ฐ์ ์์ง์ ๋ณด๋ด๋ฉด ์ฌ๊ณ์ฐ์ ์ค์ฌ ์ง์ฐ๊ณผ ๋น์ฉ์ ๋ฎ์ถ ์ ์์ด, ๋จ์ํ ๋ถํ ๋ถ์ฐ๋ณด๋ค ํจ์ฌ ๋ณตํฉ์ ์ธ ๋ฌธ์ ๋ค.
-
3:41
์ด๊ธฐ ๋ฐฉ์: ๊ฐ์ค ์ผ๊ด ํด์ฑ ์ด๊ธฐ์๋ ๋ชจ๋ ์์ง์ด ํญ์ ํ๋ณด๊ฐ ๋ ์ ์๋ค๋ ์ ์ ์๋, ๊ฐ๋ฅํ ์์ง ์งํฉ์์ weighted consistent hashing์ผ๋ก ๋ชฉ์ ์ง๋ฅผ ๊ณจ๋๋ค. ๋ชจ๋ธ๋ณ ์ ์ฝ, ์ปดํจํธ ์ ์ฝ, ๋ฐ์ดํฐ ๋ ์ง๋์ ์ ์ฝ์ ๋ฐ์ํ๋ ํ์ค์ ์ธ ์ถ๋ฐ์ ์ด์์ง๋ง, ์ฌ์ ํ ๊ฐ์ค์น๊ฐ ๋ฌด์์ ์ํด ์ ํด์ง๋์ง๊ฐ ํต์ฌ์ด์๋ค.
-
4:23
๋น๋ก ์ ์ด๊ธฐ๋ก ๋ง๋ ๊ฐ์ค์น ์์ง์ด ๋ณด๊ณ ํ๋ ์ ํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํํํํด ์ฑ๋ฅ ์ ์๋ฅผ ๋ง๋ค๊ณ , ์ด๋ฅผ ์ ์ฒด ํ๊ท ๊ณผ ๋น๊ตํด ์์ง๋ณ weight๋ฅผ ์ฌ๋ฆฌ๊ฑฐ๋ ๋ด๋ฆฌ๋ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ๋ฌ ์ ํธ๋ฅผ ํ๋์ ๋ผ์ฐํ ๊ฒฐ์ ์ ๋ น์ฌ ์๋ ๊ท ํ์ ๋ง๋ค ์ ์์์ง๋ง, ํน์ ๊ฒฐ์ ์ ์ด์ ๋ฅผ ์ค๋ช ํ๊ธฐ ์ด๋ ต๊ณ ํ ์์๋ฅผ ์กฐ์ ํ๋ฉด ๋ค๋ฅธ ์์๊ฐ ํ๋ค๋ฆฌ๋ trade-off๊ฐ ์ปธ๋ค.
-
6:57
์บ์๋ฅผ ๊นจ๋จ๋ฆฌ๋ ์ง๋ ํผ๋๋ฐฑ ๋ฃจํ๋ ํธ๋ํฝ์ ์ฎ๊ธฐ๋ฉด ์์ง์ด ํ๋์ ํ์ฐํด์ง๊ณ , ๊ทธ ์ ํธ๊ฐ ๋ค์ ์ปจํธ๋กค๋ฌ์ ๋ฐ์๋๋ฉด์ ํธ๋ํฝ์ด ๋๋์์ค๋ ์ง๋์ ๋ง๋ค ์ ์๋ค. ์ด๋ฐ ์๋ณต์ KV cache ํ์ฉ์ ๊นจ๋จ๋ ค ํจ์จ๊ณผ ์ง์ฐ์ ์ ํ์ํค๋ฏ๋ก, ๊ธฐ์กด ๊ตฌ์กฐ๋ฅผ ๋ค์ ์ค๊ณํ ํ์๊ฐ ์๊ฒผ๋ค.
-
7:38
์ปจํธ๋กค ํ๋ ์ธ, ๋ฐ์ดํฐ ํ๋ ์ธ, ๊ทธ๋ฆฌ๊ณ ์ ์ญ ๊ด์ ๋จ์ผ CPU ํด๋ฌ์คํฐ์ ๋ก์ปฌ ์์ผ๋ก๋ ์์ง๋ค์ด ์๋ก ๋ค๋ฅธ ํ๋์จ์ด, ๊ฑด๊ฐ ์ํ, ๊ฑฐ๋ฆฌ, ์บ์ ์ํฉ์ ๊ฐ์ง๋ค๋ ์ ์ ์ถฉ๋ถํ ๋ฐ์ํ ์ ์๋ค. ์ฌ๋ฌ ํด๋ฌ์คํฐ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ์์ง๋ง ์ ํํ๋ฉด ๊ณผ๋ถํ๊ฐ ์๊ธฐ๋ฏ๋ก, ์ ์ญ ๊ด์ ์ ๊ฐ์ง control plane์ด ์ต์ ์ ๋ผ์ฐํ ์ ๊ณ์ฐํ๊ณ data plane์ด ๋น ๋ฅด๊ฒ ์คํํ๋ ๊ตฌ์กฐ๊ฐ ํ์ํ๋ค.
-
9:18
์ธ ๊ฐ์ง ๊ฒฝ๋ก: ์์ฒญ, ์ ํธ, ๋ผ์ฐํ ๊ฐ์ค์น ์์ฒญ ๊ฒฝ๋ก๋ CPU ํด๋ฌ์คํฐ์ data plane์ด ๋ก์ปฌ routing state๋ฅผ ๋ณด๊ณ ์ฆ์ ์์ง์ ์ ํํ๋ ๋๊ธฐ์ ๊ฒฝ๋ก๋ค. ์ ํธ ๊ฒฝ๋ก๋ TTFT, TBOT, ready replica ์, engine health ๋ฑ์ ์ง์ ์์งํด control plane๊ณผ data plane ๋ชจ๋์ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ์ ๊ณตํ๊ณ , ๋ผ์ฐํ ๊ฐ์ค์น ๊ฒฝ๋ก๋ control plane์ด ์ต์ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ data plane์ด ์ด๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก pullํด ๋ฐ์ํ๋ค.
-
12:03
์ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ง์ด ์๋๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ์์ง๋ง ๊ณ ์งํ๋ฉด ์ง์ญ๋ณ ์์์ GPU ์ฉ๋์ ๋ถ๊ท ํ์ ํด๊ฒฐํ์ง ๋ชปํ๋ค. ๊ฐ๊น์ด ์์ง์ด ์ด๋ฏธ ํฌํ๋ ๊ฒฝ์ฐ์๋ ์กฐ๊ธ ๋ ๋จผ ์์ง์ด ๋คํธ์ํฌ ์ง์ฐ์ ์ถ๊ฐํ๋๋ผ๋ ์ ์ฒด ๋๊ธฐ์๊ฐ์ ์ค์ฌ ๋ ๋น ๋ฅธ end-to-end ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
-
13:28
์ต์ ํ๊ธฐ ๋ด๋ถ ์ต์ ํ๊ธฐ๋ ๊ฐ CPU ํด๋ฌ์คํฐ์ ์์ฒญ๋, ์์ง๋ณ ๋คํธ์ํฌ ์ง์ฐ, ๊ฐ์ฉ ์ฉ๋๊ณผ ๊ฑด๊ฐ ์ํ, ๊ทธ๋ฆฌ๊ณ ๋ถํ์ ๋ฐ๋ฅธ TTFTยทTBOT ์ง์ฐ ํ๋กํ์ผ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์ routing weights๋ฅผ ๊ณ์ฐํ๋ค. ๋ชฉํ๋ ์ ์ฒด ํธ๋ํฝ์ ๊ธฐ๋ end-to-end latency๋ฅผ ์ต์ํํ๋ ๊ฒ์ด๋ฉฐ, ๋ชจ๋ ์์๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ฉ๋์ ๋์ง ์์ผ๋ฉฐ ๊ฐ์ค์น๊ฐ ์์๊ฐ ๋์ง ์๋ ์ ์ฝ๋ ํจ๊ป ๋ง์กฑํด์ผ ํ๋ค.
-
15:38
ํจ๋ํฐ, ์ฌ์๋ ์์ฐ, ๊ทธ๋ฆฌ๊ณ ๋ถํ ์ฐจ๋จ ์ด์ ํ๊ฒฝ์์๋ ๋ ธ๋ ์ฅ์ , GPU ์ดํ, ๋คํธ์ํฌ ์ด์์ด ์๊ธฐ๋ฏ๋ก, ์ด์ ์งํ๊ฐ ์๋ ์์ง์ weight๋ฅผ ๋ฎ์ถฐ ์ฐํํ๊ณ ํ๋ณต์ด๋ ๊ต์ฒด์ ์๊ฐ์ ๋ฒ์ด์ค๋ค. ์ฌ์๋ ์ ์ฉํ์ง๋ง ๊ณผ๋ถํ ์ํฉ์์๋ retry storm์ ๋ง๋ค ์ ์์ด ๋์ ์ธ ์์ฐ์ผ๋ก ์ ํํด์ผ ํ๋ฉฐ, ์ต์ข ์ ์ผ๋ก ์์๋ฅผ ๊ฐ๋นํ ์ ์์ ๋๋ ์ผ๋ถ ํธ๋ํฝ์ ์๋์ ์ผ๋ก shedํด์ ์ ์ฒด ์์คํ ์ด ์ฐ์ํ๊ฒ degraded ์ํ๋ก ๋ฒํฐ๊ฒ ๋ง๋ ๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ์ค์๊ฐ ์งํ๋ฅผ ๊ทธ๋๋ก ๋ผ์ฐํ ์ ๋ฐ์ํ๊ธฐ๋ณด๋ค, ์ ์ญ ์ต์ ํ๊ฐ ๊ฐ๋ฅํ ๋ณ๋ ์ ์ด๋ฉด์์ ๊ฐ์ค์น๋ก ๋ฐ๊พธ๋ฉด ์ค๋ช ๊ฐ๋ฅ์ฑ๊ณผ ์์ ์ฑ์ ํจ๊ป ๋์ผ ์ ์๋ค.
- ์บ์๊ฐ ์ค์ํ ์ถ๋ก ์์คํ ์์๋ ๋จ์ํ ๊ทผ์ ์ฑ๋ณด๋ค cache locality์ ๋ถํ ๋ถ์ฐ์ ๊ท ํ์ด ์ค์ํ๋ฉฐ, ๋ผ์ฐํ ์ง๋์ ์ค์ด๋ ์ฅ์น๊ฐ ์ฑ๋ฅ์ ์ง์ ์ ์ด๋ค.
- ์ฌ์๋์ ๋ถํ ์ฐจ๋จ์ ์คํจ ๋์ ์๋จ์ด์ง๋ง, ๊ณผ๋ถํ ๊ตฌ๊ฐ์์๋ ์คํ๋ ค ์ฅ์ ๋ฅผ ์ฆํญ์ํค๋ฏ๋ก ๋์ budget๊ณผ graceful degradation ์ ๋ต์ด ํ์๋ค.