DMA与RDMA:拧干分布式训练中的通信内耗,把GPU算力真正用满
做分布式训练的朋友不少都遇到过这么一种怪象GPU 明明在跑可训练吞吐就是上不去卡越多越觉得亏。看监控时更是焦虑CPU 使用率忽高忽低网卡带宽明明占用不少延迟却飘忽不定。最后定位半天发现瓶颈根本不在计算而在数据搬运。今天就一起拆一拆分布式训练中两个最容易被忽略却又决定下限的传输机制——DMA 与 RDMA看看它们到底怎么工作、怎么配置、怎么把所谓的“资源内耗”拧干水分。这篇内容适合正在调多卡训练、DeepSpeed 或 Megatron 这类大模型框架又总感觉卡没吃满的工程师也适合做 GPU 集群基础设施想让通信时间和计算时间重叠的运维同学。哪怕你现在只是刚开始接触分布式训练把这两个概念吃透后面排障和性能优化会少走很多弯路。1. 分布式训练中的“资源内耗”到底浪费在哪很多人在优化分布式训练时第一反应是看 GPU 利用率却忽略了通信环节。实际上当模型规模变大、卡数变多时通信往往会占到整个训练时长的 30% 甚至更高。这部分开销如果没管好就是典型的“资源内耗”。1.1 表面看是卡没满本质是数据搬不动先看一个真实场景8 卡机训练一个大模型每经过一个 step 都要做一次梯度同步。假设单卡算力很强计算一个 step 只需要 0.5 秒但梯度张量加起来有几百 MB通过传统 TCP 以太网同步可能需要 1 秒以上。最终算下来端到端一 step 花掉 1.5 秒GPU 利用率只有 33%这就叫“卡没满”。问题根源在于数据搬运速度跟不上计算速度。比较扎心的是你可能已经上了 NVLink 或 PCIe 交换机但跨机通信还得走以太网。跨机通信的时候数据要从 GPU 显存拷贝到 CPU 内存再通过网卡发送接收端反过来也要走一遍。每一步拷贝都要消耗内存带宽和 CPU 时钟而这些资源本来可以用于 DataLoader 或模型计算。“数据搬不动”卡在三个地方第一CPU 内存带宽有限多个 GPU 同时抢第二PCIe 链路层级复杂IO 瓶颈容易扎堆第三通信库比如 NCCL要兼顾不同拓扑可能选择了一条低效路径。很多时候我们以为是网络带宽不够实际上瓶颈在“数据从显存到网卡”的这一段搬运路径而这一段搬运正是 DMA 和 RDMA 的主场。1.2 CPU 参与数据搬运带来的隐形瓶颈传统网络协议栈处理数据时CPU 要干活。一次 send 操作内核要拷贝用户态 buffer 到内核态 socket buffer协议栈做分段、校验、路由查找网卡中断上来之后 CPU 还要响应、收包、再把数据从内核态拷贝到用户态。这个路径叫 “data copying” 和 “context switch” 的组合CPU 资源被大量消耗。在分布式训练场景更要命的是每步同步都涉及大量小张量。用传统的 TCP 传输比如用 Socket 去传几十上百个小 TensorCPU 的上下文切换和锁开销会直接把吞吐打爆。有时甚至出现 CPU 吃满 100%但网络带宽只用到 30% 的怪相。这就是典型的资源内耗CPU 忙得要命却没有干计算的正事。而且 CPU 作为搬运工还有个问题——延迟高。因为数据从设备内存到主机内存再到网卡路径长且不可控。GPU 显存本来是通过 DMA 引擎把数据搬到主机内存然后 CPU 再把它搬到网卡这段多出来的路每一步都可能成为海森瓶颈。如果我们能用设备直接把数据送到对端设备让 CPU 靠边站延迟自然就下来了。这就引出了 DMA 和 RDMA。2. DMA 不是“免拷贝”而是绕过 CPU 的搬运工DMA全称 Direct Memory Access中文叫直接内存访问。很多入门资料把它解释成“不用 CPU 参与的数据拷贝”这算是理解到位但不够准确。更准确地说DMA 是一种让外设和内存之间直接交换数据的机制CPU 只负责发起一次传输剩下的事交给 DMA 控制器。2.1 DMA 的前世今生从磁盘到网卡的演变DMA 不是新概念但很多人是从网卡性能优化的文章里认识它的。最早 DMA 用在磁盘控制器上读盘时磁盘数据先由 DMA 控制器直接写到主存写完后再通知 CPU“数据已就位”CPU 不需要逐字地去读取。后来网卡也开始支持 DMA网卡收到数据后直接写入内存发送时直接从内存取数据。即使是最普通的千兆网卡也硬件支持 DMA否则 CPU 根本扛不住高速收包。但在早期实现里网卡的 DMA 还是要经过内核协议栈所以有了 DMA 但仍然存在大量拷贝。现代高性能网卡进一步演进出现了 DMA 环DMA ring驱动与网卡共享一组环形队列描述符中记录着数据缓冲区的物理地址。发送时驱动填充描述符网卡自己去取接收时网卡按描述符写入内存再写一个完成队列元素。CPU 只在收尾时做轻量操作这就是所谓的“零拷贝”雏形。在分布式训练里DMA 最常见的就是 NVLink 和 PCIe P2PPeer-to-Peer。比如 NCCL 在做单机多卡 AllReduce 时可能让 GPU0 通过 NVLink 直接读取 GPU1 的显存不需要把数据先拷到主机内存。这就是 DMA 思想在设备间传输上的拓展只是“内存”换成了另一个设备的显存。2.2 DMA 在分布式训练里的几种落地形态分布式训练框架里你会看到 DMA 相关的配置和概念散落在不同层。理解它们的区别有助于排障。第一种是 CPU 与 GPU 之间的 pinned memory锁页内存。CUDA 编程里host 端申请内存默认是 pageable memory也就是可分页内存。如果用 cudaMemcpy 异步复制则必须使用 cudaHostAlloc 分配的锁页内存这样 GPU 的 DMA 引擎才能保证在传输过程中不会因为页面被置换导致地址失效。这就是 DMA 在单机内的落地。第二种是 GPU 与 GPU 之间的 Peer-to-Copy。通过 cudaDeviceCanAccessPeer 查询两个设备是否支持直通如果支持就可用 cudaMemcpyPeer 直接拷贝不需要经过设备 0 的设备端临时缓冲。NCCL 也会优先使用 NVLink 做 P2P。这类 DMA 用在单机内部速度可达几十 GB/s。第三种是网卡 DMA 到 GPU 显存。这叫 GPU Direct RDMA严格说属于 RDMA 的范畴但它也依赖 DMA 路径。在 NVIDIA 平台上网卡可以直接把收到的数据写入 GPU 显存绕过主机内存和 CPU。这里的关键是“直接”而背后的机制仍然是 DMA。不可否认如果没有 DMA 的概念铺垫整个 RDMA 的收益模型就很难讲清楚。不少人在配置时忽略了一点DMA 虽好但它依赖物理拓扑。PCIe 通道总共就那么多如果三个 GPU 和两块网卡全挤在同一条 root complex 下PCIe 带宽就成了共享瓶颈。即使做了 P2P也会因为总线竞争而掉到半速。所以要发挥 DMA 的优势硬件规划要看 CPU 拓扑不能只看软件开关。3. RDMA 的看家本领让网卡直接读写远端内存RDMA全称 Remote Direct Memory Access远程直接内存访问。一句话就是本机应用可以直接读写远端应用的内存不需要双方 CPU 参与中间的数据搬运也不需要在内核里反复拷贝。它把“本机 DMA”扩展到了网络对端。3.1 RDMA 三类实现IB、RoCE、iWARP 怎么选RDMA 是一个技术家族目前主流的实现有三条路线。InfiniBandIB最正统的 RDMA 网络有自己独立的物理链路、交换机、网卡和协议栈。延迟极低亚微秒级吞吐很高但价格也高。IB 网络通常是整套的比如 NVIDIA 的 Quantum 交换机配 ConnectX 网卡。在超大规模训练集群里IB 是首选特别是 A100/H100 为主的集群几乎标配 IB。RoCERDMA over Converged Ethernet把 RDMA 封装在以太网帧内主要是 v2 版本可以跑在普通以太网交换机上但要求交换机支持无损以太网PFC、ECN、ETS。RoCE 成本比 IB 低很多延迟略高但也已经达到微秒级。也是目前大多数自建 GPU 集群最常用的方案性价比很高。iWARPRDMA 跑在 TCP 协议上严格说它不要求无损网络但做法是通过 TCP 的可靠传输来保证这样反而引入了一定的 CPU 开销性能不如 RoCE。现在很少在训练集群推荐它更多是作为 RDMA 兼容性测试时会提到。有一个容易踩坑的点很多人以为只要网卡支持 RoCE交换机就一定能跑。但 RoCE v2 需要网络没有丢包否则吞吐断崖式下跌。所以买设备的时候要确认交换机支持 DCQCN / PFC 这类流控机制。如果交换机是普通“傻瓜”交换机大概率跑不出 RDMA 的带宽。挑选方案时别盲目先算账如果是 4 台以内的单机多卡用普通 TCP 压力都不大没必要上 RDMA如果做大模型预训练跨节点通信量大且频率高RoCE 是最平衡的选择预算充足且要做极大规模并行IB 是稳妥的长期投资。3.2 从应用到网卡一次梯度同步的 RDMA 之旅我详细说一遍一次典型的梯度同步是怎么走 RDMA 的这样你对“CPU 靠边站”会有画面感。训练过程里每步反向传播会产生梯度。NCCL 框架调用通信原语比如 AllReduce。在 RDMA 模式下NCCL 会准备一块 GPU 显存中的 buffer然后用 GPU Direct RDMA 让网卡知道这块 buffer 的地址和长度。网卡发送时并不经过 CPU 拷贝而是通过 DMA 直接读显存把数据包化成 RDMA 消息发出去。对端的网卡收到消息后根据接收端预先注册的内存地址直接把数据写入对端 GPU 显存。整个过程对接收端应用透明CPU 只负责处理控制消息和完成通知。因为地址是提前注册好的所以收到数据时不需要临时分配内存也不用做额外的内存拷贝。这也是 RDMA 与 TCP 的本质差别TCP 是接收方不知道数据要到哪等数据到了再拷贝RDMA 是提前把“内存窗口”暴露给对端数据到了直接落位。这里有个关键组件叫 RDMA 的 “memory registration”内存注册。应用要访问的缓冲区要提前注册返回一个称为 “lkey/rkey” 的键。发送端要包含远端地址和 rkey这样对端网卡才允许写入。如果不注册网卡没有权限直接访问该内存区域会触发错误。NCCL 底层会管理一块注册好的通信 buffer 池避免每步都重新注册这也是为什么第一次初始化通信时慢后面就快了。为什么梯度同步用 RDMA 比 TCP 快延迟上TCP 的一次数据交互可能有几十微秒RDMA 可以做到个位数微秒。吞吐上RDMA 可以做到多队列并行绕过内核协议栈的锁竞争线速跑满网卡带宽。更重要的是CPU 从数据搬运中解放出来DataLoader 和算子可以更充分地用 CPU。这就是“资源内耗”逐渐消失的原因。4. 实操给训练集群开启 DMA/RDMA 的关键设置理论讲多了没用最终还是要落地。我把实际配置过程中比较关键的部分总结成四个阶段你会看到很多坑其实都藏在细节里。4.1 硬件选型与 BIOS/固件检查先确认硬件是否支持CPU 平台大部分现代服务器支持 IOMMU / ACS要确保 BIOS 开启相关 IO 虚拟化选项否则 PCIe P2P 和地址翻译会出问题。网卡必须支持 RDMA常见的有 Broadcom 某些型号支持 RoCE还有 NVIDIA ConnectX 系列。用lspci -v查看网络控制器的 Capabilities确认有没有 “Advanced Error Reporting” 和 “RDMA” 相关特性。交换机和光纤/网线RoCE 对丢包很敏感交换机必须支持 PFC / ECN 至少一项并开启相关配置。实际操作中我发现最容易踩的是固件版本。有的网卡刚开始 RDMA 能通但性能跑不满查半天发现是固件太老厂商偷偷把 PFC 队列数上限改了。所以一上来先升级网卡固件和驱动做基线测试再往下排查。BIOS 设置一般注意几点开启 “SR-IOV” 如果要用虚拟化设置 PCIe 链路速度为最高支持如 Gen4/Gen5把 Above 4G Decoding 打开保证大块物理地址可用。这些设置可能让 DMA 映射范围变大减少地址翻译问题。对 2P 服务器CPU 与 GPU/网卡的 NUMA 拓扑也很关键。4.2 软件侧配置驱动、路由与传输模式安装网卡驱动后需要加载 RDMA 相关内核模块。以 RoCE 为例至少要有mlx5_core、ib_uverbs、rdma_cm等模块。用ibv_devinfo查看设备状态会看到一个port_state: ACTIVE表示链路正常。在通信库层面NCCL 的参数影响很大export NCCL_IB_DISABLE0 # 启用 IB/RoCE export NCCL_IB_TIMEOUT22 # 设置超时过大过小都会出问题 export NCCL_IB_GID_INDEX3 # RoCEv2 通常用 gid index 3 export NCCL_IB_SL0 # 服务等级配合 PFC 队列 export NCCL_SOCKET_IFNAMEeth0 # 指定主机的 TCP 接口 export NCCL_IB_HCAmlx5_0,mlx5_1 # 指定使用的 HCA 列表数值不一定对所有集群都适用关键是要理解每个值的意义。NCCL_IB_TIMEOUT控制着重传超时值太大会导致卡住检测慢值太小会误判丢包。很多集群出现偶发 hang都跟 timeout 设置不合理有关。配置路由时要保证主机之间的 RoCE 包能到达对方。很多集群有多个网段在命令行ibstat和ibv_devinfo查看port GUID和 GID并确认两条链路之间的连通性。如果节点间有多个 NIC 和多个交换机要配置好静态路由否则会走错接口带宽直接减半。传输模式方面NCCL 支持Simple、LL、LL128等协议。默认情况下会自动选择。如果网络高频小消息多可以手动调高NCCL_PROTOLL128尝试有时候吞吐能提升 20%。但这不是万能药如果链路带宽有限LL128 反而会因为其内存对齐要求导致额外开销。4.3 验证收益带宽测试工具与数据分析不要直接拿训练跑起来看 wall time最好分三层验证。第一层验证物理链路。用ibping或perftest工具组里的ib_write_bw测试点对点 RDMA 写带宽。命令类似# 服务端 ib_write_bw -d mlx5_0 -i 1 -s 1024000 -q 4 # 客户端 ib_write_bw -d mlx5_0 -i 1 -s 1024000 -q 4 192.168.10.2同样的节点TCP 带宽比如 25GbpsRDMA 写带宽能做到 24Gbps 以上才是正常。如果只有 10Gbps肯定有问题看丢包、看协商速率、看 PFC 计数。第二层验证 NCCL 通信。用nccl-tests的all_reduce_perf跑一下./build/all_reduce_perf -b 128M -e 8G -f 2 -g 8观察busbw数值。如果多机多卡与单机多卡相比带宽没有掉很多说明 RDMA 路径生效。比如单机内 NVLink 可以达到 200GB/s 量级跨机 RoCE 一般 12.5GB/s/100Gbps 左右如果跨机只剩 1GB/s大概率是走了 TCP 或 P2P 路径没打通。第三层看训练脚本里的通信耗时占比。可以在框架日志里开启 profiler比如 PyTorch 的torch.profiler单独分析ncclKernel_AllReduce或者通信相关算子。如果通信耗时占 step 时间的比例从 40% 降到 15%说明资源内耗改善明显。如果比例依然很高可能不是传输出问题而是数据切分梯度张量太小、Torus 网络拓扑利用率不高。这些测试节点增长后建议每次都记录 baseline方便日后定位回归。5. 避坑锦囊我踩过的 DMA/RDMA 资源内耗大坑这部分是纯实战经验很多问题光靠看书根本预想不到。我整理成速查表和心得。5.1 问题速查表症状与排查方向症状可能原因排查与解法RDMA 带宽低只有线速 1/3RoCE 丢包PFC 未开启或配置错误检查交换机 PFC 队列配置用ethtool -S看rx_pause计数多卡训练速度反而比单卡慢使用 TCP 而非 RDMANCCL 走了共享内存接口检查 NCCL_IB_DISABLE 和网卡选择查看 NCCL debug 输出训练偶发 hang几分钟后恢复RDMA 超时设置过大或过小dmesg查看mlx5报错调整NCCL_IB_TIMEOUTCPU 使用率很高GPU 空闲DataLoader 和通信都抢 CPU但通信走了内核拷贝使用 GPU Direct RDMA同时增大 DataLoader worker 数量NVLink P2P 只在部分 GPU 对生效拓扑不对称部分 GPU 跨 PIX/PHB 无法 P2P用nvidia-smi topo -m查看拓扑设置 NCCL 使用 P2P 可用矩阵多机带宽测试正常训练却不稳定网络中有背景流量或拥塞RoCE 网络需要做拥塞控制限制 SSH 和监控流量印象最深的一次是某集群跑千亿模型RoCE 带宽计算和实测都对但训练吞吐就是上不去。后来发现因为是等保合规测试机交换机上开了 ACL 规则对 RoCE 流做了采样限速导致 PFC 响应异常。去掉采样策略后一切恢复正常。这说明 RDMA 非常依赖网络设备的确定性任何 QoS 策略都可能影响性能。还有一个高频坑是NCCL_IB_HCA没设对导致通信全部挤到一块网卡上用物理链路带宽上限另外一块空闲。出现这个问题时你看到的 CPU 并不高网卡却跑的满头大汗带宽却只有一半。解决很简单显式指定 HCA 或者设置NCCL_IB_DISABLE0后让 NCCL 自动选。5.2 经验心得把“内耗”降到最低的全局视角DMA 和 RDMA 解决了数据“怎么搬”的效率问题但资源内耗的真正根因往往不是单一环节而是整条链路的木桶效应。我的经验是先从通信占比入手通信占比高于 25% 就必须动传输路径低于 25% 时优化 DMA/RDMA 的收益反而不如优化数据增强和 checkpoint。把 RDMA 调通只是第一步之后要想让训练吞吐提高还要考虑三个全局优化点。第一个是拓扑感知。NCCL 会建立拓扑树但多机多卡下不同节点的 GPU 会有不同的 rank 分配。最好在启动脚本里根据nvidia-smi topo -m把最相邻的 GPU 分到同一台机器减少跨机通信次数。有的团队会在启动前专门做资源亲和性检查甚至让 NCCL 使用环境变量限制跨节点通信的链路数。第二个是通信与计算重叠。光有 RDMA 还不够还要让通信尽量和计算并行。PyTorch 里使用分布式数据并行时默认是梯度同步和反向传播逐步重叠但如果你自己写通信代码可以用torch.distributed.bucket或者对不同层梯度分组在反向传播过程中就开始 AllReduce。这样通信时间穿在计算时间里端到端时间能大幅降低。第三个是集体通信库的选择。NCCL 是最普及的但并不总是最佳。部分团队在 RoCE 网络上改用 Gloo 混合策略或者自己调优 NCCL 的 ring/tree 算法。对于不同消息大小NCCL 的 ring 和 tree 的效率差异很大一般小消息走 tree 快大消息走 ring 快最新版本已经可以自动选择。你可以通过NCCL_ALGORing或NCCL_ALGOTree强制去测选在指定带宽和延迟下最优的算法避免无脑默认。这个内容后续你还可以从“多租户下的RDMA动态共享”方向扩展如何用 QoS 做流量隔离、如何监测拥塞、如何在同一个集群里跑多个分布式任务而不互相干扰。比如网卡上可以配置多个 Priority 队列不同租户的流走不同 SL配合 PFC 能精确控速。这类问题在大型训练平台里非常常见搞懂之后你会觉得分布式训练的“内耗”是完全可以量化、可以控制的。我个人在实际操作中的体会是DMA 和 RDMA 不是买完硬件、设两个环境变量就行它需要你带着“数据链路地图”去看训练任务——从显存出发经过 PCIe、网卡、交换机再到对端显存。每多一次拷贝、每多一个 CPU 转发都在悄悄吃掉你的 GPU 算力。把这条路上的资源内耗逐一拧干训练吞吐自然会上一个台阶。希望这份总结能帮你在自己的集群里少踩几个坑。

