ํ•™์Šต ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

๋ชจ๋ธ ํ•™์Šต์šฉ ํŠน์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ์ผ๊ด„ ์ œ๊ณต์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋ณด๊ด€ ๋˜๋Š” ์ž„์‹œ ๋ถ„์„์„ ์œ„ํ•ด ํŠน์„ฑ ๊ฐ’์„ ๋‚ด๋ณด๋‚ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์„ฑ ๊ฐ’์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

๋ชจ๋ธ ํ•™์Šต์„ ์œ„ํ•œ ํŠน์„ฑ ๊ฐ’ ๊ฐ€์ ธ์˜ค๊ธฐ

๋ชจ๋ธ ํ•™์Šต์˜ ๊ฒฝ์šฐ ์˜ˆ์ธก ์ž‘์—…์˜ ์˜ˆ์‹œ๊ฐ€ ํฌํ•จ๋œ ํ•™์Šต ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์‹œ๋Š” ํ•ด๋‹น ํŠน์„ฑ๊ณผ ๋ผ๋ฒจ์„ ํฌํ•จํ•˜๋Š” ์ธ์Šคํ„ด์Šค๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” ์˜ˆ์ธก์„ ์ˆ˜ํ–‰ํ•  ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ธ์Šคํ„ด์Šค๋Š” ์‹œ์žฅ ๊ฐ€์น˜๋ฅผ ํ™•์ธํ•˜๋ ค๋Š” ์ฃผํƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์น˜, ๋‚˜์ด, ์ตœ๊ทผ ํŒ๋งค๋œ ์ฃผ๋ณ€ ์ฃผํƒ์˜ ํ‰๊ท  ๊ฐ€๊ฒฉ์„ ํŠน์„ฑ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€ $100,000๋กœ ํŒ๋งค๋œ ์ฃผํƒ๊ณผ ๊ฐ™์€ ์˜ˆ์ธก ์ž‘์—…์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.

๊ฐ ๋ผ๋ฒจ์€ ํŠน์ • ์‹œ์ ์— ๊ด€์ฐฐํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ํŠน์ • ์ฃผํƒ์ด ํŒ๋งค๋˜์—ˆ์„ ๋•Œ ์ฃผ๋ณ€ ์ฃผํƒ์˜ ๊ฐ€๊ฒฉ๊ณผ ๊ฐ™์ด ๊ด€์ฐฐ์ด ์ด๋ฃจ์–ด์ง„ ์‹œ์ ์˜ ํ•ด๋‹น ํŠน์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๋ผ๋ฒจ๊ณผ ํŠน์„ฑ ๊ฐ’์ด ์ˆ˜์ง‘๋จ์— ๋”ฐ๋ผ ํ•ด๋‹น ํŠน์„ฑ ๊ฐ’์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. Vertex AI Feature Store(๊ธฐ์กด)๋Š” ํŠน์ • ์‹œ์ ์˜ ํŠน์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํŠน์ • ์‹œ์  ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŠน์ • ์‹œ์  ์กฐํšŒ ์˜ˆ์‹œ

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” L1 ๋ฐ L2 ๋ผ๋ฒจ์ด ์ง€์ •๋œ 2๊ฐœ์˜ ํ•™์Šต ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํŠน์„ฑ ๊ฐ’์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋‘ ๋ผ๋ฒจ์€ ๊ฐ๊ฐ T1 ๋ฐ T2์—์„œ ๊ด€์ฐฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ํŠน์„ฑ ๊ฐ’์˜ ์ƒํƒœ๋ฅผ ๊ณ ์ •ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ T1์—์„œ ํŠน์ • ์‹œ์ ์˜ ์กฐํšŒ์˜ ๊ฒฝ์šฐ Vertex AI Feature Store(๊ธฐ์กด)๋Š” Feature 1, Feature 2, Feature 3์— ๋Œ€ํ•ด T1 ์‹œ๊ฐ„๊นŒ์ง€์˜ ์ตœ์‹  ํŠน์„ฑ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ T1 ์ดํ›„์˜ ๊ฐ’์€ ์œ ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผํ•˜๋ฉด ํŠน์„ฑ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉฐ ๋ผ๋ฒจ๋„ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ T2์—์„œ Feature Store๋Š” ํ•ด๋‹น ์‹œ์ ์˜ ๋‹ค๋ฅธ ํŠน์„ฑ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • ์‹œ์  ์กฐํšŒ ์ƒ˜ํ”Œ

์ผ๊ด„ ์„œ๋น™ ์ž…๋ ฅ

์ผ๊ด„ ์„œ๋น™ ์š”์ฒญ์˜ ์ผ๋ถ€๋กœ ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ๊ธฐ์กด ํŠน์„ฑ ๋ชฉ๋ก
  • ๊ฐ ํ•™์Šต ์˜ˆ์‹œ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ํŠน์ • ์‹œ์ ์˜ ๊ด€์ฐฐ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ ๋˜๋Š” BigQuery ํ…Œ์ด๋ธ”์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ๋ก์— ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํƒ€์ž„์Šคํƒฌํ”„: ๋ผ๋ฒจ์ด ๊ด€์ฐฐ๋˜๊ฑฐ๋‚˜ ์ธก์ •๋œ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. Vertex AI Feature Store(๊ธฐ์กด)๊ฐ€ ํŠน์ • ์‹œ์  ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
    • ํ•ญ๋ชฉ ID: ๋ผ๋ฒจ์— ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์˜ ํ•œ ๊ฐœ ์ด์ƒ์˜ ID์ž…๋‹ˆ๋‹ค.
  • ์ถœ๋ ฅ์ด ๊ธฐ๋ก๋˜๋Š” ๋Œ€์ƒ URI ๋ฐ ํ˜•์‹. ์ถœ๋ ฅ์—์„œ Vertex AI Feature Store(๊ธฐ์กด)๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์˜ ํ…Œ์ด๋ธ”๊ณผ ํ”ผ์ฒ˜์Šคํ† ์–ด์˜ ํŠน์„ฑ ๊ฐ’์„ ์กฐ์ธํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ˜•์‹ ๋ฐ ์œ„์น˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ถœ๋ ฅ์— ์ง€์ •ํ•˜์„ธ์š”.
    • ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ BigQuery ํ…Œ์ด๋ธ”.
    • ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ Cloud Storage ๋ฒ„ํ‚ท์˜ CSV ํŒŒ์ผ. ๊ทธ๋Ÿฌ๋‚˜ ํŠน์„ฑ ๊ฐ’์— ๋ฐฐ์—ด์ด ํฌํ•จ๋œ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ˜•์‹์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • Cloud Storage ๋ฒ„ํ‚ท์˜ Tfrecord ํŒŒ์ผ

๋ฆฌ์ „ ์š”๊ตฌ์‚ฌํ•ญ

์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค์™€ ๋Œ€์ƒ ๋ชจ๋‘ ์†Œ์Šค ๋ฐ์ดํ„ฐ ์„ธํŠธ ๋˜๋Š” ๋ฒ„ํ‚ท์€ ํ”ผ์ฒ˜์Šคํ† ์–ด์™€ ๋™์ผํ•œ ๋ฆฌ์ „ ๋˜๋Š” ๋™์ผํ•œ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด us-central1์˜ ํ”ผ์ฒ˜์Šคํ† ์–ด๋Š” us-central1 ๋˜๋Š” ๋ฏธ๊ตญ ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜ ๋‚ด์— ์žˆ๋Š” Cloud Storage ๋ฒ„ํ‚ท ๋˜๋Š” BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ๊ฑฐ๋‚˜ ์—ฌ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด us-east1์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์ค‘ ๋ฆฌ์ „ ๋ฒ„ํ‚ท์„ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋˜๋Š” ์ œ๊ณต์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก

์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์€ ๊ฒ€์ƒ‰ํ•  ํŠน์„ฑ ๊ฐ’์˜ ํ•ญ๋ชฉ ๋ฐ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. CSV ํŒŒ์ผ ๋˜๋Š” BigQuery ํ…Œ์ด๋ธ”์—๋Š” ๋‹ค์Œ ์—ด์ด ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์—ด์—๋Š” ์—ด ํ—ค๋”๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ—ค๋” ์ด๋ฆ„์ด timestamp์ด๊ณ  ์—ด ๊ฐ’์ด RFC 3339 ํ˜•์‹์˜ ํƒ€์ž„์Šคํƒฌํ”„์ธ ์—ด์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•ญ๋ชฉ ์œ ํ˜• ์—ด์„ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ ์—ฌ๊ธฐ์„œ ํ—ค๋”๋Š” ํ•ญ๋ชฉ ์œ ํ˜• ID์ด๊ณ  ์—ด ๊ฐ’์€ ํ•ญ๋ชฉ ID์ž…๋‹ˆ๋‹ค.
  • ์„ ํƒ์‚ฌํ•ญ: ์ถœ๋ ฅ์— ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋Š” ํŒจ์Šค์Šค๋ฃจ ๊ฐ’(์ถ”๊ฐ€ ์—ด)์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Vertex AI Feature Store(๊ธฐ์กด)์— ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์ง€๋งŒ ์ถœ๋ ฅ์— ํฌํ•จํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ(CSV)

ํ•ญ๋ชฉ ์œ ํ˜• users ๋ฐ movies๋ฅผ ํฌํ•จํ•˜๋Š” ํ”ผ์ฒ˜์Šคํ† ์–ด๊ฐ€ ํŠน์„ฑ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด users ํŠน์„ฑ์—๋Š” age ๋ฐ gender๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ movies ํŠน์„ฑ์—๋Š” ratings ๋ฐ genre๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—์„œ๋Š” ์‚ฌ์šฉ์ž์˜ ์˜ํ™” ์„ ํ˜ธ๋„์— ๋Œ€ํ•œ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ์ฒญํ•˜๋Š” ์˜ํ™” ํŠน์„ฑ๊ณผ ํ•จ๊ป˜ ๋‘ ์‚ฌ์šฉ์ž ํ•ญ๋ชฉ alice ๋ฐ bob์˜ ํŠน์„ฑ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ๋ถ€ํ„ฐ alice๊ฐ€ movie_01์„ ์‹œ์ฒญํ–ˆ๊ณ  ์ข‹์•„์š” ํ‘œ์‹œ๋ฅผ ํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. bob์€ movie_02๋ฅผ ์‹œ์ฒญํ–ˆ์ง€๋งŒ ์ข‹์•„์š”๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์ด ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๋น„์Šทํ•˜๊ฒŒ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

users,movies,timestamp,liked
"alice","movie_01",2021-04-15T08:28:14Z,true
"bob","movie_02",2021-04-15T08:28:14Z,false

Vertex AI Feature Store(๊ธฐ์กด)๋Š” ์ง€์ •๋œ ํƒ€์ž„์Šคํƒฌํ”„ ๋˜๋Š” ๊ทธ ์ด์ „์— ๋‚˜์—ด๋œ ํ•ญ๋ชฉ์˜ ํŠน์„ฑ ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์ด ์•„๋‹Œ ์ผ๊ด„ ์ œ๊ณต ์š”์ฒญ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณตํ•  ํŠน์ • ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์‹œ์—๋Š” ๋˜ํ•œ liked๋ผ๋Š” ์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์—ด์€ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ํ™”๋ฅผ ๋งˆ์Œ์— ๋“ค์–ด ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์—ด์€ ํ”ผ์ฒ˜์Šคํ† ์–ด์— ํฌํ•จ๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ์ด ๊ฐ’์„ ์ผ๊ด„ ์ฒ˜๋ฆฌ ์ถœ๋ ฅ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์—์„œ ์ด๋Ÿฌํ•œ ํ†ต๊ณผ ๊ฐ’์€ ํ”ผ์ฒ˜์Šคํ† ์–ด์˜ ๊ฐ’๊ณผ ํ•จ๊ป˜ ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

Null ๊ฐ’

์ง€์ •๋œ ํƒ€์ž„์Šคํƒฌํ”„์—์„œ ํŠน์„ฑ ๊ฐ’์ด null์ด๋ฉด Vertex AI Feature Store(๊ธฐ์กด)๋Š” null์ด ์•„๋‹Œ ์ด์ „ ํŠน์„ฑ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๊ฐ’์ด ์—†์œผ๋ฉด Vertex AI Feature Store(๊ธฐ์กด)๋Š” null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์„ฑ ๊ฐ’ ์ œ๊ณต ์ฒ˜๋ฆฌ

์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก ํŒŒ์ผ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋Š” ํ”ผ์ฒ˜์Šคํ† ์–ด์˜ ํŠน์„ฑ ๊ฐ’์„ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ ํ•™์Šต ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์ด์ „ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•˜์—ฌ ์˜คํ”„๋ผ์ธ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ ๋น„์šฉ์„ ์ค„์ด๋ ค๋ฉด ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜์—ฌ ์˜คํ”„๋ผ์ธ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ ๋น„์šฉ์„ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋ ค๋ฉด ์ผ๊ด„ ์ œ๊ณต ๋ฐ ์ผ๊ด„ ๋‚ด๋ณด๋‚ด๊ธฐ ์ค‘์— ์˜คํ”„๋ผ์ธ ์Šคํ† ๋ฆฌ์ง€ ๋น„์šฉ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์‹œ์ž‘ ์‹œ๊ฐ„ ์ง€์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์›น UI

๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ๋Š” ํŠน์„ฑ์„ ์ผ๊ด„ ์ œ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

REST

ํŠน์„ฑ ๊ฐ’์„ ์ผ๊ด„ ์ œ๊ณตํ•˜๋ ค๋ฉด featurestores.batchReadFeatureValues ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ POST ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ƒ˜ํ”Œ์€ users ๋ฐ movies ํ•ญ๋ชฉ ์œ ํ˜•์˜ ํŠน์„ฑ ๊ฐ’์ด ํฌํ•จ๋œ BigQuery ํ…Œ์ด๋ธ”์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ถœ๋ ฅ ๋Œ€์ƒ์—๋Š” ์š”์ฒญ์„ ์ œ์ถœํ•˜๊ธฐ ์ „์— ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์š”๊ฑด์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด bigqueryDestination ํ•„๋“œ์— ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋ ค๋ฉด ๊ธฐ์กด ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์š”๊ตฌ์‚ฌํ•ญ์€ API ์ฐธ์กฐ์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • LOCATION_ID: ํ”ผ์ฒ˜์Šคํ† ์–ด๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋ฆฌ์ „. ์˜ˆ๋ฅผ ๋“ค๋ฉด us-central1์ž…๋‹ˆ๋‹ค.
  • PROJECT_ID: ํ”„๋กœ์ ํŠธ ID
  • FEATURESTORE_ID: ํ”ผ์ฒ˜์Šคํ† ์–ด์˜ ID
  • DATASET_NAME: ๋Œ€์ƒ BigQuery ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • TABLE_NAME: ๋Œ€์ƒ BigQuery ํ…Œ์ด๋ธ”์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • STORAGE_LOCATION: ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค CSV ํŒŒ์ผ์˜ Cloud Storage URI์ž…๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/featurestores/FEATURESTORE_ID:batchReadFeatureValues

