์˜จ๋ผ์ธ ์ถ”๋ก  ๋กœ๊น… ์‚ฌ์šฉ

AutoML ํ…Œ์ด๋ธ” ํ˜•์‹ ๋ชจ๋ธ, AutoML ์ด๋ฏธ์ง€ ๋ชจ๋ธ, ์ปค์Šคํ…€ ํ•™์Šต ๋ชจ๋ธ์—์„œ๋Š” ๋ชจ๋ธ ๋ฐฐํฌ ๋˜๋Š” ์—”๋“œํฌ์ธํŠธ ์ƒ์„ฑ ์ค‘์— ์ถ”๋ก  ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ ์ถ”๋ก  ๋กœ๊ทธ ์œ ํ˜•๊ณผ ์ด๋Ÿฌํ•œ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๋ก  ๋กœ๊ทธ ์œ ํ˜•

์ถ”๋ก  ๋…ธ๋“œ์—์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๋ก  ๋กœ๊ทธ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…: ์ถ”๋ก  ๋…ธ๋“œ์˜ stdout ๋ฐ stderr ์ŠคํŠธ๋ฆผ์„ Cloud Logging์— ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋กœ๊ทธ๋Š” ๋””๋ฒ„๊น…์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

    • v1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ๋ฐฐํฌํ•  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฐํฌ๋œ ๋ชจ๋ธ์„ ๋ณ€ํ˜•ํ•  ๋•Œ ๋กœ๊น…์„ ์‚ฌ์šฉ ์ค‘์ง€ ๋˜๋Š” ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • v1beta1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ์—์„œ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์ค‘์ง€๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ๋ฐฐํฌํ•  ๋•Œ ์ด๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฐํฌ๋œ ๋ชจ๋ธ์„ ๋ณ€ํ˜•ํ•  ๋•Œ ๋กœ๊น…์„ ์‚ฌ์šฉ ์ค‘์ง€ ๋˜๋Š” ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์•ก์„ธ์Šค ๋กœ๊น…: Cloud Logging์— ๋Œ€ํ•œ ๊ฐ ์š”์ฒญ์˜ ํƒ€์ž„์Šคํƒฌํ”„ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค.

    v1 ๋ฐ v1beta1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ ๋ชจ๋‘ ์•ก์„ธ์Šค ๋กœ๊น…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ค‘์ง€๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ์— ๋ชจ๋ธ์„ ๋ฐฐํฌํ•  ๋•Œ ์•ก์„ธ์Šค ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…: BigQuery ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์˜จ๋ผ์ธ ์ถ”๋ก  ์š”์ฒญ ๋ฐ ์‘๋‹ต์˜ ์ƒ˜ํ”Œ์„ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค.

    ์ถ”๋ก  ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํŒจ์น˜ํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ๋กœ๊ทธ ์œ ํ˜•์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๋ก  ๋กœ๊ทธ ์„ค์ •

์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜, ๋ชจ๋ธ์„ ์—”๋“œํฌ์ธํŠธ์— ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜, ๋ฐฐํฌ๋œ ๋ชจ๋ธ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์˜จ๋ผ์ธ ์ถ”๋ก  ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๋กœ๊ทธ์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ทจ์†Œํ•œ ํ›„ ์ƒˆ ์„ค์ •์œผ๋กœ ๋ชจ๋ธ์„ ๋‹ค์‹œ ๋ฐฐํฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋ธ์„ ๋‹ค์‹œ ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋Ÿ‰์˜ ์ดˆ๋‹น ์ฟผ๋ฆฌ ์ˆ˜ (QPS)์— ๋Œ€ํ•ด ์˜จ๋ผ์ธ ์ถ”๋ก ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋งŽ์€ ์ˆ˜์˜ ๋กœ๊ทธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉฐ Cloud Logging ๊ฐ€๊ฒฉ ์ฑ…์ •์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜จ๋ผ์ธ ์ถ”๋ก  ๋กœ๊ทธ์˜ ๊ฐ€๊ฒฉ์„ ์‚ฐ์ถœํ•˜๋ ค๋ฉด ๋กœ๊น…์˜ ์˜ˆ์ƒ ์ฒญ๊ตฌ์•ก ํ™•์ธ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ์ด ๋น„์šฉ์„ ์ค„์ด๋ ค๋ฉด ์ถ”๋ก  ๋กœ๊น…์„ ์ค‘์ง€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ถ”๋ก  ๋กœ๊ทธ ์‚ฌ์šฉ ์„ค์ • ๋ฐ ์‚ฌ์šฉ ์ค‘์ง€

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๊ธฐ๋ณธ ๋กœ๊ทธ ์„ค์ •์„ ์ˆ˜์ •ํ•  ์œ„์น˜๋ฅผ ๊ฐ•์กฐํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

