使用 Amazon Aurora 機器學習與 Aurora SQL - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Aurora 機器學習與 Aurora SQL

透過將 Amazon Aurora 機器學習與 Aurora Postgre SQL 資料庫叢集搭配使用,您可以根據您的需求使用 Amazon CompleAmazon Comprehend SageMaker 或 Amazon 基岩。這些服務各支援特定的機器學習使用案例。

特定支援 Aurora 機器學習 AWS 區域 並SQL僅適用於特定版本的 Aurora Postgre。在嘗試設定 Aurora 機器學習之前,請先檢查您的 Aurora Postgre SQL 版本和您所在地區的可用性。如需詳細資訊,請參閱 Aurora 機器學習與 Aurora SQL

將 Aurora 機器學習與 Aurora 波斯特雷搭配使用的要求 SQL

AWS 機器學習服務是在自己的生產環境中設定和執行的受管理服務。Aurora 機器學習支援與 Amazon Comprehend 和 Amazon 基岩整合。 SageMaker在嘗試設定 Aurora Postgre SQL 資料庫叢集以使用 Aurora 機器學習之前,請務必瞭解下列需求和先決條件。

  • Amazon Comprehend SageMaker, 和 Amazon 基岩服務必須在相同的運行 AWS 區域 做為您的 Aurora 後SQL資料庫叢集。您無法從不同區 Amazon Comprehend Aurora Postgre SQL 資料庫叢集使用 Amazon SageMaker 或亞馬遜基岩服務。

  • 如果您的 Aurora Postgre SQL 資料庫叢集位於以 Amazon 服務為基礎的虛擬公用雲端 (VPC),而不是您的 Amazon Comprehend 和VPC服 SageMaker 務,則該VPC安全群組需要允許對目標 Aurora 機器學習服務的輸出連線。如需詳細資訊,請參閱啟用從 Amazon Aurora 到其他 AWS 服務的網路通訊

  • 對於 SageMaker,您要用於推論的機器學習元件必須設定並準備好使用。在 Aurora Postgre 資SQL料庫叢集的組態程序期間,您需要有 SageMaker端點的 Amazon 資源名稱 (ARN) 可用。您團隊中的數據科學家可能最能夠處理準備模型並處理其他此類任務的工作。 SageMaker 要開始使用 Amazon SageMaker,請參閱 Amazon 入門 SageMaker。如需推論和端點的詳細資訊,請參閱即時推論

  • 對於 Amazon 基岩,您需要擁有要用於推論的基岩模型的模型 ID,以便在 Aurora Postgre 資料庫叢集的組態程序期間使用這些基岩模型。SQL您團隊中的數據科學家可能最能與基岩合作來決定使用哪些模型,如果需要對其進行微調並處理其他此類任務。要開始使用 Amazon 基岩,請參閱如何設置基岩。

  • Amazon Bedrock 使用者必須先要求模型存取權,才能使用模型。如果您想要新增用於文字、聊天和影像產生的其他模型,則需要請求存取 Amazon Bedrock 中的模型。如需詳細資訊,請參閱模型存取

Aurora 機器學習支援的功能和限制 SQL

Aurora 機器學習支援任何可透過值讀取和寫入逗號分隔值 (CSV) 格式的 SageMaker ContentTypetext/csv端點。目前接受此格式的內建 SageMaker 演算法如下。

將 Amazon 基岩與 Aurora 機器學習搭配使用時,適用下列限制:

  • 使用者定義函數 (UDFs) 提供與 Amazon 基岩互動的原生方式。UDFs沒有特定的請求或響應要求,因此它們可以使用任何模型。

  • 您可以使用UDFs來建立所需的任何工作流程。例如,您可以結合基本原語,例如執行pg_cron查詢、擷取資料、產生推論,以及寫入資料表以直接提供查詢。

  • UDFs不支持批處理或 parallel 呼叫。

  • Aurora Machine Learning 擴充功能不支援向量介面。作為擴展的一部分,可以使用一個函數以float8[]格式輸出模型響應的嵌入,以將這些嵌入存儲在 Aurora 中。如需使用方式的詳細資訊float8[],請參閱將 Amazon 基岩與您的 Aurora 郵政SQL資料庫叢集搭配使用

設定您的 Aurora SQL 資料庫叢集以使用 Aurora 機器學習

若要讓 Aurora 機器學習與您的 Aurora Postgre SQL 資料庫叢集搭配使用,您需要建立 AWS Identity and Access Management (IAM) 您要使用之每項服務的角色。此IAM角色可讓您的 Aurora Postgre SQL 資料庫叢集代表叢集使用 Aurora 機器學習服務。您也需要安裝 Aurora Machine Learning 延伸模組。在下列主題中,您可以找到其中每個 Aurora Machine Learning 服務的設定程序。

設置 Aurora 波斯特使SQL用 Amazon 基岩

在以下程序中,您首先建立IAM角色和政策,以SQL授予 Aurora Postgre 代表叢集使用 Amazon 基岩的權限。然後,您可以將原則附加到 Aurora Postgre SQL 資料庫叢集用來與 Amazon 基岩搭配使用的IAM角色。為了簡單起見,此過程使用 AWS Management Console 完成所有任務。

