3.系统算力容量量化:系统算力容量指系统的机器资源总和,和流量算力量化的量纲一致,通常可以通过压测等手段获取系统的算力容量;在系统算力分配过程中,需要保证总体流量算力消耗不超过系统的算力容量。
在业内已有弹性队列求解方案的基础上,我们进行一系列探索和改进:
基于以上策略,我们实现了多弹性动作组合最优化档位决策。
现有方案
DCAF[1]将该问题转化为对应的对偶问题进行求解,得到决策公式,实现弹性队列分配。
方案改进
如图所示,由于档位$j=j_0$的算力和价值已知,无需对不同模型的价值和算力进行预估,后续的流量价值预估和流量算力预估工作都面向弹性队列即可。
如图所示,最优档位决策模块分为离线和在线两个阶段,包含如下四个子模块:
流量价值预估是智能算力决策的核心,要求具备一定准确性。而线上进行模型预估会增加检索链路耗时,我们采用离线XGB模型预估+在线查找词表的方案,既保证了预估的准确性,又足够轻量。
如图所示,流量价值预估模块包含离线和在线两个阶段。
离线阶段:
在线阶段:
业内智能算力的落地以弹性队列为主,一般采用队列长度作为流量算力评估指标,而队列长度作为流量算力评估指标面临以下两个问题:
如图所示,流量算力预估包括离线和在线两个阶段。
1.离线λ求解
基于价值预估和算力预估模块,通过回放历史流量,利用二分查找算法求解最优λ。
离线λ求解的核心步骤是流量回放:通过重放历史同时段流量,复用线上逻辑,为每个请求模拟决策当前λ下的最优档位。
主要问题及解决方案
2.在线档位决策
在智能算力下,系统从等额算力分配转换成动态算力分配,为保障系统服务稳定性,我们提供了熔断降级等常规措施,还实现了基于系统状态的PID实时调控功能。
PID(ProportionIntegrationDifferentiation)是一个通过比例、积分、微分进行控制的主流控制算法,我们通过对系统状态的实时监控和变化感知,基于PID算法对系统状态进行实时调控,保证系统状态的稳定。
系统状态通常可以用系统的CPU/GPU利用率、QPS、RT(Avg、TP99、TP999等)、调用失败率(FailRate)等指标衡量。
调控目标
调控目标应该选取最能够快速反映出系统状态变化的指标,基于这个原则,我们选取了TP999、FailRate、CpuUtils作为调控目标。
调控策略
基于PID调控器,支持多种调控策略:
调控过程
智能算力接入PID实时调控后,在系统负载偏高时,可以快速稳定有效的反馈调节,将系统性能保持在目标水位。
未来在算法策略上,我们将尝试基于进化算法和强化学习算法,对系统全链路组合下的算力最优分配问题进行建模和求解;在引擎架构上,对系统仿真能力、在线决策能力和稳定性保障能力进行持续优化,同时尝试和公司弹性伸缩系统相结合,发挥智能算力的更大价值。
[1]Jiang,B.,Zhang,P.,Chen,R.,Luo,X.,Yang,Y.,Wang,G.,…&Gai,K.(2020).DCAF:ADynamicComputationAllocationFrameworkforOnlineServingSystem.arXivpreprintarXiv:2006.09684.