去年,商業圖像和影片資產行業發生了許多變化:新的生成式 AI 應用程式讓使用者根據提示創建自己的靜態和即時圖像,傳統的庫存媒體資產 (stock-media asset) 供應商正在為客戶提供更豐富的搜尋體驗,對圖像/即時圖像內容有深入的了解,並透過自然語言介面將其公開。

為了不斷推動最先進的技術,這些組織必須使用數據快速發展其產品,例如:

  • 優化靜態和即時影像生成模型
  • 識別不當內容,例如暴力或裸露內容
  • 分析行為,以改善使用者體驗
  • 根據先前的活動推薦類似的圖像或提示
  • 增強靜態資產搜尋能力

為此,他們需要非結構化圖像、即時圖像和音訊數據,以同時結合結構化的使用者體驗數據,以及他們所互動資產的元資料,無論這些資產是靜態的還是 AI 生成的。

在這篇文章中,我們根據與每天處理 PB 規模的產業領導者的實際接觸,概述了一個解決方案。該解決方案具有多項優勢:

  • 最小化成本:避免資料重複和儲存空間浪費,同時促進AI模型與資料的接近,以提高推論效率
  • 簡化開發與交付:透過統一的資料架構,整合多種資料類型
  • 優化有限的工程資源運用:透過結合BigQuery和Google Cloud Storage的可擴展無伺服器平台
  • 允許使用者根據業務需求擴充和轉換數據
  • 使公司能夠快速、安全地開發輕量級、強大的分析,啟動客戶資料並快速迭代模型的輸出

非結構化資料的挑戰

生成(非結構化)的影像資料、生成影像(半結構化)的提示,以及工作階段時間和頻率等使用者行為資料(結構化,在表格中)都蘊藏著豐富的潛在見解。例如,了解哪些類型的提示可以成功產生圖像,哪些類型不能,可以深入了解產品和模型開發機會。

但結合這些不同的資料類型,通常需要進階分析才能對它們進行有意義的解釋。自然語言處理和電腦視覺等技術處於提取此類有價值見解的最前沿。然而,將非結構化資料整合到現有的結構化資料分析框架中(例如資料庫表中的使用者行為資料)並非沒有障礙。常見的挑戰包括:

  • 資料安全標準:遵守嚴格的資料安全標準,以保護敏感資訊至關重要。這些標準包括對敏感 PII 資料之應用資料屏蔽,並遵循資料存取的最低權限安全原則。
  • 資料類型孤島:非結構化資料通常與結構化資料分開儲存,從而阻礙了跨資料類型的有效分析,例如,根據使用者配置(結構化)過濾媒體資產(非結構化),因為它們儲存在單獨的系統中。
  • 高效能、可擴展的雲端運算資源:由於資料的複雜性、數量以及對即時結果的潛在需求,有效管理和分析大型非結構化資料集迫切需要強大的運算資源。此外,高效能網路可實現低延遲資料傳輸,從而能夠在儲存(Cloud Storage)和分析層(BigQuery、Vertex 等)之間傳輸非結構化資料。
  • 保持跨層資料完整性:由於洞察是從非結構化資料中提取的,因此保留原始事實來源並確保中間(間隙)層的一致性對於可靠的迭代分析至關重要。

簡化與 Cloud Storage 和 BigQuery 的資料整合

為了克服處理非結構化資料的挑戰,可以使用 Cloud Storage 和 BigQuery 來集中數據、使用 BigQuery 物件表透過一個分析平台實現不同來源的一致資料存取。以下是一個簡單而有效的架構範例,該架構利用 BigQuery 進行後設資料產生和增強。此方法使用 BigQuery 的內建生成式 AI 函數,以及 Vertex AI API 介面的遠端使用者定義函數 (UDF)。此整合提升了資料豐富和分析的過程,並提供了更簡化和高效的工作流程。

BigQuery 物件表的強大功能

