万字详解滴滴弹性云混部的落地历程

弹性云作为承载滴滴绝大部分业务的底层容器运行平台,已运行7余年,混部对于云来说并不是陌生的概念,业务上云的第一天就是运行在一个混部的环境中。

业务容器化上云,核心诉求是降本增效,其中降本主要通过混部来实现,增效主要通过云上高效的运维方式来实现。本文主要关注弹性云混部相关的部分,包括演进过程、核心技术能力、线上混部现状、以及未来规划等。

混部是指将不同的业务服务根据其相关特征,部署到相同的物理机/虚拟机上,以达到尽可能在保证重点业务服务质量的前提下,提升整个集群资源利用率,进而降低总成本。根据混部的类型,可以分为在线服务的混部和在离线服务混部两种。其中在线混部又可以分为公共集群在线业务之间的混部和隔离集群在线业务和存储服务的混部,在离线混部主要是在线业务与离线业务进行混部。

混部作为一种业界通用的降本的手段,充满着非常多的技术挑战,总结如下:

  • 如何对业务进行合理的分级,不同级别的服务QoS如何定义

  • 如何对业务进行精细化的画像,指导集群进行更合理的调度装箱,降低资源争抢的概率

  • 单机如何进行内核层面的资源隔离策略,包括CPU、内存、IO、LLC cache、网络等资源,来保障高优业务的服务质量

  • 单机如何进行性能干扰检测,指导单机驱逐和调度优化

弹性云混部详细介绍

总体架构 

17180189e9dd42874f40beff73b09fd9.png

弹性云混部落地过程

阶段一:公共集群在线混部

时间追溯到2017年初,当时云计算、容器、Borg、Kubernetes、Mesos 各种新技术和产品风起云涌,一时风头无两。滴滴顺应业界潮流,加入了云计算大军,在公司内部推动业务上云的方向,助力业务降本增效。既然要推动业务上云,那么首先要回答什么是“云”,滴滴内部有没有“云”,当时业务都是运行在自己的物理机资源上,“云”对于滴滴来说就像它的名字一样虚无缥缈,所以作为公司的技术底座-基础平台部就责无旁贷的承担起了建立滴滴“云底座”的责任。

对于云来说,最底层的承载实体是一个一个的容器,当时容器技术,包括docker、container、cgroup 等技术相对成熟,各大公司都在使用,但对这些大规模容器集群调度和编排策略当时有多路线,比如 kubernetes,Mesos 等。滴滴内部也是选择两个技术路线同时演进,随着时间的推进,越来越多的公司加入了 kubernetes 阵营,kubernetes 成为容器调度和编排的事实标准,滴滴最终选择投入到 kubernetes 的怀抱!

随着顺风车、网约车、引擎、地图、中台、城运服、国际化等越来越多的业务接入弹性云,构成了弹性云混部的第一个雏形——在线业务混部。在越来越多业务接入到弹性云过程中,弹性云的部署密度越来越高,调度需求越来越多样化,这给整个弹性云带来了非常大的稳定性挑战,下面分别从容器运行时环境和集群调度两个方面进行展开介绍。

上弹性云之后,多个业务的容器同时部署在一台物理机,大家都处于一个“混部”的环境中,为了提高资源利用率,会通过超卖等技术提升容器的部署密度,意味着同一台物理机上会部署更多的容器,伴随而来的是越来越严重的资源争抢,业务延迟增加,以及更频繁的毛刺出现。所以面临的第一个重要的问题就是解决资源争抢的问题,客观来讲,在总资源一定的情况下,提升容器部署密度,带来资源的争抢是必然的,也是不可避免的,所以我们要解决的问题不是消除资源争抢,而且合理分配资源争抢,尽量保障重点服务的运行质量,下面来看一下具体怎么解决这些问题。

弹性云分级保障体系

fe6af3ec83adf28ac7f7f54c18f49cc1.png 弹性云分级保障体系

由于当前弹性云在线公共集群整体资源超卖非常严重,远超业务平均水平,建立完备的分级保障体系是进行良好混部的前提,当前分级体系的核心思路是从集群和单机两个维度提供资源的确定性,对不同优先级的服务提供不同的资源保障程度,简单总结如下:

  • 根据服务的重要性和敏感性,对服务进行合理的分级,并制定相应的资源超卖规则。

  • 单机层面资源(CPU、内存、磁盘IO、网络、Cache 等)分配优先保障高优服务的需求。

  • 集群层面对不同级别服务提供资源保障:quota 管理和管控,k8s 分级调度能力。

k8s 调度能力支撑

a4a177300dee8f4d0155712f8e67d24b.png

 k8s 调度流程图

上图是 k8s 调度的流程图,调度的核心工作是为一个新创建的 pod 选择一个最合适的 node 进行运行,整个调度流程分为两个阶段:预选策略(Predicates)和优选策略(Priorities),过程中进行各种算法策略的选择调优,且能够加入自己定制化的各种调度策略,下面介绍调度层面如何支撑上述混部场景。

