彙整

SAS Viya (99)

教學目標

初步了解 SAS DLPy 建立分析模型 ASTORE 分析儲存檔的基本概念。

重點概念

首先 SAS 提供了一個人工智慧的平台,能夠讓企業中的所有使用者透過該平台從資料中建立人工智慧的分析應用,而數據科學家和開發人員的皆能夠繼續使用所熟悉的 Python 程式語言建立機器學習的分析模型,其中 SAS DLPy 就是針對 SAS Viya 人工智慧平台所建立的 Python API,其主要提供了一種方法應用深度學習功能來解決電腦視覺,自然語言處理,語音處理和預測等問題,而如果我們是 Keras 和 Caffe 建模者將會發現 DLPy 的介面很熟悉,以及如果我們不熟悉 SAS CAS 程式碼,但是熟悉 Python,則就能夠非常直觀以 DLPy 介面執行 Keras 程式碼,只需進行少量程式碼修改即可,至於 DLPy 主要能夠讓我們在 SAS CAS 環境中存取 SAS 深度學習操作,而無需撰寫 SAS CAS 程式碼,此外我們僅需要透過以下指令安裝 SWAT 和 DLPy 的 Python 套件就能夠開始使用。

接著 SAS DLPy 目前已經支持越來越多的深度學習模型架構,我們能夠使用 DLPy 來使用許多包含的預建模型,像是 LeNet 、 VGG 、 ResNet 、 DenseNet、 DarkNet 、Inception 、 Yolo 、… 等深度學習模型架構,其中許多預先建立的模型包括與每種模型類型相關的資料類型的預訓練的權重,在許多情況下,我們可以修改其中一個範例模型以建立自行定義模型,以利滿足更進階的分析需求。

再來要如何開始進行 DLPy 的實作,我們能夠參考官方文件中詳細的教學步驟,教學內容主要為建立圖片處理的分析模型,一開始我們會先設定 DLPy 的執行環境,主要有五個步驟,分別為:

  1. 載入相關函式庫。
  2. 啟動 CAS 會話。
  3. 載入圖片。
  4. 驗證圖片。
  5. 處理圖片。

其中針對處理圖片我們主要會調整圖片的大小,將圖片拆分為訓練資料和測試資料、查看訓練和測試資料的圖片分佈,以及增強訓練資料等過程,當處理圖片完成之後,我們就能夠開始建立不同深度學習的分析模型,主要有五個步驟,分別為:

  1. 建立簡單的 CNN 模型。
  2. 使用增強訓練資料進行訓練。
  3. 總結訓練網路相關處理資訊。
  4. 針對輸入圖片進行評分。
  5. 將分析模型儲存為 ASTORE 分析儲存檔。

最後當我們透過 Jupyter Notebook 以 Python 程式語言中 DLPy 套件產生分析模型的 ASTORE 分析儲存檔,就能夠部署至 SAS Event Stream Processing 中進行串流分析。所謂 ASTORE 分析儲存檔主要為用於評分模型的二進位檔案,並且搭配 SAS Event Stream Processing 將圖片先載入記憶體中,同時在記憶體中進行串流分析的技術,此時我們就能夠以最即時的方式針對影像進行識別的串流分析。

相關資源

SAS Viya (98)

教學目標

初步了解 SAS Event Stream Processing 串流分析的基本概念。

重點概念

首先 SAS Event Stream Processing 能夠在事件流處理專案中使用進階分析的演算法和機器學習技術,我們稱為串流分析 (Streaming Analytics),並且透過串流分析將能夠讓我們利用來自物聯網 (IoT) 的資料解決所面臨的問題,至於串流分析主要分為十大類,分別為:

  1. 在線評分 (Online Scoring)
  2. 時間序列處理 (Time Series Processing)
  3. 影像處理 (Image Processing)
  4. 文字探勘 (Text Mining)
  5. 推薦系統 (Recommender System)
  6. 描述演算法 (Descriptive Algorithms)
  7. 串流回歸 (Streaming Regression)
  8. 串流分類 (Streaming Classification)
  9. 串流降維 (Streaming Dimensionality Reduction)
  10. 串流分群 (Streaming Clustering)

其中在 SAS Event Stream Processing 中已經有內建許多演算法的在線模型,以利在事件串流處理專案中使用,此外 SAS Event Stream Processing 更支持不同演算法的離線模型,以及在線模型或離線模型的推薦系統,當然也支援 Caffe 、 TensorFlow 、 Python 、 C 、 … 等開放源始碼所建立的分析模型應用於串流資料分析。