若要設定您的 Aurora 後SQL資料庫叢集以使用 Amazon 基岩
  1. 登入 AWS Management Console 然後在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  3. 選擇 [原則] (在 [存取管理] 下) AWS Identity and Access Management (IAM) 主控台功能表。

    1. 選擇 建立政策。在 [視覺化編輯器] 頁面中,選擇 [服務],然後在 [選取服務] 欄位中輸入基岩。展開讀取存取層級。InvokeModel從 Amazon 基岩讀取設置中進行選擇。

    2. 選擇您要透過原則授與讀取存取權限的「基礎/佈建」模型。

      創建用於 Amazon 基岩的IAM政策。
  4. 選擇 Next: Tags (下一步:標籤) 並定義任何標籤 (這是選用的)。選擇下一步:檢閱。輸入政策的名稱和描述,如圖所示。

    建立要用於 Amazon 基岩之IAM角色的政策。
  5. 選擇 建立政策。儲存策略後,主控台即會顯示警示。您可以在政策清單中找到它。

  6. 在IAM主控台上選擇 [角色] (在 [存取管理] 下)。

  7. 選擇建立角色

  8. 在 [選取信任的實體] 頁面上,選擇 AWS 服務瓷磚,然後選擇RDS打開選擇器。

  9. 選擇 RDS— 將角色新增至資料庫

    創建 Aurora 波斯特格雷SQL與 Amazon 基岩合作的角色。
  10. 選擇 Next (下一步)。在 Add permissions (新增許可) 頁面上,尋找您已在先前步驟中建立的政策,並從列出的政策之中進行選擇。選擇 Next (下一步)

  11. Next: Review (下一步:檢閱)。輸入IAM角色的名稱和說明。

  12. 在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

  13. 導覽至 AWS 區域 您的 Aurora SQL 資料庫叢集所在的位置。

  14. 在瀏覽窗格中,選擇 [資料庫],然後選擇您要與基岩搭配使用的 Aurora Postgre 資料SQL庫叢集。

  15. 選擇 [連線與安全性] 索引標籤,然後捲動以尋找頁面的 [管理IAM角色] 區段。從 [新增IAM角色至此叢集] 選取器中,選擇您在先前步驟中建立的角色。在功能選取器中,選擇「基岩」,然後選擇「新增角色」。

角色 (及其原則) 與 Aurora Postgre SQL 資料庫叢集相關聯。程序完成時,此角色會列在此叢集的 IAM [目前角色] 清單中,如下所示。

Amazon 基岩角色已新增至 Aurora Postgre SQL 資料庫叢集,現在處於作用中狀態。

Amazon 基岩的IAM設置已完成。通過安裝擴展程序,繼續設置 Aurora Postgre SQL 以使用 Aurora 機器學習,如中所述 安裝 Aurora Machine Learning 延伸模組

設置 Aurora 波斯特使SQL用 Amazon Comprehend

在以下程序中,您首先建立IAM角色和政策,以授予您的 Aurora Postgre 代表叢集使用 Amazon Comprehend SQL 權限。接著,您可以將原則附加到 Aurora Postgre SQL 資料庫叢集用來與 Amazon Comprehend 搭配使用的IAM角色,為了簡單起見,此程序會使用 AWS Management Console 完成所有任務。

若要設定您的 Aurora 後SQL資料庫叢集以使用 Amazon Comprehend
  1. 登入 AWS Management Console 然後在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  3. 選擇 [原則] (在 [存取管理] 下) AWS Identity and Access Management (IAM) 主控台功能表。

    創建用於 Amazon Comprehend 的IAM政策。
  4. 選擇 建立政策。在視覺化編輯器頁面中,選擇 Service (服務),然後在 Select a service (選取服務) 欄位中輸入 Comprehend。展開讀取存取層級。DetectSentiment從 Amazon Comprehend 讀取設置中進行選BatchDetectSentiment擇。

  5. 選擇 Next: Tags (下一步:標籤) 並定義任何標籤 (這是選用的)。選擇下一步:檢閱。輸入政策的名稱和描述,如圖所示。

    建立要用於 Amazon Comprehend 的IAM角色政策。
  6. 選擇 建立政策。儲存策略後,主控台即會顯示警示。您可以在政策清單中找到它。

  7. 在IAM主控台上選擇 [角色] (在 [存取管理] 下)。

  8. 選擇建立角色

  9. 在 [選取信任的實體] 頁面上,選擇 AWS 服務瓷磚,然後選擇RDS打開選擇器。

  10. 選擇 RDS— 將角色新增至資料庫

    創建 Aurora 波斯特與 Amazon Comprehend 工作的角色. SQL
  11. 選擇 Next (下一步)。在 Add permissions (新增許可) 頁面上,尋找您已在先前步驟中建立的政策,並從列出的政策之中進行選擇。選擇 Next (下一步)

  12. Next: Review (下一步:檢閱)。輸入IAM角色的名稱和說明。

  13. 在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

  14. 導覽至 AWS 區域 您的 Aurora SQL 資料庫叢集所在的位置。

  15. 在瀏覽窗格中,選擇 [資料庫],然後選擇您要與 Amazon Comprehend 搭配使用的 Aurora Postgre 資料SQL庫叢集。

  16. 選擇 [連線與安全性] 索引標籤,然後捲動以尋找頁面的 [管理IAM角色] 區段。從 [新增IAM角色至此叢集] 選取器中,選擇您在先前步驟中建立的角色。在功能選取器中,選擇 Comprehend,然後選擇新增角色。

角色 (及其原則) 與 Aurora Postgre SQL 資料庫叢集相關聯。程序完成時,此角色會列在此叢集的 IAM [目前角色] 清單中,如下所示。

Amazon Comprehend 的角色已新增至 Aurora SQL 資料庫叢集,現在處於作用中狀態。

Amazon Comprehend 的IAM設置已完成。通過安裝擴展程序,繼續設置 Aurora Postgre SQL 以使用 Aurora 機器學習,如中所述 安裝 Aurora Machine Learning 延伸模組

設置 Aurora 波斯特SQL使用 Amazon SageMaker

在為 Aurora Postgre SQL 資料庫叢集建立IAM原則和角色之前,您必須先提供 SageMaker 模型設定和端點。