1、调度预选策略增强

  • 资源限制增强

  • 大规格容器单机调度限制

  • IO敏感性容器调度适配

  • 真实使用率调度限制

  • 宿主资源争抢调度限制

  • 集群拓扑打散增强

  • 相同sts下tor打散策略

  • 相同sts下node打散策略

  • 机房内node平铺打散策略

  • 定向调度策略

2、调度优选策略

  • ActualBalancedResourceAllocation 策略:尽可能调度到实际资源使用均衡的宿主上

  • BalancedResourceAllocation 策略:尽可能调度到资源使用均衡的宿主上

  • ActualLeastResourceAllocation 策略:尽可能调度到实际资源使用最少的宿主上

  • LeastResourceAllocation 策略:尽可能调度到资源使用最少的宿主上

  • InterPodAffinityPriority 策略:尽可能调度到带有指定拓扑key的宿主上

  • NodeAffinityPriority 策略:尽可能调度到满足指定node affinity的宿主上

  • TaintTolerationPriority 策略:尽可能调度到设置了Pod可以容器的污点的宿主上

e01263b2ddde97e0a74895db6cd6a987.png

 优选策略权重分配

3、重调度

由于 k8s 集群资源是动态变化的,比如集群扩缩容,机器置换;业务流量或部署模型变化也会导致其对资源使用情况随之变化,比如容器利用率创新高,并且调度时无法预知后续资源需求,所以 scheduler 在进行调度时,只能根据调度当时的集群资源及运行状态做出调度决策。除此之外,调度策略本身也可能会发生变化,如何将调度策略的变化应用于已完成的调度决策也是需要考虑的问题。因此,我们提供了重调度服务通过对集群定期巡检发现上述场景中不再合理的调度决策,触发调度器重新进行调度,从而使得集群整体的系统资源分配更合理。

重调度服务整体工作流程如下图所示,重调度服务通过定期巡检宿主/业务集群状态,根据各个重调度策略筛选出当前需重调度的宿主,再依据一定的策略筛选出待漂移容器,向调度器发起容器变更IP漂移请求。

19f52d3ba73233d055f14259e155fd3b.png

通过弹性云分级保障体系,调度和重调度能力支撑,目前公共集群在线业务之间的混部已经比较成熟,集群高峰期CPU使用率保持在50%左右的安全水平,具体CPU使用率的情况如下图所示:    

f3cd8912c7b24224d6bd01985b8eef77.png

A机房CPU使用率图

14619c44b5212897bfd99797995d9bb3.png

B机房公共集群CPU使用率

6f987da9786a8125c42b2b0d266f8d2f.png

C机房CPU使用率图

阶段二:公共集群在离线混部

在线集群峰值CPU使用率已经做到了50%,如果想进一步降低成本,是否还能从提升在线服务的部署密度的角度来提升CPU使用率呢?从技术方案、业界实践、以及收益效果等多方面看,这个思路不可行,具体表现在:

  • 进一步提升在线部署密度意味着更大的资源争抢,在高峰期CPU使用率可能突破50%,到60%,甚至70%,这有非常大的稳定性隐患。大家知道,目前我们使用的物理机都是开启了超线程(HT),同一个 core 里面的两个超线程逻辑核其实是共享底层硬件资源的,所以理论上50%已是极限,如果进一步提升,资源争抢带来的各种问题就会增加,会明显影响业务的服务质量。

  • 为了降本,滴滴当前在线服务的部署密度和超卖都较高,业界在线服务超卖率基本上会控制在一个相对较低的水平,这意味着在线服务本身CPU使用率不太高。

  • 即使进一步提高部署密度,更多的也是提升CPU峰值利用率,仍然有长时间的低峰期CPU没有充分利用,这样得到的降本收益有限。

基于上面的分析,业界更通用的做法是将在线服务和离线服务进行混部,让离线任务充分利用在线低峰期的CPU算力,达到提升CPU平均利用率的效果,整体降本。如下图所示,如何能把其中阴影部分算力利用起来,就成了在离线混部要解决的核心问题。

95cc2acc0fe088ca59854a30d4bf3617.png

在离线混部其实是在一个存在多条件约束的场景下寻找全局最优解,它要达到以下几个目标:

  • 尽量提升在线集群的平均 CPU 使用率

  • 尽量保障在线服务运行质量不受离线影响

  • 兼顾一些离线运行质量的要求,不能无条件压制离线任务