์—”๋“œํฌ์ธํŠธ์— ๋ชจ๋ธ์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜Google Cloud ์ฝ˜์†”์—์„œ ์ƒˆ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ๋กœ๊น… ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ถ”๋ก  ๋กœ๊ทธ ์œ ํ˜•์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๋กœ๊น… ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ด๋Ÿฌํ•œ ๋กœ๊ทธ๋ฅผ ์ค‘์ง€ํ•˜๋ ค๋ฉด ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.Google Cloud ์ฝ˜์†” ๋ฐ gcloud CLI๋Š” ์š”์ฒญ-์‘๋‹ต ๋กœ๊น… ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•œ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

gcloud

๋ฐฐํฌ๋œ ๋ชจ๋ธ์—์„œ ๋กœ๊ทธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜๋Š” ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ํ”Œ๋ž˜๊ทธ๋ฅผ gcloud ๋ช…๋ น์–ด์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

v1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ

gcloud ai endpoints deploy-model์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud ai endpoints deploy-model ENDPOINT_ID\
  --region=LOCATION \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --machine-type=MACHINE_TYPE \
  --accelerator=count=2,type=nvidia-tesla-t4 \
  --disable-container-logging \
  --enable-access-logging

v1beta1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ

gcloud beta ai endpoints deploy-model์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud beta ai endpoints deploy-model ENDPOINT_ID\
  --region=LOCATION \
  --model=MODEL_ID \
  --display-name=DEPLOYED_MODEL_NAME \
  --machine-type=MACHINE_TYPE \
  --accelerator=count=2,type=nvidia-tesla-t4 \
  --enable-access-logging \
  --enable-container-logging

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ์˜ ์„ค์ •์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

REST API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.Google Cloud ์ฝ˜์†” ๋ฐ gcloud CLI๋Š” ์š”์ฒญ-์‘๋‹ต ๋กœ๊น… ๊ตฌ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Vertex AI API๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

REST

๋ฐฐํฌ๋œ ๋ชจ๋ธ์—์„œ ๋กœ๊ทธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜๋Š” ๊ธฐ๋ณธ ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ด€๋ จ ํ•„๋“œ๋ฅผ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

v1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ

์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด projects.locations.endpoints.deployModel ๋˜๋Š” projects.locations.endpoints.mutateDeployedModel์„ ํ˜ธ์ถœํ•  ๋•Œ disableContainerLogging ํ•„๋“œ๋ฅผ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด projects.locations.endpoints.deployModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ๋ฐฐํฌํ•  ๋•Œ enableAccessLogging์„ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

v1beta1 ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ

์ปจํ…Œ์ด๋„ˆ ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด projects.locations.endpoints.deployModel ๋˜๋Š” projects.locations.endpoints.mutateDeployedModel์„ ํ˜ธ์ถœํ•  ๋•Œ enableContainerLogging ํ•„๋“œ๋ฅผ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด projects.locations.endpoints.deployModel์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋ธ์„ ๋ฐฐํฌํ•  ๋•Œ enableAccessLogging์„ True๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋ฐฐํฌ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Vertex AI API๋ฅผ ์‚ฌ์šฉํ•œ ๋ชจ๋ธ ๋ฐฐํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์€ projects.locations.endpoints.create๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ projects.locations.endpoints.patch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์กด ์—”๋“œํฌ์ธํŠธ๋ฅผ ํŒจ์น˜ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์€ ์—”๋“œํฌ์ธํŠธ ์ˆ˜์ค€์—์„œ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ๋™์ผํ•œ ์—”๋“œํฌ์ธํŠธ์— ์žˆ๋Š” ๋ฐฐํฌ๋œ ๋ชจ๋ธ๋กœ ์ „์†ก๋œ ์š”์ฒญ์€ ๋กœ๊น…๋ฉ๋‹ˆ๋‹ค.

