From fork() to Fleet: Designing an Agent Sandbox Cloud โ Abhishek Bhardwaj, OpenAI
ํ ์ค ํต์ฌ
์์ด์ ํธ๊ฐ ์ฝ๋์ ๋๊ตฌ๋ฅผ ์์ ํ๊ฒ ์คํํ๋ ค๋ฉด ๋จ์ํ fork()๋ ์ปจํ ์ด๋๋ฅผ ๋์ด, ํ๋์จ์ด ๊ฒฉ๋ฆฌ๋๋ micro VM๊ณผ ์ค๋ ์ท ๊ธฐ๋ฐ ์ ์ฅยท์ค์ผ์คํธ๋ ์ด์ ๊น์ง ํฌํจํ sandbox cloud๊ฐ ํ์ํ๋ค.
์๊ฐ๋ณ ์์ฝ
-
0:01
์ด ์์์ ChatGPT์ Codex ๊ฐ์ ์ ํ์์ ๋ถํ์คํ ์ฝ๋๋ฅผ ์์ ํ๊ฒ ์คํํ๊ธฐ ์ํ agent sandbox cloud์ ์ค๊ณ ์๋ฆฌ๋ฅผ ์ฒ์๋ถํฐ ์ค๋ช ํ๋ค. ์ฐ๊ตฌ์์๋ ๋์ ์ฒ๋ฆฌ๋์ด, ์ ํ์์๋ ๋ฎ์ ์ง์ฐ์๊ฐ๊ณผ ์ ๋ขฐ์ฑยท๋ณด์์ด ํต์ฌ์ด๋ฉฐ, ํนํ runtimeยทpersistenceยทorchestration์ด ์ค์ฌ ์ถ์ด ๋๋ค.
-
9:00
Linux์์ ๊ฐ์ฅ ๋จ์ํ fork()+exec๋ ๊ฐ์ฅ ๋น ๋ฅด์ง๋ง, ์ปค๋ ๊ณต๊ฒฉ๊ณผ noisy neighbor ๋ฌธ์ ๋ฅผ ๋์์ ์๊ณ ์์ด ์ค์ฌ์ฉ์ ๋ถ์ ํฉํ๋ค. container๋ namespaces์ cgroups, seccomp๋ก ๋ณดํธ๋ฅผ ๊ฐํํ์ง๋ง ์ฌ์ ํ host kernel์ ์ง์ ๊ณต์ ํ๋ฏ๋ก ๋ณด์ ๊ฒฝ๊ณ๊ฐ ์ถฉ๋ถํ ๊ฐํ์ง ์๋ค.
-
16:00
gVisor๋ syscall์ user space์์ ์ฒ๋ฆฌํด ์ปค๋ ๋ ธ์ถ์ ์ค์ด์ง๋ง, ๊ฒฐ๊ตญ host kernel ์์ ์์ด ์ฒด์ธํ exploit ๊ฐ๋ฅ์ฑ์ ์์ ํ ์์ ์ง ๋ชปํ๋ค. ๋ฐ๋ฉด virtualization๊ณผ micro VM์ guest์ host๋ฅผ ํ๋์จ์ด ์์ค์ผ๋ก ๋ถ๋ฆฌํด host ๋ณดํธ๋ฅผ ํฌ๊ฒ ๊ฐํํ๋ฉฐ, Rust ๊ธฐ๋ฐ VMM๊ณผ device jail๋ก ์์ ์ฑ์ ๋ ๋์ธ๋ค.
-
30:00
์์ด์ ํธ ์์ ์ด ๊ธธ์ด์ง์๋ก disk persistence๋ ์ ํ์ด ์๋๋ผ ํ์๊ฐ ๋๋ค. incremental snapshot, copy-on-write, block-level diff, save API, tiered storage๋ฅผ ํตํด ์์ ์ํ๋ฅผ ๋น ๋ฅด๊ฒ ์ ์ฅยท๋ณต์ํด์ผ ๋ ธ๋ ์ฅ์ ์๋ ์ค๋จ ์์ด ์ด์ด๊ฐ ์ ์๊ณ , ์ฅ๊ธฐ ํ์๊ณผ Monte Carlo์ ์ฌ์๋๋ ๊ฐ๋ฅํด์ง๋ค.
-
41:02
์ฌ๋ฌ ๋ ธ๋์ ๋ฆฌ์ ์ผ๋ก ํ์ฅํ๋ ค๋ฉด ์ค์ผ์ค๋ฌ๊ฐ cluster ์ํ์ snapshot lineage๋ฅผ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค. warm pool, memory snapshot์ ์ฆ์ ๊ธฐ๋, snapshot-rich restore๋ฅผ ์กฐํฉํ๋ฉด ์ง์ฐ์๊ฐ๊ณผ ๋น์ฉ์ ๊ท ํ์ ๋ง์ถ๋ฉด์ ๋ ๋น ๋ฅด๊ณ ์์ ์ ์ธ ๋๊ท๋ชจ sandbox ์ด์์ด ๊ฐ๋ฅํ๋ค.
์ค๋ฌด ์ธ์ฌ์ดํธ
- ์ค๋ฌด์์๋ ๋ณด์์ ๋จผ์ ๊ธฐ์ค์ผ๋ก ์ก๊ณ , ์ฑ๋ฅ์ pre-warm, ์บ์, snapshot ์ต์ ํ ๊ฐ์ ์์คํ ๊ธฐ๋ฒ์ผ๋ก ๋ณด์ํ๋ ์ ๊ทผ์ด ๊ฐ์ฅ ์์ ํ๋ค.
- ์์ด์ ํธ์ฉ sandbox๋ ์คํ ํ๊ฒฝ๋ง์ด ์๋๋ผ ์ ์ฅยท๋ณต์ยท์ค์ผ์ค๋ง๊น์ง ํ๋์ ์ ํ ๊ฒฝํ์ผ๋ก ์ค๊ณํด์ผ ์ฅ๊ธฐ ์์ ๊ณผ ์คํจ ๋ณต๊ตฌ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ง์ํ ์ ์๋ค.
- ์ฅ๊ธฐ์ ์ผ๋ก๋ ๋จ๋ฐ์ฑ ์คํ๋ณด๋ค checkpointableํ ์์ ํ๋ฆ์ด ์ค์ํ๋ฏ๋ก, save/restore API์ snapshot lineage๋ฅผ ์ด๊ธฐ์ ์ค๊ณ์ ํฌํจํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค.