1.3 Model Serving

  • Product Serving ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

1. Model Serving

1.1. Serving Basic

"Production(Real World) ํ™˜๊ฒฝ์— ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฐํฌ"

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๊ฐœ๋ฐœํ•˜๊ณ , ํ˜„์‹ค ์„ธ๊ณ„(์•ฑ, ์›น)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ํ–‰์œ„

  • ์„œ๋น„์Šคํ™”๋ผ๊ณ  ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Œ

  • ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ํšŒ์‚ฌ ์„œ๋น„์Šค์˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋กœ ํ™œ์šฉ

    • ex) ์ถ”์ฒœ ์‹œ์Šคํ…œ์˜ ์ถ”์ฒœ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Input์ด ์ œ๊ณต๋˜๋ฉด ๋ชจ๋ธ์ด ์˜ˆ์ธก ๊ฐ’(Output)์„ ๋ฐ˜ํ™˜

Serving : ๋ชจ๋ธ์„ ์›น/์•ฑ ์„œ๋น„์Šค์— ๋ฐฐํฌํ•˜๋Š” ๊ณผ์ •, ๋ชจ๋ธ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹, ๋ชจ๋ธ์„ ์„œ๋น„์Šคํ™”ํ•˜๋Š” ๊ด€์  Inference : ๋ชจ๋ธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ œ๊ณต๋˜์–ด ์˜ˆ์ธกํ•˜๋Š” ๊ฒฝ์šฐ, ์‚ฌ์šฉํ•˜๋Š” ๊ด€์ 

์›น ์„œ๋ฒ„(Wikipedia)

  • HTTP๋ฅผ ํ†ตํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์š”์ฒญํ•˜๋Š” HTML ๋ฌธ์„œ๋‚˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ „์†กํ•ด์ฃผ๋Š” ์„œ๋น„์Šค ํ”„๋กœ๊ทธ๋žจ

  • ์š”์ฒญ(Request)์„ ๋ฐ›์œผ๋ฉด ์š”์ฒญํ•œ ๋‚ด์šฉ์„ ๋ณด๋‚ด์ฃผ๋Š”(Response) ํ”„๋กœ๊ทธ๋žจ

๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ์„œ๋ฒ„

  • ์–ด๋–ค ๋ฐ์ดํ„ฐ(Input)๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์˜ˆ์ธกํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญ(Request)ํ•˜๋ฉด, ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ด ์˜ˆ์ธก ๊ฐ’์„ ๋ฐ˜ํ™˜(Response)ํ•˜๋Š” ์„œ๋ฒ„

API(Application Programming Interface)

"์šด์˜์ฒด์ œ๋‚˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“  ์ธํ„ฐํŽ˜์ด์Šค"

  • ํŠน์ • ์„œ๋น„์Šค์—์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์™ธ๋ถ€์— ๋…ธ์ถœ : ๊ธฐ์ƒ์ฒญ API, ์ง€๋„ API

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํ•จ์ˆ˜ : Pandas, Tensorflow, PyTorch

2. Online Serving

  • ์š”์ฒญ(Request)์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ์‹ค์‹œ๊ฐ„์œผ๋กœ ์˜ˆ์ธก

  • ํด๋ผ์ด์–ธํŠธ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)์—์„œ ML ๋ชจ๋ธ ์„œ๋ฒ„์— HTTP ์š”์ฒญ(Request)ํ•˜๊ณ , ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ์„œ๋ฒ„์—์„œ ์˜ˆ์ธกํ•œ ํ›„, ์˜ˆ์ธก ๊ฐ’(์‘๋‹ต)์„ ๋ฐ˜ํ™˜(Response)

์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋กœ ์ƒ๊ฐํ•˜๋ฉด, ์š•์„ค๊ฐ์ง€์˜ ๊ฒฝ์šฐ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” Online Serving์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ๊ตฌ๋ฅผ ์ž…๋ ฅ -> ์„œ๋ฒ„๋กœ Text ์ „๋‹ฌ -> ์š•์„ค์—ฌ๋ถ€ ํŒ๋‹จ -> ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌ

  • ML ๋ชจ๋ธ ์„œ๋ฒ„์— ์š”์ฒญํ•  ๋•Œ, ํ•„์š”์‹œ ML ๋ชจ๋ธ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ๋ฅผ ํ•ด์•ผํ•  ์ˆ˜ ์žˆ์Œ (ํ˜น์€ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•ด ์ „์ฒ˜๋ฆฌ ์„œ๋ฒ„ / ML ๋ชจ๋ธ ์„œ๋ฒ„๋กœ ๋‚˜๋ˆŒ ์ˆ˜๋„ ์žˆ์Œ)

    • ์ „์ฒ˜๋ฆฌ์— ์‚ฌ์šฉ๋˜๋Š” ๋น„์šฉ์ด ํด ๊ฒฝ์šฐ

  • ์„œ๋น„์Šค์˜ ์„œ๋ฒ„์— ML ์„œ๋ฒ„๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ML ์„œ๋ฒ„๋ฅผ ๋ณ„๋„๋กœ ์šด์˜ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌ

  • Online Serving์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ์‹

    • ์ง์ ‘ API ์›น ์„œ๋ฒ„ ๊ฐœ๋ฐœ : Flask, FastAPI ๋“ฑ์„ ์‚ฌ์šฉํ•ด ์„œ๋ฒ„ ๊ตฌ์ถ•

    • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ํ™œ์šฉ : AWS์˜ SageMaker, GCP์˜ Vertex AI ๋“ฑ

    • Serving ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ : Tensorflow Serving, Torch Serve, MLFlow, BentoML ๋“ฑ

  • Online Serving์—์„œ ๊ณ ๋ คํ•  ๋ถ€๋ถ„

    • ์žฌํ˜„๊ฐ€๋Šฅ์„ฑ, ๋””ํŽœ๋˜์‹œ ๊ด€๋ฆฌ (poetry, Docker)

    • ์‹ค์‹œ๊ฐ„ ์˜ˆ์ธก์ฒ˜๋ฆฌ๋ฅผ ๊ณ ๋ คํ•œ ์†๋„

      • Data Load

      • ๋ชจ๋ธ ์—ฐ์‚ฐ

      • ํ›„์ฒ˜๋ฆฌ

3. Batch Serving

  • ์ฃผ๊ธฐ์ ์ธ Term์„ ๊ฐ€์ง€๊ณ  ์ด๋ฃจ์–ด์ง€๋Š” ๊ณผ์ •(์Šค์ผ€์ค„๋Ÿฌ)

  • Airflow, Cron Job ๋“ฑ์œผ๋กœ ์Šค์ผ€์ฅด๋ง ์ž‘์—…(Workflow Scheduler)

๋ผ์ด๋ธŒ์ปค๋จธ์Šค ํ•˜๋ฃจ์˜ ๋ฐฉ์†ก์ด ์ข…๋ฃŒ๋˜๊ณ , ๊ทธ๋‚  ๋ฐœ์ƒํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ถ„์„ ๋ฐ ๋ฆฌํฌํŒ…์„ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ๋‚ ์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ณ , ์ƒˆ๋ฒฝ์— ๋ฐฐ์น˜๊ฐ€ ์ด๋ฃจ์–ด์ง€๋ฉด ๋œ๋‹ค.

๋‹จ, ์‹ค์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ ์šฉ๋˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

4. Further Reading

circle-info

๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ์‹ค์ œ๋กœ ํšŒ์‚ฌ์ƒํ™œ์„ ํ•ด๋ณธ ๊ฒฝํ—˜์œผ๋กœ ์–ด๋–ค ์ด์Šˆ๋“ค๊ณผ ์–ด๋–ค ์ ์„ ์ค‘์ ์ ์œผ๋กœ ์ƒ๊ฐํ•˜์—ฌ์•ผํ•˜๋Š”์ง€๊ฐ€ ์ž˜ ์™€๋‹ฟ์•˜๋‹ค. API์„œ๋ฒ„๋„ ๊ตฌ์ถ•ํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๊ณ , ์‹ค์‹œ๊ฐ„ / Batch ๋ฐ์ดํ„ฐ ์ „์†ก๋„ ๊ฒฝํ—˜ํ•ด๋ณธ๋ฐ”๊ฐ€ ์žˆ์–ด ์ƒ์†Œํ•œ ํˆด์— ๋Œ€ํ•œ ํ™œ์šฉ๋ฒ• ์œ„์ฃผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

Last updated