- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 08_DAY 35 ๋ณธ๋ฌธ
๐ฐ ๊ฐ๋ณํ์ต
[3] Model Serving
1. Model Serving
1) Serving์ ์ข ๋ฅ
- Batch Serving : ์ผ์ ์ฃผ๊ธฐ(1์ผ, 1์ฃผ, 1๋ฌ ๋ฑ)๋ก ํ๊บผ๋ฒ์ ์์ธก
- Online Serving : ์ค์๊ฐ์ผ๋ก ์์ธก, ๋ณ๋ชฉ์ด ์์ด์ผ ํจ
2) Serving
- Production ํ๊ฒฝ์์ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์๋๋ก ๋ฐฐํฌํ๋ ๊ฒ
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๊ฐ๋ฐํ๊ณ , ํ์ค ์ธ๊ณ(์ฑ, ์น)์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ ํ์
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ์ฌ ์๋น์ค์ ๊ธฐ๋ฅ ์ค ํ๋๋ก ํ์ฉ ์) ์ถ์ฒ ์์คํ ์ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ
3) ์ฉ์ด ์ ๋ฆฌ
- Serving : ๋ชจ๋ธ์ ์ฑ, ์น ์๋น์ค์ ๋ฐฐํฌํ๋ ๊ณผ์ . ๋ชจ๋ธ์ ์๋น์คํํ๋ ๊ด์
- Inference : ๋ชจ๋ธ์ ๋ฐ์ดํฐ๊ฐ ์ ๊ณต๋์ด ์์ธกํ๋ ๊ฒฝ์ฐ. ์ฌ์ฉํ๋ ๊ด์
- Serving, Inference ์ฉ์ด๊ฐ ํผ์ฌ๋์ด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๋ ์กด์ฌ
2. Online Serving
1) ์น ์๋ฒ(Web Server)
- HTTP๋ฅผ ํตํด ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญํ๋ HTML ๋ฌธ์๋ ์ค๋ธ์ ํธ๋ฅผ ์ ์กํด์ฃผ๋ ์๋น์ค ํ๋ก๊ทธ๋จ
- ์์ฒญ์ ๋ฐ์ผ๋ฉด(Request) ์์ฒญ์ ์๋ตํ๋(Response) ํํ
- Client์ ๋ค์ํ ์์ฒญ์ ์ฒ๋ฆฌํด์ฃผ๋ ์ญํ (๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ๋ชจ๋ธ ๊ธฐ๋ฐ ์์ธก ๋ฑ)
2) API(Application Programming Interface)
- ์ด์์ฒด์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ ์ดํ ์ ์๊ฒ ๋ง๋ ์ธํฐํ์ด์ค
- ๊ธฐ๊ณ์ ์ธ๊ฐ์ ์ํต ์ฐฝ๊ตฌ
- ํน์ ์๋น์ค์์ ํด๋น ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ์ธ๋ถ์ ๋ ธ์ถ : ๊ธฐ์์ฒญ API, ์ง๋ API
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจ์ : Pandas, Tensorflow, PyTorch
3) Online Serving Basic
(1) ๊ตฌ์กฐ
- ์์ฒญ(Request)๊ฐ ์ฌ ๋๋ง๋ค ์ค์๊ฐ์ผ๋ก ์์ธก
- Client์์ Server์ HTTP ์์ฒญ(Request) -> Server์์ ์์ธกํ ํ ์์ธก ๊ฐ์ ๋ฐํ(Response)
(2) Serving Input
- Single Data Point : ๋จ์ผ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ค์๊ฐ์ผ๋ก ์์ธก
(3) Online Serving ๊ตฌํ ๋ฐฉ์
- ์ง์ API ์น ์๋ฒ ๊ฐ๋ฐ : Flask, FastAPI
- ํด๋ผ์ฐ๋ ์๋น์ค ํ์ฉ : AWS์ SageMaker, GCP์ Vertex AI
- Serving ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฉ : Tensroflow Serving, Torch Serve, MLFlow, BentoML
(4) Online Serving์์ ๊ณ ๋ คํด์ผํ ๋ถ๋ถ
- Python ๋ฒ์ , ํจํค์ง ๋ฒ์ ๋ฑ Dependecy
- ์ง์ฐ ์๊ฐ(Latency)์ ์ต์ํ
- Input ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํด์ ๋ชจ๋ธ์ ์์ธกํด์ผ ํ๋ ๊ฒฝ์ฐ
- ๋ชจ๋ธ์ด ์ํํ๋ ์ฐ์ฐ(๊ฒฝ๋ํ ํ์)
- ๊ฒฐ๊ณผ๊ฐ์ ๋ํ ๋ณด์ ์ด ํ์ํ ๊ฒฝ์ฐ(๋ง์ด๋์ค ๊ฐ, 0 ๋ฑ)
3. Batch Serving
1) Batch Serving Basic
(1) ๊ตฌ์กฐ
- ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ต์ ํ๊ฑฐ๋ ์์ธกํ๋ ๊ฒฝ์ฐ
- ํน์ ์๊ฐ์ ๋ฐ๋ณตํด์ ์คํ
- Airflow, Cron Job ๋ฑ์ผ๋ก ์ค์ผ์ค๋ง ์์ (Workflow Scheduler)
(2) ์ฅ์
- Jupyter Notebook์ ์์ฑํ ์ฝ๋๋ฅผ ํจ์ํ ํ ํ ์ฃผ๊ธฐ์ ์ผ๋ก ์คํํ๋ ๊ฐ๋จํ ๊ตฌ์กฐ
- ๊ตฌํ์ด ์์ํ๋ฉฐ ๊ฐ๋จํจ
- ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ฏ๋ก Latency๊ฐ ๋ฌธ์ ๋์ง ์์
(3) ๋จ์
- ์ค์๊ฐ์ผ๋ก ํ์ฉํ ์ ์์
- Cold Start ๋ฌธ์ : ์ค๋ ์๋ก ์๊ธด ์ปจํ ์ธ ๋ ์ถ์ฒํ ์ ์์
2) Online Serving vs. Batch Serving
(1) Input ๊ด์
- ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์์ฒญํ๋ ๊ฒฝ์ฐ -> Online
- ์ฌ๋ฌ ๋ฐ์ดํฐ๊ฐ ํ๊บผ๋ฒ์ ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ -> Batch
(2) Output ๊ด์ (Output์ ์ด๋ป๊ฒ ํ์ฉํ๋์ง)
- API ํํ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฐํํด์ผ ํ๋ ๊ฒฝ์ฐ -> Online
- ์๋ฒ์ ํต์ ์ด ํ์ํ ๊ฒฝ์ฐ -> Online
- 1์๊ฐ์ 1๋ฒ ์์ธกํด๋ ๋๋ ๊ฒฝ์ฐ -> Batch
(3) ์ค์๊ฐ ๋ชจ๋ธ ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ํ์ฉ๋๋์ง์ ๋ํ ์๊ฐ ํ์
- ์ฐ์ Batch Serving ์ผ๋ก ๋ชจ๋ธ์ ์ด์ํ๋ฉด์ ์ ์ API ํํ๋ก ๋ณํ
[4] ๋จธ์ ๋ฌ๋ ํ๋ก์ ํธ ๋ผ์ดํ ์ฌ์ดํด
1. ๋จธ์ ๋ฌ๋ ํ๋ก์ ํธ Flow
1) ๋ฌธ์ ์ ์์ ์ค์์ฑ
- ํน์ ํ์์ ํ์ ํ๊ณ , ํ์์ ์๋ ๋ฌธ์ ๋ฅผ ์ ์ํ๋ ๊ฒ
- ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ๋ ๋ฌด์์ด๊ณ , ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉด ๋ฌด์์ด ์ข์์ง, ์ด๋ป๊ฒ ํด๊ฒฐํ๋ฉด ์ข์์ง
2) ํ์ ํ์
- ํ์ฌ ์ํฉ์ ํ์ ํจ
3) ๊ตฌ์ฒด์ ์ธ ๋ฌธ์ ์ ์
- ํ์์ ๊ตฌ์ฒด์ ์ผ๋ก ๋ช ํํ ์ฉ์ด๋ก ์ ๋ฆฌํด๋ณด๊ธฐ
- ๋ฌธ์ ๋ฅผ ์ชผ๊ฐ์ ํ์ ํด๋ณด๊ธฐ
- ๋ค์ํ ํด๊ฒฐ ๋ฐฉ์ ์ค ๋ฐ์ดํฐ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ ๊ณ ๋ฏผํ๊ธฐ
4) ํ๋ก์ ํธ ์ค๊ณ
- ๋ฌธ์ ์ ์์ ๊ธฐ๋ฐํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ค๊ณํจ
- ๋จธ์ ๋ฌ๋ ๋ฌธ์ ํ๋น์ฑ : ํจํด, ๋ชฉ์ ํจ์, ๋ณต์ก์ฑ, ๋ฐ์ดํฐ ์กด์ฌ ์ฌ๋ถ
- ๋ชฉํ ์ค์ , ์งํ ๊ฒฐ์
- ์ ์ฝ ์กฐ๊ฑด : ์ผ์ , ์์ฐ, ๊ด๋ จ๋ ์ฌ๋, ๊ฐ์ธ์ ๋ณด, ๊ธฐ์ ์ ์ ์ฝ, ํ๊ฒฝ, ์ฑ๋ฅ ๋ฑ
- ๋ฒ ์ด์ค๋ผ์ธ : ๊ฐ๋จํ ๋ชจ๋ธ๋ถํฐ ์์ํ๊ธฐ
- ํ๋กํ ํ์ : Voila, Streamlit, Gradio ๋ฑ
- ํ๊ฐ ๋ฐฉ๋ฒ ์ค๊ณ
- ํ์ฌ์ ๋น์ฆ๋์ค์์ ์ด๋ค ๊ฐ์น๋ฅผ ์ฃผ๋๊ฐ?
5) Action(๋ชจ๋ธ ๊ฐ๋ฐ ํ ๋ฐฐํฌ & ๋ชจ๋ํฐ๋ง)
- ์งํ์ ๋ณํ ํ์ ํ๊ธฐ
2. ๋น์ฆ๋์ค ๋ชจ๋ธ
1) ๋น์ฆ๋์ค ๋ชจ๋ธ ํ์ ํ๊ธฐ
- ํ์ฌ์ ๋น์ฆ๋์ค ํ์
- ๋ฐ์ดํฐ ํ์ฉํ ์ ์๋ ๋ถ๋ถ ์ฐพ๊ธฐ(Input)
- ์์ธก ๊ฒฐ๊ณผ๊ฐ ์ด๋ป๊ฒ ํ์ฉ๋ ์ ์๋์ง ์์(Output)
๐ฐ ์ค๋์ ํ๊ณ
์ค๋์ 3, 4๊ฐ์ ๋ค์๋ค. 5๊ฐ ์ค์ต ๋ถ๋ถ๊น์ง ๋ค์ ์ ์์ ์ค ์์๋๋ฐ, ์๊ฐ๋ณด๋ค ๊ฐ์์ ์์ด ๋ง์๊ณ , ์ถ๊ฐ์ ์ผ๋ก ๋ณผ ์๋ฃ๋ค๋ ์์๋ค. ์ฐ์ ์ง๊ธ๊น์ง ๋ค์๋ ๊ฐ์ ์ค์์๋ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ํํธ๊ฐ ์๋๊น ์ถ๋ค.. ์๋ฌด๋๋ ์ด๋ฒ ๋ํ๊ฐ ์ฒ์์ด์๋ค๋ฉด ์ ์๋ฟ์ง ์์์ํ ๋ฐ, ๋ถ์บ ์ ์ ์ธ ์ฐจ๋ก(?) ์ ๋ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ํฐ๋ผ ๋จ์ํ ๋ชจ๋ธ๋ง ํ์ตํ๊ณ SOTA๋ฅผ ๋ฌ์ฑํ๋ ๊ฒ๋ณด๋ค ์ค์ ๋ก ํ์ฉ๋ ์ ์๋๋ก ์๋น์ค ํ๋ ๋ถ๋ถ์ ๋ํ ํ์ต์ด ๊ณ ํ ๊ธฐ ๋๋ฌธ์ ์ง๊ธ ๋ฃ๋ MLOps ํํธ๊ฐ ์ ์ผ ์ฌ๋ฐ๋ ๊ฒ ๊ฐ๊ธฐ๋ ํ๋ค. ํผ์ด์ธ์ ์๊ฐ์๋ ๋ฌด์์ ํ ๊น ๊ณ ๋ฏผํ๋ค๊ฐ ํผ์ ๋ค์ผ๋ฉด ์ ๋ ๋ชป ๋ค์ ๊ฒ ๊ฐ์(ใ ใ ) ๊ฐ๋ฐ์ ํน๊ฐ์ ๊ฐ์ด ๋ค์๋ค. ๊ทธ๋๋ ๊ฐ์ด ๋ค์ผ๋๊น ์กฐ๊ธ์ด๋๋ง ๋ ์ง์คํด์ ๋ค์๋ ๊ฒ ๊ฐ๋ค!
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 08_DAY 37 (1) | 2022.11.11 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 08_DAY 36 (0) | 2022.11.09 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 08_DAY 34 (0) | 2022.11.08 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 07_DAY 33 (1) | 2022.11.05 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 07_DAY 32 (0) | 2022.11.04 |