若要設定要使用的 Aurora SQL 資料庫叢集 SageMaker
  1. 登入 AWS Management Console 然後在開啟IAM主控台https://console.aws.amazon.com/iam/

  2. 選擇 [原則] (在 [存取管理] 下) AWS Identity and Access Management (IAM) [主控台] 功能表,然後選擇 [建立原則]。在可視化編輯器中,SageMaker選擇服務。對於 [動作],開啟 [讀取] 選取器 (在 [存取層級] 下方) 並選擇InvokeEndpoint。當執行此操作時,會顯示警告圖示。

  3. 開啟 [資源] 選取器,然後選擇 InvokeEndpoint 動作的 [指定端點資源ARN] 下的 [新增ARN以限制存取] 連結。

  4. 請輸入 AWS 區域 您的 SageMaker 資源和端點的名稱。您的 AWS 帳戶已預先填入。

    為策略ARN的端點指IAM定。
  5. 選擇 Add (新增) 以儲存。選擇 Next: Tags (下一步:標籤) 和 Next: Review (下一步:檢閱),以移至原則建立程序的最後一頁。

  6. 輸入此政策的名稱和描述,然後選擇 Create policy (建立政策)。即時會建立策略,並將其新增至政策清單。發生這種情況時,您會在主控台中看到警示。

  7. 在IAM主控台上,選擇 [角色]。

  8. 選擇建立角色

  9. 在 [選取信任的實體] 頁面上,選擇 AWS 服務瓷磚,然後選擇RDS打開選擇器。

  10. 選擇 RDS— 將角色新增至資料庫

  11. 選擇 Next (下一步)。在 Add permissions (新增許可) 頁面上,尋找您已在先前步驟中建立的政策,並從列出的政策之中進行選擇。選擇 Next (下一步)

  12. Next: Review (下一步:檢閱)。輸入IAM角色的名稱和說明。

  13. 在打開 Amazon RDS 控制台https://console.aws.amazon.com/rds/

  14. 導覽至 AWS 區域 您的 Aurora SQL 資料庫叢集所在的位置。

  15. 在瀏覽窗格中,選擇 [資料庫],然後選擇您要搭配 SageMaker使用的 Aurora Postgre 資料SQL庫叢集。

  16. 選擇 [連線與安全性] 索引標籤,然後捲動以尋找頁面的 [管理IAM角色] 區段。從 [新增IAM角色至此叢集] 選取器中,選擇您在先前步驟中建立的角色。在功能選取器中,選擇 SageMaker,然後選擇 [新增角色]。

角色 (及其原則) 與 Aurora Postgre SQL 資料庫叢集相關聯。程序完成時,此角色會列在此叢集的 IAM [目前角色] 清單中。

的IAM設定 SageMaker 已完成。繼續設定 Aurora Postgre SQL 以使用 Aurora 機器學習,方法是安裝如中安裝 Aurora Machine Learning 延伸模組所述的擴充功能。

設置 Aurora 郵政SQL使用 Amazon S3 SageMaker (高級)

若要 SageMaker 搭配您自己的模型使用,而不是使用提供的預先建置元件 SageMaker,您需要為 Aurora Postgre SQL 資料庫叢集設定 Amazon 簡易儲存服務 (Amazon S3) 儲存貯體才能使用。這是進階主題,並未在此《Amazon Aurora 使用者指南》中完整記載。一般程序與整合支援的程序相同 SageMaker,如下所示。

  1. 為 Amazon S3 建立IAM政策和角色。

  2. 在 Aurora Postgre SQL 資料庫叢集的 [連線和安全性] 索引標籤上新增IAM角色和 Amazon S3 匯入或匯出為功能。

  3. 將角色新增至 Aurora 資料庫叢集ARN的自訂資料庫叢集參數群組。

如需基本使用方式的資訊,請參閱 將資料匯出到 Amazon S3 進行 SageMaker 模型訓練 (進階)

安裝 Aurora Machine Learning 延伸模組

Aurora 機器學習延伸模組aws_ml 1.0提供兩個功能,您可以用來叫用 Amazon Comprehend SageMaker 服務,並aws_ml 2.0提供兩個額外的功能,讓您用來叫用 Amazon 基岩服務。在 Aurora Postgre SQL 資料庫叢集上安裝這些擴充功能也會建立該功能的管理角色。

注意

使用這些功能取決於 Aurora 機器學習服務(Amazon Comprehend SageMaker,Amazon 基岩)的IAM設置完成,如中所述。設定您的 Aurora SQL 資料庫叢集以使用 Aurora 機器學習

  • 偵測情緒 — 您可以使用此函數,將情緒分析套用至儲存在 Aurora Postgre 資料庫叢集之資料庫中的文字。 SQL

  • aws_sagemaker.invoke_end — 您可以在SQL程式碼中使用此函數與叢集中的端點進行通訊。 SageMaker

  • aws_bedrock.invoke_model — 您可以在SQL程式碼中使用此函式,與叢集中的基岩模型進行通訊。該函數的響應將在 a 的格式TEXT,所以如果一個模型在一個JSON主體的格式響應,那麼該函數的輸出將在一個字符串的格式轉發給最終用戶。

  • aws_bedrock.invoke_model_get_嵌入 — 您可以在代碼中使用此函數來調用基岩模型,該模型返回響應中的輸出嵌入。SQL JSON當您想要提取與 json-key 直接關聯的嵌入以簡化任何自我管理工作流程的響應時,可以使用此功能。

在您的 Aurora Postgre SQL 資料庫叢集中安裝 Aurora 機器學習延伸模組
  • 用於連線psql至您的 Aurora Postgre SQL 資料庫叢集的寫入器執行個體。連線到要在其中安裝 aws_ml 延伸模組的特定資料庫。

    psql --host=cluster-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=labdb
labdb=> CREATE EXTENSION IF NOT EXISTS aws_ml CASCADE; NOTICE: installing required extension "aws_commons" CREATE EXTENSION labdb=>

安裝aws_ml擴充功能也會建立系aws_ml統管理角色和三個新結構描述,如下所示。

  • aws_comprehend – Amazon Comprehend 服務的結構描述和 detect_sentiment 函數的來源 (aws_comprehend.detect_sentiment)。

  • aws_sagemaker— SageMaker 服務和invoke_endpoint函數來源 (aws_sagemaker.invoke_endpoint) 的結構描述。

  • aws_bedrock— Amazon 基岩服務的架構以及和功能的invoke_model(aws_bedrock.invoke_model)來源。invoke_model_get_embeddings(aws_bedrock.invoke_model_get_embeddings)

