๐Ÿš€ What is MLOps?

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

๐Ÿ”” Purpose

  • ๋จธ์‹ ๋Ÿฌ๋‹์˜ ํ•™์Šต, ๋ฐฐํฌ, ์ €์žฅ ์ž๋™ํ™” ๋ผ์ธ ๊ตฌํ˜„.
  • ๋ฐ์ดํ„ฐ ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ์™€ ์†Œํ”„ํŠธ์›จ์–ด ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ํ˜‘์—… ํ™˜๊ฒฝ์„ ์ œ๊ณต

๐Ÿ’พ Data

  • Income Dataset
  • Perform Binary Classification to predict if Salary is greater than $50K

๐Ÿ“š Tech Stacks

Ubuntu Python3.9.7 Postgres FastAPI Redis Docker


๐ŸŽฌ Phase 0 (2022.05.01 - 2022.05.22)

Phase 0 ํ๋ฆ„๋„

image

1. ๊ฐœ๋ฐœํ™˜๊ฒฝ ์„ธํŒ…

  • git-flow : github flow ์ฑ„ํƒ
  • github์—์„œ ์‚ฌ์šฉํ•  issue์™€ pr ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ
  • pre-commit์„ ํ†ตํ•œ code ์Šคํƒ€์ผ ํ†ต์ผ
  • python 3.9.7
  • gcp๋ฅผ ํ†ตํ•ด์„œ unbuntu20.04 ์„œ๋ฒ„์ƒ์„ฑ(ssh์ ‘์†)

2. ๋จธ์‹ ๋Ÿฌ๋‹ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•

  • load_model, preprocessing, labeling ๋“ฑ๋“ฑ์˜ ํ•จ์ˆ˜ ์ž‘์„ฑ
  • issue : joblib๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ๋กœ์ปฌ์— ์žˆ๋Š” ํฐ ์‚ฌ์ด์ฆˆ์˜ model์„ ๋ฐ”๋กœ ์„œ๋ฒ„์—์„œ ๋กœ๋“œํ•  ๊ฒฝ์šฐ ์†๋„ ๋ฌธ์ œ ๋ฐœ์ƒ

3. PostgreSQL & Docker๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌํ˜„

  • docker๋ฅผ ํ†ตํ•ด์„œ postgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธํŒ…
  • postgreSQL์— ๋ฐ์ดํ„ฐ ์ ์žฌ

4. FastAPI๋ฅผ ํ™œ์šฉํ•œ Rest API ์„œ๋ฒ„ ๊ตฌํ˜„

  • reidsai๋ฅผ ํ†ตํ•œ model serving
  • exception ์ •์˜ ๋ฐ handler ์ž‘์„ฑ

Tree ๊ตฌ์กฐ

app
โ”œโ”€โ”€ main.py
โ”œโ”€โ”€ config.py
โ”œโ”€โ”€ db
โ”‚   โ”œโ”€โ”€ database.py
โ”‚   โ””โ”€โ”€ models.py
โ”œโ”€โ”€ routers
โ”‚   โ””โ”€โ”€ income.py
โ”œโ”€โ”€ schemas
โ”‚   โ”œโ”€โ”€ request.py
โ”‚   โ””โ”€โ”€ response.py
โ”œโ”€โ”€ service
โ”‚   โ””โ”€โ”€ app_service.py
โ””โ”€โ”€ utils
    โ”œโ”€โ”€ app_exceptions.py
    โ”œโ”€โ”€ handlers.py
    โ”œโ”€โ”€ request_exceptions.py
    โ””โ”€โ”€ service_result.py

๐ŸŽฌ Phase 1 (2022.05.23 - 2022.06.28)

Phase 1 ํ๋ฆ„๋„

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-06-28 แ„‹แ…ฉแ„’แ…ฎ 12 57 21

0. ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ

  • Income ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ csv ํŒŒ์ผ์ด๋ผ ์ œํ•œ์ ์ž„
  • ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์œ„ํ•ด Income Dataset -> Upbit์˜ BTC, ETH, ADA ์ฝ”์ธ ์ˆ˜์ง‘

1. Mlflow & Minio๋ฅผ ํ™œ์šฉํ•œ ์‹คํ—˜๊ด€๋ฆฌ, ๋ชจ๋ธ๊ด€๋ฆฌ

  • Mlflow๋ฅผ ์ด์šฉํ•˜์—ฌ ์‹คํ—˜๊ด€๋ฆฌ, ๋ชจ๋ธ๊ด€๋ฆฌ
  • Minio๋ฅผ ์ด์šฉํ•œ ๋ชจ๋ธ ์ €์žฅ ์Šคํ† ๋ฆฌ์ง€๋กœ ์‚ฌ์šฉ

2. ์ง€์†์  ํ†ตํ•ฉ/ ์ง€์†์  ๋ฐฐํฌ

  • GitHub Actions๊ณผ Docker Compose๋ฅผ ์ด์šฉํ•˜์—ฌ CI CD ์‹คํ˜„
  • ๋ชจ๋ธ์„ ๋” ๋น ๋ฅธ ์ฃผ๊ธฐ๋กœ ์„œ๋น™ํ•˜๋ฉด์„œ๋„ ์‹ ๋ขฐ๋„ ๋ฐ ์ •ํ™•๋„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ

CI CD ๊ตฌ์กฐ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2022-06-28 แ„‹แ…ฉแ„’แ…ฎ 2 23 12

3. ์ง€์†์  ํ›ˆ๋ จ

  • Airflow๋ฅผ ํ™œ์šฉํ•˜์—ฌ BTC, ETH, ADA 4์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ณผ ๊ฒ€์ฆ ์ž๋™ํ™”
  • Airflow๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ ์ž๋™ ํ›ˆ๋ จ

Tree ๊ตฌ์กฐ

main.py
app
โ”œโ”€โ”€ config.py
โ”œโ”€โ”€ db
โ”‚   โ”œโ”€โ”€ database.py
โ”‚   โ””โ”€โ”€ models.py
โ”œโ”€โ”€ routers
โ”‚   โ””โ”€โ”€ income.py
โ”œโ”€โ”€ schemas
โ”‚   โ”œโ”€โ”€ request.py
โ”‚   โ””โ”€โ”€ response.py
โ”œโ”€โ”€ service
โ”‚   โ””โ”€โ”€ app_service.py
โ”œโ”€โ”€ utils
โ”‚   โ”œโ”€โ”€ app_exceptions.py
โ”‚   โ”œโ”€โ”€ handlers.py
โ”‚   โ”œโ”€โ”€ request_exceptions.py
โ”‚   โ””โ”€โ”€ service_result.py
coin
โ”œโ”€โ”€coin_preict.py
โ”œโ”€โ”€coin_service.py
โ”œโ”€โ”€data_collection.py
โ”œโ”€โ”€data_verification.py
โ”œโ”€โ”€utiles.py
โ”œโ”€โ”€config.py
dags
โ”œโ”€โ”€btc_flow.py
โ”œโ”€โ”€eth_flow.py
โ””โ”€โ”€ada_flow.py