類別 MLServer

MLServer

azureml.deploy.server.MLServer

基底:azureml.deploy.operationalization.Operationalization

本課程模組提供 ML Server 的服務實作。

驗證 (authentication)

authentication(context)

注意

雖然 Microsoft Entra ID 是 Azure Active Directory(Azure AD)的新名稱,但為了防止中斷現有的環境,Azure AD 仍會保留在某些硬式編碼元素中,例如 UI 字段、連線提供者、錯誤碼和 Cmdlet。 在本文中,這兩個名稱是可互換的。

覆寫

架構所呼叫的驗證生命週期方法。 叫用類別階層的驗證進入點。

ML Server 支援兩種形式的驗證內容:

  • LDAP:元組 (使用者名稱、密碼)

  • Azure Active Directory (AAD):dict {…}

  • 存取權杖:str =4534535

引數

內容

驗證內容:LDAP、Azure Active Directory (AAD) 或現有的「存取權杖」字串。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

create_or_update_service_pool

 create_or_update_service_pool(name, version, initial_pool_size, max_pool_size, **opts)

依「名稱」和「版本」建立或更新已發佈 Web 服務的集區,並提供 ML Server 上的初始和最大集區大小。

範例︰

>>> client.create_or_update_service_pool(
        'regression',
        version = 'v1.0.0',
        initial_pool_size = 1,
        maximum_pool_size = 10)
<Response [200]>
>>>

引數

NAME

唯一 Web 服務名稱。

version

Web 服務版本。

initial_pool_size

Web 服務的初始集區大小。

max_pool_size

Web 服務的最大集區大小。 此值不能小於 initial_pool_size。

傳回

requests.models.Response:HTTP 狀態,指出是否已成功提交要求。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

delete_service

delete_service(name, **opts)

刪除 Web 服務。

success = client.delete_service('example', version='v1.0.1')
print(success)
True

引數

NAME

Web 服務名稱。

opts