为了实现上面这些目标,在离线混部核心要解决下面几个问题:

  • 单机能力:

    • 容器 QoS 保障:提供单机层面的资源隔离,保障在线服务的运行质量

    • 干扰检查能力:通过干扰指标建设,实时感知离线任务对在线业务的影响,进行必要的动作,例如资源压制,驱逐等操作。

  • 容器画像能力:基于宿主真实利用率,构建全混部场景下的调度画像能力,用于指导宿主机在不同时刻拥有的多种维度的混部资源。

  • k8s 混部调度能力:包括静态潮汐调度和动态调度。潮汐调度基于时间段,动态调度基于混部画像,将混部任务调度到符合条件的宿主上,在保障稳定性的情况下提升宿主利用率。

单机 QoS 和干扰检查能力

单机 QoS 保障主要是对 CPU、内存、磁盘 IO、网络、Cache 等共享资源在内核层面进行隔离,减少离线任务对在线任务的影响,但既然在离线都一起运行在一个共享的环境中,资源争抢只能减弱,不可能完全避免,所以需要建立各种资源层面的指标体系,感知干扰的发生,进而从单机和集群调度层面做一些处理。下图展示了单机层面在资源隔离方案,争抢指标建设,资源动调策略等方面所做的事情:

42a8adac3dbd72f6a70f8366b6ff32e0.png

我们主要关注上图运行时的部分,这里分成机制和策略。机制是从内核层面提供的通用能,策略是在用户态利用这些能力根据不同的场景进行不用运用,这种设计也符合机制和策略分离的原则。资源隔离和干扰指标这块涉及到不同的资源和内核子系统,内容较多,我重点从 CPU 隔离策略的角度展开介绍。

总体来说,CPU 隔离策略有两种:cpuset(我们常说的大框绑核)和 cpushare(在离线共享 CPU 资源,通过精细化调度保障在线),下面谈一下我对这两种隔离策略的思考以及具体适合在什么场景上使用。

cpuset 的优点是该策略能实现两个实体之间在 CPU 层面的强隔离(LLC cache 还是共享的,这个需要通过其他手段进行隔离),能较好的保障在线服务的运行质量。但不足是配置不太灵活,且某些场合对在线服务不友好。所以该策略主要用于在离线混部场景,还有一些对延迟特别敏感的场景,例如 redis 混部等,目前我们大数据混部和某离线任务都是采用这个方案。

cpushare 的优点是该策略从内核 CPU 调度层面保障高优先级服务的资源,不需要用户态 agent 对资源进行调节,内核调度层面能保障毫秒级的 CPU 抢占,同时在线服务能使用所有 CPU,这样也能避免上面介绍的段时间产生大量线程的并发问题。cpushare 方案能更好的进行资源利用,进一步提升 CPU 使用率。但不足是需要内核进行开发,逻辑比较复杂,且涉及到内核核心代码,稳定性风险偏大,整个线上的落地周期比较长。

k8s混部调度能力

静态潮汐调度

弹性云混部当前基于在线业务的整体潮汐现象,通过潮汐时间段对外限制混部提供的离线算力。弹性云混部通过对离线集群设置潮汐高峰期,进而通过弹性API反馈给业务从而告知业务离线容器是否可以运行。例如,以hxy机房某离线业务混部为例,混部时间段如下:

  • 低峰期(可运行2个离线容器):00:00-07:00   10:00-15:00  23:00:00-24:00:00

  • 中峰期(可运行1个离线容器):15:00-17:00    20:00-23:00

  • 高峰期(可运行0个离线容器):07:00-10:00   17:00-20:00

下图展示不同时间段可混部的离线容器情况:

aa1bc58e45df2eb3273cf059ebc5e1dd.png绿线2023-07-02(周日) / 蓝线2023-07-03(周一)

潮汐调度策略简单,但会存在一些问题:

  • 由于每台宿主每个时段的利用率情况并不相同,因此全局的潮汐策略使得我们一方面我们无法充分地利用宿主机的剩余资源,提供更多的算力给业务。

  • 另一方面,静态调度是固定离线容器个数,而不是根据可混部的空间来调整可运行的离线容器数量,这会导致离线容器CPU使用量超过实际可混部的空间,带来一定的稳定性风险。

潮汐调度主要用在早期在离线混部的场景,现在线上都已转向动态调度方案。

动态调度

动态调度是相较于静态调度而言的,是指根据每台宿主的资源利用率及变化动态的调整每个宿主上可以调度的离线资源。相较于现有的静态调度限制,动态调度的优点包括:

  • 可以充分利用每台宿主的剩余资源,最大限度挖掘在离线混部的价值。

  • 可以从方案的层面上避免宿主出现热点等稳定性隐患。

动态调度的目标:

  • 离线以宿主资源利用率为视角进行调度,不影响在线的quota和调度质量。

  • 通过离线的动态调度将混部宿主利用率维持在稳定区间,提升资源利用率。

