147 lines
5.1 KiB
Python
147 lines
5.1 KiB
Python
# Copyright (c) Alibaba, Inc. and its affiliates.
|
|
|
|
from dashscope.client.base_api import (CreateMixin, DeleteMixin, GetMixin,
|
|
ListMixin, PutMixin, StreamEventMixin)
|
|
from dashscope.customize.customize_types import (Deployment, DeploymentDelete,
|
|
DeploymentList)
|
|
|
|
|
|
class Deployments(CreateMixin, DeleteMixin, ListMixin, GetMixin,
|
|
StreamEventMixin, PutMixin):
|
|
SUB_PATH = 'deployments'
|
|
"""Deploy a model.
|
|
"""
|
|
@classmethod
|
|
def call(cls,
|
|
model: str,
|
|
capacity: int,
|
|
version: str = None,
|
|
suffix: str = None,
|
|
api_key: str = None,
|
|
workspace: str = None,
|
|
**kwargs) -> Deployment:
|
|
"""Call to deployment a model service.
|
|
|
|
Args:
|
|
model (str): The model name.
|
|
version (str, optional): The model version, unnecessary
|
|
for fine-tuned model. Defaults to None.
|
|
suffix (str, optional): The name suffix of the model deployment,
|
|
If specified, the final model name will be model_suffix.
|
|
Defaults to None.
|
|
capacity (int, optional): The model service capacity.
|
|
api_key (str, optional): The api-key. Defaults to None.
|
|
workspace (str): The dashscope workspace id.
|
|
|
|
Returns:
|
|
Deployment: _description_
|
|
"""
|
|
req = {'model_name': model, 'capacity': capacity}
|
|
|
|
if version is not None:
|
|
req['model_version'] = version
|
|
if suffix is not None:
|
|
req['suffix'] = suffix
|
|
response = super().call(req,
|
|
api_key=api_key,
|
|
workspace=workspace,
|
|
**kwargs)
|
|
return Deployment(**response)
|
|
|
|
@classmethod
|
|
def list(cls,
|
|
page_no=1,
|
|
page_size=10,
|
|
api_key: str = None,
|
|
workspace: str = None,
|
|
**kwargs) -> DeploymentList:
|
|
"""List deployments.
|
|
|
|
Args:
|
|
api_key (str, optional): The api api_key, if not present,
|
|
will get by default rule(TODO: api key doc). Defaults to None.
|
|
page_no (int, optional): Page number. Defaults to 1.
|
|
page_size (int, optional): Items per page. Defaults to 10.
|
|
workspace (str): The dashscope workspace id.
|
|
|
|
Returns:
|
|
Deployment: The deployment list.
|
|
"""
|
|
response = super().list(page_no=page_no,
|
|
page_size=page_size,
|
|
api_key=api_key,
|
|
workspace=workspace,
|
|
**kwargs)
|
|
return DeploymentList(**response)
|
|
|
|
@classmethod
|
|
def get(cls,
|
|
deployed_model: str,
|
|
api_key: str = None,
|
|
workspace: str = None,
|
|
**kwargs) -> Deployment:
|
|
"""Get model deployment information.
|
|
|
|
Args:
|
|
deployed_model (str): The deployment_id.
|
|
api_key (str, optional): The api key. Defaults to None.
|
|
workspace (str): The dashscope workspace id.
|
|
|
|
Returns:
|
|
Deployment: The deployment information.
|
|
"""
|
|
response = super().get(deployed_model,
|
|
api_key=api_key,
|
|
workspace=workspace,
|
|
**kwargs)
|
|
return Deployment(**response)
|
|
|
|
@classmethod
|
|
def delete(cls,
|
|
deployed_model: str,
|
|
api_key: str = None,
|
|
workspace: str = None,
|
|
**kwargs) -> DeploymentDelete:
|
|
"""Delete model deployment.
|
|
|
|
Args:
|
|
deployed_model (str): The deployment id.
|
|
api_key (str, optional): The api key. Defaults to None.
|
|
workspace (str): The dashscope workspace id.
|
|
|
|
Returns:
|
|
Deployment: The delete result.
|
|
"""
|
|
response = super().delete(deployed_model,
|
|
api_key=api_key,
|
|
workspace=workspace,
|
|
**kwargs)
|
|
return DeploymentDelete(**response)
|
|
|
|
@classmethod
|
|
def scale(cls,
|
|
deployed_model: str,
|
|
capacity: int,
|
|
api_key: str = None,
|
|
workspace: str = None,
|
|
**kwargs) -> Deployment:
|
|
"""Scaling model deployment.
|
|
|
|
Args:
|
|
deployment_id (str): The deployment id.
|
|
capacity (int): The target service capacity.
|
|
api_key (str, optional): The api key. Defaults to None.
|
|
|
|
Returns:
|
|
Deployment: The delete result.
|
|
"""
|
|
req = {'deployed_model': deployed_model, 'capacity': capacity}
|
|
path = '%s/%s/scale' % (cls.SUB_PATH.lower(), deployed_model)
|
|
response = super().put(deployed_model,
|
|
req,
|
|
path=path,
|
|
api_key=api_key,
|
|
workspace=workspace,
|
|
**kwargs)
|
|
return Deployment(**response)
|