被低估的AI算力:从GPU利用率到有效算力提升实战
1. 被低估的算力底座从一张显卡的利用率说起聊到AI算力很多人第一反应是“谁家又囤了多少张卡”。但我在实际项目里摸爬滚打这些年越来越确信一件事算力被低估往往不是因为卡少而是因为卡没被用明白。一张RTX 3090官方标称算力看着漂亮可你真把它塞进一台普通工作站跑大模型微调实际吞吐可能连理论值的一半都摸不到。问题出在显存带宽、PCIe通道、散热降频、驱动版本这些“看不见的地方”。西方一些分析报告习惯用“芯片出货量×理论峰值”去估算一个地区的AI算力总量这套算法在纸面上成立落到真实机房里就严重失真。因为算力从来不是一块芯片的独角戏而是芯片、互联、存储、调度、散热、电力六件事拧成的一股绳。我见过太多团队买卡的时候豪气冲天部署的时候才发现机柜功率不够、交换机端口不够、甚至机房承重都成问题。这些约束条件在公开的算力统计里几乎从不体现但它们实实在在地把可用算力砍掉一大截。反过来如果一个团队把这些“边角料”问题解决得好同样的硬件能跑出远超预期的有效算力。这就是为什么我说“被严重低估”这个判断本身可能都保守了——低估的不是纸面算力而是有效算力。有效算力等于理论峰值乘以一连串折损系数显存带宽利用率、互联效率、调度开销、故障恢复时间、甚至运维人员对GPU驱动开发的熟悉程度。每一个系数都可能是0.8乘在一起就只剩一半。这篇文章我想把这件事拆开讲透。不管你是刚接触大模型部署的新手还是已经在管数据中心的老手都能从里面找到能直接抄作业的东西。我会从算力约束下的资源配置建模讲起聊到GPU选型、分布式训练、微调实战再到数据中心网络配置和常见故障排查。核心就一个目标让你手里的每一张卡都跑出它该有的样子。2. 算力约束下的资源配置建模别让理论峰值骗了你2.1 有效算力的计算公式与折损因子先给一个我在项目里常用的有效算力估算框架。假设你有一台8卡服务器每张卡理论FP16算力为T那么理论总峰值是8T。但实际能用于大模型训练的有效算力大概是有效算力 8T × η_显存 × η_互联 × η_调度 × η_散热 × η_故障其中η_显存取决于模型参数量、batch size和优化器状态。举个例子用RTX 309024GB显存微调一个7B参数的模型如果采用全参数微调光优化器状态就要占掉大量显存实际能塞进去的batch size小得可怜GPU计算单元经常在等数据η_显存可能只有0.4到0.5。换成LoRA或者QLoRA这类参数高效微调方法显存占用大幅下降η_显存能拉到0.7以上。这就是为什么“大模型微调实战”里方法选择比硬件堆料更关键。η_互联在单机内取决于NVLink还是PCIe。有NVLink的卡间带宽能到几百GB/sPCIe 4.0 x16只有32GB/s左右。做张量并行的时候卡间通信频繁互联带宽不够计算单元就干等着。η_调度则是集群层面的问题任务排队、资源碎片、抢占恢复都会吃掉算力。η_散热和η_故障更隐蔽机房温度高几度GPU就会降频一张卡出问题整个训练任务可能得回滚到上一个checkpoint。2.2 从“堆卡”到“建模”一个实际案例去年我参与过一个中等规模的训练集群优化。客户原本的配置是32台8卡服务器卡是清一色的高端型号理论峰值算力相当可观。但实际跑大模型训练时MFU模型FLOPs利用率只有30%出头。我们做了一轮 profiling发现问题集中在三处一是数据加载成了瓶颈CPU预处理速度跟不上GPU消耗二是网络存储带宽不足checkpoint写入时间过长三是部分节点散热风道设计不合理GPU温度长期在85度以上触发降频。针对第一点我们把数据预处理 pipeline 改成了GPU加速的版本用 DALI 替代了部分CPU侧的增强操作数据加载时间从每步120ms降到35ms。第二点把checkpoint策略从“每步都写”改成“异步分片写入”并且把存储从普通NAS换成了并行文件系统写入带宽翻了四倍。第三点最直接调整了机柜风扇策略和进风温度GPU温度压到75度以下降频消失。三招下来MFU从30%提到了52%。卡没换一张有效算力接近翻倍。这个案例说明算力约束下提升大语言模型能力的资源配置建模核心不是做加法而是做乘法——把每个折损因子往上提一点乘起来就是质变。2.3 资源配置建模的实操步骤如果你现在手里有一批卡想搞清楚到底有多少有效算力可以按下面这个流程走一遍基准测试先用单卡跑一个标准模型比如ResNet-50或者一个小型Transformer记录吞吐和显存占用。这是你的“单卡基线”。单机多卡测试用NCCL测试卡间带宽用PyTorch的DistributedDataParallel跑一个简单任务看扩展效率。8卡通常能做到6到7卡的效率低于这个数就要查互联或调度问题。多机测试跨节点通信是重灾区。用RDMA还是TCP交换机配置是否合理都会极大影响扩展效率。我见过跨机效率只有单机一半的情况问题出在MTU设置不一致。端到端任务测试拿一个真实的大模型微调任务跑一遍记录每个epoch的时间和GPU利用率曲线。利用率曲线如果有大量低谷说明数据加载或通信在拖后腿。建立折损系数表把上面每一步的实测值除以理论值得到各个η。以后估算新任务的有效算力直接套这个表。这套方法不需要多高深的工具nvidia-smi、nvtop、PyTorch Profiler、NCCL Tests 这些开源工具就够用。关键是养成“先测量再优化”的习惯而不是凭感觉拍脑袋。3. GPU选型与驱动开发那些规格表不会告诉你的事3.1 消费级卡 vs 专业卡算力之外的隐形差距很多人问RTX 3090算力那么高价格又比专业卡便宜一大截为什么数据中心不大量用答案在规格表之外。首先是显存带宽和容量3090有24GB GDDR6X带宽936GB/s纸面不错但它没有ECC。在大规模长时间训练中显存软错误是真实存在的没有ECC意味着你可能跑了一周的训练因为一个比特翻转而崩溃。专业卡如A100、H100都有ECC这是稳定性的底线。其次是互联能力。3090支持NVLink但只有一对带宽也有限。专业卡通过NVSwitch可以做到全互联8卡之间任意两卡通信都是高带宽。做张量并行或专家混合模型时这个差距是决定性的。第三是驱动和软件栈。专业卡有更稳定的数据中心驱动分支支持vGPU、MIG多实例GPU等特性。MIG能把一张A100切成七个独立实例每个实例跑不同任务互不干扰。这个特性在“分布式算力”调度里非常有用消费级卡完全没有。还有一点容易被忽略散热形态。消费级卡多是风扇散热适合塔式机箱数据中心服务器是风道散热需要涡轮卡。你把风扇卡塞进2U服务器风道被打乱温度直接起飞。我见过有人硬塞结果夏天一到就频繁宕机。所以选型时先看机房环境再看卡。3.2 GPU驱动开发从“能跑”到“跑得好”GPU驱动开发这个方向很多人觉得离自己很远其实只要你在做AI部署就绕不开。最基础的nvidia-smi只能看个大概想看细粒度的GPU运行状态得用nvidia-smi dmon或者nvidia-smi pmon。Windows 7下查看GPU运行状态更麻烦官方驱动支持有限通常得靠第三方工具或者降级驱动版本。这也是为什么现在做AI开发Linux几乎是默认选择。再往深一层如果你要自己写CUDA kernel或者做算子优化就得理解GPU的线程层次结构grid、block、thread以及shared memory、register的分配。一个常见的坑是bank conflictshared memory的访问模式不对性能直接掉一半。还有warp divergence同一个warp里的线程走了不同分支串行执行算力浪费。这些在“gpu驱动开发”的语境下都是基本功。对于大多数AI工程师来说不需要写kernel但需要会配置环境。PyTorch安装教程GPU版本核心就三件事CUDA版本、cuDNN版本、PyTorch版本三者匹配。我建议直接用conda装conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia它会自动解决依赖。pip装有时候会遇到CUDA runtime找不到的问题排查起来很烦。装完之后用torch.cuda.is_available()验证返回True才算成功。3.3 国产算力芯片的适配现状昇腾系列有哪些GPU这是很多人搜的问题。严格说昇腾不是GPU是NPU架构不同。它的优势在于配套的CANN软件栈和MindSpore框架在特定模型上优化得不错。但生态成熟度相比CUDA还有差距很多开源模型需要手动移植。如果你团队里没有专门做算子适配的人上手成本不低。我的建议是如果项目对自主可控有硬性要求提前留出适配时间如果只是追求性价比和生态便利现阶段还是CUDA生态更省心。另外像RTX Pro 5500这类专业卡算力介于消费级和顶级专业卡之间适合中小规模推理和微调。选卡的时候别只看算力数字把显存容量、显存带宽、互联方式、散热形态、驱动支持五个维度列个表按项目需求打分比单看一个指标靠谱得多。4. 大模型微调与部署实战从Ollama到分布式训练4.1 微调方法选择全参数、LoRA还是QLoRA大模型微调技术这几年迭代很快但核心逻辑没变在算力约束下用尽可能少的可训练参数达到尽可能好的任务效果。全参数微调效果上限最高但显存需求也最大。一个7B模型全参数微调加上优化器状态轻松吃掉80GB以上显存单张3090根本放不下。所以实践中LoRA是更常见的选择。LoRA的原理是在原始权重旁边加一对低秩矩阵只训练这对小矩阵。可训练参数量能降到原模型的1%甚至更低显存占用大幅下降。QLoRA更进一步把原始权重做4-bit量化进一步压缩显存。我用QLoRA在单张3090上微调7B模型batch size能开到8训练速度虽然比全参数慢一些但完全可接受。关键是效果在多数垂直领域任务上QLoRA微调后的模型和全参数微调的差距很小但硬件成本差了好几倍。选择方法的时候先问自己三个问题显存有多少任务对效果的要求有多高训练时间窗口有多长显存充足、效果优先上全参数显存有限、快速迭代上LoRA或QLoRA。没有绝对的好坏只有匹配不匹配。4.2 Ollama部署与Intel GPU支持Ollama 是目前最省心的大模型本地部署工具之一。一条命令拉模型一条命令跑推理对新手极其友好。但它默认走CUDA如果你用的是Intel GPU需要额外配置。Ollama 支持Intel GPU 是通过 SYCL 后端实现的需要安装 Intel oneAPI 基础工具包和对应的驱动。配置过程比CUDA麻烦一些但社区有现成的Docker镜像能省不少事。部署的时候有几个参数值得调。num_gpu控制多少层跑在GPU上显存不够就调小num_thread控制CPU线程数纯CPU推理时有用context_length控制上下文窗口开太大显存会爆。我一般先用默认参数跑起来然后用ollama ps看资源占用再针对性调整。如果是多卡环境Ollama 目前对多卡并行的支持还在完善中大规模部署还是建议用 vLLM 或者 TGI 这类专业推理框架。4.3 分布式算力调度与多AI协作当单机不够用的时候就得上分布式。分布式算力调度有两个层面训练和推理。训练侧PyTorch的FSDPFully Sharded Data Parallel和DeepSpeed的ZeRO是主流方案。FSDP把模型参数、梯度、优化器状态分片到各张卡上每张卡只存一部分通信的时候再聚合。ZeRO类似分三个阶段逐步把更多状态分片。选择哪个看团队熟悉度和模型结构。FSDP和PyTorch集成更紧ZeRO在超大规模上更成熟。推理侧的分布式更多是负载均衡。多台机器跑多个模型实例前面挂一个路由层根据请求特征分发。这里“多AI协作”就派上用场了。比如一个请求需要先做意图识别再走对应领域的模型最后做结果汇总。你可以把不同模型部署在不同节点上用消息队列或者gRPC串起来。这种架构的瓶颈往往不在GPU而在网络和序列化开销。用Protobuf替代JSON用RDMA替代TCP能省出可观的延迟。5. 数据中心网络与故障排查算力之外的战场5.1 数据中心间策略与BGP路由大型数据中心里网络配置的复杂度不亚于GPU集群本身。BGP是数据中心间路由的事实标准但配置起来坑很多。比如路由反射器的选择、AS号的规划、前缀过滤策略每一步都影响收敛速度和稳定性。我见过因为BGP配置不当导致跨机房训练任务频繁断连的情况。排查的时候traceroute和mtr是基本工具但更关键的是看BGP的update消息和路由表变化。SRv6 Policy 是近几年比较热的技术能实现流量工程和路径编程。配置了SRv6 Policy的单CP多List场景初始两条SList这种配置通常用于多路径负载均衡或者故障切换。配置的时候要注意SID列表的顺序和权重顺序错了流量可能走不到目的地权重设错了负载不均。这类配置一般由网络团队负责但AI工程师最好也懂个大概因为训练任务的通信模式会影响网络策略的设计。5.2 常见GPU故障与排查速查表GPU相关的问题症状往往和原因隔得很远。我整理了一个速查表都是实际踩过的坑症状可能原因排查方法解决思路GPU被物理移除驱动崩溃、PCIe链路不稳、供电不足dmesg看内核日志nvidia-smi -q看链路状态更新驱动、检查供电和插槽、降低PCIe速率训练loss突然变NaN显存软错误、学习率过高、数据脏检查ECC错误计数回滚checkpoint开启ECC、降低学习率、清洗数据GPU利用率周期性掉零数据加载瓶颈、checkpoint阻塞nvidia-smi dmon看利用率曲线Profiler看数据加载耗时优化数据pipeline、异步checkpoint多机训练扩展效率低网络带宽不足、MTU不一致、NCCL配置不当NCCL Tests测带宽ifconfig看MTU统一MTU、启用RDMA、调NCCL参数推理延迟忽高忽低显存碎片、批处理策略不当、CPU抢占监控显存分配看请求队列长度预分配显存、动态批处理、绑核这张表里的每一条背后都是真金白银的教训。比如“GPU被物理移除”这个报错听起来像硬件坏了实际上很多时候只是驱动和内核版本不匹配。先别急着换卡更新驱动试试。5.3 散热与电力最容易被忽视的约束最后说两个最“土”但最要命的问题散热和电力。一个标准机柜的功率上限通常是10kW到15kW而一台8卡A100服务器满载功耗能到6kW以上。你塞两台进去功率就爆了。电力不够要么降频要么直接跳闸。散热同理机房空调的制冷量是按机柜功率设计的你超了温度就压不住。我建议在做任何算力规划之前先做一次机房勘察量机柜尺寸、查供电容量、测进风温度、看承重。这些数据拿到手再决定买什么卡、买多少台。很多“算力被低估”的案例根子不在芯片而在这些基础设施没跟上。把基础设施的账算清楚你会发现有效算力的天花板比想象中低但优化空间也比想象中大。6. 一些实操心得与避坑建议踩了这么多坑有几个心得我觉得值得单独拎出来说。第一先测再买。不管厂商把算力吹得多高拿真实模型跑一遍基准测试数据不会骗人。第二软件栈的成熟度比硬件参数更重要。一张卡再强驱动不稳、框架不支持就是废铁。第三网络和存储是隐形瓶颈。GPU利用率上不去先查数据加载和checkpoint别老盯着卡。第四散热和电力是硬约束规划阶段就要算进去别等部署了才发现机柜扛不住。还有一点关于“AI测试开发”的。现在很多团队开始用AI辅助写测试用例、生成测试数据这确实能提效。但AI生成的测试用例需要人工审核尤其是边界条件和异常路径AI经常漏掉。我的做法是AI生成基础用例人工补充边界和异常两者结合覆盖率比纯人工或纯AI都高。最后说个具体的技巧。如果你在Windows下做开发但训练在Linux服务器上可以用VS Code的Remote SSH插件本地写代码远程跑训练体验很顺。GPU运行状态在Windows下查看不方便的问题也可以通过在WSL2里装nvidia-smi解决比在Windows原生环境折腾驱动省事得多。算力这件事纸面数字和实际能力之间隔着一条河。河上有没有桥桥宽不宽决定了你到底能运多少货。把桥修好比单纯往岸边堆货重要得多。