Web 服務版本 (version='v1.0.1)。

傳回

bool,表示服務刪除成功。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

delete_service_pool

delete_service_pool(name, version, **opts)

依「名稱」和「版本」刪除 ML Server 上已發佈 Web 服務的集區。

範例︰

>>> client.delete_service_pool('regression', version = 'v1.0.0')
<Response [200]>
>>>

引數

NAME

唯一 Web 服務名稱。

version

Web 服務版本。

傳回

requests.models.Response:HTTP 狀態,指出是否已刪除服務的集區。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

deploy_realtime

deploy_realtime(name, **opts)

依「名稱」和「版本」在 ML Server 上發佈新的「即時」Web 服務。

所有輸入和輸出類型都會定義為 pandas.DataFrame

範例︰

model = rx_serialize_model(model, realtime_scoring_only=True)
opts = {
    'version': 'v1.0.0',
    'description': 'Real-time service description.',
    'serialized_model': model
}

service = client.deploy_realtime('scoring', **opts)
df = movie_reviews.as_df()
res = service.consume(df)
answer = res.outputs

注意

以此方式使用 deploy_realtime() 相當於使用 Fluent API deploy() 發佈服務

引數

NAME

Web 服務名稱。

opts

要發佈為 dict 的服務屬性。 opts 支援下列選擇性屬性:

  • version (str) - 定義唯一英數字元 Web 服務版本。 如果版本保留空白,則會產生唯一 GUID 作為取代。 可在作者準備好正式發佈語意版本以供共用之前的服務開發期間使用。

  • description (str) - 服務描述。

  • alias (str) - 取用函數名稱。 預設為 consume

傳回

Service 的新執行個體,代表「已重新部署」的即時服務。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

deploy_service

deploy_service(name, **opts)

依「名稱」和「版本」在 ML Server 上發佈新的 Web 服務。

範例︰

opts = {
   'version': 'v1.0.0',
   'description': 'Service description.',
   'code_fn': run,
   'init_fn': init,
   'objects': {'local_obj': 50},
   'models': {'model': 100},
   'inputs': {'x': int},
   'outputs': {'answer': float},
   'artifacts': ['histogram.png'],
   'alias': 'consume_service_fn_alias'
 }

 service = client.deploy('regression', **opts)
 res = service.consume_service_fn_alias(100)
 answer = res.output('answer')
 histogram = res.artifact('histogram.png')

注意

以此方式使用 deploy_service() 相當於使用 Fluent API deploy() 發佈服務。

引數

NAME

唯一 Web 服務名稱。

opts

要發佈的服務屬性。 opts dict 支援下列選擇性屬性:

  • version (str) - 定義唯一英數字元 Web 服務版本。 如果版本保留空白,則會產生唯一 GUID 作為取代。 可在作者準備好正式發佈語意版本以供共用之前的服務開發期間使用。

  • description (str) - 服務描述。

  • code_str (str) - 用來執行和評估的 Python 程式碼區塊。

  • init_str (str) - 用來初始化服務的 Python 程式碼區塊。

  • code_fn (function) - 用來執行和評估的函數。

  • init_fn (function) - 用來初始化服務的函數。

  • objects (dict) - 要包含的「物件」名稱和值。

  • models (dict) - 要包含的「模型」名稱和值。

  • inputs (dict) - 服務輸入結構描述,以「名稱」和「類型」表示。 支援下列類型:

    • int

    • FLOAT

    • 字串

    • bool

    • numpy.array

    • numpy.matrix

    • pandas.DataFrame

  • outputs (dict) - 定義 Web 服務輸出結構描述。 如果為空白,則服務不會傳回回應值。 outputs 會定義為字典 {'x'=int},或是描述輸出參數名稱及其對應資料「類型」的 {'x': 'int'}。 支援下列類型:

    • int

    • FLOAT

    • 字串

    • bool

    • numpy.array

    • numpy.matrix

    • pandas.DataFrame

  • artifacts (list) - 要傳回的檔案成品集合。 檔案內容會編碼為 Base64 字串

  • alias (str) - 取用函數名稱。 預設為 consume。 如果提供 code_fn 函數,則預設會使用該函數名稱。

傳回

Service 的新執行個體,代表「已部署」的服務。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

解構函式

destructor()

覆寫

架構所呼叫的終結生命週期方法。 叫用類別階層的解構函式。

get_service

get_service(name, **opts)

取得 Web 服務以供取用。

service = client.get_service('example', version='v1.0.1')
print(service)
<ExampleService>
   ...
   ...
   ...

引數

NAME

Web 服務名稱。

opts

選擇性 Web 服務版本。 如果為 version=None,則會傳回最新服務。

傳回

Service 的新執行個體。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

get_service_pool_status

get_service_pool_status(name, version, **opts)

針對具有所提供「名稱」和「版本」的已發佈服務,取得 ML Server 之每個計算節點上的集區狀態。

範例︰

>>> client.create_or_update_service_pool(
        'regression',
        version = 'v1.0.0',
        initial_pool_size = 5,
        maximum_pool_size = 5)
<Response [200]>
>>> client.get_service_pool_status('regression', version = 'v1.0.0')
[{'computeNodeEndpoint': 'http://localhost:12805/', 'status': 'Pending'}]
>>> client.get_service_pool_status('regression', version = 'v1.0.0')
[{'computeNodeEndpoint': 'http://localhost:12805/', 'status': 'Success'}]

引數

NAME

唯一 Web 服務名稱。

version

Web 服務版本。

傳回

str:JSON,代表已部署服務之每個計算節點上的集區狀態。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

initializer(http_client, config, adapters=None)

覆寫

架構所呼叫的初始化生命週期方法,已在建構期間叫用。 設定屬性並叫用類別階層的初始化設定式。

引數

http_client

跨要求管理和保存設定 (驗證、Proxy) 的 HTTP 要求工作階段。

config

全域組態。

介面卡

傳輸配接器的 dict,以 URL 表示。

list_services

list_services(name=None, **opts)

列出 ML Server 上不同的已發佈 Web 服務。

服務「名稱」和服務「版本」是選擇性的。 此呼叫可讓您擷取下列相關服務資訊:

  • 所有已發佈的服務

  • 特定具名服務之所有已建立版本的服務

  • 具名服務的特定版本

使用者可以使用這項資訊及 [get_service()](#getservice) 作業來與 Web 服務互動及取用 Web 服務。

範例︰

all_services = client.list_services()
all_versions_of_add_service = client.list_services('add-service')
add_service_v1 = client.list_services('add-service', version='v1')

引數

NAME

Web 服務名稱。

opts

選擇性 Web 服務版本。

傳回

服務中繼資料的 list

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

realtime_service

realtime_service(name)

開始屬性的 Fluent API 鏈結,以定義即時 Web 服務。

範例︰

client.realtime_service('scoring')
   .description('A new real-time web service')
   .version('v1.0.0')

引數

NAME

Web 服務名稱。

傳回

Fluent API 鏈結的 RealtimeDefinition 執行個體。

redeploy_realtime

redeploy_realtime(name, **opts)

依「名稱」和「版本」更新伺服器上現有「即時」Web 服務的屬性。 如果為 version=None,則會更新最新服務。

所有輸入和輸出類型都會定義為 pandas.DataFrame

範例︰

model = rx_serialize_model(model, realtime_scoring_only=True)
opts = {
    'version': 'v1.0.0',
    'description': 'Real-time service description.',
    'serialized_model': model
 }

 service = client.redeploy_realtime('scoring', **opts)
 df = movie_reviews.as_df()
 res = service.consume(df)
 answer = res.outputs

注意

以此方式使用 redeploy_realtime() 相當於使用 Fluent API redeploy() 更新服務

引數

NAME

Web 服務名稱。

opts

要更新為 dict 的服務屬性。 opts 支援下列選擇性屬性:

  • version (str) - 定義 Web 服務版本。

  • description (str) - 服務描述。

  • alias (str) - 取用函數名稱。 預設為 consume

傳回

Service 的新執行個體,代表「已重新部署」的即時服務。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

redeploy_service

redeploy_service(name, **opts)

依「名稱」和「版本」更新 ML Server 上現有 Web 服務的屬性。 如果為 version=None,則會更新最新服務。

範例︰

opts = {
   'version': 'v1.0.0',
   'description': 'Service description.',
   'code_fn': run,
   'init_fn': init,
   'objects': {'local_obj': 50},
   'models': {'model': 100},
   'inputs': {'x': int},
   'outputs': {'answer': float},
   'artifacts': ['histogram.png'],
   'alias': 'consume_service_fn_alias'
 }

 service = client.redeploy('regression', **opts)
 res = service.consume_service_fn_alias(100)
 answer = res.output('answer')
 histogram = res.artifact('histogram.png')

注意

以此方式使用 redeploy_service() 相當於使用 Fluent API redeploy() 更新服務

引數

NAME

Web 服務名稱。

opts

要更新為 dict 的服務屬性。 opts 支援下列選擇性屬性:

  • version (str) - 定義唯一英數字元 Web 服務版本。 如果版本保留空白,則會產生唯一 GUID 作為取代。 可在作者準備好正式發佈語意版本以供共用之前的服務開發期間使用。

  • description (str) - 服務描述。

  • code_str (str) - 用來執行和評估的 Python 程式碼區塊。

  • init_str (str) - 用來初始化服務的 Python 程式碼區塊。

  • code_fn (function) - 用來執行和評估的函數。

  • init_fn (function) - 用來初始化服務的函數。

  • objects (dict) - 要包含的「物件」名稱和值。

  • models (dict) - 要包含的「模型」名稱和值。

  • inputs (dict) - 服務輸入結構描述,以「名稱」和「類型」表示。 支援下列類型:- int - float - str - bool - numpy.array - numpy.matrix - pandas.DataFrame

  • outputs (dict) - 定義 Web 服務輸出結構描述。 如果為空白,則服務不會傳回回應值。 outputs 會定義為字典 {'x'=int},或是描述輸出參數名稱及其對應資料「類型」的 {'x': 'int'}。 支援下列類型:- int - float - str - bool - numpy.array - numpy.matrix - pandas.DataFrame

  • artifacts (list) - 要傳回的檔案成品集合。 檔案內容會編碼為 Base64 字串

  • alias (str) - 取用函數名稱。 預設為 consume。 如果提供 code_fn 函數,則預設會使用該函數名稱。

傳回

Service 的新執行個體,代表「已部署」的服務。

HttpException

如果發生 HTTP 錯誤,則呼叫 ML Server。

服務

service(name)

開始屬性的 Fluent API 鏈結,以定義標準 Web 服務。

範例︰

client.service('scoring')
   .description('A new web service')
   .version('v1.0.0')

引數

NAME

Web 服務名稱。

傳回

Fluent API 鏈結的 ServiceDefinition 執行個體。