和風網標誌

CCC Intelligent Solutions 如何使用 Amazon SageMaker 創建自定義方法來託管複雜的 AI 模型

日期:

這篇文章由來自 CCC Intelligent Solutions 的 Christopher Diaz、Sam Kinard、Jaime Hidalgo 和 Daniel Suarez 共同撰寫。

在這篇文章中,我們討論如何 CCC智能解決方案 (CCC) 合併 亞馬遜SageMaker 與其他 AWS 服務一起創建自定義解決方案,能夠託管設想的複雜人工智能 (AI) 模型類型。 CCC 是領先的軟件即服務 (SaaS) 平台,面向價值數万億美元的財產和意外傷害保險經濟,為保險公司、維修商、汽車製造商、零件供應商、貸方等提供運營支持。 CCC 雲技術連接了 30,000 多家企業,將關鍵任務工作流、商務和客戶體驗數字化。 作為人工智能、物聯網 (IoT)、客戶體驗以及網絡和工作流管理領域值得信賴的領導者,CCC 提供創新,讓人們的生活在最重要的時候向前發展。

所面臨的挑戰

CCC 每年處理超過 1 萬億美元的索賠交易。 隨著公司不斷發展以將 AI 集成到其現有和新產品目錄中,這需要復雜的方法來訓練和部署多模式機器學習 (ML) 集成模型來解決複雜的業務需求。 這些是一類模型,封裝了 CCC 多年來磨練出來的專有算法和主題領域專業知識。 這些模型應該能夠吸收新的細微數據層和客戶規則,以創建單一的預測結果。 在這篇博文中,我們將了解 CCC 如何利用 Amazon SageMaker 託管和其他 AWS 服務將多個多模式模型部署或託管到集成推理管道中。

如下圖所示,集成是兩個或多個模型的集合,這些模型被編排為以線性或非線性方式運行以產生單個預測。 當線性堆疊時,可以直接調用集成的各個模型進行預測,然後合併以進行統一。 有時,集成模型也可以實現為串行推理管道。

對於我們的用例,集成管道是嚴格非線性的,如下圖所示。 非線性集成管道在理論上是直接無環圖 (DAG)。 對於我們的用例,此 DAG 管道既有並行運行的獨立模型(服務 B、C),也有使用前面步驟的預測的其他模型(服務 D)。

CCC 以研究為導向的文化產生的一種做法是不斷審查可用於為客戶帶來更多價值的技術。 當 CCC 面臨這一整體挑戰時,領導層啟動了一項概念驗證 (POC) 計劃,以徹底評估 AWS 的產品,以具體發現 Amazon SageMaker 和其他 AWS 工具是否可以管理複雜、非線性環境中單個 AI 模型的託管合奏。

合奏解釋: 在這種情況下,集成是一組 2 個或更多 AI 模型,它們協同工作以產生一個整體預測。

推動研究的問題

Amazon SageMaker 能否用於託管複雜的 AI 模型集合,這些模型協同工作以提供一個整體預測? 如果是這樣,SageMaker 能否提供開箱即用的其他優勢,例如更高的自動化程度、可靠性、監控、自動擴展和成本節約措施?

利用雲提供商的技術進步尋找部署 CCC AI 模型的替代方法,將使 CCC 能夠比競爭對手更快地將 AI 解決方案推向市場。 此外,在基於業務優先級找到成本和性能之間的平衡時,擁有多個部署架構可以提供靈活性。

根據我們的要求,我們最終確定了以下功能列表作為生產級部署架構的清單:

  • 支持複雜的合奏
  • 保證所有組件的正常運行時間
  • 已部署 AI 模型的可定制自動縮放
  • AI模型輸入輸出保存
  • 所有組件的使用指標和日誌
  • 成本節約機制

由於 CCC 的大多數 AI 解決方案都依賴於計算機視覺模型,因此需要一種新的架構來支持分辨率不斷提高的圖像和視頻文件。 強烈需要將此體系結構設計和實現為異步模型。

經過一系列的研究和初始基準測試工作,CCC 確定 SageMaker 非常適合滿足他們的大部分生產要求,尤其是 SageMaker 為其大多數推理組件提供的保證正常運行時間。 Amazon SageMaker 異步推理終端節點在 Amazon S3 中保存輸入/輸出的默認功能簡化了保存從復雜集合生成的數據的任務。 此外,由於每個 AI 模型都由自己的端點託管,因此在模型或端點級別管理自動擴展策略變得更加容易。 通過簡化管理,潛在的成本節約優勢是開發團隊可以分配更多時間來微調擴展策略,以最大限度地減少計算資源的過度配置。

