模型在线服务封装

模型在线服务类

class anylearn.interfaces.service.service.Service(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, visibility=3, model_id: Optional[str] = None, address: Optional[str] = None, secret_key: Optional[str] = None, creator_id: Optional[str] = None, envs: Optional[str] = None, replicas=1, state: Optional[int] = None, create_time: Optional[datetime.datetime] = None, owner: Optional[list] = None, load_detail=False)[源代码]

基类:anylearn.interfaces.base.BaseObject

id

模型服务的唯一标识符,自动生成,由SERV+uuid1生成的编码中后28个有效位(小写字母和数字)组成(非空)

name

模型服务的名称

description

模型服务描述(默认None,最大长度255)

visibility

模型服务的可见性(默认值3)

model_id

模型服务使用的模型ID

address

模型服务运行地址

secret_key

模型服务秘钥

creator_id

创建者ID

envs

环境变量

replicas

模型服务副本数量

state

状态

create_time

创建时间

owner

模型服务的所有者,以逗号分隔的这些用户的ID拼成的字符串,无多余空格

load_detail

初始化时是否加载详情

__init__(id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None, visibility=3, model_id: Optional[str] = None, address: Optional[str] = None, secret_key: Optional[str] = None, creator_id: Optional[str] = None, envs: Optional[str] = None, replicas=1, state: Optional[int] = None, create_time: Optional[datetime.datetime] = None, owner: Optional[list] = None, load_detail=False)[源代码]
参数
  • id – 模型服务的唯一标识符,自动生成,由SERV+uuid1生成的编码中后28个有效位(小写字母和数字)组成(非空)

  • name – 模型服务的名称

  • description – 模型服务描述(默认None,最大长度255)

  • visibility – 模型服务的可见性(默认值3)

  • model_id – 模型服务使用的模型ID

  • address – 模型服务运行地址

  • secret_key – 模型服务秘钥

  • creator_id – 创建者ID

  • envs – 环境变量

  • replicas – 模型服务副本数量

  • state – 状态

  • create_time – 创建时间

  • owner – 模型服务的所有者,以逗号分隔的这些用户的ID拼成的字符串,无多余空格

  • load_detail – 初始化时是否加载详情

_check_fields(required=[])

对象检查属性是否存在

_create()

创建对象,如果子类创建方法与此有较大差异可以重写此方法

_fields = {'payload': {'create': ['name', 'description', 'visibility', 'model_id', 'envs', 'replicas', 'owner'], 'update': ['id', 'name', 'description', 'visibility', 'owner']}, 'required': {'create': ['name', 'model_id'], 'update': ['id', 'name']}}

创建/更新对象时:

  • 必须包含且不能为空的字段 _fields['required']

  • 所有字段 _fields['payload']

_namespace()[源代码]
  • 子类的命名空间,调用此方法以获取子类的名称用于异常信息输出等,以 User 为例, _namespace 可以为 user

  • 子类需实现此抽象方法

_update()

更新对象,如果子类更新方法与此有较大差异可以重写此方法

_url_create()

创建对象url,如果子类创建对象接口名称不是 add ,可以重写此方法来定制接口名称

_url_delete()

删除对象url,如果子类删除对象接口名称不是 delete ,可以重写此方法来定制接口名称

_url_update()

更新对象url,如果子类更新对象接口名称不是 update ,可以重写此方法来定制接口名称

delete(force: bool = False)

删除对象

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

get_deployment_status()[源代码]

模型服务状态查询接口

  • 对象属性 id 应为非空

返回

{
  "pod_names": [
      "deployment-serv001",
      "deployment-serv002",
      "deployment-serv003"
    ],
  "workers": {
    "available_workers": 1,
    "replicas": 1,
    "unavailable_workers": 0
    }
}

get_detail()[源代码]

获取服务详细信息

  • 对象属性 id 应为非空

返回

服务对象。

返回类型

Service

classmethod get_list() → list[源代码]

获取服务列表

返回

服务对象的集合。

返回类型

List [Service]

get_log(pod_name, limit=100, direction='init', offset=0, includes=False)[源代码]

模型服务日志查询接口

  • 对象属性 id 应为非空

参数
  • pod_namestr 容器单位名称。

  • limitint 日志条数上限(默认值100)。

  • directionstr 日志查询方向。

  • offsetint 日志查询索引。

  • includesbool 是否包含指定索引记录本身。

返回

[
  {
    "offset": 6554,
    "text": "[Xlearn-Serving SERV123 ] - 2020-11-26 01:55:23,660 - DEBUG - (worker:1) is waiting"
  }
]

get_records(page=1, size=20, load_detail=False)[源代码]

模型服务运行结果查询接口

  • 对象属性 id 应为非空

参数
  • page (sintr) – 页面索引(默认值1)。

  • size (int) – 每页结果数量(默认值20)。

  • load_detail (bool) – 是否加载记录详情(默认为False)。

返回

服务运行记录结果的集合。

返回类型

List [ServiceRecord]

predict_online(file_binary: str)[源代码]

在线预测接口

参数

file_binary (str) – 预测的文件。

返回

  • ServiceRecord.result – 结果示例: [[0.06298828125, 0.11171875149011612, 0.44580078125, 0.35546875, 5, 0.9521484375]]

  • ServiceRecord – 服务记录。

restart()[源代码]

模型服务重启接口

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

save()

创建或更新对象

  • 对象包含非空属性 id 时为更新,否则为创建

  • 创建对象时必须包含且不能为空的字段: _fields['required']['create']

  • 创建对象时包含的所有字段: _fields['payload']['create']

  • 更新对象时必须包含且不能为空的字段: _fields['required']['update']

  • 更新对象时包含的所有字段: _fields['payload']['update']

返回

True or False

返回类型

bool

scale(replicas: int)[源代码]

模型服务伸缩接口

  • 对象属性 id 应为非空

参数

replicas (int) – 模型服务副本数量(replicas>=1)。

返回

True or False

返回类型

bool

stop()[源代码]

模型服务停止接口

  • 对象属性 id 应为非空

返回

True or False

返回类型

bool

class anylearn.interfaces.service.service.ServiceState[源代码]

基类:object

服务状态标识:

  • 0(CREATED)表示已创建

  • 1(RUNNING)表示已部署运行中

  • -1(DELETED)表示已删除

  • -2(STOPPED)表示已停止

class anylearn.interfaces.service.service.ServiceVisibility[源代码]

基类:object

服务可见性标识:

  • 1(PRIVATE)表示仅创建者可见

  • 2(PROTECTED)表示所有者可见

  • 3(PUBLIC)表示公开

模型在线推理记录类

class anylearn.interfaces.service.record.ServiceRecord(id, service_id: Optional[str] = None, inference_data_file_id: Optional[str] = None, state: Optional[int] = None, create_time: Optional[datetime.datetime] = None, finish_time: Optional[datetime.datetime] = None, result: Optional[str] = None, error: Optional[str] = None, load_detail=False)[源代码]

基类:anylearn.interfaces.base.BaseObject

id

模型服务结果的唯一标识符,自动生成,由SERE+uuid1生成的编码中后28个有效位(小写字母和数字)组成

service_id

模型服务ID

inference_data_file_id

上传文件ID

state

服务记录运行状态

create_time

服务记录创建时间

finish_time

服务记录完成时间

result

服务推理结果

error

错误信息

load_detail

初始化时是否加载详情

__init__(id, service_id: Optional[str] = None, inference_data_file_id: Optional[str] = None, state: Optional[int] = None, create_time: Optional[datetime.datetime] = None, finish_time: Optional[datetime.datetime] = None, result: Optional[str] = None, error: Optional[str] = None, load_detail=False)[源代码]
参数
  • id – 模型服务结果的唯一标识符,自动生成,由SERE+uuid1生成的编码中后28个有效位(小写字母和数字)组成

  • service_id – 模型服务ID

  • inference_data_file_id – 上传文件ID

  • state – 服务记录运行状态

  • create_time – 服务记录创建时间

  • finish_time – 服务记录完成时间

  • result – 服务推理结果

  • error – 错误信息

  • load_detail – 初始化时是否加载详情

_check_fields(required=[])

对象检查属性是否存在

_create()

创建对象,如果子类创建方法与此有较大差异可以重写此方法

_namespace()[源代码]
  • 子类的命名空间,调用此方法以获取子类的名称用于异常信息输出等,以 User 为例, _namespace 可以为 user

  • 子类需实现此抽象方法

_update()

更新对象,如果子类更新方法与此有较大差异可以重写此方法

_url_create()

创建对象url,如果子类创建对象接口名称不是 add ,可以重写此方法来定制接口名称

_url_delete()

删除对象url,如果子类删除对象接口名称不是 delete ,可以重写此方法来定制接口名称

_url_update()

更新对象url,如果子类更新对象接口名称不是 update ,可以重写此方法来定制接口名称

delete()[源代码]

AnyLearnSDK接口不支持服务记录删除

get_detail()[源代码]

获取服务记录详细信息

  • 对象属性 id 应为非空

返回

服务记录对象。

返回类型

ServiceRecord

classmethod get_list()[源代码]

AnyLearnSDK接口不支持获取服务记录列表

save()[源代码]

AnyLearnSDK接口不支持服务记录创建

class anylearn.interfaces.service.record.ServiceRecordState[源代码]

基类:object

服务状态标识:

  • 0(WAITING)表示等待执行

  • 1(RUNNING)表示执行中

  • 2(FINISHED)表示已完成

  • -1(FAILED)表示失败