์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ํŒจ์น˜ํ•  ๋•Œ ์—”๋“œํฌ์ธํŠธ ๋ฆฌ์†Œ์Šค์˜ predictRequestResponseLoggingConfig ํ•„๋“œ๋ฅผ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

  • enabled: True๋กœ ์„ค์ •ํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • samplingPercentage: ๋กœ๊น…ํ•  ์š”์ฒญ์˜ ๋น„์œจ์„ ์ •์˜ํ•˜๋Š” 0 ๋˜๋Š” 1 ์‚ฌ์ด์˜ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์š”์ฒญ์„ ๋กœ๊น…ํ•˜๋ ค๋ฉด ์ด ๊ฐ’์„ 1๋กœ ์„ค์ •ํ•˜๊ณ , 10%์˜ ์š”์ฒญ์„ ๋กœ๊น…ํ•˜๋ ค๋ฉด 0.1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • BigQueryDestination: ๋กœ๊น…์— ์‚ฌ์šฉํ•  BigQuery ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ด๋ฆ„๋งŒ ์ง€์ •ํ•˜๋ฉด logging_ENDPOINT_DISPLAY_NAME_ENDPOINT_ID๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ƒˆ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ENDPOINT_DISPLAY_NAME์€ BigQuery ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด request_response_logging์ด๋ผ๋Š” ์ด๋ฆ„์˜ ์ƒˆ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    BigQuery ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

    ํ•„๋“œ ์ด๋ฆ„์œ ํ˜•๋ชจ๋“œ
    endpoint๋ฌธ์ž์—ดnull ํ—ˆ์šฉ
    deployed_model_id๋ฌธ์ž์—ดnull ํ—ˆ์šฉ
    logging_timeTIMESTAMPnull ํ—ˆ์šฉ
    request_idNUMERICnull ํ—ˆ์šฉ
    request_payload๋ฌธ์ž์—ด๋ฐ˜๋ณต
    response_payload๋ฌธ์ž์—ด๋ฐ˜๋ณต

๋‹ค์Œ์€ ๊ตฌ์„ฑ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

{
   "predict_request_response_logging_config": {
     "enabled": true,
     "sampling_rate": 0.5,
     "bigquery_destination": {
       "output_uri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
     }
   }
}

์ „์šฉ ์—”๋“œํฌ์ธํŠธ ๋ฐ Private Service Connect ์—”๋“œํฌ์ธํŠธ์˜ ์ถ”๋ก  ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…

์ „์šฉ ์—”๋“œํฌ์ธํŠธ ๋ฐ Private Service Connect ์—”๋“œํฌ์ธํŠธ์˜ ๊ฒฝ์šฐ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜์—ฌ TensorFlow, PyTorch, sklearn, XGBoost ๋ชจ๋ธ์˜ ์š”์ฒญ ๋ฐ ์‘๋‹ต ํŽ˜์ด๋กœ๋“œ๋ฅผ 10MB ๋ฏธ๋งŒ์œผ๋กœ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ํฐ ํŽ˜์ด๋กœ๋“œ๋Š” ์ž๋™์œผ๋กœ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์€ predict ๋ฐ rawPredict ๋ฉ”์„œ๋“œ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด ์—”๋“œํฌ์ธํŠธ ๋ฆฌ์†Œ์Šค์˜ predictRequestResponseLoggingConfig ํ•„๋“œ๋ฅผ ๋‹ค์Œ ํ•ญ๋ชฉ์œผ๋กœ ์ฑ„์›๋‹ˆ๋‹ค.

  • enabled: True๋กœ ์„ค์ •ํ•˜์—ฌ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • samplingRate: ๋กœ๊น…ํ•  ์š”์ฒญ ๋ฐ ์‘๋‹ต์˜ ๋น„์œจ์ž…๋‹ˆ๋‹ค. 0๋ณด๋‹ค ํฌ๊ณ  1 ์ดํ•˜์ธ ์ˆซ์ž๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ชจ๋“  ์š”์ฒญ์„ ๋กœ๊น…ํ•˜๋ ค๋ฉด ์ด ๊ฐ’์„ 1๋กœ ์„ค์ •ํ•˜๊ณ , 10% ์˜ ์š”์ฒญ์„ ๋กœ๊น…ํ•˜๋ ค๋ฉด 0.1๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • BigQueryDestination: ์ถœ๋ ฅ ์ฝ˜ํ…์ธ ์˜ BigQuery ์œ„์น˜์ž…๋‹ˆ๋‹ค(ํ”„๋กœ์ ํŠธ ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ URI).

