Leo Yeh's Blog

SAS Viya (107)

教學目標

初步了解 SAS Micro Analytic Service (MAS) 的基本概念。

重點概念

首先 SAS Micro Analytic Service (MAS) 主要是一種在記憶體中高效能執行分析程式的服務,同時提供 DS2 和 Python 程式託管,而且支持一次編譯和多次執行使用模式,並且具有多執行緒的功能以利實現高可用性,以及其能夠同時託管彼此隔離的多個程序、多個使用者或多個業務情境。此外 SAS Micro Analytic Service 包括用 C 語言編寫的高效能核心引擎,當作為 SAS 事件串流分析處理的一部份進行部署時獲得最佳效能。

接著將分析模型轉換為容器是一個非常漫長的過程,但是使用者能夠透過 SAS Model Manager 很輕鬆的發佈模型至 SAS Micro Analytic Service (MAS) 中,並且進行評分,此外 SAS Micro Analytic Services 除了主要支援 DS2 程式語言之外,更支援 Python 程式語言,並且能夠使用自定義函數和任何第三方套件。至於運作流程主要是該模型儲存在 SAS 模型儲存庫中,透過 Python 程式將 Zip 壓縮檔從模型儲存庫建模至伺服器中,然後基於關聯模型產生模型 Docker 容器映像檔,主要有基於 MAS 進行模型評分的映像檔,以及基於 Python 進行模型評分的映像檔,並且標記不同的版本之後,就能夠自動將容器映像檔推送至正式環境 Docker 容器儲存庫中,以利正式環境取得正確版本的 Docker 容器儲存庫進行模型評分,以及模型評分的結果,則能夠透過 Python 的 Flask 建立 REST API 伺服器回傳結果。

再來 Python 程式也能夠發佈至 SAS Micro Analytic Service (MAS) 中,但是我們需要遵循模型撰寫函數的設計標準,像是輸入參數在函數的參數列表中被賦予,函數中的 return 語句的變數和表達式相對於輸出變數,請注意輸出變數必須列在函數的 “Output:” 字串中,該字串在函數的第一個語句中指定,任何包含 “Output:” 字串的方法都被視為公用方法,否則就會被認為是私有方法,以及輸入和輸出參數名存在於單個名稱空間中,因此不能相同。此外在 MAS 中僅能夠執行的 DS2 程式語言,所以我們透過透過 DS2 程式語言執行 Python 函數,此時必須啟用支援 PyMAS 套件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pandas
import pickle
def scoreMNLogitModel (CLAGE, CLNO, DEBTINC, NINQ):
"Output: I_BAD"
# Open a read-only binary file for reading the pickle object
_pFile = open('C:\\MyJob\\SGF\\2019\\MNLogit_Model1.pickle', 'rb')
# Unpickle the file to recover the model specification and estimates
_thisModelFit = pickle.load(_pFile)
# Close the binary file
_pFile.close()
# Construct the input array for scoring
# the first term is for the Intercept
input_array = pandas.DataFrame([[1.0, DEBTINC, NINQ, CLAGE, CLNO]],
columns = ['const', 'DEBTINC', 'NINQ', 'CLAGE', 'CLNO'])
# Calculate the predicted probabilities return data frame predProb
_predProb = _thisModelFit.predict(input_array)
# Determine the predicted target category
I_BAD = pandas.to_numeric(_predProb.idxmax(axis = 1))
return(I_BAD)

最後在模型評分容器中基本上會有透過 Python 執行 Flask 的網站應用程式伺服器,其接收傳入的 API 請求之後,就會透過 SAS Micro Analytic Service (MAS) 將其發佈成 ASTORE 二進位檔案進行模型評分,透過使用 MAS 將能夠進實現非常低延遲的模型評分,因此若我們採用基於 MAS 進行模型評分的映像檔將會比較基於 Python 進行模型評分的映像檔的優勢在於非常低延遲的優勢,但是缺點則是需要遵循模型撰寫函數的設計標準撰寫 Python 程式語言,並且透過 DS2 程式語言進行整合。

相關資源

⬅️ Go back