
HyperFinity 如何透過 Snowflake 的 Snowpark for Python 簡化其無伺服器架構
HyperFinity 是一個決策科學 SaaS 平臺。 透過機器學習和人工智慧、嵌入式分析和資料視覺化,HyperFinity 使非技術使用者能夠做出資料驅動的決策並建立簡單的輸出,從而為下游系統(如 CRM、ERP 或內容管理系統)提供支援。 這使組織能夠在多個領域快速做出機器學習驅動的決策,從更智慧的供應鏈到最佳化的定價。
Snowflake 位於 HyperFinity 資料密集型平臺的核心。 除了對半結構化資料的變體資料型別等廣泛的資料型別支援外,Snowflake REST API 和零複製克隆等其他功能也是平臺無伺服器架構中的寶貴工具。 Snowflake 的安全資料共享還簡化了 ELT 流程,並簡化了 HyperFinity 平臺及其輸出與已在使用 Snowflake 的客戶的整合。
挑戰:針對不同程式語言的獨立基礎設施
雖然 HyperFinity 的平臺旨在讓非技術使用者只需單擊按鈕即可輕鬆應用機器學習和人工智慧,但所需的資料處理的所有功能均由以資料科學為中心團隊開發,該團隊的主要編碼語言是 SQL 和 Python。 Snowflake 處理了我們所有的 SQL 開發和處理,但是為了為我們的 Python 程式碼構建無伺服器計算引擎,我們的團隊必須在 AWS 上設定一組新的雲基礎設施,這需要將多個計算服務(如 Amazon EC2 和 AWS Lambda)拼接在一起。 這有幾個缺點,例如必須將資料移出 Snowflake 的治理邊界進行處理、維護額外的基礎設施以及編寫額外的程式碼來處理服務之間變化的資料結構。
當我們看到 Snowpark 的 Python 支援 宣佈 時,我們對它將為我們帶來的可能性感到非常興奮,並且我們很幸運能夠參與到私人預覽中。
透過 Snowpark for Python 簡化我們的架構
Python 的優點之一是其豐富的開源軟體包和庫生態系統,我們廣泛使用這些軟體包和庫。 例如,該平臺的核心部分是為產品組建立“客戶需求狀態”。 這使用一種稱為分層聚類的技術來建立客戶決策樹,該樹表示個人為購買他們購買的產品所做的選擇。 計算這些需求狀態需要矩陣和陣列乘法,我們的團隊使用 Python 庫 numpy 和 scipy 在 Snowpark 中利用這些庫。 透過使用 Snowpark,這種型別的計算在 Snowflake 中更容易開發和實施。
以前用於 Python 處理的雲基礎設施已被簡單的 Snowpark 程式碼取代
由於 Snowpark for Python 環境透過 Snowflake 與 Anaconda 的合作預裝了 1,000 多個 庫,因此我們可以輕鬆地以最小的努力移動現有函式。 擁有最常用的庫消除了開發過程中的另一個管理層,並且透過整合的 conda 軟體包管理器,無需擔心依賴管理。 如果我們需要自定義庫,Snowflake 支援上傳和匯入 自定義 Python 程式碼 的功能。
我們還能夠以以前需要在多個工具之間來回傳送資料的方式將 SQL 和 Python 邏輯混合在一起,並且我們的團隊還能夠透過並行處理來提高效能。 透過使用這種 SQL 和 Python 的混合,我們可以在 SQL 的多個行上併發執行用 Python 編寫的邏輯,從而將以前的迴圈操作轉變為並行程序。 例如,以五種不同深度執行我們的聚類解決方案與以一種深度執行所花費的時間相同。
“Snowpark 使我們能夠在加速開發的同時降低與資料移動和為 SQL 和 Python 執行單獨環境相關的成本。”
在 Snowflake 中作為 SQL 語句的一部分執行 Python 函式,包括並行處理
將我們的 Python 程序轉移到 Snowpark 消除了我們架構中不必要的複雜性,並透過刪除處理服務之間變化的資料結構的所有額外程式碼簡化了我們的開發。 現在,我們的團隊可以在儲存資料的同一環境中開發、測試和部署他們的 Python 程式碼,從而利用 Snowflake 平臺的強大功能,並使用他們首選的開發語言。
HyperFinity 是一款旨在透過強大的資料科學和高階分析技術簡化決策的軟體。 Snowflake,現在還有 Snowpark,是 HyperFinity 架構的主要組成部分,我們對 Snowflake 為軟體帶來的效能和穩定性以及 Snowflake 正在釋出的新功能(使其使用起來更加強大)感到非常滿意。
作為一家初創公司,在 Snowflake 之上構建我們的應用程式簡化了我們的基礎設施和開發過程,並加速了軟體進入市場的道路。