动态调度实现依赖下面将要介绍的容器画像,画像能预测出任何一个时间段某台物理机上可以混部的算力空间,从实现方式上看,有离线水平伸缩和离线垂直伸缩两种方式:

  • 水平伸缩:根据宿主的在线利用率和画像数据,周期性通过离线pod的动态弹性伸缩来进行调度(调度宿主上离线容器的个数)。

  • 垂直伸缩:每个宿主部署一个离线pod,根据宿主的在线利用率和画像数据,周期性通过调整离线pod的“规格”以将宿主的剩余资源充分利用。

52394be88ed761bd55100d31039f632a.png

从实现方式上来看,两者相比:

  • 水平伸缩的方式相比垂直伸缩的主要优点是可以维持离线规格的确定性,维持现有的使用体验。但水平伸缩的主要问题为,因为当前离线pod与离线任务的生命周期不一致,频繁的扩缩可能会导致较高的杀死率,影响业务的运行效率。

  • 从资源的利用上来看,垂直伸缩的效率更高,因为其可以不受容器规格的限制,避免产生较多的碎片。同时,这种方式下,无需调整workload和离线容器因此不会产生杀死率。

当前水平伸缩方案主要用在某离线任务混部场景,垂直伸缩方案主要用在大数据混部场景,当然,后面也能根据离线业务的不同需求进行调整。

容器画像能力

在动态调度方案中,离线可以使用的资源=混部目标利用率资源量-宿主在线服务已使用资源量。混部动态调度时,调度器会根据每个node上的离线可用资源来调度离线容器。由于宿主在线利用资源不断变化,离线可用资源也在不断变化,站在离线任务的角度,我们要保证离线任务执行期间离线可用资源都能满足资源需求,所以,画像需要给出未来一段时间内的离线可使用的资源。

通过预测算法来预测出未来1小时宿主在线服务利用资源最大值,这样就能得到目标混部利用率前提下可混部的资源量,如下图所示:

832a5672a91f43ec17f2cb8f35947701.png

预测算法有7天同比算法和加权同比算法。

7天同比算法是指基于在线服务具有7天的周期性特征,使用7天前同比值作为预测值。由于误差相对较大,目前线上已经不再使用。

加权同比算法是由于7天同比算法在利用率整体水位升高或降低时的误差较大,在此基础上设计的一种改进算法,该算法综合考虑7天前历史值,1天前历史值和1小时前历史值,能明显提高预测的准确率。现在线上各机房都在使用加权同比算法,实际误差相比7天同比算法有明显降低。

线上混部现状

上面提到的单机隔离、干扰检测、容器画像和动态调度等能力在线上的混部场景已大规模应用,目前大数据混部和某离线任务混部已稳定运行了几年时间,下面是一些混部后的资源使用的情况,其中黄色线是通过离线混部后增加的CPU使用率,可以看到离线对CPU使用率的填谷效果非常有效。

e75445070ca332b6ff7d35577826e06e.png

某混部集群CPU使用率图

阶段三:隔离集群混部

前面介绍了弹性云公共集群的在混部和在离混部的情况,通过这两种场景的混部能极大的提高公共集群的 CPU 利用率,降低成本。但公共集群资源只占弹性云整体资源池的一部分,还有大量的隔离集群,且隔离集群的利用率普遍非常低,所以这一块就成了混部和降低的重点方向。

先介绍下隔离集群,公共集群是各种不同业务混在一起运行的公共资源池,但有些服务,比如存储的 redis、mq,还有接入层等服务对延迟非常敏感,公共集群环境无法满足它们对服务质量的要求,于是就专门隔离出一块资源池给某个服务单独使用,这样就能保障该服务的服务质量。但由于这些服务单独部署,资源使用率非常低,造成了资源和成本的浪费,下面是一些典型的隔离集群 CPU 使用率情况:

af478b2f096d2f64e913d7c295eb0ce5.png

859a8f73f4fd08b0971c368efb614f2b.png

e7a822a76c5f3e85a6ee9d753fa3f40f.png

可以看出,隔离集群 CPU 使用率处于非常低的水平,存在大量的可混部空间。看到这里,可能有同学会问,既然有这么多混部空间,为啥不早点干呢?这里需要从隔离集群运行业务的特点说起,一般情况下隔离集群业务都是非常敏感,而且稳定性要求较高,比如 redis 服务,它对延迟非常敏感,对干扰几乎是零容忍,而且 redis 这种业界一般都是不进行混部,通过牺牲一部分成本来保运行质量和稳定性。Redis 资源占隔离集群资源的大头,对这块的混部我们一直在验证尝试,但始终保持比较谨慎的态度。

今年降本增效进入深水区,我们也开始将之前的各种技术积累和验证真正在隔离集群混部上落地。由于隔离集群业务的特性,我们将隔离集群混部拆解成多个阶段:

  • 在线业务与存储业务混部:调度公共集群一些相对低优的在线服务到隔离集群和存储物理机集群,是峰值CPU使用率达到公共集群的水平。

  • 全混部:进一步调度离线任务到已经进行混部的的隔离集群,进一步提升平均CPU使用率,最终达到无差别全混部。

当前我们正处在前一个阶段,这个阶段的核心目标是提升隔离集群的 CPU 峰值利用率,如下图,使用通过混部的在线业务将红框这部分资源利用起来。

42c9420a8e2b59ede4b64a6b0a36e96c.png

从技术层面来说,隔离集群混部也会涉及到 k8s 调度,单机保障,还有稳定性兜底方案等方面,下面分别介绍。

k8s 调度支撑

在隔离集群混部场景下,k8s 调度的主要目标如下:

  • 将混部的在线服务调度到隔离集群,整体根据利用率调度,保证利用率不超过设定的混部目标。

  • 混部调度不能影响隔离集群原始业务的调度容量和质量,例如装箱率和原始打散策略等。

核心调度策略

  • 真实利用率调度

  • 混部侧根据混部目标利用率和画像计算每台 node 上“常驻混部”资源,并写入自定义资源 mix-mid-cpu

  • 根据历史7天最大利用率在 pod 上注入此 pod 可能占用的资源

  • 通过 mix-mid-cpu 等自定义资源进行调度限制

ba07561d8aff166040f0169ca0c9c42e.png

  • 单机容器数量限制卡点解决方案

  • 一些隔离集群,例如 redis 都会设置单机容器数量上线,由于混部容器的加入,这些限制可能会打破。调度侧可以根据不同的情况对混部服务绕过单机容器数量限制,或根据预测的混部容器数量今天单机容器数量限制的调整。

  • 调度规则引擎策略注入

  • 由于调度规则是通用的,正常情况下公共集群的服务无法调度到隔离集群,而且即使强行调度,也会存在非常多的通用卡点,这些卡点在隔离集群并不适用,需要进行一些适配,典型场景包括:容忍隔离集群的污点,对这些服务打通公共集群与隔离集群的通道;跳过一些公共集群默认卡点;不占用物理机真实使用率画像;设置混部相关的标签等。

重调度

由于隔离集群服务一般属于高优服务,混部在线服务后需要重调度进行基本的兜底。重调度需要对混部的隔离集群增加基本的热点处理能力,此处对重调度的需求:

  • 对隔离集群服务维持原生重调度策略,做到混部对隔离集群透明。

  • 对混部上来的服务需要基于根据CPU/内存/磁盘等利用率阈值(可配)进行重调度保障,进行必要的热点漂移。

单机服务质量保障

单机服务质量保障主要还是从内核资源隔离曾经进行的,总体来说,单机隔离基本还是在混部和在离混部那一套体系,由于当前隔离集群混部是混部在线服务,在 CPU 这块默认会使用 cpusare 机制,通过分级保障体系来保障服务质量,但对于 redis 这种特别敏感的服务,我们也采用了更为保守的 CPU 大框方案,并会保障 redis 实例不超卖的总体原则。

同时为了避免混部容器利用率突增导致整机 CPU 使用率突破混部目标,进而影响隔离集群原始服务的运行质量,在单机层面也引入了单机压制的能力,当检测到因混部容器导致物理机 CPU 使用率异常的时候,就会对混部容器进行压制,甚至驱逐,保障整体可控。

稳定性兜底保障

由于隔离集群敏感业务混部在滴滴是第一次尝试,很多方案都是在一步一步演进过程中,所以稳定性兜底方案就显得尤为重要。这里我重点介绍稳定性兜底方案-混部容器驱逐逻辑,整体驱逐流程如下图所示:

48a9f3a9f6d841bf8818ae2b6fa01f00.png      

主要包括以下几部分:

  • 驱逐触发条件

  • 业务指标:如果隔离集群原生业务的业务指标出现异常,是一个重要的信号,当然并不是业务指标已出现问题就是混部导致的,这里我们也会有很多资源层面的指标来辅助判断。

  • 混部水位:如果资源利用率已经超过了预设的混部水位,也需要进行容器的驱逐。

  • 干扰检测:如果通过自定义的一些干扰指标发现存在明显混部容器产生的干扰,就需要将相应的容器进行驱逐。

  • 人工强制触发:某些场景下需要进行强制驱逐,也需要提供对这种场景的支持。

  • 驱逐核心逻辑管理

  • 局部驱逐:这种情况下,不需要驱逐node上所有pod,需要准确找到最合适的驱逐对象,一般会考虑到下面这些因素,pod的优先级,pod利用率,pod的干扰指标等。

  • node驱逐:物理机上出现严重问题,需要尽快将某个node上的所有混部容器库快速驱逐。

  • 服务驱逐:比如某个混部服务本身出现了问题,需要将这个服务的所有实例都驱逐到IDC或公有云。

  • 驱逐目的地

  • 混部集群:这种情况下混部容器被驱逐后还是会调度到混部集群的其他node上。

  • 自建IDC公共集群:这种情况下混部容器被驱逐后会调度到IDC公共集群。

  • 公有云:这种情况下混部容器被驱逐后会调度公有云上。

