MLOps ๐Ÿ’™ Kubernetes

MLOps ๐Ÿ’™ Kubernetes

MLOps ๐Ÿ’™ Kubernetes

๐Ÿฆพ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ์“ฐ๊ณ  ์žˆ๋Š” k8s

โ€œML ์—”์ง€๋‹ˆ์–ดโ€๋‚˜ โ€œMLOps ์—”์ง€๋‹ˆ์–ดโ€ ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ๋ณด๋‹ค ๋ณด๋ฉด ๊ผญ ๋น ์ง€์ง€ ์•Š๊ณ  ๋“ฑ์žฅํ•˜๋Š” ๋‹จ์–ด๊ฐ€ ์žˆ์ฃ .

k8s-jd

์ถœ์ €: ํ† ์Šค, ํฌ๋ž˜ํ”„ํŠธํ…Œํฌ๋†€๋กœ์ง€์Šค, ๋งˆํ‚ค๋‚˜๋ฝ์Šค MLOps Enginner job descritption

๋ฐ”๋กœ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes, k8s) ์ž…๋‹ˆ๋‹ค. ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ๋จธ๋ฆฌ๊ฐ€ ์ง€๋ˆ๊ฑฐ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์€ ์ด ๋…€์„, ๋„๋Œ€์ฒด ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์€ ๊ธฐ์—…๋“ค์ด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํ›ˆ๋ จํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ๊นŒ์š”? ๊ธฐ์—…๋“ค์ด ์™œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋ฅผ ๋„์ž…ํ•˜๋Š”์ง€ ๊ทธ ์ด์œ ๋ฅผ ํŒŒํ—ค์ณ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” MLOps์—์„œ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์™œ ์‚ฌ์šฉ๋˜๋Š”์ง€ ์ „๋ฐ˜์ ์ธ ์ด์œ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ˜ตโ€๐Ÿ’ซ ํˆญ ๊ฑด๋“œ๋ฆฌ๋ฉด ๋ฌด๋„ˆ์งˆ๊ฑฐ ๊ฐ™์•„์š”

K8s๋ฅผ ์“ฐ๋Š” ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด๊ธฐ ์ „, ์•„๋ž˜ ๋„ํ‘œ๋ฅผ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์ฃ .

k8s-complex

์ถœ์ €: Machine Learning Operations (MLOps): Overview, Definition, and Architecture

MLOps์—์„œ ๋ชจ๋ธ์„ ์‹ค์ œ ์„œ๋น„์Šค์— ๋ฐฐํฌํ•˜๊ธฐ๊นŒ์ง€ ๊ฑฐ์ณ์•ผ ํ•˜๋Š” ๋‹จ๊ณ„๋“ค์„ ์ •๋ฆฌํ•ด ๋†“์€ ํ”Œ๋กœ์šฐ์ฐจํŠธ์ž…๋‹ˆ๋‹ค. ์ฐธ ๋ณต์žกํ•˜์ฃ ? ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ ๊ณผ์ •์„ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์ฒด๊ณ„์ ์ธ ์‹œ์Šคํ…œ ์—†์ด ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ์ž‘์€ ๋ฌธ์ œ๋‚˜ ์—๋Ÿฌ๊ฐ€ ๋ˆˆ๋ฉ์ด์ฒ˜๋Ÿผ ๋ถˆ์–ด๋‚˜ ์ „์ฒด ๊ฐœ๋ฐœ ํ๋ฆ„์„ ๋ฉˆ์ถฐ ์„ธ์šฐ๋Š” ๊ฑด ์‹œ๊ฐ„๋ฌธ์ œ์ผ ๋ฟ์ด๊ณ , ๋‹น์—ฐํžˆ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๋ณ‘๋ชฉํ˜„์ƒ์ด ๋ฐœ์ƒํ•ด ํŒ€์˜ ์†๋„๊ฐ€ ํฌ๊ฒŒ ๋А๋ ค์งˆ ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฒฐ๊ตญ ์•ˆ์ •์ ์ด๊ณ  ํšจ์œจ์ ์ธ MLOps ํ™˜๊ฒฝ์„ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์™€ ์‹œ์Šคํ…œ์ด ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿณ K8s๋ฅผ ์“ฐ๋Š” ์ด์œ 

๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹ ์›Œํฌ๋กœ๋“œ๋Š” ์ž์› ์†Œ๋ชจ๊ฐ€ ํฌ๊ณ , ๋ฐ˜๋ณต์ ์ธ ์‹คํ—˜๊ณผ ์•ˆ์ •์ ์ธ ์„œ๋น„์Šค ์šด์˜์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค(Kubernetes)๋Š” ์ด๋Ÿฌํ•œ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅ์„ฑ, ์ด์‹์„ฑ, ์žฌํ˜„์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ML ๋ชจ๋ธ ํ•™์Šต๊ณผ ๋ฐฐํฌ ํ™˜๊ฒฝ์„ ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