在下面的範例中,我們將重點放在靜態影像情境,但是,相同的技術也可以用於使用生成式 AI 建立的影像,這種架構的真正潛力在於它的多功能性。BigQuery 中物件表的使用意味著該模式可以適應任何形式的非結構化數據,例如圖像、音訊、文件,為資料科學和分析開闢了一個充滿可能性的世界。這種靈活性確保架構可以隨著需求和資料類型的變化而發展,幫助解決方案在影像管理和生成的動態領域中禁得起時間的考驗。

這個架構展示了結構化和非結構化資料的整合,利用兩者的優勢來增強平台功能。BigQuery 充當中央樞紐,合併使用者資料資訊(例如:使用者人口統計資料、檢視和使用的影像、工作階段持續時間與頻率)、影像後設資料和查詢。同時,外部 AI API 透過對圖像內容的洞察來增強該資料集,像是描述場景中發生的情況(例如:狗在草地上玩球的照片)。

這種資料的融合有助於訓練複雜的影像生成模型,以滿足平台使用者的特定要求。它還解鎖了進階搜尋和圖像管理功能,讓使用者能夠瀏覽大量圖像。該專案能夠提供對外部系統的存取並支援 BigQuery 內的資料增強,有助於集中分析工作負載。這不僅簡化了數據分析,還促進了明智的決策。

解決方案概述

該解決方案的目標是創建一種透過 BigQuery 與非結構化資料互動的方法。使用BigQuery 物件表分析 Cloud Storage 中的非結構化數據,您可以透過遠端函數使用生成式AI 模型、透過Vertex AI 的雲端 API 執行分析,或使用 BigQuery ML 執行推理,然後將這些操作的結果及其餘操作結合 BigQuery 中的結構化資料。

Step 1. 建立範例資料集

先決條件
資料:Kaggle 和 Hugging Face 等第三方網站上的多個影像儲存庫
專案設定:首先,我們需要啟動基本的專案 API:

  • gcloud 服務啟用 cloudfunctions.googleapis.com
  • gcloud 服務啟用 cloudbuild.googleapis.com
  • gcloud 服務啟用 bigqueryconnection.googleapis.com
  • gcloud 服務啟用 vision.googleapis.com

Step 2. 建立物件表

物件表提供對非結構化資料(例如音訊、即時影像和影像)的引用。為此,我們創建 BigQuery BigLake 遠端連接,在 BigQuery 和 Cloud Storage 之間建立橋樑:

  • 建立指令:bq mk –connection –location=us-central1 \ –project_id=bq-object-tables-demo \ –connection_type=CLOUD_RESOURCE biglake-connection
  • 要查看這個新創建的詳細資料,請使用:bq show –connection bq-object-tables-demo.us-central1.biglake-connection

然後,為您的 BQ 服務帳號授予存取您 Cloud Storage bucket 的正確權限。
您的 serviceAccountId 通常會像這樣: {“serviceAccountId”: “bqcx-012345678910-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com”}`
並且它需要物件檢視器權限。這可以透過以下方式實現:

gsutil iam ch \ serviceAccount:bqcx-012345678910-abcd@gcp-sa-bigquery-condel.iam.gserviceaccount.com:objectViewer gs://bq-object-tables-demo-data
  • 在 BigQuery 中的現有資料集中建立物件表,或為物件表建立資料集。
    用此建立資料集:bq mk -d –data_location=us-central1 bq_object_table_demo-dataset

這是可用於建立物件表的查詢範例:

CREATE OR REPLACE EXTERNAL TABLE `bq-object-tables.bq_ot_dataset.bq_object_tables_external_table`
WITH CONNECTION `bq-object-tables.us-east1.biglake-connection` OPTIONS ( object_metadata=”DIRECTORY”, uris = [‘gs://bq-object-tables-demo-data/*’ ], max_staleness=INTERVAL 30 MINUTE, metadata_cache_mode=”AUTOMATIC”);

max_staleness 選項可讓您透過指定物化視圖的可容忍陳舊程度,來管理資料新鮮度和效能之間的權衡;這有助於縮短查詢回應時間並降低成本。透過設定適當的值,您可以實現一致的高效能,同時控制成本,即使在處理大型且頻繁變化的資料集時也是如此。

使用原生 BQ 功能建立後設資料
這些步驟都可以自動產生有向無環圖 (DAG),以便在 Cloud Composer 等編排工具中使用。

Step 3. 從生成式 AI BQML 函數引用模型

首先,建立返回 BQ 資料集裡模型的連結,如下所示:

# Create Model
CREATE OR REPLACE MODEL
`bq-object-tables.bq_ot_dataset.myvisionmodel`
REMOTE WITH CONNECTION `bq-object-tables.us-east1.biglake-connection`
OPTIONS (remote_service_type =’cloud_ai_vision_v1′);

註釋圖像
此程式碼解析圖像,提取其內容並輸出描述圖像的 JSON 單字數組以及模型對描述正確性的信心。然後該函數會將描述放入表格中。

# Annotate image
SELECT *
FROM ML.ANNOTATE_IMAGE(
MODEL `mydataset.myvisionmodel`,
TABLE `mydataset.mytable`,
STRUCT([‘label_detection’] AS vision_features)
);

Step 4. 在 BigQuery 中建立 UDF

您可以使用此基本程式碼建立雲端函數。如果您不確定如何建立雲端函數,請參閱文件以了解如何建立雲端函數UDF

然後,要部署 Cloud Function,請按照下列步驟操作:

4.1. 部署您的 Cloud Function

  • 您可能需要啟用 Cloud Functions API。
  • 您可能需要啟用 Cloud Build API。

4.2. 授予 BigQuery 連線服務帳號對 Cloud Function 的存取權限

  • 尋找服務帳號的一種方法是使用 BigQuery cli“show” 指令

4.3. 參考 BigQuery 中的函數

  • 建立 BigQuery 遠端函數,以引用 Cloud Function UDF
CREATE OR REPLACE FUNCTION `mydataset.vision_safe_search`(signed_url_ STRING) RETURNS JSON
REMOTE WITH CONNECTION `us.gcs-connection`
OPTIONS(endpoint=’https://region-myproject.cloudfunctions.net/vision_safe_search’,
max_batching_rows = 1);

 

CREATE OR REPLACE FUNCTION `mydataset.vision_annotation`(signed_url_ STRING) RETURNS JSON
REMOTE WITH CONNECTION `us.gcs-connection`
OPTIONS(endpoint=’https://region-myproject.cloudfunctions.net/vision_annotation’,
max_batching_rows = 1);

Step 5. 在查詢中使用該函數

CREATE TABLE `mydataset.mid_processing` AS
SELECT uri,mydataset.vision_safe_search(signed_url) as safe_search, mydataset.vision_annotation(signed_url) as annotation
FROM EXTERNAL_OBJECT_TRANSFORM(
TABLE `mydataset.imageall`,
[“SIGNED_URL”]);

使用 BigQuery 物件表和 AI 挖掘非結構化資料

這個架構展示了透過 BigQuery 簡化資料整合以進行集中分析的強大功能。儘管我們在此範例中引用了圖像數據,但這種方法非常靈活;使用物件表,我們可以引用 Cloud Storage bucket 中任何類型的非結構化資料,這些數據還可以引用可能引用呼叫中心 AI 情境的音訊文件,或與訓練電腦視覺模型相關的即時影像檔案。

透過將資料集中在 Cloud Storage 和 BigQuery 中並智慧地使用物件表,您可以有效地管理結構化和非結構化資料。對於我們基於圖像的範例,這種統一方法提供了豐富的資料集,其中包含使用者 ID、原始提示、提示類別、圖像安全評級,甚至是其他 ML 產生的提示。

這些後設資料集的潛在應用是巨大的。產品團隊可以使用它們來建立更強大的圖像生成模型或創建先進的圖像搜尋系統,提供與使用者的搜尋字詞和圖像描述一致的高度相關結果。

本文翻譯並改寫自 Google Cloud 官方部落格。希望大家都有透過宏庭科技這篇文章了解到如何使用 BigQuery 對生成式 AI 模型和媒體資產公司進行產品分析!我們期待能持續將最熱門、最前線的話題帶到您面前。