rds_superuser角色被授與aws_ml管理角色,並由這三個 Aurora 機器學習結構描述OWNER組成。若要允許其他資料庫使用者存取 Aurora Machine Learning 函數,rds_superuser 需要授與 Aurora Machine Learning 函數的 EXECUTE 權限。根據預設,會在兩個 Aurora Machine Learning 結構描述中的函數上撤銷 PUBLICEXECUTE 權限。

在多租用戶資料庫組態中,您可以在要保護的特定 Aurora Machine Learning 結構描述上使用 REVOKE USAGE,防止租用戶存取 Aurora Machine Learning 函數。

將 Amazon 基岩與您的 Aurora 郵政SQL資料庫叢集搭配使用

對於 Aurora PostgreSQL,Aurora 機器學習提供以下 Amazon 基岩功能,以處理您的文字資料。只有在您安裝 aws_ml 2.0 擴充功能並完成所有安裝程序之後,才能使用此功能。如需詳細資訊,請參閱設定您的 Aurora SQL 資料庫叢集以使用 Aurora 機器學習

aw_ 支持. 調用模型

此功能將格式化JSON為輸入的文本,並為 Amazon 基岩上託管的各種模型進行處理,並從模型中獲取JSON文本響應。此回應可能包含文字、影像或嵌入。函數文件的摘要如下。

aws_bedrock.invoke_model( IN model_id varchar, IN content_type text, IN accept_type text, IN model_input text, OUT model_output varchar)

此函數的輸入和輸出如下。

  • model_id— 模型的識別碼。

  • content_type— 要求基岩模型的類型。

  • accept_type— 從基岩模型期望的響應類型. 通常應用/JSON適用於大多數型號。

  • model_input— 提示;以 content_type 指定的格式輸入模型的一組特定輸入。有關模型接受的請求格式/結構的詳細資訊,請參閱基礎模型的推論參數

  • model_output— 基岩模型的輸出為文本。

下面的例子演示了如何調用人為基岩克勞德 2 模型使用調用 invoke 模型。

範例:使用 Amazon 基岩函數的簡單查詢
SELECT aws_bedrock.invoke_model ( model_id := 'anthropic.claude-v2', content_type:= 'application/json', accept_type := 'application/json', model_input := '{"prompt": "\n\nHuman: You are a helpful assistant that answers questions directly and only using the information provided in the context below.\nDescribe the answer in detail.\n\nContext: %s \n\nQuestion: %s \n\nAssistant:","max_tokens_to_sample":4096,"temperature":0.5,"top_k":250,"top_p":0.5,"stop_sequences":[]}' );
模型嵌入模型嵌入的 aw_ 基礎

在某些情況下,模型輸出可以指向向量嵌入。鑑於每個模型的響應各不相同,可以利用另一個函數調用 _model_get_嵌入功能與invoke ke_model 完全相似,但通過指定適當的 JSON 鍵來輸出嵌入。

aws_bedrock.invoke_model_get_embeddings( IN model_id varchar, IN content_type text, IN json_key text, IN model_input text, OUT model_output float8[])

此函數的輸入和輸出如下。

  • model_id— 模型的識別碼。

  • content_type— 要求基岩模型的類型。在這裡,接受類型被設置為默認值。application/json

  • model_input— 提示;以 content_type 指定的格式輸入至模型的一組特定輸入。有關模型接受的請求格式/結構的詳細資訊,請參閱基礎模型的推論參數

  • json_key— 參考要從中擷取嵌入的欄位。如果嵌入模型改變,這可能會有所不同。

  • model_output-基岩模型的輸出為具有 16 位小數的嵌入數組。

下列範例顯示如何使用 Postgre SQL I/O 監視視圖一詞的 Titan 嵌入 G1 — 文字嵌入模型來產生嵌入。

範例:使用 Amazon 基岩函數的簡單查詢
SELECT aws_bedrock.invoke_model_get_embeddings( model_id := 'amazon.titan-embed-text-v1', content_type := 'application/json', json_key := 'embedding', model_input := '{ "inputText": "PostgreSQL I/O monitoring views"}') AS embedding;

使用 Amazon Comprehend 您的 Aurora 後SQL數據庫集群

對於 Aurora PostgreSQL,Aurora 機器學習提供以下 Amazon Comprehend 功能,以處理您的文字資料。只有在您安裝 aws_ml 延伸模組並完成所有設定程序之後,才能使用此函數。如需詳細資訊,請參閱設定您的 Aurora SQL 資料庫叢集以使用 Aurora 機器學習

aws_comprehend.detect_sentiment

此函數會以文字做為輸入,並評估文字是否具有正面、負面、中性或混合的情緒狀態。它會輸出此情緒以及評估的信賴等級。函數文件的摘要如下。

aws_comprehend.detect_sentiment( IN input_text varchar, IN language_code varchar, IN max_rows_per_batch int, OUT sentiment varchar, OUT confidence real)

此函數的輸入和輸出如下。

  • input_text – 要評估和指派情緒 (負面、正面、中性、混合) 的文字。

  • language_code— 使用帶有區域子標籤的 2 個字母 ISO 639-1 標識符(視需要)或 ISO 639-2 三個字母代碼(視情況而input_text定)進行識別的語言。例如,en 是英文代碼,而 zh 是簡體中文的代碼。如需詳細資訊,請參閱《Amazon 開發人員指南》中的支援的語言

  • max_rows_per_batch – 批次模式處理中每個批次的資料列數量上限。如需詳細資訊,請參閱了解批次模式和 Aurora Machine Learning 函數

  • sentiment— 輸入文字的情緒,識別為POSITIVENEGATIVE、NEUTRAL、或MIXED。

  • confidence – 所在指定 sentiment 之準確性中的信賴程度。值的範圍從 0.0 到 1.0。

在下列內容中,您可以找到如何使用此函數的範例。

範例:使用 Amazon Comprehend 的簡單查詢

