- Today
- Total
hye-log
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 79 ๋ณธ๋ฌธ
๐ ๊ฐ๋ณํ์ต
[3-2] FastAPI 2
2. Pydantic
1) Pydantic
- Data Validation / Settings Management ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Type Hint๋ฅผ ๋ฐํ์์์ ๊ฐ์ ํด ์์ ํ๊ฒ ๋ฐ์ดํฐ ํธ๋ค๋ง
- ํ์ด์ฌ ๊ธฐ๋ณธ ํ์ (String, int ๋ฑ) + List, Dict, Tuple์ ๋ํ Validation ์ง์
- Config๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋๋ก ๋์์ค
- ๋จธ์ ๋ฌ๋ Feature Data Validation์ผ๋ก๋ ํ์ฉ ๊ฐ๋ฅ
2) Pythonic Validation
(1) Machine Learning Model Input Validation
(2) Online Serving์์ Input ๋ฐ์ดํฐ๋ฅผ Validationํจ
(3) Validation Check Logic
- ์กฐ๊ฑด 1: ์ฌ๋ฐ๋ฅธ url์ ์ ๋ ฅ ๋ฐ์(url)
- ์กฐ๊ฑด 2: 1~10 ์ฌ์ด์ ์ ์๋ฅผ ์ ๋ ฅ ๋ฐ์(rate)
- ์กฐ๊ฑด 3: ์ฌ๋ฐ๋ฅธ ํด๋ ์ด๋ฆ์ ์ ๋ ฅ ๋ฐ์(target_dir)
(4) ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ
- ์ผ๋ฐ Python class๋ฅผ ํ์ฉํ Input Definition ๋ฐ Validation
- Dataclass๋ฅผ ํ์ฉํ Input Definition ๋ฐ Validation
- Pydantic์ ํ์ฉํ Input Definition ๋ฐ Validation
(5) Python class๋ฅผ ํ์ฉํ ๊ฒฝ์ฐ
- ์๋ฏธ ์๋ ์ฝ๋๊ฐ ๋ง์์ง๊ณ ๋ณต์กํด์ง
- ๋ฉ์ธ ๋ก์ง(Input์ ๋ฐ์์ Inference๋ฅผ ์ํํ๋)์ ์ง์คํ๊ธฐ ์ด๋ ค์์ง
(6) Dataclass ํ์ฉํ ๊ฒฝ์ฐ
- dataclass decorator ์ฌ์ฉ์ผ๋ก init method๋ฅผ ์ฌ์ฉํ์ง ์์
- post_init๊ณผ ๊ฐ์ ํธ์ ๋งค์ง ๋ฉ์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- validate method๋ ๋ง๋ค์ด์ผ ํจ
(7) Pydantic Validation
- ์ฌ๋ฐ๋ฅธ Http URL์ธ์ง ๊ฒ์ฆ
- Field ์ต์ ์ผ๋ก >=1, <=10 ์ธ์ง ๊ฒ์ฆ
- ์กด์ฌํ๋ ๋๋ ํ ๋ฆฌ์ธ์ง ๊ฒ์ฆ
- ์ด๋์ ์๋ฌ๊ฐ ๋ฐ์ํ๋์ง location, type, message ๋ฑ์ ์๋ ค์ค
3) Pydantic Config
(1) Config๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณต
(2) ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ค์ ์ ์์๋ก ์ฝ๋์ ์ ์ฅํ๋ ๊ฒ -> Twelve-Factor ์๋ฐ
- Twelve-Factor : ์ค์ ์ ์ฝ๋์์ ์๊ฒฉํ๊ฒ ๋ถ๋ฆฌํ๋ ๊ฒ
- ์ค์ ์ ํ๊ฒฝ ๋ณ์(envvars, env)์ ์ ์ฅํจ
- ์ฝ๋ ๋ณ๊ฒฝ ์์ด ์ฝ๊ฒ ๋ฐฐํฌ ๋๋ง๋ค ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์์
(3) .ini, .yaml ํ์ผ ๋ฑ์ผ๋ก config ์ค์ ํ๊ธฐ
- yaml๋ก ์ฝ๊ฒ ํ๊ฒฝ์ ์ค์ ํ ์ ์์(ํ๋์ฝ๋ฉ)
- ๋ณ๊ฒฝ์ฌํญ์ด ์๊ธฐ๋ฉด ์ ์ฐํ๊ฒ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์
(4) flask-style config.py
- config ํด๋์ค์์ yaml, ini ํ์ผ์ ๋ถ๋ฌ์ python class ํ๋๋ก ์ฃผ์
- config ํด๋์ค ์ ๋ณด๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํด์ ์ฌ์ฉ
(5) pydantic base setting
- BaseSetting์ ์์ํ ํด๋์ค์์ Type Hint๋ก ์ฃผ์ ๋ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ ์ ์์
- Field ํด๋์ค์ env ์ธ์๋ก ํ๊ฒฝ ๋ณ์๋ก๋ถํฐ ์ค๋ฒ๋ผ์ด๋ฉ ํ ์ ์์
- .env ํ์ผ๋ค์ ํ๊ฒฝ๋ณ๋ก ๋ง๋ค์ด ๋๊ฑฐ๋, ์คํ ํ๊ฒฝ์์ ์ ์ฐํ๊ฒ ์ค๋ฒ๋ผ์ด๋ฉ ํ ์ ์์
๐ ์ค๋์ ํ๊ณ
์ค์ ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ์์ ํน๋ณํ ์ด์๋ ์์๊ณ , ์ด์ annnotation๊น์ง ํ ๋ฐ์ดํฐ์ ํ๋ จ ์์ผ๋ณด๋ ค๊ณ ํ๋๋ฐ.. ํคใ .. ๋ญ๊ฐ ํ์ผ ๊ฐ์๊ฐ ์ ๋ง์์ ์ฐพ์๋ณด๋ annotation ๋ง๋ค๋ฉด์ ์ฝ๋์ ์ค๋ฅ๊ฐ ์๋ ๊ฑฐ ๊ฐ๋ค. ๋ค์ train image, annotation ๋ค์ด๋ก๋ ๋ฐ์์ ๋ฐ์ดํฐ์ ๊ตฌ์ถ... ํ์ผ์ด 50๋ง ์ฅ ์ ๋ ๋๋ค๋ณด๋ ํด๋๋ง ํด๋ฆญํ๋ฉด vscode๊ฐ ๋ ์ด ๊ฑธ๋ฆฌ๋... ๋๊ฐ vscode์ ์ง๋ขฐ๋ฅผ ์ฌ์ด๋๊ฑฐ ๊ฐ๋ค..-_- ๋ง์คํฐํด๋์ค ๋์๋ ๋ฐ์ดํฐ์ ๋ํ ์ด์ผ๊ธฐ๋ฅผ ํด์ฃผ์ จ๋๋ฐ, ํนํ๋ ๋ฉด์ ์ ๋ณผ ๋ ์ง์ํ๊ณ ์ถ์ ํ์ฌ์ ๋น์ฆ๋์ค ๋ชจ๋ธ์ ๋ถ์ํด๋ณด๊ณ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์์ฐ๋์ ์ด๋ค ์๋น์ค๋ฅผ ๊ฐ๋ฐํด๋ณผ ์ ์์์ง ๊ณ ๋ฏผํด๋ณด๋ ๊ฒ ์ค์ํ๋ค๊ณ ๋ง์ํด์ฃผ์ จ๋ค. ๋ด๊ฐ ์๊ฐํ์ ๋์๋ ํจ๊ป ๊ฐ์ ๊ณ ๋ฏผ์ ๋๋๊ณ ์๋ ์ฌ๋๊ณผ ์ผ์ ํ๊ณ ์ถ์ ๊ฒ ํ์ฌ์ ์ ์ฅ์ด ์๋๊น ์ถ๋ค..(!!) ์ฑ์ฉ๊ณต๊ณ ์ฐพ์๋ณด๋ฉด์ ์ด ํ์ฌ์๋ ์ด๋ค ๋ฐ์ดํฐ๊ฐ ์๊ณ ๋ด๊ฐ ์ด๋ค ์ผ์ ํ ์ ์์์ง ๊ณ ๋ฏผํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ด์ผ๊ฒ ๋ค๐ฐ
'Boostcourse > AI Tech 4๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ถ์คํธ์บ ํ AI Tech]WEEK 18_DAY 81 (0) | 2023.01.16 |
---|---|
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 80 (0) | 2023.01.14 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 78 (0) | 2023.01.11 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 77 (0) | 2023.01.11 |
[๋ถ์คํธ์บ ํ AI Tech]WEEK 17_DAY 76 (0) | 2023.01.10 |