在決定繼續使用 SageMaker 作為架構的關鍵組件後,我們還意識到 SageMaker 可以成為更大架構的一部分,並輔以許多其他無服務器 AWS 託管服務。 需要這種選擇來促進這種複雜架構的高階編排和可觀察性需求。

首先,為了消除有效負載大小限制並大大降低高流量場景中的超時風險,CCC 實現了一種架構,該架構使用異步運行預測 SageMaker 異步推理端點 結合其他 AWS 託管服務作為核心構建塊。 此外,系統的用戶界面遵循即發即棄設計模式。 換句話說,一旦用戶將他們的輸入上傳到系統,就不需要再做任何事情了。 當預測可用時,他們將收到通知。 下圖說明了我們的異步事件驅動架構的高級概述。 在接下來的部分中,讓我們深入研究設計架構的執行流程。

分步解決方案

步驟 1

客戶端向 AWS API網關 端點。 請求的內容包含他們需要預測的 AI 服務的名稱和所需的通知方法。

這個請求被傳遞給一個 拉姆達 函數調用 新的預測, 其主要任務是:

  • 檢查客戶端請求的服務是否可用。
  • 為請求分配一個唯一的預測 ID。 用戶可以使用此預測 ID 在整個過程中檢查預測的狀態。
  • 產生一個 亞馬遜S3 用戶在下一步上傳預測請求的輸入內容時需要使用的預簽名 URL。
  • 創建一個條目 亞馬遜DynamoDB 與收到的請求的信息。

然後,Lambda 函數將通過 API 網關端點返迴響應,其中包含分配給請求的預測 ID 和 Amazon S3 預簽名 URL 的消息。

步驟 2

客戶端使用上一步中生成的預簽名 URL 將預測輸入內容安全地上傳到 S3 存儲桶。 輸入內容取決於 AI 服務,可以由圖像、表格數據或兩者的組合組成。

步驟 3

S3 存儲桶配置為在用戶上傳輸入內容時觸發事件。 此通知被發送到 Amazon SQS 隊列並由名為 流程輸入。 “ 流程輸入 Lambda 將從 DynamoDB 獲取與該預測 ID 相關的信息,以獲取要向其發出請求的服務的名稱。

該服務可以是單個 AI 模型,在這種情況下 流程輸入 Lambda 將向託管該模型的 SageMaker 端點發出請求(步驟 3-A),或者它可以是集成 AI 服務,在這種情況下 流程輸入 Lambda 將向託管集成邏輯的步驟函數的狀態機發出請求(步驟 3-B)。

在任一選項(單個 AI 模型或集成 AI 服務)中,當最終預測準備就緒時,它將存儲在適當的 S3 存儲桶中,調用者將通過步驟 1 中指定的方法收到通知(有關通知的更多詳細信息,請參見步驟4).

步驟 3-A

如果預測 ID 與單個 AI 模型相關聯,則 流程輸入 Lambda 將向為模型提供服務的 SageMaker 端點發出請求。 在此系統中,支持兩種類型的 SageMaker 端點:

  • 異步:“ 流程輸入 Lambda 向 SageMaker 異步端點發出請求。 即時響應包括 SageMaker 將保存預測輸出的 S3 位置。 此請求是異步的,遵循即發即棄模式,不會阻塞 Lambda 函數的執行流程。
  • 同步:“ 流程輸入 Lambda 向 SageMaker 同步終端節點發出請求。 由於它是一個同步請求,Process Input 等待響應,一旦獲得響應,它就會以 S​​ageMaker 異步端點的類似方式將其存儲在 S3 中。

在這兩種情況下(同步或異步端點),預測都以等效方式處理,將輸出存儲在 S3 存儲桶中。 當異步 SageMaker 終端節點完成預測時,將觸發 Amazon SNS 事件。 對於 Lambda 函數中具有附加邏輯的同步終端節點,也會復制此行為。

步驟 3-B

如果預測 ID 與 AI 集成相關聯,則 流程輸入 Lambda 將向與該 AI Ensemble 關聯的步驟函數發出請求。 如上所述,AI Ensemble 是一種基於一組 AI 模型的架構,這些模型協同工作以生成單個整體預測。 AI 集成的編排是通過階躍函數完成的。