1. ํ™•์žฅ์„ฑ(Scalabe)

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ์›Œํฌ๋กœ๋“œ์™€ ์ƒํ™ฉ์— ๋งž์ถฐ ์ž์›์„ ์ž๋™์œผ๋กœ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ML ๋ชจ๋ธ ํ•™์Šต์ด๋‚˜ ์ถ”๋ก  ์„œ๋น„์Šค์—์„œ ๊ฐ‘์ž๊ธฐ ํŠธ๋ž˜ํ”ฝ์ด ๋Š˜์–ด๋‚˜๋ฉด ํŒŒ๋“œ ์ˆ˜๋ฅผ ์ž๋™์œผ๋กœ ํ™•์žฅํ•ด ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๊ณ , ์‚ฌ์šฉ๋Ÿ‰์ด ์ค„๋ฉด ๋ถˆํ•„์š”ํ•œ ์ž์›์„ ์ค„์—ฌ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ณ€ํ™”ํ•˜๋Š” ํ™˜๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•ด ์•ˆ์ •์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋™์‹œ์— ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

2. ์ด์‹์„ฑ(Portable)

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ํŠน์ • ํด๋ผ์šฐ๋“œ์— ๋ฌถ์ด์ง€ ์•Š๊ณ  ์–ด๋””์„œ๋“  ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ž…๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค๋ผ ๋ˆ„๊ตฌ๋‚˜ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ‘œ์ค€ํ™”๋œ API ๋•๋ถ„์— AWS, GCP ๊ฐ™์€ ๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ์—์„œ๋„ ๊ฐ™์€ ๋ช…๋ น์–ด์™€ ๋ฐฉ์‹์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์ด๋ผ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง€์›ํ•˜๋Š” ํ™˜๊ฒฝ์ด๋ผ๋ฉด ํด๋ผ์šฐ๋“œ๋“  ์˜จํ”„๋ ˆ๋ฏธ์Šค๋“  cross-platform์œผ๋กœ ์˜ฎ๊ฒจ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋Œ€์‹  ์˜จํ”„๋ ˆ๋ฏธ์Šค๋ฉด ์‹ ๊ฒฝ ์“ธ ๋ถ€๋ถ„์ด ๋” ๋งŽ์•„์ง€๊ฒ ์ฃ ).

3. ์žฌํ˜„์„ฑ(Reproducible)

  • ML ์‹คํ—˜๊ณผ ๋ชจ๋ธ ๊ฐœ๋ฐœ์€ ๋งค์šฐ ๋ฐ˜๋ณต์ ์ธ ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ, ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ MLOps์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์š”๊ตฌ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ†ตํ•ด ํ•™์Šต ์ฝ”๋“œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „, ์šด์˜์ฒด์ œ ํ™˜๊ฒฝ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ๋ถˆ๋ณ€(immutable)์˜ ์ด๋ฏธ์ง€๋กœ ๊ณ ์ •์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์…‹, ์ฝ”๋“œ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ†ต์ œํ•˜๋ฉฐ ์‹คํ—˜์„ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๊ณ , โ€œ๋‚ด ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋๋Š”๋ฐโ€ฆโ€œ์™€ ๊ฐ™์€ ๊ณ ์งˆ์ ์ธ ๋ฌธ์ œ๋ฅผ ๊ทผ๋ณธ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ๋‚ด๊ฒฐํ•จ์„ฑ(Fault Tolerable)

  • ์žฅ์‹œ๊ฐ„ ์†Œ์š”๋˜๋Š” ๋ชจ๋ธ ํ•™์Šต ์ž‘์—…์ด๋‚˜ 24์‹œ๊ฐ„ ์šด์˜๋˜์–ด์•ผ ํ•˜๋Š” ์ถ”๋ก  ์„œ๋น„์Šค์—์„œ ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์žฅ์• ๋Š” ์น˜๋ช…์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ์ž๊ฐ€ ์น˜์œ (self-healing) ๊ธฐ๋Šฅ์„ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์–ด, ํŠน์ • ๋…ธ๋“œ๋‚˜ ํŒŒ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฑด๊ฐ•ํ•œ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์žฌ์Šค์ผ€์ค„๋งํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ•๋ ฅํ•œ ๋‚ด๊ฒฐํ•จ์„ฑ์€ ML ํŒŒ์ดํ”„๋ผ์ธ์˜ ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด๋„ ์‹œ์Šคํ…œ์ด ์ง€์†์ ์œผ๋กœ ์šด์˜๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

โœ… ์ •๋ฆฌ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ MLOps ํ™˜๊ฒฝ์—์„œ ์™œ ์ค‘์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ํ™•์žฅ์„ฑ(Scalability), ์ด์‹์„ฑ(Portability), ์žฌํ˜„์„ฑ(Reproducibility), ๋‚ด๊ฒฐํ•จ์„ฑ(Fault Tolerance) ๊ฐ™์€ ํ•ต์‹ฌ ์žฅ์ ๋“ค์„ ์ค‘์‹ฌ์œผ๋กœ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์š”์•ฝํ•˜์ž๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๋Š” ๋ณต์žกํ•œ ML ์›Œํฌ๋กœ๋“œ๋ฅผ ์•ˆ์ •์ ์ด๊ณ  ์œ ์—ฐํ•˜๊ฒŒ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๊ฐ•๋ ฅํ•œ ๊ธฐ๋ฐ˜์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ํ•œ ๊ฑธ์Œ ๋” ๋‚˜์•„๊ฐ€, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์‹ค์ œ ๋ชจ๋ธ ํ›ˆ๋ จ๊ณผ ๋ฐฐํฌ ๊ณผ์ •์—์„œ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ™œ์šฉ๋˜๋Š”์ง€๋ฅผ ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€์™€ ํ•จ๊ป˜ ์‹ฌ์ธต์ ์œผ๋กœ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฐธ์กฐ๋งํฌ