接著為何要選擇串流分析呢?一般來說,我們會針對影片、圖片、語音、訊息、… 等非結構化的串流資料進行串流分析,並且透過 SAS Event Stream Processing 我們將能夠進行邊綠和雲端多個階段分析,而當我們自動化透過機器學習模型進行串流分析時,也就是所謂人工智慧的應用。

再來我們要如何使用 SAS Event Stream Processing 將模型部署到串流環境中,主要三種方法,分別為:

  1. 在線方法:主要整合模型至專案中,透過打包進行部署。
  2. 離線方法:主要離線訓練建立模型,透過設定進行部署。
  3. 儲存庫方法:主要基於 SAS Model Manager 儲存庫進行部署。

然而當我們進行串流分析的部署時,則將會面臨治理的挑戰,主要有部署稽核和模型再訓練稽核,此時面對部署稽核的挑戰,我們主要能夠透過工作流程了解為什麼,以及面對模型再訓練稽核的挑戰,我們主要需要自我稽核快速進行更新。

最後當我們將串流分析應用於物聯網分析時,則其分析生命週期主要獲取來自傳感器的資料量巨大,而且大部分皆沒用,此時需要過濾來評估資料,並且僅儲存將提供價值的內容,以及在模型建立的過程中,與訓練事件和其他事件相關的資料需要事件來有效預測未來事件,一旦完成且在模型部署之後,我們就能夠自動化學習和改進串流分析模型的分析成效。

相關資源

SAS 系統管理 (110)

教學目標

初步了解在 Windows Server 作業系統中更新 SAS 授權檔的基本概念。

相關資源

首先 SAS 管理員每年有一次最重要的工作就是更新 SAS 授權碼,我們除了需要透過 SAS Deployment Manager 工具選擇「更新 SAS 軟體」選項來更新 SAS Foundation 的授權碼,以及更需要透過 SAS Deployment Manager 工具選擇「更新中繼資料中 SID 檔案」選項來更新中繼資料中的授權資訊,將授權資訊儲存在中繼資料中,以利中間層的網站應用程式能夠存取授權資訊之後檢查授權檔是否有效,此外並非所有解決方案皆要求將 SAS 授權檔儲存在中繼資料中,至於有哪些解決方案需要更新呢?請參考 SAS Note 官方文件

接著如果我們要檢查 SAS Foundation 授權的狀態,則我們能夠開啟 SAS Enterprise Guide 工具登入一般使用者帳號執行 SAS 程式碼「PROC SETINIT;RUN;」,在 SAS 日誌中返回 SAS 授權檔的詳細資訊,其中會有到期日 (Expiration Date)、寬限期 (Grace Period) 和警告期 (Warning Period),所謂到期日主要代表該軟體將於何時到期,但在寬限期內不會發生任何事情,而在警告期間,SAS 日誌中的資訊將會警告使用者軟體即將過期,當警告期結束時,SAS 軟體將會停止運作,「PROC SETINIT;RUN;」僅檢查 SAS Foundation 授權的狀態,而不是中繼資料中的授權檔資訊。

再來如果我們要檢查 SAS 中繼資料伺服器中的授權檔資訊,則我們能夠開啟 SAS Management Console 工具登入管理員帳號選擇查看中繼資料應用程式中查看 setinit 詳細資訊。請注意如果 SAS Foundation 授權已經更新,但是儲存在中繼資料中的授權已經過期,則網站應用程式將會無法正常登入執行,請注意若是有拆分多台 SAS App 應用程式伺服器,則必須要將所有 SAS App 應用程式伺服器的個別授權檔皆儲存至中繼資料伺服器中,再重新啟動 SAS 所有服務,才能夠確保 SAS 所有服務皆已經存取正確的授權檔資訊。

最後 SAS 9 平台僅有特定網站應用程式,像是 SAS Visual Analaytics 網站應用程式才能夠設定授權碼到期前的通知信,但是無法設定到期前幾天,或者僅能夠透過 SAS Environment Manager 設定授權碼到期幾天之前的通知信,但是不建議使用 SAS Environment Manager,因為會有資安弱掃和系統效能的問題。至於其它解決方案通常需要管理員定期查看 SAS Foundation 中的 SAS 授權碼資訊,此時對於企業客戶來說將會造成維運上的困擾,所以若是真有需要設定授權碼到期前幾個月發送通知信,則能夠撰寫以下可參考的 Powershell 腳本指令,並且將此腳本指令設定至 Windows 工作排程器中,並且請注意執行的使用者權限必須有相關資料夾的存取權限,此外此篇文章僅提供可參考的客製化程式碼,如果要部署至企業環境中,則需要有專業顧問提供客製化修改和調整的服務。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"PROC SETINIT;RUN;" | ac "<SAS Config>\Utilities\setinit.sas"
$notification_month = <N>
$log_path = "<SAS Config>\Utilities\setinit.log"
$code_path = "<SAS Config>\Utilities\setinit.sas"
$smtp_server = "<SMTP Server>"
$smtp_from = "<Email Sender>"
$smtp_to = "<Email Receiver>"
$smtp_subject="<Email Subject>"
$smtp_body="<Email Body>"
.\sas.exe -sysin $code_path -log $log_path
$expiration = select-string -Path $log_path -Pattern Expiration | select line | ft -hidetableheaders | Out-String
$expiration = $expiration.substring(16, 9)
$expiration
$expiration_date = [datetime]::parseexact($expiration, 'ddMMMyyyy', $null)
$expiration_date
$current_date = (get-date)
if($current_date.AddMonths($notification_month) -gt $expiration_date ){
Send-MailMessage -SmtpServer $smtp_server -From $smtp_from-To $smtp_to -Subject $smtp_subject -Body $smtp_body
}

相關資源

SAS 人工智慧 (1)

教學目標

初步了解 SAS Viya 人工智慧平台的基本概念。

重點概念

首先人工智慧一詞指的是透過學習和自動化,訓練系統擬擬人類工作的科學,而 SAS 主要能夠提供企業客戶部署人工智慧平台,將能夠以自動化流程管理任何已開發的機器學習模型,不論是 Python、R 或 SAS 所開發的機器學習模型皆能夠在 SAS Viya 人工智慧平台端至端的自動化部署和維運管理。SAS 創辦人 Jim Goodnight 曾說:「多年來,AI 一直是 SAS 軟體不可或缺的一部分。現在,我們協助每個產業中的客戶充分善用 AI 技術的進展;我們也會繼續在 SAS 產品組合的各種解決方案中,內建機器學習和深度學習等 AI 技術。」,並且在 2019 年 SAS 除了基於對於數據科學家使用者非常重要的解決方案 SAS Visual Data Mining and Machine Learning 和 SAS Enterprise Miner,皆為使使用者提供解決複雜分析問題的能力,從而推動了更好的決策,而連續被評為 Gartner 資料科學和機器學習平台的領導者,所謂機器學習是現代數據科學家工具箱中的一個重要工具,其允許企業組織快速識別出商業機會,同時也避免人類不會注意到的風險。此外 SAS 更基於視覺的完整性和執行能力,而連續被評為 Gartner 資料品質工具魔力像限的領導者,當企業需要成功的進行數位轉型和導入工智慧專案計劃的基礎就會需要高品量的資料,企業需要信任其分析流程所提供資料,並且實施資料治理政策,以利實現更快的實現價值,至於 SAS 則將資料品質建立至任何解決方案的各個方面,以利讓企業透過 SAS 建立可重複的流程來構建和維護高品量的資料,並且更進一步輕鬆地做出最適當的商業決策。

接著人工智慧的核心主要是如何透過機器學習從非常複雜的資料中獲得理解的邏輯和理由,簡單地說,機器透過識別模式和關係從中讓資料進行學習,同時擷取大量資訊,提取關鍵特徵,並且確定分析方法,撰寫程式碼來執行分析,以利產生輸出,更重要的是全部過程理應將會在單一人工智慧平台上自動化完成,而 SAS 對於人工智慧主要提供四大技術,分別為:

  1. 機器學習:主要透過機器學習與深度學習技術可找出資料中隱藏的深入洞察,不需明確指示如何進行搜尋或得出結論,同時透遇直覺式機器學習工具,可提供更理想的建議,協助制定出更快速和更明智的決策。
  2. 自然語言處理:主要透過自然語言處理技術讓人類與機器之間能夠相互了解、進行互動和溝通,並且從大量的結構化和非結構化內容,自動擷取關鍵的業務洞察和新興的趨勢。
  3. 電腦視覺:主要透過電腦視覺技術分析和解讀圖像或影片中的內容,並且協助我們使用簡單的工具,來進行串流影像處理、影像辨識和物體偵測,進而加速智慧自動化。
  4. 預測與最佳化:主要透過預測技術將能夠協助我們預測未來的結果,以及最佳化技術可讓我們在資源的限制之下,採取能夠獲取最佳結果的行動,SAS 支援所有階段的預測與最佳化工作流程,可進行大規模的自動化作業,來預測結果和制定最佳決策。