階躍函數對包含集成的每個 AI 服務有一個階躍。 每個步驟都將調用一個 Lambda 函數,該函數將使用先前步驟的先前 AI 服務調用的輸出內容的不同組合來準備其相應的 AI 服務的輸入。 然後它調用每個 AI 服務,在這種情況下,可以是單個 AI 模型或另一個 AI 集合。

相同的 Lambda 函數,稱為 獲取轉換調用 用於處理 AI Ensemble 的中間預測的函數在整個步驟函數中使用,但每個步驟都有不同的輸入參數。 此輸入包括要調用的 AI 服務的名稱。 它還包括為指定的 AI 服務構造輸入的映射定義。 這是使用 Lambda 可以解碼的自定義語法完成的,總而言之,它是一個 JSON 字典,其中的值應該替換為之前 AI 預測的內容。 Lambda 將從 Amazon S3 下載這些先前的預測。

在每一步中, 獲取轉換調用 Lambda 從 Amazon S3 讀取構建指定 AI 服務的輸入所需的先前輸出。 然後它將調用 新預測 先前在步驟 1 中使用的 Lambda 代碼,並在請求負載中提供服務名稱、回調方法(“步驟函數”)和回調所需的令牌,然後將其保存在 DynamoDB 中作為新的預測記錄。 Lambda 還將該階段創建的輸入存儲在 S3 存儲桶中。 根據該階段是單個 AI 模型還是 AI 集成,Lambda 向 SageMaker 端點或管理作為父集成依賴項的 AI 集成的不同步驟函數發出請求。

發出請求後,step 函數會進入掛起狀態,直到它收到指示它可以進入下一階段的回調令牌。 發送回調令牌的操作由調用的 Lambda 函數執行 通知 (步驟 4 中有更多詳細信息)中間預測準備就緒時。 對階躍函數中定義的每個階段重複此過程,直到最終預測準備就緒。

步驟 4

當預測準備就緒並存儲在 S3 存儲桶中時,將觸發 SNS 通知。 可以根據流程以不同方式觸發此事件:

  1. 當 SageMaker 異步終端節點完成預測時自動執行。
  2. 作為 step 函數的最後一步。
  3. By 流程輸入 or 獲取轉換調用 同步 SageMaker 端點返回預測時的 Lambda。

對於 B 和 C,我們創建類似於 A 自動發送的 SNS 消息。

一個名為 notifications 的 Lambda 函數訂閱了這個 SNS 主題。 通知 Lambda 將從 DynamoDB 獲取與預測 ID 相關的信息,將狀態值的條目更新為“已完成”或“錯誤”,並根據保存在數據庫記錄中的回調模式執行必要的操作。

如果此預測是 AI 集成的中間預測,如步驟 3-B 中所述,則與此預測關聯的回調模式將是“階躍函數”,並且數據庫記錄將具有與特定步驟關聯的回調標記步函數。 通知 Lambda 將使用“SendTaskSuccess”或“SendTaskFailure”方法調用 AWS Step Functions API。 這將允許 step 函數繼續下一步或退出。

如果預測是 step 函數的最終輸出,回調方式是“Webhook”[或電子郵件、消息代理(Kafka)等],那麼通知 Lambda 將以指定的方式通知客戶端。 在任何時候,用戶都可以請求他們預測的狀態。 請求必須包含在步驟 1 中分配的預測 ID,並指向 API 網關中的正確 URL,以將請求路由到調用的 Lambda 函數 結果.

結果 Lambda 將向 DynamoDB 發出請求,獲取請求的狀態並將信息返回給用戶。 如果預測的狀態是 error,然後有關失敗的相關詳細信息將包含在響應中。 如果預測狀態是 成功, 將返回一個 S3 預簽名 URL 供用戶下載預測內容。

結果

初步的性能測試結果很有希望,支持 CCC 擴展這種新部署架構的實施。