由于未来自建IDC公共集群的容量有限,并且公有云需要额外购买资源,存在成本增加,所以总体来说驱逐目的优先级是:混部集群>自建IDC公共集群>公有云,如果不是全局性问题,还是尽快在混部集群内部进行驱逐。

弹性云混部未来展望

随着未来稳态上云计划的推动,公共集群规模可能保持现状或适当的减少,未来各种隔离集群会是混部的重点算力来源,这里还是使用上面一张图来说明弹性云混部的未来展望。

c97d46e1cb3fcdff95889872e2a721ac.png

在这张图中,每种混部实体都能找到自己的位置:

  • total:表示物理机总资源量

  • limit:表示可以提供给混部使用的资源量,limit与total之间是预留的稳定性buffer

  • mid:这部分就是给混部的在线服务使用,他们主要是用来提升峰值CPU使用率

  • Batch:这部分是给离线服务使用,他们主要用来提升均值CPU使用率

  • Prod:这条红线是隔离集群服务本身的CPU使用率,由于服务特点,他们的使用率整体不高

这就是我们未来的全混部思路,由于更多种类的服务运行在一起,对技术能力提出了更大的挑战,未来会进一步增强集群调度、服务画像、单机隔离、干扰检测、异常感知等方面。



云原生夜话

聊聊看,你们公司是如何落地混部,遇到了哪些有挑战性的问题,具体有哪些解决方案呢?如需与我们进一步交流探讨,也可直接私信后台。

作者将选取1则最有意义的留言,送出滴滴200元打车券。10月19日晚9点开奖。

相关推荐

滴滴多篇论文入选 ICML2026,值得一读!

与此同时,在一个滴滴大规模网约车应用场景中的实验进一步显示,本文方法相较于现有基线方法取得了显著提升,其效果可与使用显著更多 RCT 数据训练得到的模型相仿。广泛的实验表明,当前最先进的智能体在这些任务中表现远不如人类,且无法通过简单的扩大规模来提升,其失败的主要原因在于上下文锁定(in-context locking)和基础能力的缺失。通过将记忆构建为一个不断进化的生态系统,DMS在无需任何额外训练的情况下,显著提升了MLLM智能体的任务成功率、执行稳定性与效率。

DiDi_Tech的博客 405

多轮 Agent 场景下,滴滴的 EAGLE-3 训推加速实践

在 64K / 128K 级别的长序列训练中,显存的主要消耗来自“中间状态”,包括 attention 的中间激活(如 softmax 相关中间量、Q/K/V 张量等),以及反向传播必须保留的激活,包括 EAGLE-3 特有的多层特征参与训练所带来的额外激活存储,与 TTT 多步展开引入的 k 轮中间态堆叠。为缓解这一问题,EAGLE-3 在训练阶段引入 TTT 机制(见图 2),按照真实 decode 流程展开:先生成一步预测,再将该预测作为下一步输入,多步递进,从模拟真实推理过程。

DiDi_Tech的博客 665

滴滴的工程师们,都在读什么书?

它兼具技术、商业与历史视角,能帮读者建立宏大产业格局,提升认知高度。从 LoRA/QLoRA 轻量微调、RAG,到服务化部署、监控迭代,每一个技术要点都搭配可视化图表,易懂、易落地、可复用。尤其适配支付、金融等高并发场景的工程化落地,轻松打通大模型「从理解到应用」的第一步,是技术岗从入门到实战的高效进阶手册。它不只教你调 API,更聚焦如何构建健壮、可扩展的 AI 生产系统,是技术人转型 AI 工程师的通关秘籍。直指大模型与自动驾驶的伦理风险,提供长期 AI 安全的底层思路,兼具技术深度与人文思考。

DiDi_Tech的博客 398

一文读懂滴滴OpenClaw专属打车Skill

在复杂场景中,AI 不再只是执行工具调用,而是开始具备一定的推理能力,例如:能够根据“22:20 落地”推算实际用车时间、主动补全你缺失的起点信息,并对整体行程进行合理规划。当你说出“帮我叫车”时,OpenClaw 会识别触发条件,并加载 didi-ride-skill 的相关内容,使 AI 能够懂得并调度滴滴的出行能力。根本的问题在于:IM 通道的异步特性本身就引入了额外复杂度,包括轮询等待、消息乱序处理、以及“如何判断回复结束”等工程问题,而这些都与测试框架本身目标无关,但会显著增加维护成本。

DiDi_Tech的博客 1001

滴滴多篇成果入选CVPR 2026,产学研协同创新结硕果

