
# 更新服务配置
更新当前服务对象配置。
#### 示例代码
在ModelArts Notebook平台，Session鉴权无需输入鉴权参数；其它平台的Session鉴权请参考[Session鉴权](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0123.html)。
- **方式1** ：根据[部署在线服务](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0201.html)生成的服务对象进行更新服务配置
  ```
  from modelarts.session import Session
  from modelarts.model import Predictor
  from modelarts.config.model_config import ServiceConfig
  session = Session()
  predictor_instance = Predictor(session, service_id="your_service_id")
  configs = [ServiceConfig(weight="100", instance_count=1, specification="modelarts.vm.cpu.2u",model_id="your_model_id")]
  service_config = predictor_instance.update_service_config(description="description",
                                                                status="running",
                                                                configs=configs)
  ```
  
- **方式2** ：根据[查询服务对象列表](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0206.html)返回的服务对象进行更新服务配置
  ```
  from modelarts.session import Session
  from modelarts.model import Predictor
  from modelarts.config.model_config import ServiceConfig
  session = Session()
  predictor_object_list = Predictor.get_service_object_list(session)
  predictor_instance = predictor_object_list[0]                  
  configs = [ServiceConfig(weight="100", instance_count=1, specification="modelarts.vm.cpu.2u",model_id="your_model_id")]
  predictor_config = predictor_instance.update_service_config(description="description",
                                                                  status="running",
                                                                  configs=configs)
  ```
  
 
#### 参数说明
表1部署predictor参数说明 
| 参数          | 是否必选 | 参数类型                                      | 描述                                                                                                                           |
|:---|:---|:---|:---|
| description | 否    | String                                    | 服务描述，不超过100个字符，不设置此参数时，表示不更新。                                                                                                |
| status      | 否    | String                                    | 服务状态，可设置状态为running或stopped来启动、停止服务，不设置此参数则不修改状态。status不可跟configs同时修改，同时存在则只修改status。                                         |
| configs     | 否    | 包括predictor configs结构和transformer configs | 服务配置，不设置此参数时，表示不更新。关于configs如何生成，请参见[部署在线服务](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0201.html)。 |
   
![](https://support.huaweicloud.com/sdkreference-modelarts/public_sys-resources/note_3.0-zh-cn.png)
更新服务配置时，存在以下约束：
- 参数status指定的目标状态不允许和当前服务状态相同。
- 当前服务状态是deploying（部署中）、stopping（停止中）、deleting（删除中）时，不允许参数status设置成running（启动）或设置参数configs（服务配置）。
- 当前服务状态是waiting（排队中）时，不允许参数status设置成running（启动）。
- 当前服务状态是concerning（告警）时，不允许参数status设置成running（启动）。
 
表2predictor configs结构 
| 参数             | 是否必选 | 参数类型                  | 描述                                                                                                                                             |
|:---|:---|:---|:---|
| model_id       | 是    | String                | 模型ID。"model_id"可以通过[查询模型列表](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0195.html)或者ModelArts管理控制台获取。                  |
| weight         | 是    | Integer               | 权重百分比，分配到此模型的流量权重，仅当infer_type为real-time时需要配置，多个权重相加必须等于100；当在一个在线服务中同时配置了多个模型版本且设置不同的流量权重比例时，持续地访问此服务的预测接口，ModelArts会按此权重比例将预测请求转发到对应的模型版本实例。 |
| specification  | 是    | String                | 资源规格，当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.p4(需申请)/modelarts.vm.ai1.a310(需申请)，需申请权限才能使用的规格请在华为云创建工单，由ModelArts运维工程师添加权限。                  |
| instance_count | 是    | Integer               | 模型部署的实例数，当前限制最大实例数为128，如需使用更多的实例数，需提交工单申请。                                                                                                     |
| envs           | 否    | Map\<String, String\> | 运行模型需要的环境变量键值对，可选填，默认为空。                                                                                                                       |
   
表3transformer configs结构 
| 参数             | 是否必选 | 参数类型                  | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| model_id       | 是    | String                | 模型ID。"model_id"可以通过[查询模型列表](https://support.huaweicloud.com/sdkreference-modelarts/modelarts_04_0195.html)或者ModelArts管理控制台获取。                                                                                                                                                                                                                                                                                                                                                                          |
| specification  | 是    | String                | 资源规格，当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.p4。                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| instance_count | 是    | Integer               | 模型部署的实例数，当前限制最大实例数为128，如需使用更多的实例数，需提交工单申请。                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| envs           | 否    | Map\<String, String\> | 运行模型需要的环境变量键值对，可选填，默认为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| src_path       | 是    | String                | 批量任务输入数据的OBS路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| dest_path      | 是    | String                | 批量任务输出结果的OBS路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| req_uri        | 是    | String                | 批量任务中调用的推理接口，需要从模型的config.json文件中选取一个api路径用于此次推理                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| mapping_type   | 是    | String                | 输入数据的映射类型，可选"file"或"csv"。 - file指每个推理请求对应到输入数据目录下的一个文件，当使用此方式时，此模型对应req_uri只能有一个输入参数且此参数的类型是file。  - csv指每个推理请求对应到csv里的一行数据，当使用此方式时，输入数据目录下的文件只能以.csv为后缀，且需配置mapping_rule参数，以表达推理请求体中各个参数对应到csv的索引。   |
| mapping_rule   | 否    | Map                   | 输入参数与csv数据的映射关系，仅当mapping_type为csv时需要填写。映射规则与模型配置文件config.json中输入参数的定义方式相似，只需要在每一个基本类型（string/number/integer/boolean）的参数下配置index参数，指定使用csv数据中对应索引下标的数据作为此参数的值去发送推理请求，csv数据必须以英文半角逗号分隔，index从0开始计数，特殊地，当index为-1时忽略此参数。                                                                                                                                                                                                                                                                                 |
   
表4update_service_config返回参数说明 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                            |
|:---|:---|:---|:---|
| error_code | 是    | String | 调用失败时，的错误码。 调用成功时，无此字段。 |
| error_msg  | 是    | String | 调用失败时，错误信息。 调用成功时，无此字段。  |
   