以下是簡單查詢的範例,該查詢會叫用此函數,以評估客戶對支援團隊的滿意度。假設您有一個資料庫資料表 (support),其會在每次請求協助之後存放客戶意見回饋。此範例查詢會將 aws_comprehend.detect_sentiment 函數套用至資料表的 feedback 資料欄中的文字,並輸出情緒以及該情緒的信賴等級。此查詢也會以遞減順序輸出結果。

SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; feedback | sentiment | confidence ----------------------------------------------------------+-----------+------------ Thank you for the excellent customer support! | POSITIVE | 0.999771 The latest version of this product stinks! | NEGATIVE | 0.999184 Your support team is just awesome! I am blown away. | POSITIVE | 0.997774 Your product is too complex, but your support is great. | MIXED | 0.957958 Your support tech helped me in fifteen minutes. | POSITIVE | 0.949491 My problem was never resolved! | NEGATIVE | 0.920644 When will the new version of this product be released? | NEUTRAL | 0.902706 I cannot stand that chatbot. | NEGATIVE | 0.895219 Your support tech talked down to me. | NEGATIVE | 0.868598 It took me way too long to get a real person. | NEGATIVE | 0.481805 (10 rows)

為了避免針對每個資料表資料列的情緒分析產生費用超過一次,您可以將結果具體化。請在您感興趣的資料列上執行此作業。例如,臨床醫師的筆記正在更新,以便只有法文 (fr) 的筆記使用情緒偵測函數。

UPDATE clinician_notes SET sentiment = (aws_comprehend.detect_sentiment (french_notes, 'fr')).sentiment, confidence = (aws_comprehend.detect_sentiment (french_notes, 'fr')).confidence WHERE clinician_notes.french_notes IS NOT NULL AND LENGTH(TRIM(clinician_notes.french_notes)) > 0 AND clinician_notes.sentiment IS NULL;

如需最佳化您函數呼叫的詳細資訊,請參閱 將 Aurora 機器學習與 Aurora 波斯特雷搭配使用的效能考量 SQL

搭 SageMaker 配您的 Aurora SQL 資料庫叢集使用

SQL如所述設定 SageMaker 環境並與 Aurora Postgre 整合後設置 Aurora 波斯特SQL使用 Amazon SageMaker ,您可以使用aws_sagemaker.invoke_endpoint函數叫用作業。該aws_sagemaker.invoke_endpoint函數僅連接到相同的模型端點 AWS 區域。 如果您的資料庫執行個體有多個複本 AWS 區域 確保您設置並將每個模型部署到每個 SageMaker 模型 AWS 區域.

對的呼叫aws_sagemaker.invoke_endpoint會使用您設定為將 Aurora Postgre SQL 資料庫叢集與您在安裝程序期間提供的 SageMaker 服務和端點相關聯的IAM角色進行驗證。 SageMaker 模型端點的範圍限制為個別帳戶,且不是公開的。endpoint_nameURL不包含帳戶 ID。 SageMaker 從資料庫執行個體 SageMaker IAM角色所提供的驗證 Token 決定帳戶 ID。

aws_sagemaker.invoke_endpoint

這個函數需要 SageMaker 端點作為輸入和應該作為一個批處理的行數。它還需要輸入 SageMaker 模型端點預期的各種參數。此函數的參考文件如下。

aws_sagemaker.invoke_endpoint( IN endpoint_name varchar, IN max_rows_per_batch int, VARIADIC model_input "any", OUT model_output varchar )

此函數的輸入和輸出如下。

  • endpoint_name— 端點URL是 AWS 區域獨立。

  • max_rows_per_batch – 批次模式處理中每個批次的資料列數量上限。如需詳細資訊,請參閱了解批次模式和 Aurora Machine Learning 函數

  • model_input – 模型的一或多個輸入參數。這些可以是模型所需的任何數據類 SageMaker 型。Postgre SQL 允許您為一個函數指定多達 100 個輸入參數。數組數據類型必須是一維的,但可以包含由 SageMaker 模型預期的盡可能多的元素。 SageMaker 模型的輸入數目僅受 SageMaker 6 MB 郵件大小限制的限制。

  • model_output— SageMaker 模型的輸出為文字。

創建用戶定義函數以調用 SageMaker 模型

創建一個單獨的用戶定義函數aws_sagemaker.invoke_endpoint來調用每個 SageMaker 模型。您的使用者定義函數代表主控模型的 SageMaker 端點。aws_sagemaker.invoke_endpoint 函數會在使用者定義函數內執行。使用者定義函數提供許多優點:

  • 您可以為 SageMaker 模型指定自己的名稱,而不是aws_sagemaker.invoke_endpoint僅呼叫所有模 SageMaker 型。

  • 您可以在SQL應用程式程式碼URL中僅在一個位置指定模型端點。

  • 您可以單獨控制每個 Aurora Machine Learning 函數的 EXECUTE 權限。

  • 您可以使用類型聲明模型輸入和輸出SQL類型。SQL強制執行傳遞給模型的引數數量和類 SageMaker 型,並在必要時執行類型轉換。使用SQL類型也會轉換SQL NULL為 SageMaker 模型所預期的適當預設值。

  • 如果您希望更快地傳回前幾個資料列,您可以減少批次大小上限。

若要指定使用者定義函數,請使用SQL資料定義語言 (DDL) 陳述式CREATE FUNCTION。在您定義函數時,您可以指定以下內容:

  • 對模型的輸入參數。

  • 要叫用的特定 SageMaker 端點。

  • 傳回類型。

使用者定義函數會傳回 SageMaker 端點在輸入參數上執行模型之後所計算的推論。下列範例會針對具有兩個輸入參數的 SageMaker 模型建立使用者定義函數。

CREATE FUNCTION classify_event (IN arg1 INT, IN arg2 DATE, OUT category INT) AS $$ SELECT aws_sagemaker.invoke_endpoint ( 'sagemaker_model_endpoint_name', NULL, arg1, arg2 -- model inputs are separate arguments )::INT -- cast the output to INT $$ LANGUAGE SQL PARALLEL SAFE COST 5000;

