Leo Yeh's Blog

SAS Viya (132)

教學目標

初步了解在 SAS Model Manager 中設定使用者定義屬性的基本概念。

重點概念

首先在 SAS Viya 分析平台中有提供模型儲存庫 (Model Repository),我們能夠使用模型存儲庫來分隔專案和模型內容,並且為模型儲存庫內的物件設定適當權限,以及 Model Repository API 主要提供在通用模型儲存庫中註冊、組織和管理模型,其中 API 主要提供以下功能,分別為:

  1. 建立和匯入在專案或目錄中模型。
  2. 建立、更新和刪除模型儲存庫、專案和模型。
  3. 進行專案和模型的比較評估、版本控制和效能評分。

像是在 SAS Viya 分析平台中的 Model Studio 主要就是透過 Model Repository API 提交在通用模型儲存庫中註冊模型的請求。

接著每個專案和模型皆有屬性進行設定,專案屬性主要分為一般、標籤和使用者定義,模型屬性主要分為一般和使用者定義,並且我們更能夠開啟專案,選取需要比較的所有模型,然後按下「比較」鈕,此時我們除了能夠查看每個模型的模型屬性, 像是名稱、模型函數、位置、修改日期、修改者、發行日期和描述之外,更能夠查看使用者定義的屬性。當然除了顯示全部的功能之外,我們更能夠透過顯示差異的功能快速了解不同模型之間的差異之處,以利要針對相同專案中的模型進行管理。

再來我們能夠針對不同模型設定使用者定義的屬性客製化增加屬性,主要會能夠設定名稱、資料類型和值,其中資料類型包括字元、日期、日期時間和小數,像是我們能夠定義評估指標。並且當我們增加屬性值之後,將能夠透過 Python 整合應用程式取得模型屬性資訊和更新模型屬性資訊,在使用之前必須先查看模型一般屬性中的「UUID」為模型 UUID。

載入相關函式庫

1
import requests, json

取得存取憑證

1
2
3
4
5
6
7
username = '<SAS MM 使用者帳號>'
password = '<SAS MM 使用者密碼>'
base_url = 'http://<SAS Viya URL>'
url = base_url + '/SASLogon/oauth/token?grant_type=password&username=' + username + '&password=' + password
headers = {'Authorization': 'Basic c2FzLmVjOg=='}
r = requests.get(url, headers=headers)
access_token = json.loads(r.text)['access_token']

取得模型屬性資訊

1
2
3
4
5
modelId = '<模型 UUID>'
url = base_url + '/modelRepository/models/' + modelId
headers = {'Authorization': 'Bearer ' + access_token}
r = requests.get(url, headers=headers)
json_object = json.loads(r.text)

更新模型屬性資訊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 取得模型資訊
modelId = '<模型 UUID>'
url = base_url + '/modelRepository/models/' + modelId
headers = {'Authorization': 'Bearer ' + access_token}
r = requests.get(url, headers=headers)
json_object = json.loads(r.text)
# 設定使用者定義的屬性值 Accuracy 為 0.5
json_object["properties"] = [{
"name": "Accurcay",
"type": "numeric",
"value": str(0.5)
}]
# 設定 ETag 值,若是沒有設定正確,則無法正常更新模型屬性
etag = r.headers['etag']
url = base_url + '/modelRepository/models/'+ modelId
headers = {
'If-Match': etag,
'Content-Type': 'application/vnd.sas.models.model+json',
'Accept': 'application/vnd.sas.models.model+json',
'Authorization': 'Bearer ' + access_token}
r = requests.put(url, headers=headers, json=json_object)
json_object = json.loads(r.text)

最後透過 SAS Model Manager 中的使用者定義屬性設定就能夠讓模型管理人員統一在 SAS Model Manager 中進行任何客製化屬性設定,並且能夠透過 REST API 的方式整合其它應用程式,同時透過比較功能快速查看任何專案中不同模型的差異之處,以利協助企業達到模型治理。

相關資源

⬅️ Go back