๋‹ค์Œ์€ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์ด ์‚ฌ์šฉ ์„ค์ •๋œ ์ „์šฉ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ตฌ์„ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints \
-d '{displayName: "ENDPOINT_NAME", \
     dedicatedEndpointEnabled: true, \
     predictRequestResponseLoggingConfig: { \
       enabled: true, \
       samplingRate: 1.0, \
       bigqueryDestination: { \
          outputUri:"bq://PROJECT_ID" \
       } \
     } \
   }'

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION_ID: Vertex AI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „
  • PROJECT_NUMBER: Google Cloudํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ENDPOINT_NAME: ์—”๋“œํฌ์ธํŠธ์˜ ํ‘œ์‹œ ์ด๋ฆ„
  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ์ ํŠธ ID

๋‹ค์Œ์€ ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์ด ์‚ฌ์šฉ ์„ค์ •๋œ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ตฌ์„ฑ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer `gcloud auth print-access-token`" https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/endpoints \
-d '{displayName: "ENDPOINT_NAME", \
     privateServiceConnectConfig: { \
       enablePrivateServiceConnect: true, \
       projectAllowlist: ["ALLOWED_PROJECTS"] \
     }, \
     predictRequestResponseLoggingConfig: { \
       enabled: true, \
       samplingRate: 1.0, \
       bigqueryDestination: { \
          outputUri:"bq://PROJECT_ID" \
       } \
     } \
   }'

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • ALLOWED_PROJECTS: ๊ฐ๊ฐ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์ธ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ Google Cloudํ”„๋กœ์ ํŠธ ID ๋ชฉ๋ก. ์˜ˆ๋ฅผ ๋“ค๋ฉด ["PROJECTID1", "PROJECTID2"]์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ์ด ๋ชฉ๋ก์— ์—†์œผ๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ Vertex AI ์—”๋“œํฌ์ธํŠธ๋กœ ์ถ”๋ก  ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์†ํ•œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ชฉ๋ก์— VERTEX_AI_PROJECT_ID๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์š”์ฒญ-์‘๋‹ต ๋กœ๊น… ๋ฐ Model Monitoring v1

์š”์ฒญ-์‘๋‹ต ๋กœ๊น…๊ณผ Model Monitoring v1์€ ๋ฐฑ์—”๋“œ์—์„œ ๊ฐ™์€ BigQuery ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์‹  ์š”์ฒญ์„ ๋กœ๊น…ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ธฐ๋Šฅ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ด BigQuery ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ณ€๊ฒฝ์ด ๋ฐฉ์ง€๋˜๋„๋ก ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œํ•œ์‚ฌํ•ญ์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์—”๋“œํฌ์ธํŠธ์—์„œ Model Monitoring์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ ๊ฐ™์€ ์—”๋“œํฌ์ธํŠธ์— ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ์š”์ฒญ-์‘๋‹ต ๋กœ๊น…์„ ์‚ฌ์šฉ ์„ค์ •ํ•œ ํ›„ ๋™์ผํ•œ ์—”๋“œํฌ์ธํŠธ์—์„œ ๋ชจ๋ธ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ฉด ์š”์ฒญ-์‘๋‹ต ๋กœ๊น… ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹จ๊ณ„