当前位置: 首页 > news >正文

PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践

为了适应 PD 分离式推理部署架构,百度智能云从物理网络层面的「4us 端到端低时延」HPN 集群建设,到网络流量层面的设备配置和管理,再到通信组件和算子层面的优化,显著提升了上层推理服务的整体性能。

百度智能云在大规模 PD 分离式推理基础设施优化的实践中,充分展现了网络基础设施、通信组件与上层业务特征深度融合的重要性。


1.    PD 分离式推理服务对网络的需求

传统的推理服务均是集中式,大多是单机部署。即使是多机部署,机器规模也非常小,对网络的带宽和时延需求都不大。当前大规模 PD 分离式推理系统来说,对网络通信的需求则发生了变化:

  • 引入大规模的 EP 专家并行。EP 会从单机和双机的小规模,变成更大规模,因此 EP 之间的「 Alltoall 通信域」成倍增长。这对于网络基础设施、Alltoall 算子等的通信效率都提出了更高的要求,它们会直接影响 OTPS、TPOT 等指标,从而影响最终的用户体验。
  • PD 分离式部署,Prefill 和 Decode 之间会有 KV Cache 流量的传输,KV Cache 通信的时延直接影响推理服务整体的性能。

为了提升大规模 PD 分离式推理系统的效率,百度智能云针对性地优化了网络基础设施和通信组件:

  • 物理网络层面:为适配 Alltoall 流量专门建设了「4us 端到端低时延」 HPN 集群,支持自适应路由功能彻底解决网络哈希冲突,保证稳定的低时延。
  • 流量管理层面:优化 Alltoall 多打一 incast 流量导致的降速问题。对 HPN 网络中训练、推理等不同类型流量进行队列管理,实现训推任务的互不干扰。通过自研高性能 KV Cache 传输库实现 DCN 弹性 RDMA 满带宽传输。
  • 通信组件层面:Alltoall 算子优化,相比开源的方案,大幅提升 Prefill 和 Decode 的 Alltoall 通信性能。针对 batch size 级别的动态冗余专家编排,将专家均衡度控制在了 1.2 以下,确保集群中所有 GPU 通信时间大致相同。优化双流,实现最大程度的计算和通信 overlap,整体提升 20% 吞吐。

下面我们逐一介绍百度智能云在以上几个层面的优化实践。

2.    解决方案和最佳实践

2.1.    建设适配 Alltoall 流量特征的 HPN 网络设施

百度智能云在训练场景下的 HPN 网络架构设计已经有着丰富的经验,AIPod 使用多导轨网络架构,GPU 服务器配有 8 张网卡,然后每张网卡分别连到一个汇聚组的不同 LEAF 上。在 LEAF 和 SPINE 层面,通过 Full Mesh 的方式进行互联。

以下图为例,考虑一个训练场景下的 3 层架构 HPN 网络:

图片

 2.1.1.    训练和推理任务的流量特征

  • 非 MoE 训练任务的流量特征

在传统非 MoE 的训练场景下,跨机通信产生的流量大多数都是同号卡流量。例如在梯度同步时候产生的 AllReduce 或者 ReduceScatter 或者 AllGather,PP 之间的 SendRecv 等。同号卡通信最佳情况可以只经过一跳,以上图为例,每个 LEAF 交换机有 64 个下联口,因此 64 台服务器规模同号卡通信理论上可以做到一跳可达。

规模再大,就只能经过 SPINE 或者最差经过 SUPER SPINE 来进行通信。为了减少流量上送 SPINE,百度百舸在任务调度的时候会自动进行服务器的亲和性调度。在创建任务的时候,尽量把同一通信组下的 Rank 排布在同一 LEAF 交换机下的服务器内,那么理论上大部分流量都可以收敛在 LEAF 下。

  • MoE 推理流量特征

对于推理服务来说,MoE EP 之间的 Alltoall 通信流量模式与 AllReduce 等不同,会产生大量的跨导轨流量。虽然对于 Prefill 阶段来说,可以通过软件实现层面规避掉跨导轨的流量,但是 Decode 阶段仍然无法避免跨导轨,这会导致多机之间的通信不只是同号卡通信,跨机流量大部分并不能一跳可达,会有大量的流量上到 SPINE 或者 SUPER SPINE,从而导致时延增加。

  • MoE 训练流量特征

对于 MoE 训练的流量会更加复杂,综合了训练和推理的流量特征,既存在传统的梯度同步产生的 AllReduce 或者 ReduceScatter 或者 AllGather,PP 之间的 SendRecv,也存在 EP 之间的 Alltoall 流量。这些流量不但会出现跨导轨传输的问题,他们之间可能会存在 overlap 导致互相干扰。

2.1.2.   面向 EP 的 HPN 架构优化

鉴于 Alltoall 通信的特点,我们在设计 HPN 网络的时候,会考虑优先保证跨导轨流量至多 2 跳可达,让 Alltoall 流量收敛到 SPINE 层,以这种方式尽量减少跨导轨的通信时延。如下图所示:

图片

LEAF 层所有设备全部有一根线接入同一台 SPINE 交换机,这样可以让集群内 Alltoall 跨导轨流量全部收敛到 SPINE 层,跨导轨通信时延可以进一步从 5us+ 缩小为 4us。

这种经过优化后的 HPN 网络架构,能接入的卡数主要取决于交换机芯片支持的最大的下联口有多少。虽然对于超大模型的训练任务来说,这个集群规模可能不够,但是对于推理来说,通常不需要那么大规模的机器,是可以满足需求的。

2.1.3.    自适应路由彻底消除 hash 冲突

同时,由于 Alltoall 通信流量的特征,LEAF 到 SPINE 之间的通信流量会成为常态。当流量需要通过 SPINE 传输的时候,会由 hash 选择 SPINE 出口的过程,这时候有可能会产生 hash 冲突,导致网络抖动。因此为了避免 hash 冲突,百度智能云基于自研交换机实现自适应路由。如下图所示:

图片

假设 A 和 C 进行 Alltoall 跨导轨通信,A 发出的流量必然要经过 SPINE,那么流量在到达 LEAF 的时候,会基于 packet 做 hash,并结合链路的负载情况动态选择最优的出口,将报文发送到多个 SPINE 上。

基于报文 hash 到不同的物理路径,百度智能云实现了链路负载均衡,消除因 hash 冲突时延增加导致的性能抖动,实现稳定的低时延网络。

详情可参考:彻底解决网络哈希冲突,百度百舸的高性能网络 HPN 落地实践

2.2.    Alltoall 和 KV Cache 流量的管理和优化

2.2.1.    避免 incast 造成降速,不同类型流量的分队列管理

  • Alltoall 多打一,不合理的配置造成降速

在推理服务中,EP 间的 Alltoall 通信流量特性与传统训练中的 AllReduce 完全不同,网络上多打一造成的 incast 流量非常常见。这种 incast 的严重程度会随着规模的增大而增大。incast 流量的突发,可能会造成接收侧网卡上联的交换机端口向发送侧反压 PFC,导致网络降速。

传统 Alltoall 流量多打一的示意图如下,假设机器 A 和机器 C 的 GPU0、GPU2、GPU4、GPU6 都需要给机器 B 的 GPU0 发送数据,那么在网络上就会出现 8 打 1 的情况。

图片

传统的 Alltoall 实现,例如 PyTorch 内部调用的 Alltoall,是使用 send recv 去实现的,如果使用 PXN 可以缩小网络上的发生多打一的规模,但是多打一依然存在,如下图所示:

图片

因此无论 Alltoall 的算子实现方式如何,网络上的多打一都无法避免。此时如果网络侧的拥塞控制算法的配置不合理,对拥塞过于敏感,就会产生降速,进而对整体吞吐造成影响。

  • 推理训练任务中非 Alltoall 流量的干扰

除此之外,如果集群内还存在其他流量,例如训练任务 DP(数据并行)之间的 AllReduce 或者 ReduceScatter 或者 AllGather,或者 PD(Prefill-Decode)之间的 KV Cache 传输,也会对 Alltoall 的流量造成影响,从而进一步降低推理引擎的整体吞吐。

因此无论是端侧网卡的配置,或者是交换机的配置,都需要针对 Alltoall 这种多打一 incast 流量做针对性优化,同时尽量避免集群内其他流量对 Alltoall 流量造成影响。

针对这种情况,我们给出的解决方案如下:

  • 在队列管理层面,通过端侧网卡将 EP 的流量做专门的优先级配置,将 Alltoall 流量导入到高优先级队列。其他训练的流量,比如 AllReduce 等使用低优先级队列。
  • 在资源层面,在端侧网卡和交换机的高优先级队列上,预留更多的 buffer,分配更高比例的带宽,优先的保证高优先级队列的流量。
  • 在拥塞控制算法配置层面,高优先级队列关闭 ECN 标记功能,让 DCQCN 算法对 Alltoall 流量微突发造成的拥塞不做出反应,从而解决 incast 问题造成的降速。

在经过端侧网卡和网侧交换机配合调整后,可以保障 Alltoall 通信流量的通信带宽和传输时延,实现训推任务的互不干扰,并有效的缓解 incast 流量带来的非预期的降速而造成的性能抖动。

经过测试,在我们部署的推理服务中,Alltoall 过程的整体通信时延有 5% 的降低。

2.2.2.    DCN 支持弹性 RDMA 实现 KV Cache 满带宽传输

在 PD 分离式推理系统中,还存在 PD 之间 KV Cache 传输的流量。相比 Alltoall 虽然他的带宽需求不算大,但为了避免二者的流量互相干扰,通常我们会让 KV Cache 的传输流量单独走 DCN 网络,使其与 Alltoall 的流量完全隔离开。

图片

在 DCN 网络的设计上,为了保证 KV Cache 流量的传输带宽,其网络架构收敛比采用 1:1。端侧网卡支持弹性 RDMA,使用 RDMA 协议保证 KV Cache 的高性能传输。

在传输库层面,百度智能云使用自研的高性能 KV Cache RDMA 传输库,其接口设计与框架层深度定制,支持上层框架分层传输,也支持多层 KV Cache 的批量传输,便于在框架层做计算与传输的 overlap。

通过以上设计优化,KV Cache 传输在主网卡可以用满带宽,传输时间可以完全被计算 overlap 住,不成为推理系统的瓶颈。

2.3.    提高推理服务组件的网络通信效率

在有了高带宽低时延的网络基础设施的基础上,如何用好网络基础设施,是推理服务软件层面需要重点考虑的事情。

在我们对 PD 分离推理服务的 profile 分析当中,发现了一些影响网络通信效率的关键因素。

2.3.1.    Alltoall 算子的通信效率

目前社区开源的 DeepEP 已经给出了推理系统中 dispatch 和 combine 过程的 Alltoall 高性能的算子的实现,且性能表现优异。

对于 Prefill 来说,由于输入的 batch size 较大,Alltoall 通信算子的同号卡传输阶段为了平衡显存资源和性能,采用分 chunk 传输的方式,发送和接收会循环使用一小块显存,并对每次 RDMA 发送以及机内 NVLink 传输的 token 数做了限制。

通过实际观测网卡的传输带宽,发现其并没有被打满。在此基础上,我们对网络传输的显存的大小,以及每一轮发送接收的最大 token 数等配置,针对不同的 GPU 芯片,做了一些精细化的调整,使之在性能上有进一步的提升。通过优化,DeepEP 的传输性能有大概 20% 的性能提升,网络带宽已经基本被打满。

对于 Decode 来说,DeepEP 的实现是多机之间的 EP 通信,不区分机内和机间,一律采用网络发送。这样做的考虑是为了机内传输也不消耗 GPU 的 SM 资源,完成网络发送后算子即可退出。在网络传输的时间内做计算,完成后再调用 Alltoall 的接收算子,以此来实现计算和通信的 overlap。但这样做的缺点是机内的 NVLink 的带宽并没有被高效的利用起来,网络传输的数据量会变大。

因此,百度智能云通过在 GPU 算子内使用 CE 引擎做异步拷贝,在不占用 GPU SM 资源的情况下,也能实现机内 NVLink 带宽的高效利用,同时不影响计算和通信的 overlap。

2.3.2.    动态冗余专家编码,保证 EP 负载均衡

EP 专家之间如果出现处理 token 不均衡的情况,将会导致 Alltoall 通信算子的不同 SM 之间,以及不同 GPU 的通信算子之间,出现负载不均的情况,导致的结果就是整体通信时间会被拉长。

由于 EP 专家之间的负载均衡是推理服务引擎提升吞吐的非常重要的一环,经过百度智能云的大规模的线上实践的经验来看,静态冗余专家并不能很好的保证专家均衡。因此我们专门适配了针对 batch size 级别的动态冗余专家,把专家均衡度(max token/avg token)基本控制在了 1.2 以下,不会出现明显的「快慢卡」的情况。

2.3.3.    极致优化双流效果,整体吞吐进一步提升

通信和计算 overlap,隐藏通信的开销,一直都是推理服务,或者大模型训练中,非常重要的课题。

在百度智能云的实践中,我们在线上大规模的推理服务中开启了双流。为了尽量隐藏掉通信的开销,达到最好的 overlap 的效果,除了做 EP 之间的专家均衡以外,对计算算子也做了针对性的优化,例如对计算算子和通信算子 kernel launch 的顺序做合理排布,对二者所需的 SM 资源做合理的分配,避免出现计算算子占满 SM 导致通信算子 launch 不进去的情况,尽可能的消灭掉 GPU 间隙的资源浪费。通过这些优化,整体的吞吐可以提升 20% 以上。

3.    总结

百度智能云在大规模 PD 分离式推理基础设施优化的实践中,充分展现了网络基础设施、通信组件与上层业务特征深度融合的重要性。这种融合不仅是技术层面的创新,更是对实际业务需求的深刻理解和响应。

相关文章:

PD 分离推理的加速大招,百度智能云网络基础设施和通信组件的优化实践

为了适应 PD 分离式推理部署架构,百度智能云从物理网络层面的「4us 端到端低时延」HPN 集群建设,到网络流量层面的设备配置和管理,再到通信组件和算子层面的优化,显著提升了上层推理服务的整体性能。 百度智能云在大规模 PD 分离…...

罗杰斯高频板技术解析:低损耗基材如何定义 5G 通信未来

在 5G 通信与尖端电子技术加速融合的时代,高频 PCB 作为信号传输的核心载体,对材料性能与工艺精度提出了极致要求。猎板 PCB 深耕行业多年,始终以罗杰斯(Rogers)板材为核心介质,构建起从材料适配到精密制造…...

QML 动画控制、顺序动画与并行动画