雖然許多企業已經許多的商業分析師、資料工程師、資料科學家、機器學習專家建立機器學習、自然語言處理、電腦視覺和預測與最佳化的模型,但是所有模型皆可被解釋和可被信任嗎?這些應用於人工智慧的模型如同一個黑箱,我們輸入資料並且得出結果,但是不知道輸入和輸出之間的關聯,這將會是一項最根本的挑戰,將會攸關法規遵循乃至於客戶體驗等一切層面,甚至會影響我們檢驗模型偏差的方式,此時 SAS 人工智慧平台就能夠提供企業客戶模型對於輸入項的變數有何回應,並且據此調整、釐清黑箱內部的運作,像是 Partial Dependence (PD)、Individual Conditional Expectation (ICE) 以及 Local Interpretable Model-Agnostic Explanations (LIME) 等模型解釋的技術,以利企業客戶針對現有已開發模型逐步改善為透明、可解釋和可信任的模型。

再來不同的產業中的企業要如何應用人工智慧技術使用資料來解決問題呢?我們先將產業定義為常見的五大產業,並且針對不同產業可能需要解決的商業問題,分別為:

  1. 金融:理財機器人推薦符合客戶需求的理財建議、詐欺偵測、信用評估、風險市場分析、… 等。
  2. 政府:智慧城市現代化管理地方資源、傳感器整合、臉部識別、水資源管理、食物安全、… 等。
  3. 製造:生產線即時監控自動檢測瑕疵、提供回饋供應鏈優化、自動化流程控制、預測性維護、… 等。
  4. 零售:了解客戶以利進行個人化推薦商品、改進的聊天機器人功能、… 等。
  5. 醫療:處理過去案例說明以利推估預測診斷和改善患者護理的時間、生物醫學影像辨識、健康監測、… 等。

然而當不同產業的企業採用人工智慧技術解決商業問題之後,絕大多數的企業主要會預期有更精確的預測和決策、提升客戶的開發成效和提高組織生產力。此外 SAS 更鼓勵以有意義的方式使用資料來解決有關貧困,健康,人權,教育和環境的人道主義問題,從預防危及生命的疾病到保護瀕危物種再到自然災害後重建,全球各組織正在利用數據發揮作用。為社會利益應用數據已經為解決全球問題帶來了新的創造性方法,像是與 WildTrack 合作藉由分析動物的足跡,來找出和監控瀕危物種,發掘世界各地群眾外包所提供的足跡資料,以利協助找到全球保育問題的答案。

最後如果企業要部署端至端的人工智慧平台,則更需要整合開發、探索和決策的自動化部署,開發人員和資訊人員之間必須要有凝聚力,以利以確保模型能夠即時投入正式環境,如果不能投入正式環境運作,那麼人工智慧的模型就沒有價值,此外如果業務單位需要資訊單位協助部署 SAS Viya 人工智慧平台時,則資訊單位能夠支援的最佳實務是什麼呢?其中主要有五大項,分別為:

  1. 促進流程:建立穩建流程,定義審核人工智慧技術的產出結果,建立開放且敏捷的人工智慧平台。
  2. 注重道德:了解違反人工智慧使用倫理規範所沙及的風險,必須為人工智慧技術的產出結果負責。
  3. 關聯分析:資料導向分析流程的成熟程度將會是影響推動人工智慧的學習和自動化的關鍵。
  4. 建立信任:不要使用黑箱的模型技術,並且能夠以符合倫理的方式使用人工智慧。
  5. 參與監督:確保人工智慧的模型技術透明和可解釋性,並且定義審查人工智慧的產出結果和複雜的商業流程,尤其在可能發生多種意外事件和潛在故障點的領域。

總結 SAS 主要能夠提供企業客戶部署人工智慧平台,將能夠以自動化流程管理任何已開發的機器學習模型,不論是 Python、R 或 SAS 所開發的機器學習模型皆能夠在 SAS Viya 人工智慧平台端至端的自動化部署和維運管理,以利不同產業的企業客戶在 SAS Viya 人工智慧平台上建立適當的解決方案,以利解決商業、貧困,健康,人權,教育和環境的人道主義等關鍵問題,至於目前已經有哪些採用 SAS Viya 人工智慧平台的客戶案例,請參考官方網站的人工智慧主題相關案例的介紹。

相關資源

SAS Viya (97)

教學目標

初步了解 SAS Event Stream Processing 故障轉移的基本概念。

重點概念

首先 SAS Event Stream Processing 容器化部署目前版本還無法對於有狀態的相關服務進行完整的故障移轉實作,但是對於無狀態的相關服務我們主要能夠針對輸入和輸出的發布和訂閱連接器進行故障轉移機制整合實作。所謂事件觸發故障轉移 (Failover) 主要會發生在某些特定情況下,分別為存在硬體故障,以及伺服器上的處理程序失敗,並且導致伺服器停止執行,此時在故障轉移期間主要有兩種方法可以更新模型,分別為動態模型替換和完整模型替換。使用新模型更新每個伺服器之後,我們就能夠可以重新啟動故障轉移叢集,如果故障轉移叢集可以從 Message Bus 恢復模型的狀態,則就能夠使用新模型停止並啟動每個伺服器,如果故障轉移叢集無法恢復引擎狀態,則必須停止模型中發佈者和訂閱者的所有實例,並且當我們需要實施故障轉移時,請注意必需滿足軟體元件和硬體元件的要求。

接著所謂軟體元件的要求主要是以 Solace、Tervela、RabbitMQ 或 Kafka 發布和訂閱連接器進行實作,訂閱連接器必須設定熱故障轉移 (Hot Failover),對於客戶端發布者和訂閱者應用程式皆必須使用隨 SAS Event Stream Processing 所提供對應的發佈和訂閱 API,其中針對不同程式語言將會有不同的實作方式,分別為:

  1. 對於 C 或 C++ 應用程式主要是透過在呼叫 C_dfESPpubsubInit() 之前呼叫 C_dfESPpubsubSetPubsubLib() 來請求對應的傳輸選項。
  2. 對於 Python 應用程式主要是透過在呼叫 init() 之前呼叫 SetPubsubLib() 來請求對應的傳輸選項。
  3. 對於 Java 應用程式主要是透過加入 dfx-esp-solace-api.jar、dfx-esp-tervela-api.jar、dfx-esp-rabbitmq-api.jar 或 dfx-esp-kafka-api.jar 在加入 dfx-esp-api.jar 前面呼叫對應的傳輸選項。

請注意我們必須在承載連接器和客戶端執行實例的平台上安裝 Solace、Tervela、RabbitMQ 或 Kafka 相關的函式庫,此外 SAS Event Stream Processing 不提供任何設備標準 API 函式庫,所以在執行環境時必須定義這些函式庫的路徑,像是在 Linux 平台上使用 LD_LIBRARY_PATH 設定函式庫路徑。

再來所謂硬體元件的要求則必須以冗餘方式安裝消息總線,以避免單點故障,通常基於軟體的 Message Bus 通常需要三個或更多伺服器來實現冗餘,基於冗餘的角度考慮,應該在主要和備援伺服器傳輸 heartbeat 控制訊息,這樣才能夠避免在一個網路故障或線纜故障時導致兩個節點同時認為自已是唯一處於活動狀態的伺服器,導致出現爭用資源的情況,這種爭用資源的情境就是所謂的腦裂 (split-brain),當兩個節點共享同一個物理設備資源的情況下,將會產生相當可怕的後果,所以為了避免出現腦裂,可採用在主要和備份的節點間建立一個冗餘的、可靠的物理連接來同時傳送控制信息,一旦發生腦裂時,就能夠藉助額外設備強制性地關閉其中一個節點。

最後基於軟體的消息總線可能與兩個或多個冗餘 ESP 伺服器集合在一起,並且也可能不在同一位置,此外我們需要特別注意如果滿足以下條件,評估 SAS Event Stream Processing 是否為容器化部署就已經無關緊要,反之若無法滿足以下條件才需要評估 SAS Event Stream Processing 是否需要容器化部署,分別為:

  1. ESP 伺服器和 Message Bus 之間的 IP 連接始終保持不變。
  2. 實體機器或虛擬機器的 CPU 核心和記憶體大小適當,將能處理最大的 ESP 伺服器和 Message Bus 負載,這也代表著所有伺服器的大小都相同,其中任何一個都必須能夠處理完整的 ESP 伺服器和 Message Bus 負載,即使只是在伺服器故障之後暫時處理。

總結目前針對 SAS Event Stream Processing 的故障排除機制主要是針對輸入和輸出的發布和訂閱連接器進行 Failover 機制整合實作,雖然 SAS Event Stream Processing 有提供 Cluster Manager 能夠將來自邊緣設備的來源對應至網格或雲端中設定的事件串流處理引擎,並且透過管理連接器和引擎實例之間的對應,將有助於彈性部署 SAS Event Stream Processing 並且簡化大規模部署,但是需要特別注意若已經在 SAS Event Stream Processing 引擎的記憶體中處理有狀態服務的資訊目前還是無法進行故障移轉,所以當我們在設計和實作 SAS Event Stream Processing 故障排除機制時,需要先了解是否存在有狀態服務,以利進行設計和實作的完整評估和測試。

相關資源