服务弹性伸缩
更新时间:2025-05-14
使用模型部署推理服务后(暂不支持使用自定义镜像部署的服务进行弹性伸缩),如果业务负载出现显著的波峰波谷,您可以开启推理服务实例弹性扩缩容功能。通过本功能,您可以根据业务负载的变化,自动调整推理服务实例的数量,以实现计算资源的动态管理,确保业务平稳运行并提高资源利用率。
使用前提
使用弹性扩缩容功能前,需要先配置采集任务和所需的弹性扩缩容组件,具体步骤如下:
- 在“Prometheus服务”中创建一个监控实例。若当前已有监控实例,则可跳过此步骤;
- 在容器引擎CCE中,将CCE集群接入此监控实例。若容器引擎CCE已接入实例,可跳过此步骤;
- 在Prometheus服此监控实例详情的采集配置中选择对应的 CCE 集群,禁用 “inferring-job” 采集任务;
- 使用此脚本创建一个新采集任务,内容无需修改
Plain Text
1job_name: inferring-job-hpa
2honor_timestamps: true
3metrics_path: /metrics
4scheme: http
5relabel_configs:
6- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
7 separator: ;
8 regex: (https?)
9 target_label: __scheme__
10 replacement: $1
11 action: replace
12- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
13 separator: ;
14 regex: "true"
15 replacement: $1
16 action: keep
17- source_labels: [__meta_kubernetes_pod_label_component]
18 separator: ;
19 regex: predictor
20 replacement: $1
21 action: keep
22- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
23 separator: ;
24 regex: (.+)
25 target_label: __metrics_path__
26 replacement: $1
27 action: replace
28- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
29 separator: ;
30 regex: ([^:]+)(?::\d+)?;(\d+)
31 target_label: __address__
32 replacement: $1:$2
33 action: replace
34- source_labels: [__meta_kubernetes_namespace]
35 separator: ;
36 action: replace
37 target_label: kubernetes_namespace
38- source_labels: [__meta_kubernetes_pod_name]
39 separator: ;
40 action: replace
41 target_label: kubernetes_pod_name
42- separator: ;
43 regex: __meta_kubernetes_pod_label_(.+)
44 replacement: $1
45 action: labelmap
46- separator: ;
47 regex: (.+)_revision_hash|(.+)_template_generation
48 replacement: $1
49 action: labeldrop
50kubernetes_sd_configs:
51- role: pod
- 配置弹性扩缩容需要的 adaptor 组件
- 从官方prometheus-community/helm-charts下载 adaptor 的安装包 prometheus-adapter-4.10.0.tgz,解压后修改 values.yaml 文件,主要修改以下标记的3个部分内容:
Plain Text
1# 1、prometheus 的访问方式,这里主要是接入 CProm
2prometheus:
3 # url 从 CProm 的【实例信息】的【Remote Read 地址】可以找到,注意需要在末尾加一个 /prometheus
4 url: https://cprom.bj.baidubce.com/test/select/prometheus
5 # port、path 空着
6 port: ""
7 path: ""
8
9
10# 2、配置 CProm 的访问权限
11extraArguments:
12 - --prometheus-header=InstanceId=xxxxx
13 - --prometheus-header=Authorization=Bearer xxxxxx...
14 # InstanceId 的值从 CProm 的【实例信息】页面的【实例ID】位置可以找到,一般格式为 cprom-xxx
15 # Authorization 的值从 CProm 的【实例信息】页面的【Token】位置可以找到,若不存在则需要新建一个
16 # 直接粘贴就行,注意没有引号,Bearer 后边有个空格
17
18
19# 3、配置 rule
20rules:
21 把 default 改成 false
22 default: false
23
24 # 在 custom 这里加一条规则,内容拷贝即可,无需修改
25 custom:
26 - seriesQuery: 'nv_inference_request_success'
27 resources:
28 overrides:
29 kubernetes_namespace: {resource: "namespace"}
30 kubernetes_pod_name: {resource: "pod"}
31 name:
32 matches: "nv_inference_request_success"
33 as: "baige_infer_qps"
34 metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>)
35 - seriesQuery: 'aiak_tokens_generation'
36 resources:
37 overrides:
38 kubernetes_namespace: {resource: "namespace"}
39 kubernetes_pod_name: {resource: "pod"}
40 name:
41 matches: "aiak_tokens_generation"
42 as: "baige_infer_tps"
43 metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>)
- 安装helm工具,在解压后的目录里执行此命令
Plain Text
1# 注意最后有一个 "."
2 helm install prom-adapter -n kube-system .
开始使用
开启弹性扩缩容功能
- 登录百舸异构计算平台AIHC控制台
- 进入模型部署列表页面,点击弹性扩缩容按钮。请确保推理实例数至少为1,因为当实例数为0时,系统将不支持弹性扩缩容配置。为确保功能正常,请先手动增加至少一个实例。
- 进入后,打开“弹性扩缩容”开关。系统将显示伸缩指标、最小/最大实例数输入框。
- 在弹性扩缩容对话框,配置以下参数。
- 基础配置
参数 | 描述 |
---|---|
扩缩容策略 |
指标类型:单实例TPS(每秒处理完成的token数); 单实例QPS(每秒处理完成的请求数) • TPS:每秒处理完成的token数;QPS:每秒处理完成的请求数 设置伸缩指标:选择TPS或QPS作为伸缩指标,并输入目标值 • 单实例TPS或QPS>=目标值时,开始从该推理服务所属资源池中扩容POD实例至最大实例数 • 单实例TPS或QPS<目标值时,开始从该推理服务所属资源池中缩容POD实例到最小实例数 • POD实例的资源规格为创建推理服务的CPU/内存/GPU • 高级配置(可选):点击展开高级配置,设置扩容生效时长和缩容生效时长。 |
最小实例数 | 弹性扩缩容可缩容到的最小POD实例数,可选范围1-1000,默认值1 |
最大实例数 | 弹性扩缩容可扩容到的最多POD实例数,可选范围1-1000,默认值1 |
- 高级配置(可选):点击展开高级配置,设置扩容生效时长和缩容生效时长。
参数 | 描述 |
---|---|
扩容生效时长 | 指定从扩容指令下达开始到扩容实际生效所需的时长,如果在此期间系统检测到业务负载恢复正常,将会取消扩容指令。可输入范围0-300秒,默认值0秒 |
缩容生效时长 | 指定从缩容指令下达开始到缩容实际生效所需的时长,如果在此期间系统检测到业务负载恢复正常,将会取消缩容指令,并且每隔5分钟检查一次,直到单实例TPS或QPS小于目标值再开始缩容。可输入范围0-300秒,默认值300秒 |
- 点击确定
监控与管理
开启弹性扩缩容功能后,平台将自动根据业务负载调整推理服务实例数量。您可以在“容器引擎CCE”中查看当前推理服务实例的事件详细信息。
修改弹性扩缩容
- 打开弹性扩缩容对话框。
- 在对话框修改相关配置信息,您可以修改弹性扩缩容策略、最大/小实例数。
- 点击确定。
关闭弹性扩缩容
- 打开弹性扩缩容对话框。
- 关闭“弹性扩缩容”开关。
- 点击确定。