相关新闻

工业AI落地实战:切带设备从自动执行到自主决策的架构与实现

工业AI落地实战:切带设备从自动执行到自主决策的架构与实现

1. 从"自动执行"到"自主决策":切带设备到底在经历什么干了十来年工业自动化,我见过太多"智能设备"的宣传册,翻来覆去就是"PLC控制、触摸屏操作、自动送料"这几板斧。但这两年有个明显的变化&#xf…

2026/10/5 9:14:51 阅读更多 →
智能体安全边界:从提示词到内核的三层防护实战

智能体安全边界:从提示词到内核的三层防护实战

1. 从18000条帖子说起:智能体安全边界为什么突然成了必答题18000条帖子,这个数字放在任何社区里都不算小。它意味着一个智能体在真实环境里跑了足够久,久到把人类能想到的正常请求、边缘请求、恶意请求几乎都碰了一遍。我关注这个数字&#x…

2026/10/5 9:14:51 阅读更多 →
SAP物料分割评估实战:从后台配置到月末结账的完整指南

SAP物料分割评估实战:从后台配置到月末结账的完整指南

在SAP项目里摸爬滚打久了,你会发现很多功能平时用不上,一旦用上就是救命的家伙。物料的分割评估(Split Valuation)就是这么个东西——平时安安静静躺在后台配置里,真到业务需要“同一个物料,不同的价格、不…