该论文首先构建了FaceCoT,首个面向人脸反欺诈的、百万级视觉问答式思维链数据集,通过模拟人类思维过程设计六阶段层级式思维链结构,首次引入结构化、可解释的推理标注机制,不仅给出真假标签,更明确呈现“攻击成立的依据与逻辑路径”,为模型学习“为什么是欺诈”提供清晰且高质量的监督信号。通过设计统一的视觉-语言-动作模型的框架,该方案解决了以往工作中推理速度慢与文本轨迹不稳定的问题,并且将多模态信息在隐空间中进行了统一,在保持推理能力的同时提高了模型的效率。图: GeoPredict框架示意图。

DiDi_Tech的博客 394

滴滴邀你一起,迈入智能工作美好协同

发送简历至HR邮箱,开启快速投递通道。

DiDi_Tech的博客 421

滴滴云平台事业群热招中!“云端”有位,虚位以待

发送简历至HR邮箱,开启快速投递通道。

DiDi_Tech的博客 381

清华大学车辆学院联合滴滴自动驾驶提出STAPO算法,解决大模型强化学习微调稳定性问题

前者筛选前20%的优势词元进行训练,而STAPO则通过剔除极少数虚假词元(仅0.01%),确保数据纯洁度和训练稳定性。以六个基准测试(AIME24、AIME25、AMC23、MATH500、Minerva 和 OlympiadBench)和三个大模型(Qwen3 1.7B、8B 和 14B)的实验表明,正成为自动驾驶端到端模型、机器人具身智能模型、语言类多模态模型的重要训练算法,尤其是在大规模神经网络的微调(Fine-tuning)阶段,具有。,所采用的方案是剔除虚假词元的S2T机制。

DiDi_Tech的博客 260

滴滴开源新进展:华佗项目支持国产沐曦GPU,助推信创发展

华佗是由滴滴主导发起开源,依托中国计算机学会(CCF)孵化的操作系统深度观测项目,专注为云原生通用计算,AI 计算,云服务,基础服务等提供操作系统内核级深度观测能力。开发者可通过华佗平台,实时获取沐曦GPU的关键运行指标,这将进一步丰富华佗在异构计算环境下的可观测能力,为云原生、AI训练等场景的运维诊断提供更全面的数据支撑。滴滴开源始终以共建共享为核心,致力于携手产业伙伴共同探索技术创新与落地实践的最佳路径,促进生态资源、能力与经验的共享。有关指标的详细说明,请见后续的"指标介绍"章节。

DiDi_Tech的博客 480

滴滴自动驾驶成立深穹远航实验室,携手清华大学开展前沿研究

滴滴自动驾驶将以实验室为载体,向高校研究团队开放真实场景和工业级算力,为前沿研究提供强力支持,加速研究成果的落地。清华大学车辆与运载学院、人工智能学院李升波教授表示,自动驾驶是全球科技竞争的战略高地,清华大学在汽车智能化领域拥有深厚的基础研究实力和顶尖人才资源,滴滴自动驾驶在自动驾驶关键技术研发和应用上已有近十年的积累。双方的深度合作,将进一步提升科研成果工程化落地效率,共同服务国家科技自立自强与产业高质量发展。展望未来,滴滴自动驾驶将持续加大AI领域的研发投入,加强自主创新,深化与清华大学的产学研合作。

DiDi_Tech的博客 203

滴滴与智谱达成战略合作,将共同探索出行Agent场景落地

基于此次战略合作,双方将共同推进Agent场景落地和大模型领域人才培养,深化出行场景的意图对齐与推理能力建设,推动Agent在更复杂业务场景中的验证与落地。近年来,滴滴持续加大在大模型与智能体方向的技术投入,依托真实复杂出行场景,逐步推进了AI出行助手、商旅助手等智能体的创新应用。滴滴与智谱宣布达成战略合作,双方将围绕通用人工智能(AGI)关键技术及其在出行领域的智能体应用开展前瞻性协同探索。滴滴相关负责人表示,期待双方充分发挥各自优势,共同推动通用人工智能在更广阔真实场景中的应用与发展。

DiDi_Tech的博客 301

<span class=“js_title_inner“>滴滴与智谱达成战略合作,将共同探索出行Agent场景落地</span>

基于此次战略合作,双方将共同推进Agent场景落地和大模型领域人才培养,深化出行场景的意图对齐与推理能力建设,推动Agent在更复杂业务场景中的验证与落地。近年来,滴滴持续加大在大模型与智能体方向的技术投入,依托真实复杂出行场景,逐步推进了AI出行助手、商旅助手等智能体的创新应用。滴滴与智谱宣布达成战略合作,双方将围绕通用人工智能(AGI)关键技术及其在出行领域的智能体应用开展前瞻性协同探索。滴滴相关负责人表示,期待双方充分发挥各自优势,共同推动通用人工智能在更广阔真实场景中的应用与发展。