相关新闻

AI写教材如何规避重复率陷阱?低查重工具选型与提示词策略

AI写教材如何规避重复率陷阱?低查重工具选型与提示词策略

最近半年我一直在帮某课程团队整理一本专业基础课教材,从大纲到初稿全程用 AI 协作,中间最头疼的倒不是“AI 写不出来”,而是“AI 写出来之后,原创性和教学深度都撑不住”。团队里三位老师拿着初稿去和已出版教材比对,…

2026/10/18 9:58:42 阅读更多 →
SICK RFID TCP通信缓冲区设置与帧解析实战

SICK RFID TCP通信缓冲区设置与帧解析实战

简介:本资源是一套面向工业自动化开发者的C#实战项目,聚焦德国SICK RFID读卡器RFU630的TCP通信集成方案,适用于具备基础C#和网络编程能力的中级开发者,解决工业现场设备数据实时采集、异步响应与UI线程安全更新等典型痛点。压缩包…

2026/10/18 9:58:53 阅读更多 →
企业AI能力评估:六维模型与实战诊断指南

企业AI能力评估:六维模型与实战诊断指南

这两年我作为AI应用架构师,帮不少企业做过AI能力体检。说白了,这项工作就是在回答一个问题:一家企业说自己“AI能力强”,到底体现在哪里?是买了几套GPU服务器?是上线了一个智能客服?还是说从决策…