2026/10/5 9:14:51 阅读更多 →

最新新闻

OpenRig 开放式机架主机,从选材到组装的完整 DIY 指南

OpenRig 开放式机架主机,从选材到组装的完整 DIY 指南

组装过几台 OpenRig 之后,我发现这个项目比想象中成熟得多。OpenRig 不是什么新概念,它是一套开源的开放式机架主机方案,简单说就是把传统机箱的侧板、前面板和顶盖全部去掉,用铝型材搭出一个开放测试平台,让主板、显卡…

2026/10/5 9:44:38 阅读更多 →
hindsight:面向工程师决策过程的认知镜像系统

hindsight:面向工程师决策过程的认知镜像系统

1. 项目概述:这不是一个工具,而是一种“事后清醒”的工程化实践你有没有过这种体验:代码上线前反复检查,自信满满;线上报错后翻日志,发现某个参数明明该设成500却写成了50——不是逻辑错误,不是…

2026/10/5 9:44:38 阅读更多 →
基于Node.js与React的AI Agent开发实战:paperclip架构解析与OpenClaw实践

基于Node.js与React的AI Agent开发实战:paperclip架构解析与OpenClaw实践

1. 从 paperclip 说起:一个把 AI Agent 装进 Node.js 与 React 世界的项目第一次看到paperclip这个标题,我脑子里蹦出来的不是办公用品,而是那个经典的“回形针”隐喻——一个看似不起眼、却能撬动整套流程的小工具。结合热搜词里的 Node.js、…