注意下列事項:

  • aws_sagemaker.invoke_endpoint 函數輸入可以是任何資料類型的一或多個參數。

  • 此範例使用INT輸出類型。如果將輸出從varchar類型轉換為不同類型,則必須將其轉換為 Postgre SQL 內建標量類型,例如INTEGERREALFLOAT或。NUMERIC如需有關這些類型的詳細資訊,請參閱 Postgre SQL 文件中的資料類型

  • 指定 PARALLEL SAFE 來啟用平行查詢處理。如需更多詳細資訊,請參閱 使用平行查詢處理改善回應時間

  • 指定 COST 5000 來可預估執行函數的成本。使用正數來表示函數的預估執行成本 (單位為 cpu_operator_cost)。

將數組作為輸入傳遞給 SageMaker 模型

aws_sagemaker.invoke_endpoint函數最多可以有 100 個輸入參數,這是 Postgre SQL 函數的限制。如果 SageMaker 模型需要超過 100 個相同類型的參數,請將模型參數作為陣列傳遞。

下列範例會定義傳遞陣列做為輸入至 SageMaker 迴歸模型的函數。輸出會轉換為 REAL 值。

CREATE FUNCTION regression_model (params REAL[], OUT estimate REAL) AS $$ SELECT aws_sagemaker.invoke_endpoint ( 'sagemaker_model_endpoint_name', NULL, params )::REAL $$ LANGUAGE SQL PARALLEL SAFE COST 5000;

調用模型時指定批次大小 SageMaker

下列範例會為 SageMaker 模型建立使用者定義函數,該函數會將批次大小預設值設定為NULL。該函數也允許您在呼叫時提供不同的批次大小。

CREATE FUNCTION classify_event ( IN event_type INT, IN event_day DATE, IN amount REAL, -- model inputs max_rows_per_batch INT DEFAULT NULL, -- optional batch size limit OUT category INT) -- model output AS $$ SELECT aws_sagemaker.invoke_endpoint ( 'sagemaker_model_endpoint_name', max_rows_per_batch, event_type, event_day, COALESCE(amount, 0.0) )::INT -- casts output to type INT $$ LANGUAGE SQL PARALLEL SAFE COST 5000;

注意下列事項:

  • 使用選用的 max_rows_per_batch 參數來控制批次模式函數呼叫的資料列數。如果您使用的值為NULL,則查詢最佳化工具會自動選擇最大批次大小。如需詳細資訊,請參閱了解批次模式和 Aurora Machine Learning 函數

  • 默認情況下,傳遞NULL作為參數的值被轉換為空字符串傳遞給之前 SageMaker。針對此範例,輸入具有不同的類型。

  • 如果您有非文字的輸入,或是需要預設為空白字串以外值的文字輸入,請使用 COALESCE 陳述式。用COALESCE於在呼叫中NULL轉譯為所需的 null 取代值aws_sagemaker.invoke_endpoint。對於此範例中的amount參數,NULL值會轉換為 0.0。

調用具有多個 SageMaker 輸出的模型

下列範例會針對傳回多個輸出的 SageMaker 模型建立使用者定義函數。您的函數需要將 aws_sagemaker.invoke_endpoint 函數的輸出轉換成對應的資料類型。例如,您可以對 (x, y) 對或使用者定義的複合類型使用內建 Postgre SQL 點類型。

這個使用者定義函數會針對輸出,使用複合類型從傳回多個輸出的模型傳回值。

CREATE TYPE company_forecasts AS ( six_month_estimated_return real, one_year_bankruptcy_probability float); CREATE FUNCTION analyze_company ( IN free_cash_flow NUMERIC(18, 6), IN debt NUMERIC(18,6), IN max_rows_per_batch INT DEFAULT NULL, OUT prediction company_forecasts) AS $$ SELECT (aws_sagemaker.invoke_endpoint('endpt_name', max_rows_per_batch,free_cash_flow, debt))::company_forecasts; $$ LANGUAGE SQL PARALLEL SAFE COST 5000;

針對複合類型,請根據欄位在模型中的順序,以相同順序使用欄位,並將 aws_sagemaker.invoke_endpoint 的輸出轉換成您的複合類型。調用者可以通過名稱或使用 Postgre SQL「.*」符號提取單個字段。

將資料匯出到 Amazon S3 進行 SageMaker 模型訓練 (進階)

我們建議您熟悉 Aurora 機器學習,並使用 SageMaker 提供的演算法和範例,而不是嘗試訓練自己的模型。如需詳細資訊,請參閱 Amazon 開始使用 SageMaker

若要訓練 SageMaker 模型,請將資料匯出到 Amazon S3 儲存貯體。Amazon S3 儲存貯體用於在部署模型之前 SageMaker對其進行訓練。您可以從 Aurora Postgre 資料SQL庫叢集查詢資料,並將其直接儲存到存放在 Amazon S3 儲存貯體中的文字檔中。然後 SageMaker 使用 Amazon S3 儲存貯體中的資料進行訓練。如需 SageMaker 模型訓練的詳細資訊,請參閱使用 Amazon 訓練模型 SageMaker

注意

當您建立用於 SageMaker 模型訓練或批次評分的 Amazon S3 儲存貯體時,請使用 sagemaker Amazon S3 儲存貯體名稱。如需詳細資訊,請參閱 Amazon SageMaker 開發人員指南中的指定 Amazon S3 儲存貯體以上傳訓練資料集和存放輸出資料。

如需匯出您資料的詳細資訊,請參閱 將資料從 S3

將 Aurora 機器學習與 Aurora 波斯特雷搭配使用的效能考量 SQL

當 Aurora 機器學習功能叫用時,Amazon Comprehend 和 SageMaker 服務會完成大部分工作。這表示您可以視需要獨立擴展這些資源。對於您的 Aurora Postgre SQL 資料庫叢集,您可以盡可能高效地進行函數呼叫。接下來,您可以找到使用 Aurora Postgre SQL 的 Aurora 機器學習時要注意的一些效能考量。

了解批次模式和 Aurora Machine Learning 函數

通常情況下,Postgre 一次SQL運行一行函數。Aurora Machine Learning 可以採用稱為「批次模式執行」的方法,透過將許多資料列對外部 Aurora Machine Learning 服務的呼叫合併成批次,來減少這項額外負荷。在批次模式中,Aurora Machine Learning 會收到輸入資料列批次的回應,然後一次針對單一資料列將回應交付回正在執行的查詢。此最佳化可改善 Aurora 查詢的輸送量,而不會限制 Postgre SQL 查詢最佳化工具。

如果函數是從 SELECT 清單、WHERE 子句或 HAVING 子句進行推論,Aurora 會自動使用批次模式。請注意,最上層的簡易 CASE 表達式適用批次模式執行。如果第一個 CASE 子句是包含批次模式函數呼叫的簡易述詞,則最上層的搜尋 WHEN 表達式也適用批次模式執行。

您的使用者定義函數必須是 LANGUAGE SQL 函數,且應指定 PARALLEL SAFECOST 5000

從SELECT語句到FROM子句的函數遷移

通常,Aurora 會自動將適用批次模式執行的 aws_ml 函數遷移至 FROM 子句。

您可以在每個查詢層級上手動檢查合格批次模式函數至FROM子句的移轉。若要這麼做,您可以使用EXPLAIN陳述式 (ANALYZE和VERBOSE),並在每個 B Function Scan atch 模式下找到「批次處理」資訊。您也可以在不執行查詢的情況下使用 EXPLAIN (withVERBOSE)。您接著可以觀察對函數的呼叫在並未於原始陳述式中指定的巢狀迴圈聯結下方,是否顯示為 Function Scan

在以下範例中,計劃中的巢狀迴圈聯結運算子會顯示 Aurora 遷移了 anomaly_score 函數。它會將此函數從SELECT清單移轉至FROM子句,在此子句中可以進行批次模式執行。

EXPLAIN (VERBOSE, COSTS false) SELECT anomaly_score(ts.R.description) from ts.R; QUERY PLAN ------------------------------------------------------------- Nested Loop Output: anomaly_score((r.description)::text) -> Seq Scan on ts.r Output: r.id, r.description, r.score -> Function Scan on public.anomaly_score Output: anomaly_score.anomaly_score Function Call: anomaly_score((r.description)::text)

如要停止批次模式執行,請將 apg_enable_function_migration 參數設為 false。這可防止aws_ml函數從子SELECTFROM句遷移。以下顯示作法。

SET apg_enable_function_migration = false;

apg_enable_function_migration參數是「大統一組態」(GUC) 參數,可由 Aurora Postgre SQL apg_plan_mgmt 擴充功能識別,以進行查詢計畫管理。如要停用工作階段中的函數遷移,請使用查詢計劃管理來將結果計劃儲存為 approved 計劃。在執行時間,查詢計劃管理會透過其 approved 設定,強制實行 apg_enable_function_migration 計劃。無論apg_enable_function_migrationGUC參數設定為何,都會發生此強制執行。如需詳細資訊,請參閱管理查詢執行計劃 Aurora SQL

使用 max_rows_per_batch 參數

aws_comprehend.detect_sentimentaws_sagemaker.invoke_endpoint 函數都有一個 max_rows_per_batch 參數。此參數會指定可傳送至 Aurora Machine Learning 服務的資料列數目。您的函數處理的資料集越大,您的批次大小就越大。

批次模式函數會透過建置資料列批次,將 Aurora Machine Learning 函數呼叫的成本分散到大量的資料列,來改善效率。但是,如果 SELECT 陳述式因為 LIMIT 子句而提前完成,則可以針對比查詢所使用資料列數更多的資料列建構批次。這種方法可能會導致您的額外費用 AWS 帳戶。如要利用批次模式執行的優點,同時避免建置過大的批次,請在您的函數呼叫中針對 max_rows_per_batch 參數使用較小的值。

如果您執行的查詢 EXPLAIN (VERBOSEANALYZE) 使用批次模式執行,您會看到位於巢狀迴圈聯結下方的 FunctionScan 運算子。EXPLAIN 報告的迴圈數等於您從 FunctionScan 運算子擷取資料列的次數。如果陳述式使用LIMIT子句,擷取的次數是一致的。如要最佳化批次大小,請將 max_rows_per_batch 參數設為這個值。但是,如果在 WHERE 子句或 HAVING 子劇中的述詞內參考批次模式函數,您便可能無法事先得知擷取數。在此情況下,請使用迴圈做為準則並針對 max_rows_per_batch 進行實驗,尋找最佳化效能的設定。

驗證批次模式執行

要查看函數是否以批次處理模式執行,請使用 EXPLAIN ANALYZE。如果使用了批次模式執行,則查詢計劃會在「批次處理」區段包含資訊。

EXPLAIN ANALYZE SELECT user-defined-function(); Batch Processing: num batches=1 avg/min/max batch size=3333.000/3333.000/3333.000 avg/min/max batch call time=146.273/146.273/146.273

在此範例中,有 1 個包含了 3,333 個資料列的批次,其處理的時間為 146.273 毫秒。「批次處理」區段會顯示以下內容:

  • 此函數掃描操作有多少批次

  • 批次的平均大小、最小值和最大值

  • 批次的平均執行時間、最小值和最大值

通常最後一個批次會比其餘批次小,並且通常會導致比平均小許多的批次大小下限。

如要更快地傳回前幾個資料列,請將 max_rows_per_batch 參數設為較小的值。

如要在您於使用者定義函數中使用 LIMIT 時減少對 ML 服務的批次模式呼叫數,請將 max_rows_per_batch 參數設為較小的值。

使用平行查詢處理改善回應時間

若要從大量資料列中盡快取得結果,您可以將平行查詢處理與批次模式處理結合。您可以針對 SELECTCREATE TABLE AS SELECTCREATE MATERIALIZED VIEW 陳述式使用平行查詢處理。

注意