DiDi_Tech的博客 217

AI 在泛前端领域的思考和实践-上篇

而泛前端从业者自带 “懂交互、懂服务串联、懂用户体验” 的基因,在打造 AI Agent 驱动的无页面方案时,反而更具天然优势,如:在开发 “无页面化” 的服务场景时,泛前端能更快理清 “用户需求 - Agent 交互逻辑 - 后端 API 调用” 的链路,更精准地规避无页面场景下的体验痛点(如交互断层、反馈不及时),甚至能将过往跨端、组件化的技术经验,复用到 AI Agent 的功能模块设计中,让无页面方案更稳定、更易扩展。这意味着,单纯 “会写代码”“能套用方案” 的能力,正在逐渐失去稀缺性;

DiDi_Tech的博客 1527

AI 在泛前端领域的思考和实践

而泛前端从业者自带 “懂交互、懂服务串联、懂用户体验” 的基因,在打造 AI Agent 驱动的无页面方案时,反而更具天然优势,如:在开发 “无页面化” 的服务场景时,泛前端能更快理清 “用户需求 - Agent 交互逻辑 - 后端 API 调用” 的链路,更精准地规避无页面场景下的体验痛点(如交互断层、反馈不及时),甚至能将过往跨端、组件化的技术经验,复用到 AI Agent 的功能模块设计中,让无页面方案更稳定、更易扩展。这意味着,单纯 “会写代码”“能套用方案” 的能力,正在逐渐失去稀缺性;

DiDi_Tech的博客 636

滴滴开源走进浙江大学|共话开源实践与高校共建

Mpx是一款增强型跨端开发框架,以小程序原生语法和技术能力为基础,借鉴Vue框架的优秀语法设计,通过静态转译与运行时适配相结合,实现“一份源码,多端运行”。滴滴开源与CCF(中国计算机学会)重点孵化的HUATUO项目基于eBPF技术实现低损耗、零侵扰的内核数据采集,覆盖TCP/IP协议栈、CPU调度、内存管理等核心模块,并构建异常事件驱动诊断与全自动化追踪(AutoTracing)两大核心引擎,能够自动捕获softlockup、oom、网络延迟等关键事件,精准定位云原生场景下的偶发与突发故障。

DiDi_Tech的博客 875

滴滴开源荣获多项 OSCAR “开源+”典型案例奖

作为一个针对开源操作系统的深度可观测性项目,在滴滴内部,HUATUO 实现了超大规模部署,覆盖通用计算、AI 计算、大数据、存储、消息队列等核心场景,并与阿里云龙蜥、华为欧拉、腾讯、麒麟软件等主流生态合作,联合多家科技企业共建开源生态,实现技术共享与协同创新。秉承这一精神情怀,钱一峰积极引领开源文化生根发芽,鼓励更多内部技术同学参与开源贡献,让开源不再只是技术成果的输出,更成为连接个人与社区、企业与行业的重要桥梁,让“共建共享”的理念真正融入开源技术创新的每一步。OSCAR开源+安全及风险治理。

DiDi_Tech的博客 956

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 773

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 534

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 695

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 695

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 533

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 423

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 1030

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 544

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

标题:Order Acquisition Under Competitive Pressure: A Rapidly Adaptive Reinforcement Learning Approach for Ride-Hailing Subsidy Strategies作者:Fangzhou Shi(史方舟)、Xiaopeng Ke(柯晓鹏)、Xinye Xiong(熊薪叶)、Kexin Meng(孟可欣)、Chang Men(门畅)、Zhengdan Zhu(朱正丹)论文链接:https://arxiv.

DiDi_Tech的博客 915

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 991

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 370

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 926

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 752

ECML-PKDD ‘25 | FCA-RL框架——基于强化学习的出行服务商动态市场环境效率保障方法

这套离线仿真系统将在后续开源,敬请关注。我们的方法(FCA-RL)相较于传统基线方法大幅降低了出行服务商在动态市场环境下的投资预算控制误差且提升了订单的获取效率,但依然存有局限,比如暂未考虑建模乘客对于投资的长期心智变化及长期供需变化,在未来的工作中,将会尝试将这些考虑进来。在我们的背景设定下,站在我方RSP视角,其他RSP不定期投资幅度变化会导致市场环境动态变化,这会导致在原问题下的求解出的最优解在后续竞争的过程中发生偏移,使得最终花费偏离最初的预算约束,以及原始最优解的钱效变低。

DiDi_Tech的博客 671
上一篇: 线上问题排查实例分析|关于网络超时
下一篇: CCF CED 2023,滴滴和你聊聊工程师文化(文末送门票)
滴滴技术
滴滴技术 企业官方账号 企业官方账号
博客等级 码龄8年 2448粉丝 331原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值