如要擷取特徵資料來訓練模型,請使用批次服務。如要匯出特徵值以進行封存或臨時分析,請匯出特徵值。
擷取模型訓練的特徵值
如要訓練模型,您需要包含預測工作範例的訓練資料集。這些範例包含執行個體,其中包含特徵和標籤。執行個體是您要預測的項目。舉例來說,假設某個例項是住家,而您想判斷其市場價值。包括位置、屋齡,以及附近房屋最近的平均售價。標籤是預測工作的答案,例如最終以 $100, 000 美元的價格售出房屋。
由於每個標籤都是特定時間點的觀察結果,因此您需要擷取與觀察時間點相應的特徵值,例如特定房屋售出時附近房屋的價格。隨著時間推移,系統會收集標籤和特徵值,這些特徵值也會隨之變更。Vertex AI 特徵儲存庫 (舊版) 可以執行時間點查詢,讓您擷取特定時間的特徵值。
時間點查詢範例
以下範例會擷取標籤為 L1
和 L2
的兩個訓練例項的特徵值。這兩個標籤分別位於 T1
和 T2
。想像一下,在這些時間戳記凍結特徵值的狀態。因此,在 T1
的時間點查詢時,Vertex AI 特徵儲存庫 (舊版) 會傳回 Feature 1
、Feature 2
和 Feature 3
最新的特徵值 (最多到 T1
),不會洩漏 T1
之後的值。隨著時間推移,特徵值和標籤也會隨之變更。因此,在 T2
,特徵儲存庫會傳回該時間點的不同特徵值。
批次提供輸入內容
提出批次放送要求時,必須提供下列資訊:
- 要取得值的現有功能清單。
- 讀取執行個體清單,其中包含每個訓練樣本的資訊。這份清單列出特定時間點的觀察結果。可以是 CSV 檔案或 BigQuery 資料表。清單必須包含下列資訊:
- 時間戳記:觀察或測量標籤的時間。系統需要時間戳記,Vertex AI 特徵儲存庫 (舊版) 才能執行時間點查詢。
- 實體 ID:與標籤相應的一或多個實體 ID。
- 輸出內容的寫入目的地 URI 和格式。在輸出內容中,Vertex AI 特徵儲存庫 (舊版) 基本上會合併讀取執行個體清單中的表格,以及特徵儲存庫中的特徵值。指定輸出內容的格式和位置,可選擇下列其中一種:
- 地區或多地區資料集中的 BigQuery 資料表。
- 位於單一地區或多地區 Cloud Storage 值區的 CSV 檔案。但如果特徵值包含陣列,則必須選擇其他格式。
- Cloud Storage bucket 中的 Tfrecord 檔案。
區域規定
無論是讀取執行個體或目的地,來源資料集或值區都必須與特徵存放區位於相同區域或多區域位置。舉例來說,us-central1
中的特徵儲存庫只能從 us-central1
或美國多區域位置的 Cloud Storage 值區或 BigQuery 資料集讀取資料,或將資料提供給這些值區/資料集。您無法使用來自 us-east1
等來源的資料。此外,系統也不支援使用雙區域 bucket 讀取或提供資料。
讀取執行個體清單
讀取執行個體清單會指定要擷取的特徵值實體和時間戳記。CSV 檔案或 BigQuery 資料表必須包含下列資料欄,順序不限。每個資料欄都需要欄標題。
- 你必須加入時間戳記資料欄,標頭名稱為
timestamp
,資料欄值為 RFC 3339 格式的時間戳記。 - 你必須加入一或多個實體類型資料欄,其中標題為實體類型 ID,資料欄值則為實體 ID。
- 選用:您可以加入直通值 (額外資料欄),這些值會原封不動地傳遞至輸出內容。如果您有不在 Vertex AI 特徵儲存庫 (舊版) 中的資料,但想將該資料納入輸出內容,這項功能就非常實用。
範例 (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 特徵儲存庫 (舊版) 會擷取所列實體在指定時間戳記或之前的特徵值。您可以在批次服務要求中指定要取得的特定特徵,而非在讀取執行個體清單中指定。
這個範例也包含名為 liked
的資料欄,指出使用者是否喜歡某部電影。這個資料欄不會納入特徵商店,但您仍可將這些值傳遞至批次資料提供輸出內容。在輸出內容中,這些傳遞值會與特徵商店的值合併。
空值
如果在特定時間戳記的特徵值為空值,Vertex AI 特徵儲存庫 (舊版) 會傳回先前的非空值特徵值。如果沒有先前的值,Vertex AI 特徵儲存庫 (舊版) 會傳回空值。
批次提供特徵值
從特徵商店批次提供特徵值,以取得讀取執行個體清單檔案所決定的資料。
如要讀取近期的訓練資料並排除舊資料,藉此降低離線儲存空間用量費用,請指定開始時間。如要瞭解如何指定開始時間來降低離線儲存空間用量費用,請參閱指定開始時間,在批次服務和批次匯出期間最佳化離線儲存空間費用。
網路使用者介面
請改用其他方法。您無法從控制台批次提供特徵。Google Cloud
REST
如要批次提供特徵值,請使用 featurestores.batchReadFeatureValues 方法傳送 POST 要求。
以下範例會輸出 BigQuery 資料表,其中包含 users
和 movies
實體類型的特徵值。請注意,每個輸出目的地可能都有一些先決條件,您必須符合這些條件才能提交要求。舉例來說,如果您為 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 方法和網址:
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
如要瞭解如何安裝或更新 Python 適用的 Vertex AI SDK,請參閱「安裝 Python 適用的 Vertex AI SDK」。 詳情請參閱 Python API 參考說明文件。
其他語言
您可以安裝及使用下列 Vertex AI 用戶端程式庫,呼叫 Vertex AI API。Cloud 用戶端程式庫會使用每種支援語言的自然慣例與樣式,提供最佳開發人員體驗。
查看批次資料擷取工作
使用 Google Cloud 控制台查看Google Cloud 專案中的批次服務工作。
網路使用者介面
- 在 Google Cloud 控制台的 Vertex AI 專區,前往「Features」頁面。
- 從「Region」(區域) 下拉式清單中選取一個區域。
- 在動作列中,按一下「查看批次服務工作」,列出所有特徵商店的批次服務工作。
- 按一下批次服務工作的 ID,即可查看詳細資料,例如使用的讀取執行個體來源和輸出目的地。