2026/10/17 7:19:06 阅读更多 →

最新新闻

VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

VGG骨干+轻量时序注意力:视频理解模型设计实战拆解

做视频理解绕不开一个老问题:怎么在空间特征之上合理地建模时间关系。这个“VGG改进”系列我写了几十篇,大部分都集中在图像场景、网络剪枝和重参数化上,直到第23篇我才正式把方向切到视频。今天这篇就用一个实战设计笔记的方式,完…

2026/10/18 9:58:37 阅读更多 →
基于Canvas与React的轻量级创意合成工具artcraft开发实践

基于Canvas与React的轻量级创意合成工具artcraft开发实践

1. 项目缘起与整体设计思路1.1 为什么会有 artcraft 这个想法做创意工具这些年,我最大的感受是:市面上大多数所谓“创作辅助平台”,要么是给专业设计师用的重型武器,功能全但上手门槛高得离谱;要么是给小白玩的轻量玩具…

2026/10/18 9:58:37 阅读更多 →
MATLAB交通标志检测:BP网络+HOG+PCA的毕设落地方案

MATLAB交通标志检测:BP网络+HOG+PCA的毕设落地方案

简介:本资源是一套基于MATLAB的交通路标检测与识别实战项目,面向机器视觉与深度学习初学者及高校课程设计者,聚焦智能交通场景下的图像识别核心任务。项目完整覆盖图像预处理、CNN特征提取、BP神经网络建模、多类路标(禁止/警示/指…

2026/10/18 9:58:37 阅读更多 →
基于人工势场法与MPC的自动驾驶换道避撞技术解析

基于人工势场法与MPC的自动驾驶换道避撞技术解析

高速巡航时前车突然急刹,留给你的反应时间往往不到一秒。这个场景里藏着一个很有趣的问题:系统是该选择全力制动,还是观察相邻车道、迅速打方向避开?答案是“看情况”,而这个“看情况”的背后,就是换道避撞…

2026/10/18 9:58:37 阅读更多 →
VLAN综合实验深度解析:广播域隔离与跨交换机通信全流程

VLAN综合实验深度解析:广播域隔离与跨交换机通信全流程

我帮一家做电商代运营的小公司调试网络时,遇到过一件挺折腾的事:办公区明明只有四十多台电脑,可一到下午订单高峰期,整个办公室的网络就卡成幻灯片,打印机能连上却经常丢任务,连财务那边访问服务器都时不时…

2026/10/18 9:58:37 阅读更多 →
在线考试系统的Java后端设计:并发、判分与数据一致性避坑指南

在线考试系统的Java后端设计:并发、判分与数据一致性避坑指南

简介:一套面向Java学习者和毕业设计开发的在线考试管理系统完整交付包,涵盖源代码、论文、开题报告、外文翻译、英文文献与答辩PPT,适合快速搭建在线考试项目或完成课程设计、毕业设计汇报。系统覆盖题库管理、考试安排、在线答题、自动评分和…

2026/10/18 9:57:37 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →