์ด ํ์ด์ง์์๋ ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ์์ Vertex AI ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค์ด ํ์ต ๋ถ๋ฅ ๋ฐ ํ๊ท ๋ชจ๋ธ์ ์์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. Google Cloud ์ฝ์ ๋๋ Vertex AI API๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์์ํ๊ธฐ ์ ์
ํ ์ด๋ธ ํ์ ๋ฐ์ดํฐ์์ Vertex AI ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ค์์ ์ฐธ๊ณ ํ์ธ์.
- ๋ถ๋ฅ ๋ฐ ํ๊ท ๋ชจ๋ธ์ ํ ์ด๋ธ ํ์ ํ์ต ๋ฐ์ดํฐ ์ค๋น
- ํ ์ด๋ธ ํ์ ํ์ต ๋ฐ์ดํฐ ๋ง๋ค๊ธฐ ๊ด๋ จ ๊ถ์ฅ์ฌํญ
๋น ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค๊ณ ์ค๋น๋ ๋ฐ์ดํฐ ์ฐ๊ฒฐ
๋ถ๋ฅ ๋๋ ํ๊ท์ฉ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ง๋ค๋ ค๋ฉด ๋จผ์ ํ์ต์ํฌ ๋ฐ์ดํฐ์ ๋ํ ์ปฌ๋ ์ ์ด ์์ด์ผ ํฉ๋๋ค. Google Cloud ์ฝ์ ๋๋ API๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋น๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ ์ธํธ์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ ํ ์ ์ ํ ์์ ํ์ฌ ๋ชจ๋ธ ํ์ต์ ์์ํ ์ ์์ต๋๋ค.
Google Cloud ์ฝ์
- Google Cloud ์ฝ์์ Vertex AI ์น์ ์์ ๋ฐ์ดํฐ ์ธํธ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ ์ธ๋ถ์ ๋ณด ํ์ด์ง๋ฅผ ์ฝ๋๋ค.
- ๋ฐ์ดํฐ ์ธํธ ์ด๋ฆ ํ๋๋ฅผ ์์ ํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์ค๋ช ํ๋ ํ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- ํ ํ์ ํญ์ ์ ํํฉ๋๋ค.
- ํ๊ท/๋ถ๋ฅ ๋ชฉํ๋ฅผ ์ ํํฉ๋๋ค.
- ๋ฆฌ์ ๋๋กญ๋ค์ด ๋ชฉ๋ก์์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
- ๋ฐ์ดํฐ ์ธํธ์์ ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค(CMEK)๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ณ ๊ธ ์ต์ ์ ์ด๊ณ ํค๋ฅผ ์ ๋ ฅํฉ๋๋ค. (๋ฏธ๋ฆฌ๋ณด๊ธฐ)
- ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํ์ฌ ๋น ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค๊ณ ์์ค ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ค์ ๋ฐ๋ผ ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
์ปดํจํฐ์ CSV ํ์ผ
- ์ปดํจํฐ์์ CSV ํ์ผ ์ ๋ก๋๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํ์ผ ์ ํ์ ํด๋ฆญํ๊ณ Cloud Storage ๋ฒํท์ ์ ๋ก๋ํ ๋ชจ๋ ๋ก์ปฌ ํ์ผ์ ์ ํํฉ๋๋ค.
- Cloud Storage ๊ฒฝ๋ก ์ ํ ์น์ ์์ Cloud Storage ๋ฒํท ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ํ์์ ํด๋ฆญํ์ฌ ๋ฒํท ์์น๋ฅผ ์ ํํฉ๋๋ค.
Cloud Storage์ CSV ํ์ผ
- Cloud Storage์์ CSV ํ์ผ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
- Cloud Storage์์ CSV ํ์ผ ์ ํ ์น์ ์์ Cloud Storage ๋ฒํท ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ํ์์ ํด๋ฆญํ์ฌ CSV ํ์ผ์ ์์น๋ฅผ ์ ํํฉ๋๋ค.
BigQuery์ ํ ์ด๋ธ ๋๋ ๋ทฐ
- BigQuery์์ ํ ์ด๋ธ ๋๋ ๋ทฐ ์ ํ์ ํด๋ฆญํฉ๋๋ค.
- ์ ๋ ฅ ํ์ผ์ ํ๋ก์ ํธ, ๋ฐ์ดํฐ ์ธํธ, ํ ์ด๋ธ ID๋ฅผ ์ ๋ ฅํฉ๋๋ค.
- ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
๋ฐ์ดํฐ ์์ค๊ฐ ๋ฐ์ดํฐ ์ธํธ์ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค.
API
๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ค๋ฉด ํด๋น ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ฐ์ดํฐ ์์ค์๋ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋๋ ๋ฐ ํ์ํ ์ฝ๋๋ ํ์ต ๋ฐ์ดํฐ๊ฐ Cloud Storage ๋๋ BigQuery์ ์๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ฐ์ดํฐ ์์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์๋ ๊ฒฝ์ฐ ํ์ ๊ถํ ์ค์ ์ด ํ์ํฉ๋๋ค.Cloud Storage์์ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ
REST
datasets.create ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
-
LOCATION: ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ ์ฅ๋ ๋ฆฌ์ . ๋ฐ์ดํฐ ์ธํธ ๋ฆฌ์์ค๋ฅผ ์ง์ํ๋ ๋ฆฌ์ ์ด์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
us-central1
์ ๋๋ค. - PROJECT: ํ๋ก์ ํธ ID
- DATASET_NAME: ๋ฐ์ดํฐ ์ธํธ์ ํ์ ์ด๋ฆ์ ๋๋ค.
-
METADATA_SCHEMA_URI: ๋ชฉํ์ ์คํค๋ง ํ์ผ์ ๋ํ URI
gs://google-cloud-aiplatform/schema/dataset/metadata/tabular_1.0.0.yaml
-
URI: ํ์ต ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ Cloud Storage ๋ฒํท์ ๊ฒฝ๋ก(URI).
๋ ๊ฐ ์ด์ ์์ ์ ์์ต๋๋ค. ๊ฐ URI์ ํ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
gs://GCSprojectId/bucketName/fileName
- PROJECT_NUMBER: ํ๋ก์ ํธ์ ์๋์ผ๋ก ์์ฑ๋ ํ๋ก์ ํธ ๋ฒํธ
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "display_name": "DATASET_NAME", "metadata_schema_uri": "METADATA_SCHEMA_URI", "metadata": { "input_config": { "gcs_source": { "uri": [URI1, URI2, ...] } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets"
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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateDatasetOperationMetadata", "genericMetadata": { "createTime": "2020-07-07T21:27:35.964882Z", "updateTime": "2020-07-07T21:27:35.964882Z" } }
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
Vertex AI SDK for Python์ ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ Vertex AI SDK for Python ์ค์น๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
BigQuery์์ ๋ฐ์ดํฐ๊ฐ ์๋ ๋ฐ์ดํฐ ์ธํธ ๋ง๋ค๊ธฐ
REST
datasets.create ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ง๋ญ๋๋ค.์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
-
LOCATION: ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ ์ฅ๋ ๋ฆฌ์ . ๋ฐ์ดํฐ ์ธํธ ๋ฆฌ์์ค๋ฅผ ์ง์ํ๋ ๋ฆฌ์ ์ด์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด
us-central1
์ ๋๋ค. - PROJECT: ํ๋ก์ ํธ ID
- DATASET_NAME: ๋ฐ์ดํฐ ์ธํธ์ ํ์ ์ด๋ฆ
-
METADATA_SCHEMA_URI: ๋ชฉํ์ ์คํค๋ง ํ์ผ์ ๋ํ URI
gs://google-cloud-aiplatform/schema/dataset/metadata/tabular_1.0.0.yaml
-
URI: ํ์ต ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ BigQuery ํ
์ด๋ธ์ ๊ฒฝ๋ก์
๋๋ค. ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ผ ์์์ ์์ฑํ์ธ์.
bq://bqprojectId.bqDatasetId.bqTableId
- PROJECT_NUMBER: ํ๋ก์ ํธ์ ์๋์ผ๋ก ์์ฑ๋ ํ๋ก์ ํธ ๋ฒํธ
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "display_name": "DATASET_NAME", "metadata_schema_uri": "METADATA_SCHEMA_URI", "metadata": { "input_config": { "bigquery_source" :{ "uri": "URI } } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets"
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-aiplatform.googleapis.com/v1/projects/PROJECT/locations/LOCATION/datasets" | Select-Object -Expand Content
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.aiplatform.v1.CreateDatasetOperationMetadata", "genericMetadata": { "createTime": "2020-07-07T21:27:35.964882Z", "updateTime": "2020-07-07T21:27:35.964882Z" } }
Java
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Java ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Java API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Node.js
์ด ์ํ์ ์ฌ์ฉํด ๋ณด๊ธฐ ์ ์ Vertex AI ๋น ๋ฅธ ์์: ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ Node.js ์ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์. ์์ธํ ๋ด์ฉ์ Vertex AI Node.js API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์.
Vertex AI์ ์ธ์ฆํ๋ ค๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ๊ธฐ๋ณธ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ค์ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธ์ฆ ์ค์ ์ ์ฐธ์กฐํ์ธ์.
Python
Vertex AI SDK for Python์ ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ Vertex AI SDK for Python ์ค์น๋ฅผ ์ฐธ์กฐํ์ธ์. ์์ธํ ๋ด์ฉ์ Python API ์ฐธ๊ณ ๋ฌธ์๋ฅผ ํ์ธํ์ธ์.
์์ ์ํ ๊ฐ์ ธ์ค๊ธฐ
์ผ๋ถ ์์ฒญ์ ์๋ฃํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ฅ๊ธฐ ์คํ ์์ ์ ์์ํฉ๋๋ค. ์ด๋ฌํ ์์ฒญ์ ์์ ์ํ๋ฅผ ๋ณด๊ฑฐ๋ ์์ ์ ์ทจ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์์ ์ด๋ฆ์ ๋ฐํํฉ๋๋ค. Vertex AI๋ ์ฅ๊ธฐ ์คํ ์์ ์ ํธ์ถํ๋ ๋์ฐ๋ฏธ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ์ฅ๊ธฐ ์คํ ์์ ๋ค๋ฃจ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.