服务弹性伸缩
更新时间:2024-09-27
使用模型部署推理服务后(暂不支持使用自定义镜像部署的服务进行弹性伸缩),如果业务负载出现显著的波峰波谷,您可以开启推理服务实例弹性扩缩容功能。通过本功能,您可以根据业务负载的变化,自动调整推理服务实例的数量,以实现计算资源的动态管理,确保业务平稳运行并提高资源利用率。
使用前提
使用弹性扩缩容功能前,需要先配置采集任务和所需的弹性扩缩容组件,具体步骤如下:
- 在“Prometheus服务”中创建一个监控实例。若当前已有监控实例,则可跳过此步骤;
- 在 容器引擎CCE 中,将CCE集群接入此监控实例。若容器引擎CCE已接入实例,可跳过此步骤;
- 在 Prometheus服务 此监控实例详情的采集配置中选择对应的 CCE 集群,禁用 “inferring-job” 采集任务;
- 使用此脚本创建一个新采集任务,内容无需修改
job_name: inferring-job-hpa
honor_timestamps: true
metrics_path: /metrics
scheme: http
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
separator: ;
regex: (https?)
target_label: __scheme__
replacement: $1
action: replace
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
separator: ;
regex: "true"
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_pod_label_component]
separator: ;
regex: predictor
replacement: $1
action: keep
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
separator: ;
regex: (.+)
target_label: __metrics_path__
replacement: $1
action: replace
- source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
separator: ;
regex: ([^:]+)(?::\d+)?;(\d+)
target_label: __address__
replacement: $1:$2
action: replace
- source_labels: [__meta_kubernetes_namespace]
separator: ;
action: replace
target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_pod_name]
separator: ;
action: replace
target_label: kubernetes_pod_name
- separator: ;
regex: __meta_kubernetes_pod_label_(.+)
replacement: $1
action: labelmap
- separator: ;
regex: (.+)_revision_hash|(.+)_template_generation
replacement: $1
action: labeldrop
kubernetes_sd_configs:
- role: pod
- 配置弹性扩缩容需要的 adaptor 组件
- 从官方prometheus-community/helm-charts下载 adaptor 的安装包 prometheus-adapter-4.10.0.tgz,解压后修改 values.yaml 文件,主要修改以下标记的3个部分内容:
# 1、prometheus 的访问方式,这里主要是接入 CProm
prometheus:
# url 从 CProm 的【实例信息】的【Remote Read 地址】可以找到,注意需要在末尾加一个 /prometheus
url: https://cprom.bj.baidubce.com/test/select/prometheus
# port、path 空着
port: ""
path: ""
# 2、配置 CProm 的访问权限
extraArguments:
- --prometheus-header=InstanceId=xxxxx
- --prometheus-header=Authorization=Bearer xxxxxx...
# InstanceId 的值从 CProm 的【实例信息】页面的【实例ID】位置可以找到,一般格式为 cprom-xxx
# Authorization 的值从 CProm 的【实例信息】页面的【Token】位置可以找到,若不存在则需要新建一个
# 直接粘贴就行,注意没有引号,Bearer 后边有个空格
# 3、配置 rule
rules:
把 default 改成 false
default: false
# 在 custom 这里加一条规则,内容拷贝即可,无需修改
custom:
- seriesQuery: 'nv_inference_request_success'
resources:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
name:
matches: "nv_inference_request_success"
as: "baige_infer_qps"
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>)
- seriesQuery: 'aiak_tokens_generation'
resources:
overrides:
kubernetes_namespace: {resource: "namespace"}
kubernetes_pod_name: {resource: "pod"}
name:
matches: "aiak_tokens_generation"
as: "baige_infer_tps"
metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[30s])) by (<<.GroupBy>>)
- 安装helm工具,在解压后的目录里执行此命令
# 注意最后有一个 "."
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”中查看当前推理服务实例的事件详细信息。
修改弹性扩缩容
- 打开弹性扩缩容对话框。
- 在对话框修改相关配置信息,您可以修改弹性扩缩容策略、最大/小实例数。
- 点击确定。
关闭弹性扩缩容
- 打开弹性扩缩容对话框。
- 关闭“弹性扩缩容”开关。
- 点击确定。