目录 引言相关阅读基础属性说明工程结构示例代码解析示例1:手动控制动画(ControlledAnimation.qml)示例2:顺序动画(SequentialAnimationDemo.qml)示例3:并行动画(ParallelAnimationD…...

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023 年 7 月,瑞士洛桑联邦理工学院的 Hongkeng Zhu 和 Elison Matioli 在《IEEE Transactions on Power Electronics》期刊发表了题为《Accurate Measurement of Dynamic ON-Resistance in GaN Transistors at Steady-State》的文章,基于提出的稳态测量方法,研究了氮化镓(…...

2:OpenCV—加载显示图像

加载和显示图像 从文件和显示加载图像 在本节中&#xff0c;我将向您展示如何使用 OpenCV 库函数从文件加载图像并在窗口中显示图像。 首先&#xff0c;打开C IDE并创建一个新项目。然后&#xff0c;必须为 OpenCV 配置新项目。 #include <iostream> #include <ope…...

Qt控件:交互控件

交互控件 1. QAction核心功能API 1.2 实例应用情况应用场景 1. QAction ##1. 1简介与API QAction 是一个核心类&#xff0c;用于表示应用程序中的一个操作&#xff08;如菜单项、工具栏按钮或快捷键触发的功能&#xff09;。它将操作的逻辑与 UI 表现分离&#xff0c;使代码更…...

在vue3中使用Cesium的保姆教程

1. 软件下载与安装 1. node安装 Vue.js 的开发依赖于 Node.js 环境&#xff0c;因此我们首先需要安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它允许你在服务器端运行 JavaScript 代码&#xff0c;同时也为前端开发提供了强大的工具支…...

zst-2001 下午题-历年真题 试题一到三

试题一 问题一 1 问题一 2 注意每句话中的“给”… 问题一 3 问题二 1 问题二 2 问题二 3 问题三 1 步骤一.看父图的数据流在子图有没有缺失 步骤二.看加工有没有输入输出 步骤三.阅读理解 问题三 2 实体和存储不能划线 问题三 3 试题二 问题一 1 问题一 2 问题一 3 问题二…...

STM32的ADC模块中,**采样时机(Sampling Time)**和**转换时机(Conversion Time),获取数据的时机详解

在STM32的ADC模块中&#xff0c;**采样时机&#xff08;Sampling Time&#xff09;和转换时机&#xff08;Conversion Time&#xff09;**是ADC工作流程中的两个关键阶段&#xff0c;直接影响采样精度和系统实时性。以下是详细解析&#xff1a; 1. 采样时机&#xff08;Samplin…...

iOS音视频解封装分析

首先是进行解封装的简单的配置 /// 解封装配置 class KFDemuxerConfig {// 媒体资源var asset: AVAsset?// 解封装类型&#xff0c;指定是音频、视频或两者都需要var demuxerType: KFMediaType .avinit() {} }然后是实现解封装控制器 import Foundation import CoreMedia i…...

探究电阻分压的带负载能力

我们经常使用两个电阻去分压来获得特定的电压,那么我是两个大阻值电阻分压获得的电压驱动能力强,还是小阻值电阻分压得到的电压驱动能力强呢? 一、电压相同时,电流的大小 下面是两个阻值分压得到的仿真图 电路分析: VCC都是5V,探针1和探针2测到的电压都是1.67V; 根据…...

14、Python时间表示:Unix时间戳、毫秒微秒精度与time模块实战

适合人群&#xff1a;零基础自学者 | 编程小白快速入门 阅读时长&#xff1a;约5分钟 文章目录 一、问题&#xff1a;计算机中的时间的表示、Unix时间点&#xff1f;1、例子1&#xff1a;计算机的“生日”&#xff1a;Unix时间点2、答案&#xff1a;&#xff08;1&#xff09;U…...

PCL 绘制二次曲面

文章目录 一、简介二、实现代码三、实现效果一、简介 这里基于二次曲面的公式: z = a 0 + a 1 x + a 2 y + a...

消息队列与Kafka基础:从概念到集群部署

目录 一、消息队列 1.什么是消息队列 2.消息队列的特征 3.为什么需要消息队列 二、Kafka基础与入门 1.Kafka基本概念 2.Kafka相关术语 3.Kafka拓扑架构 4.Topic与partition 5.Producer生产机制 6.Consumer消费机制 三、Zookeeper概念介绍 1.zookeeper概述 2.zooke…...

计算机指令分类和具体的表示的方式

1.关于计算机的指令系统 下面的这个就是我们的一个简单的计算机里面涉及到的指令&#xff1a; m就是我们的存储器里面的地址&#xff0c;可以理解为memory这个意思&#xff0c;r可以理解为rom这样的单词的首字母&#xff0c;帮助我们去进行这个相关的指令的记忆&#xff0c;不…...

pcie phy-电气层-gen1/2(TX)

S IP物理层讲解 在synopsys IP中对于phy层的内容分离的比较多&#xff1a; cxpl中&#xff1a; u_cx_phy_logical&#xff1a;包含ts序列的解析&#xff08;smlh&#xff09;&#xff1b; pipe层协议的转换&#xff08;rmlh,xmlh)&#xff1b;pipe转dllp包&#xff08;rplh&…...

Baklib加速企业AI数据智理转型

Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下&#xff0c;Baklib通过构建企业级知识中台架构&#xff0c;重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型&#xff0c;将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元&#xf…...

深度学习驱动下的目标检测技术:原理、算法与应用创新

一、引言​ 1.1 研究背景与意义​ 目标检测作为计算机视觉领域的核心任务之一&#xff0c;旨在识别图像或视频中感兴趣目标的类别&#xff0c;并确定其在图像中的位置&#xff0c;通常以边界框&#xff08;Bounding Box&#xff09;的形式表示 。其在现实生活中有着极为广泛且…...

window 显示驱动开发-使用有保证的协定 DMA 缓冲区模型

Windows Vista 的显示驱动程序模型保证呈现设备的 DMA 缓冲区和修补程序位置列表的大小。 修补程序位置列表包含 DMA 缓冲区中命令引用的资源的物理内存地址。 在有保证的协定模式下&#xff0c;用户模式显示驱动程序知道 DMA 缓冲区和修补程序位置列表的确切大小&#xff0c;…...

《指针与整数相加减的深入解析》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、指针与整数相加的原理二、指针与整数相减的原理三、使用场景&#xff08;一&#xff09;数组操作&#xff08;二&#xff09;内存遍历 四、注意事项&…...

C++_STL_map与set

1. 关联式容器 在初阶阶段&#xff0c;我们已经接触过STL中的部分容器&#xff0c;比如&#xff1a;vector、list、deque、 forward_list(C11)等&#xff0c;这些容器统称为序列式容器&#xff0c;因为其底层为线性序列的数据结构&#xff0c;里面 存储的是元素本身。那什么是…...

1949-2022年各省农作物播种面积数据(22个指标)

1949-2022年各省农作物播种面积数据&#xff08;22个指标&#xff09; 1、时间&#xff1a;1949-2022年 2、来源&#xff1a;各省年鉴、国家统计局、农业部、农业年鉴 3、范围&#xff1a;31省 4、指标&#xff1a;年度标识、省份编码、省份名称、农作物总播种面积、粮食作…...

汽车二自由度系统模型以及电动助力转向系统模型

汽车二自由度系统模型与电动助力转向系统&#xff08;EPS&#xff09;的详细建模方案&#xff0c;包含理论推导、MATLAB/Simulink实现代码及参数说明&#xff1a; 一、二自由度汽车模型 1. 模型描述 包含以下两个自由度&#xff1a; 横向运动&#xff08;侧向加速度&#xf…...

【学习笔记】计算机操作系统(四)—— 存储器管理

第四章 存储器管理 文章目录 第四章 存储器管理4.1 存储器的层次结构4.1.1 多层结构的存储器系统4.1.2 主存储器与寄存器4.1.3 高速缓存和磁盘缓存 4.2 程序的装入和链接4.2.1 程序的装入4.2.2 程序的链接 4.3 连续分配存储管理方式4.3.1 单一连续分配4.3.2 固定分区分配4.3.3 …...

51单片机的lcd12864驱动程序

#include <reg51.h> #include <intrins.h>#define uchar...

(03)数字化转型之库存管理:从进库到出库的数字化运营

在当今竞争激烈的商业环境中&#xff0c;高效的库存管理已成为企业降低成本、提高运营效率的关键。本文将系统性地介绍库存管理的全流程&#xff0c;包括进库、出库、移库、盘点等核心环节&#xff0c;帮助企业构建科学合理的库存管理体系。 一、进库管理&#xff1a;从计划到执…...

windows编程中加载DLL的两种典型方式的比较

文章目录 DLL定义头文件定义CPP实现DLL的调用代码直接使用通过LoadLibrary调用导入表的依赖LoadLibrary使用DLL库中的类DLL中定义工厂函数调用时的代码补充:为什么LoadLibrary不能直接导出类在windows的编程中,使用DLL是一个非常常见的操作。一般来说,有两种集成DLL的方式:…...

存储器上如何存储1和0

在计算机存储器中&#xff0c;数据最终以**二进制形式&#xff08;0和1&#xff09;**存储&#xff0c;这是由硬件特性和电子电路的物理特性决定的。以下是具体存储方式的详细解析&#xff1a; 一、存储的物理基础&#xff1a;半导体电路与电平信号 计算机存储器&#xff08;…...

【笔记】记一次PyCharm的问题反馈

#工作记录 最近更新至 PyCharm 社区版的最新版本后&#xff0c;我遇到了多个影响使用体验的问题。令人感到不便的是&#xff0c;一些在旧版本中非常便捷的功能&#xff0c;在新版本中却变得操作复杂、不够直观。过去&#xff0c;我一直通过 PyCharm 内置的故障报告与反馈机制反…...

logrotate按文件大小进行日志切割

✅ 编写logrotate文件&#xff0c;进行自定义切割方式 adminip-127-0-0-1:/data/test$ cat /etc/logrotate.d/test /data/test/test.log {size 1024M #文件达到1G就切割rotate 100 #保留100个文件compressdelaycompressmissingoknotifemptycopytruncate #这个情况服务不用…...

基于大模型的脑出血智能诊疗与康复技术方案

目录 一、术前阶段1.1 数据采集与预处理系统伪代码实现流程图1.2 特征提取与选择模块伪代码实现流程图1.3 大模型风险评估系统伪代码实现流程图二、术中阶段2.1 智能手术规划系统伪代码实现流程图2.2 麻醉智能监控系统伪代码实现流程图三、术后阶段3.1 并发症预测系统伪代码片段…...

P21-RNN-心脏病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、RNN 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;简称 RNN&#xff09;是一类以序列数据为输入&#xff0c;在序列的演进方向进行递归…...

懒汉式单例模式的线程安全实现

懒汉式单例模式的线程安全实现 懒汉式单例模式的核心特点是延迟实例化(在第一次使用时创建对象),但其基础实现存在线程安全问题。以下是不同线程安全实现方式的详细说明和对比: 1. 非线程安全的基础懒汉式 public class UnsafeLazySingleton {private static UnsafeLazyS…...

Java 常用的Arrays函数

文章目录 ArrayssorttoStringbinarySearchequalsfill 数组拷贝copyOfcopyOfRangearraycopy 二维数组定义遍历deepToString空指针异常 Arrays sort int[] array new int[]{1,20,3}; Arrays.sort(array);// 1 3 20toString 帮助数组转为字符串 int[] array new int[]{1,2,3…...

FEKO许可证与版本兼容性问题

随着电磁仿真技术的不断进步&#xff0c;FEKO软件不断更新迭代&#xff0c;为用户提供更强大的功能和更优秀的性能。然而&#xff0c;在升级过程中&#xff0c;FEKO许可证与版本兼容性问题往往成为用户关注的焦点。本文将为您详细解读FEKO许可证与版本兼容性问题&#xff0c;帮…...

HarmonyOs开发之——— ArkWeb 实战指南

HarmonyOs开发之——— ArkWeb 实战指南 谢谢关注!! 前言:上一篇文章主要介绍HarmonyOs开发之———合理使用动画与转场:CSDN 博客链接 一、ArkWeb 组件基础与生命周期管理 1.1 Web 组件核心能力概述 ArkWeb 的Web组件支持加载本地或在线网页,提供完整的生命周期回调体…...

冰箱磁力贴认证标准16CFR1262

在亚马逊平台&#xff0c;冰箱磁力贴这类可能被儿童接触到的产品&#xff0c;有着严格的规范哦。必须得遵守 16 CFR 1262 标准&#xff0c;还得有符合该标准的测试报告和 GCC 证书&#xff0c;不然产品就可能被禁止销售或者面临召回&#xff0c;那可就损失大啦&#xff01; ​ …...

Java中的锁机制全解析:从synchronized到分布式锁

在多线程编程中&#xff0c;锁是保证线程安全的核心工具。本文将详解Java中常见的锁机制及其实际应用场景&#xff0c;帮助开发者选择最合适的锁方案。 一、内置锁&#xff1a;synchronized 原理 通过JVM内置的监视器锁&#xff08;Monitor&#xff09;实现&#xff0c;可修…...

OptiStruct实例:3D实体转子分析

上一节介绍了1D转子的临界转速分析。在1D转子模型中&#xff0c;转子是以集中质量单元的形式建模的。此种建模方法不可避免地会带来一些简化和局部特征的缺失。接下来介绍OptiStruct3D实体转子的建模及临界转速分析实例。 3D实体转子建立详细的转子网格模型&#xff0c;然后将…...

简单记录坐标变换

以三维空间坐标系为例 rTt代表机械手末端相对robot root坐标系的变换关系 rTt dot p_in_tool 可以把tool坐标系下表示的某点转到root坐标系表示 其中rTt表示tool相对于root坐标系的平移和旋转 以二维图像坐标系为例说明 1坐标系定为图片坐标系左上角&#xff0c;横平竖直的…...

自定义快捷键软件:AutoHotkey 高效的快捷键执行脚本软件

AutoHotkey 是一种适用于 Windows 的免费开源脚本语言&#xff0c;它允许用户轻松创建从小型到复杂的脚本&#xff0c;用于各种任务&#xff0c;例如&#xff1a;表单填充、自动点击、宏等。 定义鼠标和键盘的热键&#xff0c;重新映射按键或按钮&#xff0c;并进行类似自动更…...

【Android构建系统】了解Soong构建系统

背景介绍 在Android7.0之前&#xff0c;Android使用GNU Make描述和执行build规则。Android7.0引入了Soong构建系统&#xff0c;弥补Make构建系统在Android层面变慢、容易出错、无法扩展且难以测试等缺点。 Soong利用Kati GNU Make克隆工具和Ninja构建系统组件来加速Android的…...

显性知识的主要特征

有4个主要特征&#xff1a; 客观存在性静态存在性可共享性认知元能性...

STM32F407VET6实战:CRC校验

CRC校验在数据传输快&#xff0c;且量大的时候使用。下面是STM32F407VET6HAL库使用CRC校验的思路。 步骤实现&#xff1a; CubeMX配置 c // 在CubeMX中启用CRC模块 // AHB总线时钟自动启用 HAL库代码 c // 初始化&#xff08;main函数中&#xff09; CRC_HandleTypeDef …...

LeetCode 746 使用最小花费爬楼梯

当然可以&#xff01;LeetCode 746 是一道经典的动态规划入门题&#xff0c;我来用 C 为你详细解释。 题目描述 给定一个整数数组 cost&#xff0c;其中每个元素 cost[i] 表示从第 i 个台阶向上爬需要支付的费用。一旦支付费用&#xff0c;你可以选择向上爬 1 步 或 2 步。 你…...

隧道结构安全在线监测系统解决方案

一、方案背景 隧道是地下隐蔽工程&#xff0c;会受到潜在、无法预知的地质因素影响。随着我国公路交通建设的发展&#xff0c;隧道占新建公路里程的比例越来越大。隧道属于线状工程&#xff0c;有的规模较大&#xff0c;可长达几公里或数十公里&#xff0c;往往穿越许多不同环境…...

牛客网NC22000:数字反转之-三位数

牛客网NC22000:数字反转之-三位数 &#x1f50d; 题目描述 时间限制&#xff1a;C/C/Rust/Pascal 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C/Rust/Pascal 32M&#xff0c;其他语言64M &#x1f4dd; 输入输出说明 输入描述: 输入一个3位整数n (100 ≤ n ≤ 999)…...

等离子模块【杀菌消毒】

图片来源于网络&#xff0c;与任何公司或实验室无关。 洗衣机中的等离子模块&#xff0c;又叫等离子杀菌模块或等离子发生器&#xff0c;是一种利用等离子体技术进行杀菌消毒、除异味、净化空气的部件。 输出正高压&#xff1a;3.0KV~4.0KV 输出负高压&#xff1a;-3.…...

LlamaIndex 第九篇 Indexing索引

索引概述 数据加载完成后&#xff0c;您将获得一个文档对象(Document)列表&#xff08;或节点(Node)列表&#xff09;。接下来需要为这些对象构建索引(Index)&#xff0c;以便开始执行查询。 索引&#xff08;Index&#xff09; 是一种数据结构&#xff0c;能够让我们快速检索…...

PCIe Switch 问题点

系列文章目录 文章目录 系列文章目录完善PCIe Retimer Overview Document OutlineSwitch 维度BroadComMicroChipAsmedia 祥硕Cyan其他 完善 Functional block diagram&#xff0c;功能框图Key Features and Benefits&#xff0c;主要功能和优点Fabric 链路Multi-root PCIe Re…...