2026/10/5 9:44:38 阅读更多 →
电赛综合测评实战指南:Multisim仿真与硬件调试全链路解析

电赛综合测评实战指南:Multisim仿真与硬件调试全链路解析

1. 这不是普通练习题,是电赛综合测评的“压力测试现场”电赛综合测评——这三个字在电子类本科生和指导教师心里,分量比期末考试重十倍。它不考理论推导,不考公式默写,而是把一个真实、带约束、有容错边界的硬件系统摆在你面前&am…

2026/10/5 9:44:38 阅读更多 →
OpenRIG开源机架指南:从铝型材选型到3D打印DIY硬件平台搭建

OpenRIG开源机架指南:从铝型材选型到3D打印DIY硬件平台搭建

1. 项目概述:OpenRIG 是什么,又是为了解决什么问题说实话,第一次听到 OpenRIG 这个名字,我脑子里第一反应是“open rig”,也就是开源、开放的机架/硬件平台。当你跑在技术社区、DIY 硬件圈子里,RIG 这个词…

2026/10/5 9:44:38 阅读更多 →
电源轨道系统核心技术路线对比与选型要点

电源轨道系统核心技术路线对比与选型要点

在装修与商用空间配电改造中,电源轨道系统凭借取电点位可调的技术特性,逐步替代传统固定插座。当前市场上产品技术来源多样,部分产品因忽视核心导电结构设计,存在安全性与耐用性不达标的工程风险。从核心技术维度区分产品技术路线…

2026/10/5 9:43:38 阅读更多 →

日新闻

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

马斯克杀回智能体战场,Grok 4.5万亿参数撑腰,Cursor接手数字白领项目:用TaoToken统一Key跑通多模型Agent工作流

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

2026/10/5 0:00:22 阅读更多 →
AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

AI编程工具插件机制详解:plugin.json配置与加载失败排查指南

1. 从“plugins”这个词说起:它到底在解决什么问题如果你最近在折腾 AI 编程工具,尤其是 Cursor、Codex CLI、Claude Code 这类带 CLI 的编辑器或命令行助手,那你大概率绕不开一个词——plugins。这个词本身不新鲜,从浏览器到 IDE…

2026/10/5 0:00:23 阅读更多 →
第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

第26课:OpenClaw|日志审计与问题诊断:把日志链路改到 TaoToken 的排查清单

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

2026/10/5 0:00:23 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/5 5:06:42 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/5 1:10:22 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/5 3:06:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/4 11:40:45 阅读更多 →
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/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练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/4 20:14:29 阅读更多 →