值得注意的觀察:

  • 測試揭示了在高流量場景中以高吞吐量和 0% 故障率處理批處理或併發請求的能力。
  • 消息隊列在請求突然湧入期間在系統內提供穩定性,直到擴展觸發器可以提供額外的計算資源。 當流量增加 3 倍時,平均請求延遲僅增加了 5%。
  • 由於各種系統組件之間的通信開銷,穩定性的代價是延遲增加。 當用戶流量高於基準閾值時,如果性能比成本更重要,則可以通過提供更多計算資源來部分緩解增加的延遲。
  • SageMaker 的異步推理端點允許將實例計數縮放為零,同時保持端點處於活動狀態以接收請求。 此功能使部署能夠在不產生計算成本的情況下繼續運行,並在兩種情況下需要時從零擴展:在較低測試環境中使用的服務部署和那些具有最小流量而不需要立即處理的服務部署。

結論

正如在 POC 過程中觀察到的那樣,由 CCC 和 AWS 共同創建的創新設計為使用 Amazon SageMaker 和其他 AWS 託管服務來有效無縫地託管複雜的多模式 AI 集成和編排推理管道提供了堅實的基礎。 通過利用 Amazon SageMaker 的開箱即用功能(如異步推理),CCC 有更多機會專注於專業的關鍵業務任務。 本著 CCC 研究驅動型文化的精神,隨著 CCC 與 AWS 一起引領前進的道路,這種新穎的架構將繼續發展,為客戶釋放強大的新人工智能解決方案。

有關如何創建、調用和監控異步推理端點的詳細步驟,請參閱 文檔,其中還包含一個 樣本筆記本 幫助您入門。 有關定價信息,請訪問 Amazon SageMaker定價.

有關使用計算機視覺和自然語言處理 (NLP) 等非結構化數據進行異步推理的示例,請參閱 使用 Amazon SageMaker 異步端點對大型視頻運行計算機視覺推理 和 使用 Hugging Face 和 Amazon SageMaker 異步推理端點改進高價值研究分別。


關於作者

克里斯托弗·迪亞茲 是 CCC Intelligent Solutions 的首席研發工程師。 作為研發團隊的一員,他參與了各種項目,包括 ETL 工具、後端 Web 開發、與研究人員合作在分佈式系統上訓練 AI 模型,以及促進研究和運營團隊之間新 AI 服務的交付。 他最近的重點是研究雲工具解決方案,以增強公司 AI 模型開發生命週期的各個方面。 在業餘時間,他喜歡在他的家鄉芝加哥嘗試新餐廳,並收集盡可能多的樂高積木套裝。 Christopher 在東北伊利諾伊大學獲得了計算機科學學士學位。

艾美獎得主 山姆·金納德 是 CCC Intelligent Solutions 的軟件工程高級經理。 他居住在得克薩斯州奧斯汀,與 AI Runtime Team 爭論不休,該團隊負責以高可用性和大規模方式為 CCC 的 AI 產品提供服務。 在業餘時間,Sam 喜歡被剝奪睡眠,因為他有兩個可愛的孩子。 Sam 擁有德克薩斯大學奧斯汀分校的計算機科學學士學位和數學學士學位。

海梅·伊達爾戈 是 CCC Intelligent Solutions 的高級系統工程師。 在加入 AI 研究團隊之前,他領導了公司向微服務架構的全球遷移,設計、構建和自動化 AWS 中的基礎設施,以支持雲產品和服務的部署。 目前,他構建並支持為 AI 培訓構建的本地數據中心集群,並為公司未來的 AI 研究和部署設計和構建雲解決方案。

丹尼爾·蘇亞雷斯 是 CCC Intelligent Solutions 的數據科學工程師。 作為 AI 工程團隊的成員,他致力於 AI 模型在指標的生產、評估和監控以及 ML 操作的其他方面的自動化和準備工作。 Daniel 在伊利諾伊理工學院獲得計算機科學碩士學位,在馬德里理工大學獲得電信工程碩士和學士學位。

阿倫普拉薩特·香卡(Arunprasath Shankar) 是 AWS 的高級 AI/ML 專家解決方案架構師,幫助全球客戶在雲中有效且高效地擴展他們的 AI 解決方案。 在業餘時間,Arun 喜歡看科幻電影和聽古典音樂。

賈斯汀·麥克沃特 是 AWS 的解決方案架構師經理。 他與一支由出色的解決方案架構師組成的團隊合作,幫助客戶在採用 AWS 平台的同時獲得積極的體驗。 不工作時,賈斯汀喜歡和他的兩個兒子一起玩電子遊戲、打冰球和開著他的吉普車越野。

現貨圖片

VC咖啡館

生命科學創投

最新情報

現貨圖片