Vertex AI Feature Store(๊ธฐ์กด)์์ ํผ์ฒ์คํ ์ด ๋ฐ ํน์ฑ์ ๋ํ ์๋ฆผ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ค์ ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ด์ํ์ ํผ์ฒ์คํ ์ด๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ CPU ์ฌ์ฉ๋ฅ ์ ์ถ์ ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ณผํ์์ ๊ฐ์ ํน์ฑ ์์ ์๋ ํน์ฑ ๊ฐ์ ๋ชจ๋ํฐ๋งํ์ฌ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ๋๋ฆฌํํธ๋ฅผ ๊ฐ์งํ ์ ์์ต๋๋ค.
ํผ์ฒ์คํ ์ด ๋ฐ ํน์ฑ์ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ค์ ์น์ ์ ์ค๋ช ๋์ด ์์ต๋๋ค.
ํผ์ฒ์คํ ์ด ๋ชจ๋ํฐ๋ง
Vertex AI Feature Store(๊ธฐ์กด)๋ CPU ๋ถํ, ์คํ ๋ฆฌ์ง ์ฉ๋, ์์ฒญ ์ง์ฐ ์๊ฐ, ๊ฒฐ์ ์ ๊ฐ์ ํผ์ฒ์คํ ์ด์ ๋ํ ์ธก์ ํญ๋ชฉ์ Cloud Monitoring์ ๋ณด๊ณ ํฉ๋๋ค. Vertex AI๋ ์ด๋ฌํ ์ธก์ ํญ๋ชฉ์ ์๋์ผ๋ก ์์งํ๊ณ ๋ณด๊ณ ํฉ๋๋ค. ํผ์ฒ์คํ ์ด ๋ชจ๋ํฐ๋ง์ ๊ตฌ์ฑํ๊ฑฐ๋ ์ฌ์ฉ ์ค์ ํ ํ์๋ ์์ต๋๋ค.
๊ธฐ์ค๊ณผ ์๋ฆผ์ ๊ตฌ์ฑํ๋ ค๋ฉด Cloud Monitoring์ ์ฌ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๊ท CPU ๋ถํ๊ฐ 70%๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์๋ฆผ์ ์ค์ ํ ์ ์์ผ๋ฉฐ, ์ด ๊ฒฝ์ฐ ํผ์ฒ์คํ ์ด ๋ ธ๋ ์๋ฅผ ๋๋ ค์ผ ํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ํผ์ฒ์คํ ์ด ์ธก์ ํญ๋ชฉ์ ํ์ธํ์ฌ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ์ถ์ธ๋ฅผ ํ์ธํ ์๋ ์์ต๋๋ค. ์ผ๋ถ ์ฐจํธ์ ๊ฒฝ์ฐ ์ ๋ณด๋ฅผ ๋ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง๊ณ๋๊ฑฐ๋ ๊ณ์ฐ๋ ๊ฐ์ด ์ฝ์์ ํ์๋ฉ๋๋ค. ์ธ์ ๋ ์ง Cloud Monitoring์์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์์ธํ ๋ด์ฉ์ Vertex AI Cloud Monitoring ํ์ด์ง์ Vertex AI Feature Store(๊ธฐ์กด) ๋ชจ๋ํฐ๋ง ์ธก์ ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
ํผ์ฒ์คํ ์ด์์ ์ฒ๋ฆฌ๋ ์คํ๋ผ์ธ ๋ฐ์ดํฐ์ ๋ํ ๊ฒฐ์ ๋ชจ๋ํฐ๋ง
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ featurestores.batchReadFeatureValues ๋ฐ entityTypes.exportFeatureValues ๋ฉ์๋์ ์ํด ์คํ๋ผ์ธ์์ ์ฒ๋ฆฌ๋ ์ฒญ๊ตฌ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๊ฐ ํผ์ฒ์คํ ์ด์ ์ฒญ๊ตฌ ๊ฐ๋ฅํ ๋ฐ์ดํธ ์๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์ธก์ ํญ๋ชฉ ํ์๊ธฐ์์ Vertex AI Feature Store(๊ธฐ์กด)์ ์ฒญ๊ตฌ ๊ฐ๋ฅํ ๋ฐ์ดํธ ์ ์ธก์ ํญ๋ชฉ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ์ธก์ ํญ๋ชฉ ํ์๊ธฐ๋ก ์ด๋ํฉ๋๋ค.
์ธก์ ํญ๋ชฉ ๋ชฉ๋ก์์ Vertex AI Feature Store > ํผ์ฒ์คํ ์ด > ์ฒญ๊ตฌ ๊ฐ๋ฅํ ๋ฐ์ดํธ ์๋ฅผ ์ ํํฉ๋๋ค.
์ ์ฉ์ ํด๋ฆญํฉ๋๋ค. ์ฐจํธ์๋ ํ๋ก์ ํธ์ ํผ์ฒ์คํ ์ด์ ๋ํ ์ฒญ๊ตฌ ๊ฐ๋ฅํ ์คํ๋ผ์ธ ๋ฐ์ดํฐ๊ฐ ํ์๋ฉ๋๋ค.
์ฐจํธ๋ฅผ ์์ฑํ ํ ์ด๋ฅผ ์ปค์คํ ๋์๋ณด๋์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํฅํ ์ฐธ์กฐ์ฉ์ผ๋ก ์ฐจํธ ์ ์ฅ์ ์ฐธ์กฐํ์ธ์.
ํน์ฑ ๊ฐ ๋ชจ๋ํฐ๋ง
ํน์ฑ ๊ฐ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉํ๋ฉด ํผ์ฒ์คํ ์ด์์ ํน์ฑ ๊ฐ ๋ถํฌ๊ฐ ๋ณํ๋ ์ ๋๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. ์ง์๋๋ ํน์ฑ ๊ฐ ๋ชจ๋ํฐ๋ง ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค๋ ์ท ๋ถ์: Vertex AI Feature Store(๊ธฐ์กด)๋ ํน์ฑ ๊ฐ์ ์ค๋ ์ท์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ง๋ญ๋๋ค. ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ฉด ํน์ฑ ๊ฐ์ ๋ถํฌ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์ ํด๋น ํน์ฑ์ ์ฌ์ฉํ๋ ๋ชจ๋ ๋ชจ๋ธ์ ๋ค์ ํ์ต์์ผ์ผ ํ ์ ์์์ ๋ํ๋ ๋๋ค. ๋ถํฌ ํธ์ฐจ๊ฐ ๊ธฐ์ค์ ์ ์ด๊ณผํ ๋๋ง๋ค ์ด์์ด Cloud Logging Concole์ ๋ก๊น ๋๋๋ก ๊ธฐ์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ํฐํฐ ID๊ฐ 500๋ง ๊ฐ๋ฅผ ์ด๊ณผํ๋ ๋ฐ์ดํฐ ์ธํธ์ ๊ฒฝ์ฐ Vertex AI Feature Store(๊ธฐ์กด)๋ ๋นํ์ฑ ๊ธฐ๊ฐ(์ผ ์)์ผ๋ก ์ง์ ํ ๊ธฐ๊ฐ ๋ด์ ๋ฌด์์๋ก ์ ํ๋ ์ํฐํฐ ID 500๋ง ๊ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ ์ท์ ์์ฑํฉ๋๋ค.
ํน์ฑ ๋ถ์ ๊ฐ์ ธ์ค๊ธฐ: ๊ฐ
ImportFeatureValues
์์ ์ Vertex AI Feature Store(๊ธฐ์กด)์ ์์ง๋ ๊ฐ์ ๋ถํฌ ํต๊ณ๋ฅผ ์์ฑํฉ๋๋ค. ๋ถํฌ ํต๊ณ๋ฅผ ์ด์ ์ ๊ฐ์ ธ์จ ํน์ฑ ๊ฐ ๋ถํฌ ๋๋ ์ค๋ ์ท ๋ถํฌ(์ฌ์ฉ ์ค์ ๋ ๊ฒฝ์ฐ)์ ๋น๊ตํ์ฌ ์ด์์ ๊ฐ์งํ๋๋ก ์ ํํ ์ ์์ต๋๋ค.์ธ์คํด์ค๊ฐ 500๋ง ๊ฐ๋ฅผ ์ด๊ณผํ๋ ๋ฐ์ดํฐ ์ธํธ์ ๊ฒฝ์ฐ Vertex AI Feature Store(๊ธฐ์กด)๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฌด์์๋ก ์ ํํ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ ์ท์ ์์ฑํฉ๋๋ค.
- ์์ง๋ ๋ฐ์ดํฐ ์ธํธ ๋ด ์ธ์คํด์ค ์๊ฐ 500๋ง ๊ฐ๋ฅผ ์ด๊ณผํ์ง๋ง 5000๋ง ๊ฐ๋ฅผ ์ด๊ณผํ์ง ์์ผ๋ฉด ๋ฌด์์๋ก ์ ํ๋ ์ธ์คํด์ค 5๋ฐฑ๋ง ๊ฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ ์ท์ด ์์ฑ๋ฉ๋๋ค.
- ์์ง๋ ๋ฐ์ดํฐ ์ธํธ ๋ด ์ธ์คํด์ค ์๊ฐ 5000๋ง ๊ฐ๋ฅผ ์ด๊ณผํ๋ฉด ๋ฌด์์๋ก ์ ํ๋ ์ธ์คํด์ค์ 10%๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ค๋ ์ท์ด ์์ฑ๋ฉ๋๋ค.
์๋ฅผ ๋ค์ด ์ต๊ทผ ํ๋งค๋ ์ฃผํ์ ๊ฐ๊ฒฉ์ ์์งํ ๋ค์ ์ฃผํ ๊ฐ๊ฒฉ์ ์์ธกํ๋ ๋ชจ๋ธ์ ๊ฐ์น๋ฅผ ์ ๋ ฅํ๋ ํน์ฑ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ต๊ทผ์ ํ๋งค๋ ์ฃผํ์ ๊ฐ๊ฒฉ์ด ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ณ๋ํ๊ฑฐ๋ ์ผ๊ด์ ์ผ๋ก ๊ฐ์ ธ์จ ๊ฐ์น์ ํ์ต ๋ฐ์ดํฐ์์ ํฌ๊ฒ ๋ฒ์ด๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. Vertex AI Feature Store(๊ธฐ์กด)๋ ์ด๋ฌํ ๋ณ๊ฒฝ์ฌํญ์ ์๋ ค์ค๋๋ค. ๊ทธ๋ฌ๋ฉด ์ต์ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋๋ก ๋ชจ๋ธ์ ๋ค์ ํ์ต์ํฌ ์ ์์ต๋๋ค.
๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์ค์
๋ชจ๋ํฐ๋ง์ ์์ํ๊ธฐ ์ํด ํญ๋ชฉ ์ ํ์ ๋ํ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ์ ์ ์ํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด ๋ค์ ์ ํ์ ๋ชจ๋ ํน์ฑ์ ๋ํ ๋ชจ๋ํฐ๋ง์ ์ํํ ์ ์์ต๋๋ค.
BOOL
STRING
DOUBLE
INT64
ํญ๋ชฉ ์ ํ์ ๋ง๋ค ๋ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. disableMonitoring
์์ฑ์ ์ค์ ํ์ฌ ํน์ ํน์ฑ์ ๋ํ ๋ชจ๋ํฐ๋ง์ ์ ํ ํด์ ํ ์๋ ์์ต๋๋ค. ํญ๋ชฉ ์ ํ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ์ค์ ์ฌ๋ถ. Monitoring์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ ์ค์ง๋์ด์์ต๋๋ค.
- ์ด์์น๋ฅผ ๊ฐ์งํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ค์ . ๊ธฐ๋ณธ ๊ธฐ์ค์ ์ 0.3์ ๋๋ค.
- ์ค๋ ์ท ๊ฐ ๊ฐ๊ฒฉ ์ธ์ ์ ํ ํ์ธ ๊ธฐ๊ฐ(์ค๋ ์ท ๋ถ์์ฉ). ๊ธฐ๋ณธ๊ฐ์ 21์ ๋๋ค.
- ๊ฐ์ ธ์ค๊ธฐ ํน์ฑ ๋ถ์์ ์ฌ์ฉ ์ค์ ํ ์ง ์ฌ๋ถ. ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉ ์ค์ง๋จ์ ๋๋ค.
์์ธํ ๋ด์ฉ์ API ์ฐธ์กฐ์ FeaturestoreMonitoringConfig ์ ํ์ ์ฐธ์กฐํ์ธ์.
๋ชจ๋ํฐ๋ง์ด ์ฌ์ฉ ์ค์ ๋ ํญ๋ชฉ ์ ํ ๋ง๋ค๊ธฐ
๋ค์ ์์์์๋ ํน์ฑ ๋ชจ๋ํฐ๋ง์ด ์ฌ์ฉ ์ค์ ๋ ํญ๋ชฉ ์ ํ์ ๋ง๋ญ๋๋ค.
์น UI
UI์์๋ ์ค๋ ์ท ๋ถ์๋ง ์ง์๋ฉ๋๋ค.
- Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ํน์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ฆฌ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
- ํญ๋ชฉ ์ ํ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํน์ฑ ๋ชจ๋ํฐ๋ง ์น์ ์ ์ฌ์ฉ ์ค์ ๋จ์ผ๋ก ์ ํํฉ๋๋ค.
- Monitoring ์๊ฐ ๊ฐ๊ฒฉ ํ๋์ ์ค๋
์ท ์ฌ์ด์ ์ผ์๋ฅผ ์
๋ ฅํฉ๋๋ค.
ํญ๋ชฉ ์ ํ ๋๋ ํน์ฑ์ ๋ชจ๋ํฐ๋ง ์์ ์ ํญ๋ชฉ ์ ํ ๋๋ ํน์ฑ์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉ ์ค์ ํ ์๊ฐ ์ดํ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์๊ฐ์ ์คํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์์ผ ์คํ 10์ 30๋ถ์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉ ์ค์ ํ๊ณ ๋ชจ๋ํฐ๋ง ์๊ฐ ๊ฐ๊ฒฉ์ 2์ผ๋ก ์ง์ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ชจ๋ํฐ๋ง ์์ ์ด ์์์ผ ์คํ 11์์ ์คํ๋ฉ๋๋ค. - Monitoring ์ ํ ํ์ธ ๊ธฐ๊ฐ ํ๋์ ๊ฐ ์ค๋ ์ท์ ๋ํ ์ ํ ํ์ธ ์ผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ์ซ์ ์๋ฆผ ๊ธฐ์ค์ ํ๋์ ์ซ์ ํน์ฑ์ ์ด์์ ๊ฐ์งํ๋ ๋ฐ ์ฌ์ฉ๋ ๊ธฐ์ค์ ์ ์ ๋ ฅํ์ธ์.
- ๋ฒ์ฃผํ ์๋ฆผ ๊ธฐ์ค์ ํ๋์ ์ด EntityType์ ๋ฒ์ฃผํ ํน์ฑ์ ๋ํ ์ด์ ๊ฐ์ง์ ์ฌ์ฉ๋๋ ๊ธฐ์ค์ ์ ์
๋ ฅํฉ๋๋ค.
ํน์ฑ ๊ฐ ์ด์ ๊ฐ์ง์ ๋ํ ์์ธํ ๋ด์ฉ์ ํน์ฑ ๊ฐ ์ด์์น ๋ณด๊ธฐ๋ฅผ ํ์ธํ์ธ์. - ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํน์ฑ ํ ์ด๋ธ์์ ํญ๋ชฉ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
- ํญ๋ชฉ์ ์ ํน์ฑ์ ์ถ๊ฐํ๋ ค๋ฉด ํน์ฑ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํน์ ํน์ฑ์ ๋ํด ๋ชจ๋ํฐ๋ง์ ์ ํ ํด์ ํ๋ ค๋ฉด ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ์ค์ ์ ํด์ ํฉ๋๋ค.
REST
ํญ๋ชฉ ์ ํ์ ๋ง๋ค๋ ค๋ฉด entityTypes.create ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ POST ์์ฒญ์ ์ ์กํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํผ์ฒ์คํ ์ด๊ฐ ์๋ ๋ฆฌ์ ์
๋๋ค(์:
us-central1
). - PROJECT_ID: ํ๋ก์ ํธ ID
- FEATURESTORE_ID: ํผ์ฒ์คํ ์ด์ ID
- ENTITY_TYPE_ID: ํญ๋ชฉ ์ ํ์ ID
- DURATION: ์ค๋ ์ท ์ฌ์ด์ ๊ฐ๊ฒฉ(์ผ)
- STALENESS_DAYS: ์ค๋ ์ท ์์ฑ ์ ํ์ธํ ์ผ์
- NUMERICAL_THRESHOLD_VALUE: ์ด ํญ๋ชฉ ์ ํ์ ์ซ์ ํน์ฑ์์ ์ด์์ ๊ฐ์งํ๋ ๊ธฐ์ค์ . ํต๊ณ ํธ์ฐจ๋ Jenson-Shannon ๋ถ์ผ์น๋ก ๊ณ์ฐํฉ๋๋ค.
- CATEGORICAL_THRESHOLD_VALUE: ์ด ํญ๋ชฉ ์ ํ์ ๋ฒ์ฃผํ ํน์ฑ์์ ์ด์์ ๊ฐ์งํ๊ธฐ ์ํ ๊ธฐ์ค์ ์ ๋๋ค. ํต๊ณ ํธ์ฐจ๋ L ๋ฌดํ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ฐํฉ๋๋ค.
- IMPORT_FEATURE_ANALYSIS_STATE: ๊ฐ์ ธ์ค๊ธฐ ํน์ฑ ๋ถ์์ ์ฌ์ฉ ์ค์ ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ํ์ ๋๋ค.
- IMPORT_FEATURE_ANALYSIS_BASELINE: ์ฌ์ฉ ์ค์ ๋ ๊ฒฝ์ฐ ๊ฐ์ ธ์ค๊ธฐ ํน์ฑ ๋ถ์์ ๊ธฐ์ค์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "monitoringConfig": { "snapshotAnalysis": { "monitoringIntervalDays": "DURATION" "stalenessDays": "STALENESS_DAYS" } }, "numericalThresholdConfig": { "value": "NUMERICAL_THRESHOLD_VALUE" }, "categoricalThresholdConfig": { "value": "CATEGORICAL_THRESHOLD_VALUE" }, "importFeatureAnalysis": { "state": "IMPORT_FEATURE_ANALYSIS_STATE", "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE" } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes?entityTypeId=ENTITY_TYPE_ID" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค. ์๋ต์ OPERATION_ID๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateEntityTypeOperationMetadata", "genericMetadata": { "createTime": "2022-04-29T20:29:05.206525Z", "updateTime": "2022-04-29T20:29:05.206525Z" } } }
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
์ถ๊ฐ ์ธ์ด
Vertex AI SDK for Python์ ์ค์นํ๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ Vertex AI SDK for Python ์ฌ์ฉ์ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ Python์ฉ Vertex AI SDK API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
์ ํน์ฑ์ ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ์ค์ง
๋ค์ ์์์์๋ ๋ชจ๋ํฐ๋ง์ด ์ฌ์ฉ ์ค์ง๋ ์ ํน์ฑ์ ๋ง๋ญ๋๋ค.
REST
ํน์ฑ์ ๋ง๋ค๋ ค๋ฉด features.create ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ POST ์์ฒญ์ ์ ์กํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํผ์ฒ์คํ ์ด๊ฐ ์๋ ๋ฆฌ์ (์:
us-central1
) - PROJECT_ID: ํ๋ก์ ํธ ID
- FEATURESTORE_ID: ํผ์ฒ์คํ ์ด์ ID
- ENTITY_TYPE_ID: ํญ๋ชฉ ์ ํ์ ID
- FEATURE_ID: ํน์ฑ์ ID
- VALUE_TYPE: ํน์ฑ์ ๊ฐ ์ ํ
- DISABLE_MONITORING: ๋ชจ๋ํฐ๋ง์ ๋ช ์์ ์ผ๋ก ์ ํ ํด์ ํ๋ ค๋ฉด true๋ก ์ค์
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "disableMonitoring": "DISABLE_MONITORING", "valueType": "VALUE_TYPE" }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID?featureId=/FEATURE_ID" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค. ์๋ต์ OPERATION_ID๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ํ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.ui.CreateFeatureOperationMetadata", "genericMetadata": { "createTime": "2022-04-29T20:29:05.206525Z", "updateTime": "2022-04-29T20:29:05.206525Z" } } }
๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์ ๋ฐ์ดํธ
ํญ๋ชฉ ์ ํ์ ์
๋ฐ์ดํธํ ๋ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. disableMonitoring
์์ฑ์ ์ค์ ํ์ฌ ํน์ ํน์ฑ์ ๋ํ ๋ชจ๋ํฐ๋ง์ ์ ํ ํด์ ํ ์๋ ์์ต๋๋ค.
ํญ๋ชฉ ์ ํ ๋ฐ ํน์ฑ์ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ ์ ๋ฐ์ดํธ
๋ค์ ์์์์๋ ๊ธฐ์กด ํญ๋ชฉ ์ ํ ๋ฐ ์ด ํญ๋ชฉ ์ ํ์ ํน์ ํน์ฑ์ ๋ํ ๋ชจ๋ํฐ๋ง ๊ตฌ์ฑ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
์น UI
UI์์๋ ์ค๋ ์ท ๋ถ์๋ง ์ง์๋ฉ๋๋ค.
- Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ํน์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ฆฌ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
- ํน์ฑ ํ ์ด๋ธ์์ ํญ๋ชฉ ์ ํ ์ด์ ๋ณด๊ณ ์ ๋ฐ์ดํธํ ํญ๋ชฉ ์ ํ์ ์ฐพ์ต๋๋ค.
- ํญ๋ชฉ ์ ํ ์ด๋ฆ์ ํด๋ฆญํ์ฌ ํญ๋ชฉ ์ธ๋ถ์ ๋ณด ํ์ด์ง๋ฅผ ๋ด ๋๋ค.
- ์์ ๋ชจ์์์ ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
- Monitoring ์๊ฐ ๊ฐ๊ฒฉ์ ์ค๋
์ท ์ฌ์ด์ ์ผ์๋ฅผ ์
๋ ฅํฉ๋๋ค.
ํญ๋ชฉ ์ ํ ๋๋ ํน์ฑ์ ๋ชจ๋ํฐ๋ง ์์ ์ ํญ๋ชฉ ์ ํ ๋๋ ํน์ฑ์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉ ์ค์ ํ ์๊ฐ ์ดํ ๊ฐ์ฅ ๊ฐ๊น์ด ์ ์ ์๊ฐ์ ์คํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์์์ผ ์คํ 10์ 30๋ถ์ ๋ชจ๋ํฐ๋ง์ ์ฌ์ฉ ์ค์ ํ๊ณ ๋ชจ๋ํฐ๋ง ์๊ฐ ๊ฐ๊ฒฉ์ 2์ผ๋ก ์ง์ ํ๋ฉด ์ฒซ ๋ฒ์งธ ๋ชจ๋ํฐ๋ง ์์ ์ด ์์์ผ ์คํ 11์์ ์คํ๋ฉ๋๋ค. - ์ ๋ฐ์ดํธ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก ํน์ฑ ํ ์ด๋ธ์์ ํน์ฑ ์ด์ ํ์ธํ์ฌ ์ ๋ฐ์ดํธํ ํน์ฑ์ ์ฐพ์ต๋๋ค.
- ํน์ฑ ์ด๋ฆ์ ํด๋ฆญํ์ฌ ์ธ๋ถ์ ๋ณด ํ์ด์ง๋ฅผ ๋ด ๋๋ค.
- ์์ ๋ชจ์์์ ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
- ํน์ ํน์ฑ์ ๋ํด ๋ชจ๋ํฐ๋ง์ ์ ํ ํด์ ํ๋ ค๋ฉด ์ฌ์ฉ ์ค์ ๋ ๋ชจ๋ํฐ๋ง์ ํด์ ํฉ๋๋ค.
REST
ํญ๋ชฉ ์ ํ์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด entityTypes.patch ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ PATCH ์์ฒญ์ ์ ์กํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํผ์ฒ์คํ ์ด๊ฐ ์๋ ๋ฆฌ์ ์
๋๋ค(์:
us-central1
). - PROJECT_ID: ํ๋ก์ ํธ ID
- FEATURESTORE_ID: ํผ์ฒ์คํ ์ด์ ID
- ENTITY_TYPE_ID: ํญ๋ชฉ ์ ํ์ ID
- DURATION_IN_DAYS: ์ค๋ ์ท ์ฌ์ด์ ๊ฐ๊ฒฉ(์ผ)
- STALENESS_DAYS: ์ค๋ ์ท ์์ฑ ์ ํ์ธํ ์ผ์
- NUMERICAL_THRESHOLD_VALUE: ์ด ํญ๋ชฉ ์ ํ์ ์ซ์ ํน์ฑ์์ ์ด์์ ๊ฐ์งํ๋ ๊ธฐ์ค์ . ํต๊ณ ํธ์ฐจ๋ Jenson-Shannon ๋ถ์ผ์น๋ก ๊ณ์ฐํฉ๋๋ค.
- CATEGORICAL_THRESHOLD_VALUE: ์ด ํญ๋ชฉ ์ ํ์ ๋ฒ์ฃผํ ํน์ฑ์์ ์ด์์ ๊ฐ์งํ๊ธฐ ์ํ ๊ธฐ์ค์ ์ ๋๋ค. ํต๊ณ ํธ์ฐจ๋ L ๋ฌดํ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ณ์ฐํฉ๋๋ค.
- IMPORT_FEATURE_ANALYSIS_STATE: ๊ฐ์ ธ์ค๊ธฐ ํน์ฑ ๋ถ์์ ์ฌ์ฉ ์ค์ ํ ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ ์ํ์ ๋๋ค.
- IMPORT_FEATURE_ANALYSIS_BASELINE: ???๋ฅผ ๋ํ๋ด๋ ๊ธฐ์ค์ ๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "monitoringConfig": { "snapshotAnalysis": { "monitoringIntervalDays": "DURATION_IN_DAYS", "stalenessDays": "STALENESS_DAYS" } }, "numericalThresholdConfig": { "value": "NUMERICAL_THRESHOLD_VALUE" }, "categoricalThresholdConfig": { "value": "CATEGORICAL_THRESHOLD_VALUE" }, "importFeatureAnalysis": { "state": "IMPORT_FEATURE_ANALYSIS_STATE", "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE" } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID", "createTime": "2021-07-22T23:18:31.339972Z", "updateTime": "2021-07-29T22:24:40.221821Z", "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=", "monitoringConfig": { "snapshotAnalysis": { "monitoringIntervalDays": "DURATION_IN_DAYS", "stalenessDays": "STALENESS_DAYS" } }, "numericalThresholdConfig": { "value": "NUMERICAL_THRESHOLD_VALUE" }, "categoricalThresholdConfig": { "value": "CATEGORICAL_THRESHOLD_VALUE" }, "importFeatureAnalysis": { "state": "IMPORT_FEATURE_ANALYSIS_STATE", "anomalyDetectionBaseline": "IMPORT_FEATURE_ANALYSIS_BASELINE" } }
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
ํน์ฑ ๋ชจ๋ํฐ๋ง ์ฌ์ฉ ์ค์ง
๋ค์ ์์๋ ๊ธฐ์กด ํน์ฑ์ ๋ํด ๋ชจ๋ํฐ๋ง์ ํด์ ํฉ๋๋ค.
REST
ํน์ฑ์ ์ ๋ฐ์ดํธํ๋ ค๋ฉด features.patch ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ PATCH ์์ฒญ์ ์ ์กํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- LOCATION_ID: ํผ์ฒ์คํ ์ด๊ฐ ์๋ ๋ฆฌ์ (์:
us-central1
) - PROJECT_ID: ํ๋ก์ ํธ ID
- FEATURESTORE_ID: ํผ์ฒ์คํ ์ด์ ID
- ENTITY_TYPE_ID: ํญ๋ชฉ ์ ํ์ ID
- FEATURE_ID: ์ ๋ฐ์ดํธํ ํน์ฑ์ ID
- DISABLE_MONITORING: ๋ชจ๋ํฐ๋ง์ ๋ช ์์ ์ผ๋ก ์ ํ ํด์ ํ๋ ค๋ฉด true๋ก ์ค์
HTTP ๋ฉ์๋ ๋ฐ URL:
PATCH https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "disableMonitoring": "DISABLE_MONITORING" }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
curl
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID"
PowerShell
์์ฒญ ๋ณธ๋ฌธ์ request.json
ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํฉ๋๋ค.
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/entityTypes/ENTITY_TYPE_ID/features/FEATURE_ID", "valueType": "FEATURE_VALUE_TYPE", "createTime": "2021-07-22T23:18:31.339972Z", "updateTime": "2021-07-29T22:24:40.221821Z", "etag": "AMEw9yPGDpwUwHx39gIDIg5mTQz65GMhnYHRzRslVPonm1g8xTnsTC5YUibmWo2MIuI=", "disableMonitoring": "DISABLE_MONITORING" }
ํน์ฑ ๊ฐ ๋ถํฌ ๋ณด๊ธฐ
Google Cloud ์ฝ์์ ์ฌ์ฉํ์ฌ ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ฅธ ํน์ฑ ๊ฐ์ ๋ถํฌ๋ฅผ ํ์ธํฉ๋๋ค.
์น UI
Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ํน์ฑ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๋ฆฌ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
ํญ๋ชฉ ์ ํ์ ๋ชจ๋ ํน์ฑ์ ๋ํด ํน์ฑ ๊ฐ ๋ถํฌ๋ฅผ ๋ณด๋ ค๋ฉด ํญ๋ชฉ ์ ํ ์ด์์ ํญ๋ชฉ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
ํน์ฑ์ ํน์ฑ ๊ฐ ๋ถํฌ ์ธก์ ํญ๋ชฉ์ ๋ณด๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
ํน์ฑ ์ด์์ ํน์ฑ์ ํด๋ฆญํฉ๋๋ค.
์ธก์ ํญ๋ชฉ ํญ์ ํด๋ฆญํ์ฌ ํน์ฑ ๊ฐ ๋ถํฌ ์ธก์ ํญ๋ชฉ์ ์ด๋ํฉ๋๋ค.
ํน์ฑ ๊ฐ ์ด์ ๋ณด๊ธฐ
ํน์ฑ ๊ฐ ๋ถํฌ๊ฐ ๋ชจ๋ํฐ๋ง ํ์ดํ๋ผ์ธ์์ ์ง์ ๋ ๊ธฐ์ค์ ์ ์ด๊ณผํ๋ฉด ํธ์ฐจ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์ด์์น์๋ ํ์ต-์๋น ํธํฅ ๋ฐ ๋๋ฆฌํํธ์ ๋ ๊ฐ์ง ์ ํ์ด ์์ต๋๋ค. ํธ์ฐจ๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด Vertex AI๋ ํ๋ก๋์ ์ ์ต์ ํน์ฑ ๊ฐ์ ๊ธฐ์ค๊ฐ๊ณผ ๋น๊ตํฉ๋๋ค.
ํ์ต-์๋น ํธํฅ์ ๊ฐ์งํ๊ธฐ ์ํด Vertex AI๋ ํ๋ก๋์ ์์ ์ต์ ํน์ฑ ๊ฐ์ ํ์ต ๋ฐ์ดํฐ์ ์๋ ํน์ฑ ๊ฐ์ ํต๊ณ ๋ถํฌ์ ๋น๊ตํฉ๋๋ค. ์ฌ๊ธฐ์์๋ ํ์ต ๋ฐ์ดํฐ์์ ํน์ฑ ๊ฐ์ ํต๊ณ ๋ถํฌ๊ฐ ๊ธฐ์ค ๋ถํฌ๋ก ๊ณ ๋ ค๋ฉ๋๋ค. ํ์ต-์๋น ํธํฅ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
๋๋ฆฌํํธ๋ฅผ ๊ฐ์งํ๊ธฐ ์ํด Vertex AI๋ ํ๋ก๋์ ์ ์ต์ ํน์ฑ ๊ฐ์ ์ต์ 1์๊ฐ ์ ์ ๋ฐ์ํ ์ต๊ทผ์ ๋ชจ๋ํฐ๋ง ์คํ์ผ๋ก๋ถํฐ ์ป์ ํน์ฑ ๊ฐ์ ํต๊ณ ๋ถํฌ์ ๋น๊ตํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ต๊ทผ ๋ชจ๋ํฐ๋ง ์คํ์ผ๋ก๋ถํฐ ์ป์ ํน์ฑ ๊ฐ์ ํต๊ณ ๋ถํฌ๊ฐ ๊ธฐ์ค ๋ถํฌ๋ก ๊ณ ๋ ค๋ฉ๋๋ค. ๋๋ฆฌํํธ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
๋ ๊ฒฝ์ฐ ๋ชจ๋ ๊ธฐ์ค ๋ถํฌ๋ฅผ ํ๋ก๋์ ์ ์ต๊ทผ ํน์ฑ ๊ฐ๊ณผ ๋น๊ตํด์ ์ฐจ์ด ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
๋ฒ์ฃผํ ํน์ฑ์ ๊ฒฝ์ฐ L-๋ฌดํ ๊ฑฐ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฑฐ๋ฆฌ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฑฐ๋ฆฌ ์ ์๊ฐ ๋ฒ์ฃผํ ์๋ฆผ ๊ธฐ์ค์ ํ๋์ ์ง์ ํ ๊ธฐ์ค์ ์ ์ด๊ณผํ๋ฉด ๋น์ ์์ผ๋ก ์๋ณ๋ฉ๋๋ค.
์ซ์ ํน์ฑ์ ๊ฒฝ์ฐ ๊ฑฐ๋ฆฌ ์ ์๋ Jensen-Shannon ๋ถ์ฐ์ ํตํด ๊ณ์ฐ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฑฐ๋ฆฌ ์ ์๊ฐ ์ซ์ ์๋ฆผ ๊ธฐ์ค์ ํ๋์ ์ง์ ํ ๊ธฐ์ค์ ๊ฐ์ ์ด๊ณผํ๋ฉด ์ด์์น๋ก ์๋ณ๋ฉ๋๋ค.
์ด๋ ๊ฒฝ์ฐ๋ ์ฐจ์ด ์ ์๋ฅผ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ค ๋ถํฌ์ ๋ฐ๋ผ ์ด์์น๊ฐ ํ์ต-์๋น ํธํฅ ๋๋ ๋๋ฆฌํํธ์ผ ์ ์์ต๋๋ค. ์ด์์น ๋ก๊ทธ๋ featurestore_log
๋ก๊ทธ ์ด๋ฆ์ผ๋ก Cloud Logging์ ๊ธฐ๋ก๋ฉ๋๋ค. Pub/Sub์ ๊ฐ์ด Cloud Logging์ด ์ง์ํ๋ ๋ชจ๋ ๋ค์ด์คํธ๋ฆผ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ๋๊ธฐํํ ์ ์์ต๋๋ค.
์๋ฆผ ๊ธฐ์ค์ ์ค์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ชจ๋ํฐ๋ง์ด ์ฌ์ฉ ์ค์ ๋ ํญ๋ชฉ ์ ํ ๋ง๋ค๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
ํน์ ํผ์ฒ์คํ ์ด์์ ์์ฑ๋ ๋ชจ๋ ์ด์์ ๋ํ ์ฟผ๋ฆฌ ์์
logName="projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2FFfeaturestore_log"
resource.labels.resource_container=<project_number>
resource.labels.featurestore_id=<featurestore_id>
์ด์ ๋ก๊ทธ ํญ๋ชฉ์ ์์
{
"insertId": "ktbx5jf7vdn7b",
"jsonPayload": {
"threshold": 0.001,
"featureName": "projects/<project_number>/locations/us-central1/featurestores/<featurestore_id>/entityTypes/<entity_type_id>/features/<feature_id>",
"deviation": 1,
"@type": "type.googleapis.com/google.cloud.aiplatform.logging.FeatureAnomalyLogEntry",
"objective": "Featurestore Monitoring Snapshot Drift Anomaly"
},
"resource": {
"type": "aiplatform.googleapis.com/Featurestore",
"labels": {
"resource_container": "<project_number>",
"location": "us-central1",
"featurestore_id": "<featurestore_id>"
}
},
"timestamp": "2022-02-06T00:54:06.455501Z",
"severity": "WARNING",
"logName": "projects/model-monitoring-demo/logs/aiplatform.googleapis.com%2Ffeaturestore_log",
"receiveTimestamp": "2022-02-06T00:54:06.476107155Z"
}
์คํธ๋ฆฌ๋ฐ ์์ง์ ๋ํ ์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง ์ฐ๊ธฐ ์ค๋ฅ ๋ชจ๋ํฐ๋ง
Google Cloud ์ฝ์์ ์ฌ์ฉํด์ ์คํธ๋ฆฌ๋ฐ ์์ง ์ค ์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง์ ๋ํ ์ฐ๊ธฐ ์ค๋ฅ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง๋ก์ ์คํธ๋ฆฌ๋ฐ ์์ง์ ๋ํ ์ธก์ ํญ๋ชฉ ๋ณด๊ธฐ
์ธก์ ํญ๋ชฉ ํ์๊ธฐ์์ Vertex AI Feature Store(๊ธฐ์กด)์ ์คํธ๋ฆฌ๋ฐ ์ฐ๊ธฐ์ฉ ์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง ์ฐ๊ธฐ ์ธก์ ํญ๋ชฉ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
์น UI
Google Cloud ์ฝ์์์ ์ธก์ ํญ๋ชฉ ํ์๊ธฐ๋ก ์ด๋ํฉ๋๋ค.
์ฐจํธ์ ํ์๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํฉ๋๋ค.
๋ฆฌ์์ค ๋ฐ ์ธก์ ํญ๋ชฉ: Vertex AI Feature Store > ์คํธ๋ฆฌ๋ฐ ์ฐ๊ธฐ์ ๋ํ ์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง ์ฐ๊ธฐ ์ธก์ ํญ๋ชฉ์ ์ ํํฉ๋๋ค.
ํํฐ:
error_code
๋ฅผ ์ ํํฉ๋๋ค.
์ ์ฉ์ ํด๋ฆญํฉ๋๋ค. ์ฐจํธ์๋ ๋ค์ํ ์ค๋ฅ ์ฝ๋์ ๋ํ ์คํ๋ผ์ธ ์คํ ๋ฆฌ์ง ์ฐ๊ธฐ ์ค๋ฅ๊ฐ ํ์๋ฉ๋๋ค.
์ฐจํธ๋ฅผ ์์ฑํ ํ ์ด๋ฅผ ์ปค์คํ ๋์๋ณด๋์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ํฅํ ์ฐธ์กฐ์ฉ์ผ๋ก ์ฐจํธ ์ ์ฅ์ ์ฐธ์กฐํ์ธ์.
Vertex AI Feature Store(๊ธฐ์กด) ๋ก๊ทธ ๋ณด๊ธฐ
๋ก๊ทธ ํ์๊ธฐ์์ ์คํ๋ผ์ธ ์ ์ฅ์ ์ฐ๊ธฐ ์ค๋ฅ ์ค์ ์์ฑ๋ ๋ก๊ทธ๋ฅผ ํฌํจํ์ฌ ํผ์ฒ์คํ ์ด์ ๋ก๊ทธ ํญ๋ชฉ์ ๋ณผ ์ ์์ต๋๋ค.
์น UI
Google Cloud ์ฝ์์์ ๋ก๊ทธ ํ์๊ธฐ๋ก ์ด๋ํฉ๋๋ค.
์ฟผ๋ฆฌ ๋น๋์์ ๋ค์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ ํ ์ฟผ๋ฆฌ ์คํ์ ํด๋ฆญํฉ๋๋ค.
- ๋ฆฌ์์ค: Vertex AI Feature Store๋ฅผ ์ ํํฉ๋๋ค.
- ๋ก๊ทธ ์ด๋ฆ: Vertex AI API์์
aiplatform.googlapis.com/featurestore_log
๋ฅผ ์ ํํฉ๋๋ค.