JSON ์š”์ฒญ ๋ณธ๋ฌธ:

{
  "destination": {
    "bigqueryDestination": {
      "outputUri": "bq://PROJECT_ID.DATASET_NAME.TABLE_NAME"
    }
  },
  "csvReadInstances": {
    "gcsSource": {
      "uris": ["STORAGE_LOCATION"]
    }
  },
  "entityTypeSpecs": [
    {
      "entityTypeId": "users",
      "featureSelector": {
        "idMatcher": {
          "ids": ["age", "liked_genres"]
        }
      }
    },
    {
      "entityTypeId": "movies",
      "featureSelector": {
        "idMatcher": {
          "ids": ["title", "average_rating", "genres"]
        }
      }
    }
  ],
  "passThroughFields": [
    {
      "fieldName": "liked"
    }
  ]
}

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

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:batchReadFeatureValues"

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:batchReadFeatureValues" | Select-Object -Expand Content

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ์ถœ๋ ฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์‘๋‹ต์˜ OPERATION_ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/featurestores/FEATURESTORE_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.BatchReadFeatureValuesOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-03-02T00:03:41.558337Z",
      "updateTime": "2021-03-02T00:03:41.558337Z"
    }
  }
}

Python์šฉ Vertex AI SDK

Python์šฉ Vertex AI SDK๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ Python์šฉ Vertex AI SDK ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Python์šฉ Vertex AI SDK API ์ฐธ์กฐ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

from google.cloud import aiplatform


def batch_serve_features_to_bq_sample(
    project: str,
    location: str,
    featurestore_name: str,
    bq_destination_output_uri: str,
    read_instances_uri: str,
    sync: bool = True,
):

    aiplatform.init(project=project, location=location)

    fs = aiplatform.featurestore.Featurestore(featurestore_name=featurestore_name)

    SERVING_FEATURE_IDS = {
        "users": ["age", "gender", "liked_genres"],
        "movies": ["title", "average_rating", "genres"],
    }

    fs.batch_serve_to_bq(
        bq_destination_output_uri=bq_destination_output_uri,
        serving_feature_ids=SERVING_FEATURE_IDS,
        read_instances_uri=read_instances_uri,
        sync=sync,
    )

์ถ”๊ฐ€ ์–ธ์–ด

๋‹ค์Œ Vertex AI ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜์—ฌ Vertex AI API๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ง€์›๋˜๋Š” ๊ฐ ์–ธ์–ด์˜ ๊ณ ์œ ํ•œ ๊ทœ์น™ ๋ฐ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์ ํ™”๋œ ๊ฐœ๋ฐœ์ž ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ผ๊ด„ ์ œ๊ณต ์ž‘์—… ๋ณด๊ธฐ

Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌGoogle Cloud ํ”„๋กœ์ ํŠธ์—์„œ ์ผ๊ด„ ์ œ๊ณต ์ž‘์—…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์›น UI

  1. Google Cloud ์ฝ˜์†”์˜ Vertex AI ์„น์…˜์—์„œ ํŠน์„ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŠน์„ฑ ํŽ˜์ด์ง€๋กœ ์ด๋™

  2. ๋ฆฌ์ „ ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์ž‘์—… ๋ชจ์Œ์—์„œ ์ผ๊ด„ ์ œ๊ณต ์ž‘์—… ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ชจ๋“  ํ”ผ์ฒ˜์Šคํ† ์–ด์˜ ์ผ๊ด„ ์ œ๊ณต ์ž‘์—…์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
  4. ์‚ฌ์šฉ๋œ ์ฝ๊ธฐ ์ธ์Šคํ„ด์Šค ์†Œ์Šค ๋ฐ ์ถœ๋ ฅ ๋Œ€์ƒ ์œ„์น˜์™€ ๊ฐ™์€ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์ผ๊ด„ ์ œ๊ณต ์ž‘์—…์˜ ID๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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