Postgre 尚SQL未支援資料處理語言 (DML) 陳述式的 parallel 查詢。

平行查詢處理會在資料庫和 ML 服務中進行。資料庫執行個體類別中的核心數會限制執行查詢時所能使用的平行處理程度。資料庫伺服器可以建構平行查詢執行計劃,分割一組平行工作者中的任務。然後,這些工作者都可以各自建置批次請求,其中包含了成千上萬個資料列 (或是每個服務允許的最大數量)。

來自所有 parallel Worker 的批次處理要求會傳送至 SageMaker 端點。端點可支援的平行處理程度受制於支援它的執行個體數目和類型。對於 K 程度的平行處理,您需要至少具有 K 個核心的資料庫執行個體類別。您還需要為模型配置 SageMaker 端點,使其具有足夠高性能的實例類的 K 初始實例。

若要使用平行查詢處理,您可以設定包含您計劃傳遞資料資料表的 parallel_workers 儲存參數。您可以將 parallel_workers 設為批次模式函數,例如 aws_comprehend.detect_sentiment。如果最佳化工具選擇 parallel 查詢計畫, AWS ML 服務可以在批量和並 parallel 調用。

您可以搭配 aws_comprehend.detect_sentiment 函數使用下列參數,取得具備四向平行處理的計劃。如果變更下列兩個參數之一,您必須重新啟動資料庫執行個體,變更才會生效

-- SET max_worker_processes to 8; -- default value is 8 -- SET max_parallel_workers to 8; -- not greater than max_worker_processes SET max_parallel_workers_per_gather to 4; -- not greater than max_parallel_workers -- You can set the parallel_workers storage parameter on the table that the data -- for the Aurora machine learning function is coming from in order to manually override the degree of -- parallelism that would otherwise be chosen by the query optimizer -- ALTER TABLE yourTable SET (parallel_workers = 4); -- Example query to exploit both batch-mode execution and parallel query EXPLAIN (verbose, analyze, buffers, hashes) SELECT aws_comprehend.detect_sentiment(description, 'en')).* FROM yourTable WHERE id < 100;

如需控制 parallel 查詢的詳細資訊,請參閱 Postgre SQL 文件中的平行計畫

使用具體化檢視和具體化資料行

當你調用 AWS 從您的資料庫 SageMaker 或 Amazon Comprehend 等服務,系統會根據該服務的定價政策向您的帳戶收費。若要將帳戶的費用降到最低,您可以實現呼叫 AWS 服務到具體化列中,以便 AWS 每個輸入行不會調用服務超過一次。如果需要,您可以新增 materializedAt 時間戳記資料行,記錄具體化資料行的時間。

一般單一資料列 INSERT 陳述式的延遲通常會比呼叫批次模式函數的延遲要小得多。因此,如果您針對您應用程式執行 INSERT 的每個單一資料列呼叫批次模式函數,您便可以無法滿足應用程式的延遲需求。為了實現調用的結果 AWS 服務放入具體化資料行中,高效能應用程式通常需要填入具體化資料行。為了執行此作業,這些應用程式通常會發出 UPDATE 陳述式,同時在大型的資料列批次上運作。

UPDATE 會採用資料列層級鎖定,可能影響正在執行的應用程式。因此,您可能需要使用 SELECT ... FOR UPDATE SKIP LOCKED,或是使用 MATERIALIZED VIEW

在大量資料列上即時運作的分析查詢可以將批次模式具體化與即時處理合併。為了執行此作業,這些查詢會將預先具體化結果的 UNION ALL 與尚未包含具體化結果的資料列查詢結合。在某些情況下,許多位置都需要該 UNION ALL,或是由第三方應用程式產生查詢。如果是這樣,您可以創建一個VIEW封裝UNION ALL操作,以便此詳細信息不會暴露給SQL應用程序的其餘部分。

您可以使用具體化檢視來及時具體化快照中任意 SELECT 陳述式的結果。您也可以使用具體化檢視來在未來隨時重新整理具體化檢視。目前 Postgre SQL 不支援累加式重新整理,因此每次重新整理具體化視觀表時,都會完全重新計算具體化視觀表。

您可以使用 CONCURRENTLY 選項重新整理具體化檢視,更新具體化檢視的內容,而無須採取獨佔鎖定。這樣做可讓SQL應用程式在重新整理具體化視觀表時讀取具體化視觀表。

監控 Aurora Machine Learning

您可以將自訂資料庫叢集參數群組中的 track_functions 參數設定為 all 來監控 aws_ml 函數。根據預設,此參數會設定為 pl,表示只會追蹤程序語言函數。藉由將其變更為 all,也會追蹤 aws_ml 函數。如需詳細資訊,請參閱 Postgre SQL 文件中的執行階段統計資料。

如需監控從 Aurora 機器學習功能呼叫之 SageMaker 作業效能的相關資訊,請參閱 Amazon SageMaker 開發人員指南 SageMaker中的監控 Amazon

track_functions 設為 all 後,您可以查詢 pg_stat_user_functions 檢視,以取得有關您定義並用來叫用 Aurora Machine Learning 服務之函數的統計資料。對於每個函數,檢視會提供 callstotal_timeself_time 的數目。

若要檢視 aws_sagemaker.invoke_endpointaws_comprehend.detect_sentiment 函數的統計資料,您可以使用下列查詢依結構描述名稱篩選結果。

SELECT * FROM pg_stat_user_functions WHERE schemaname LIKE 'aws_%';

若要清除統計資料,請執行以下操作。

SELECT pg_stat_reset();

您可以通過查詢 Postgre SQL pg_proc 系統目錄來獲取調用該aws_sagemaker.invoke_endpoint函數的函數的名稱。SQL此目錄存放函數、程序等的相關資訊。如需詳細資訊,請參閱 Po stgre 文件中的 pg_proc。SQL以下是查詢資料表以取得函數 (proname) 的名稱,這些名稱的來源 (prosrc) 包括文字 invoke_endpoint

SELECT proname FROM pg_proc WHERE prosrc LIKE '%invoke_endpoint%';