AI与HPC能耗测量与碳估算:从系统到代码的工程实践指南

news2026/5/24 11:26:31
1. 项目概述为什么我们需要关注AI与HPC的能耗如果你和我一样常年泡在数据中心或者高性能计算集群里最近几年肯定有一个感受越来越强烈电费账单和机柜散发的热量正以前所未有的速度成为项目规划和运维中绕不开的核心议题。这不仅仅是成本问题更是一个关于可持续性和技术责任的现实拷问。我们训练一个百亿参数的模型或者运行一个大规模流体动力学仿真动辄消耗数万甚至数十万千瓦时的电力。这些电力从何而来燃烧了多少化石燃料产生了多少碳排放作为一线的工程师和研究者我们不能再对这些问题视而不见仅仅满足于“任务跑通了精度达标了”。“从能耗测量到碳估算”这个主题正是为了解决这个痛点。它不是一个空中楼阁的理论研究而是一套非常务实、可落地的工程实践指南。其核心逻辑链条非常清晰你无法管理你无法测量的东西。因此第一步是精确测量——从整个服务器机架到单个CPU核心从长达数周的HPC作业到毫秒级的代码片段。第二步是理解与建模——分析这些功耗数据与硬件利用率、软件行为之间的关系。第三步是评估与优化——基于测量结果评估能效瓶颈并指导硬件选型、算法改进和调度策略。最后一步是碳转化——将消耗的电能千瓦时结合电力来源的碳强度克二氧化碳当量/千瓦时计算出该计算任务真实的碳足迹。这个过程的价值是立体的。对架构师和运维工程师而言它是进行容量规划、降低PUE电源使用效率、优化冷却策略的数据基础。对算法工程师和科学家而言它提供了评估模型或仿真代码“能效比”的新维度帮助在精度、速度和能耗之间做出更明智的权衡。对企业和机构而言这是履行环境责任、满足合规要求、并向公众透明展示其技术活动环境影响的关键能力。接下来的内容我将结合多年在超算中心和AI平台的工作经验拆解从系统、作业到代码三个不同颗粒度的测量实践分享主流工具的使用心得和避坑指南并详细说明如何将冰冷的瓦特数转化为有意义的碳估算。这不是一份简单的工具列表而是一份融合了原理、实操和大量“踩坑”经验的综合指南。2. 能耗测量的核心原理与挑战在动手插电表或运行监控命令之前我们必须理解能耗测量的底层逻辑和固有复杂性。很多人以为测功耗就像读温度计一样简单直接但实际上它充满了“海岸线悖论”——测量得越精细你看到的“细节”和“波动”就越多反而可能离一个单一的“标准答案”越远。2.1 测量什么功率 vs. 能量这是最基本但至关重要的区分功率瞬时值单位是瓦特表示设备在某一时刻消耗电能的速率。就像汽车当前的时速。能量累积值单位是焦耳或千瓦时表示一段时间内消耗的总电能。功率对时间的积分。就像汽车一段旅程消耗的总汽油量。在计算领域我们最终关心的是完成特定计算任务所消耗的总能量。因此典型的流程是以一定的频率如每秒一次采样瞬时功率然后通过积分通常采用简单的梯形法则或矩形法求和来计算该时间段内的总能量消耗。公式可以简化为总能量 ≈ Σ(功率采样值 * 采样间隔时间)。2.2 测量层级与范围界定根据你的目标测量可以在不同层级进行这直接决定了工具的选型和数据的意义。系统级在服务器电源入口处“墙插”测量。这是最宏观的视角包含了CPU、GPU、内存、硬盘、主板、风扇、电源转换损耗等所有部件的总功耗。它适用于数据中心PUE计算、整机柜能效评估和电费核算。优点是全面缺点是无法区分单个应用或组件的贡献。组件级测量特定硬件组件如单个CPU插槽、GPU卡或内存条。这依赖于硬件提供的传感器如Intel的RAPL或NVIDIA的NVML。优点是粒度细能关联到具体硬件活动缺点是可能无法捕获主板、VRM电压调节模块等共享部分的功耗且不同厂商、型号的传感器精度和接口不一。作业/进程级将功耗分摊到单个计算作业或操作系统进程。这通常在系统级或组件级测量的基础上结合资源管理器如Slurm、Kubernetes的作业调度信息进行关联和划分。这是HPC和云环境中最实用的视角之一。代码/函数级试图测量特定算法、函数甚至代码行的能耗影响。这是最精细、也是最困难的层面通常需要结合性能剖析工具和功耗模型进行估算。注意在虚拟化或容器化环境中能耗归属变得模糊。虚拟化软件如Hypervisor、Docker引擎本身的能耗是否应该计入其内部运行的 workload这取决于你的分析目标。如果目标是评估某个AI训练任务在容器内的绝对能效可以只关注容器内进程触发的硬件资源功耗增量。但如果要评估整个虚拟化平台的效率则必须包含管理程序的开销。关键在于明确界定并始终一致地报告你的测量范围。2.3 关键挑战与常见误区没有“银弹”基准不存在一个放之四海而皆准的功耗基准测试。SPECPower_ssj2008和SERT是针对服务器整机在标准商业负载下的能效评级对于特定的科学计算或AI训练负载可能不具代表性。ML Commons等组织正在推动MLPerf等包含能效指标的AI基准测试但定制化的工作负载仍需自行评估。TDP的误导性处理器的热设计功耗是一个重要的参考值但它不是典型功耗更不是最大功耗。TDP是芯片制造商为散热系统设计提供的热功耗指标。一个标称TDP 250W的GPU在运行某些计算密集型但内存访问少的核函数时可能平均功耗只有180W而在进行频繁显存交换时可能会瞬时突破TDP。因此TDP仅能用于非常粗略的容量规划和上限估算绝不能用于精确的能耗计算。利用率与功耗的非线性关系硬件功耗并非随着利用率从0%线性增长到100%。通常存在一个较高的基础功耗空闲功耗在利用率较低时功耗随利用率提升增长较快达到一定利用率后增长曲线会趋于平缓。这意味着将两个50%利用率的任务合并到一个节点运行其总功耗很可能低于让两个节点各自以50%利用率运行的总和。这种非线性特性是进行资源整合和调度优化以提升能效的理论基础。超线程带来的“超100%”利用率在启用超线程的CPU上操作系统会将每个物理核心报告为两个逻辑核心。当所有硬件资源都被高度利用时top或htop等工具显示的CPU利用率可能超过100%例如在18核36线程的CPU上显示1800%。此时需要将读数除以物理核心数来获得真实的物理核心利用率用于功耗估算模型。采样率与“盲区”功耗是一个高频信号。如果你的采样间隔是1分钟那么持续几秒的功耗尖峰可能会被均摊到整个采样周期中从而被低估。相反一个短暂的尖峰也可能被错误地放大成持续一分钟的高功耗。对于短时任务或功耗波动剧烈的负载需要更高的采样率如1秒或更低。但更高的采样率意味着更大的数据量和监控开销需要在精度和开销之间权衡。3. 实战工具箱从硬件到软件的测量方法工欲善其事必先利其器。下面我将分类介绍实践中常用的测量工具并分享它们的适用场景和局限性。3.1 直接硬件测量最准确但实施复杂这是获取“地面真值”的黄金标准通常通过外接功率计实现。方法使用钳形功率计或插座式功率计直接测量服务器电源线输入端的交流电参数电压、电流、功率因数计算得到实功率。工具示例Yokogawa WT系列高精度功率分析仪、Fluke 1730系列电能记录仪或更经济的消费级插座功率计如TP-Link的智能插座但精度较低。适用场景系统级能效基准测试和验证。校准软件传感器读数如RAPL的准确性。测量包含所有附属设备如外部磁盘阵列、网络交换机端口的总能耗。实操心得精度是关键选择适合电流量程和带宽的仪器。AI/GPU服务器启动瞬间或有峰值负载时电流冲击很大。同步是难点需要将功率计的时间戳与系统日志、作业开始/结束时间精确同步通常需要借助NTP服务器和精确的计时API。成本与可扩展性为大规模集群的每个节点配备高精度功率计成本极高通常只用于抽样测量或关键节点的验证。3.2 带外管理接口测量平衡精度与可行性现代服务器大多配备带外管理控制器如HP的iLO、Dell的iDRAC、Supermicro的IPMI。它们可以通过独立的网络接口在不干扰主机操作系统的前提下提供硬件状态监控包括节点级功耗。方法通过管理口的API如Redfish标准、IPMI命令定期查询功耗读数。工具示例ipmitool命令行工具或各厂商提供的RESTful API。适用场景HPC集群、企业数据中心的系统级和作业级功耗监控。NREL的Peregrine超算案例正是基于HP iLO的数据。优点无需在主机安装代理软件对性能无影响。获取的是整个节点的功耗包含了所有内部组件。通常采样率在1秒到1分钟级别满足大多数作业级分析需求。注意事项数据质量需清洗如案例中提到部分iLO芯片可能上报零值或异常值需要在分析前进行数据清洗和过滤。不含基础设施损耗测量的是输入到服务器电源模块的直流电功耗不包括机房UPS、PDU电源分配单元和空调冷却产生的损耗。这部分损耗体现在数据中心的PUE值中。3.3 操作系统/驱动级软件传感器最常用粒度细这是最方便、最细粒度的方式通过操作系统接口读取CPU、GPU等组件内置的能量传感器数据。CPU/内存功耗 - Intel RAPL原理Intel从Sandy Bridge架构开始在CPU中引入了Running Average Power Limit接口。它通过芯片上的电源管理单元和模型估算出CPU核心、非核心Uncore包含缓存、内存控制器等以及DRAM的功耗。工具perf stat -e power/energy-cores/,power/energy-ram/ ...Linux perf工具直接支持RAPL事件。turbostatIntel提供的工具可报告每个CPU包的功耗和频率。PowerTOP可用于监控和诊断功耗来源。PyRAPLPython库方便在代码中嵌入功耗测量。重要限制RAPL是估算值而非直接测量值。虽然与外部测量相关性很高但在极端负载或特定微架构下可能存在偏差。它也无法测量主板、PCIe设备等其他部件的功耗。GPU功耗 - NVIDIA NVML / SMI原理NVIDIA GPU通过驱动暴露功耗传感器数据。工具nvidia-smi命令行工具可以实时查询或定期记录GPU的功耗、利用率、温度等。pynvml库提供了Python编程接口。实操命令示例# 每1秒采样一次记录到文件 nvidia-smi --query-gputimestamp,power.draw,utilization.gpu,memory.used --formatcsv -l 1 gpu_power.log系统资源代理指标原理当无法直接获取功耗时可以利用CPU利用率、磁盘IO、网络流量等系统指标作为代理通过预先建立的功耗模型来估算。例如已知某型号CPU在0%和100%利用率时的功耗可以线性或非线性插值估算中间状态的功耗。工具psutilPython、top、vmstat、iostat等。适用场景虚拟化环境、云虚拟机实例通常不直接暴露硬件功耗传感器或作为辅助验证手段。3.4 高级软件与可持续性工具这类工具在基础测量之上提供了更集成的分析、可视化或碳估算功能。性能剖析器集成TensorFlow Profiler / PyTorch Profiler在分析模型训练性能时可以同时查看GPU和CPU的估算功耗将性能瓶颈与能耗热点关联起来。Intel VTune Profiler提供深入的CPU、GPU性能与功耗分析。可持续性计算与碳估算工具Code Carbon一个Python包在代码执行期间后台通过psutil和pynvml如果可用估算功耗并根据用户提供的电网碳强度gCO₂eq/kWh自动计算碳排放。它非常适合在AI训练脚本中集成进行实验级的碳足迹跟踪。实验设置示例from codecarbon import EmissionsTracker tracker EmissionsTracker( project_namemy_bert_finetuning, measure_power_secs10, # 采样间隔 output_dir./emissions_data, log_levelerror ) tracker.start() # 这里是你的训练代码 # model.train(...) tracker.stop() # 会生成一个包含碳排放估算的CSV报告KeplerKubernetes原生的功耗监控器通过cGroup和硬件传感器在容器粒度估算Pod的能耗非常适合云原生环境。Green Algorithms / ML CO2 Impact基于Web的估算器通常需要用户手动输入使用的硬件类型、运行时长、云服务商和地区它们利用公开的平均碳强度数据来估算碳排放。适合对已完成的任务进行事后分析。4. 从能耗到碳估算打通最后一公里测量出能耗千瓦时只是第一步将其转化为碳排放量克或千克二氧化碳当量才是评估环境影响的最终步骤。这一步的核心在于电网碳强度。4.1 碳强度数据获取碳强度指的是每生产一度电1 kWh所排放的温室气体量单位通常是 gCO₂eq/kWh。这个值不是固定的它随着时间、地点和发电结构的变化而剧烈波动。实时数据一些地区和机构提供接近实时的电网碳强度API。例如英国的国家电网、美国的WattTime和Electricity Maps项目。使用实时数据能最准确地反映你用电时刻的环境影响。例如在太阳能充足的中午运行任务其碳足迹可能远低于在夜晚依赖化石能源的时段。区域平均数据如果无法获取实时数据可以用国家或地区的年度平均碳强度。国际能源署、各国环保部门或学术数据库会发布这类数据。这是最常用的方法虽然精度较低但数据易得。云服务商数据AWS、Google Cloud、Microsoft Azure等主要云厂商都发布了其各区域数据中心的碳强度数据或碳足迹计算工具。使用这些数据可以更准确地估算在云上运行的负载。4.2 计算方法与时间对齐计算公式非常简单碳排放量 能耗 (kWh) × 碳强度 (gCO₂eq/kWh)。但这里有一个关键的技术细节采样率对齐。你的功耗测量可能是每秒一次但碳强度数据可能每5分钟或15分钟才更新一次。方法一功耗数据降采样。将你的高频率功耗数据按碳强度数据的时间窗口如5分钟进行平均然后用平均功耗乘以对应时间窗口的碳强度最后累加。这种方法计算简单但会抹平短时高功耗在低碳时段或高碳时段的影响。方法二碳强度数据上采样。通过插值如线性插值将低频的碳强度数据“填充”到与功耗数据相同的时间戳上然后逐点相乘再积分。这种方法理论上更精确但前提是假设碳强度在短时间内是线性变化的这可能引入误差。个人建议对于运行时间较长如数小时以上的任务两种方法的结果差异通常不会太大。优先选择实现简单、易于解释的方法。在报告中明确说明你采用的方法和假设。4.3 包含“隐含碳”完整的碳足迹分析还应考虑“隐含碳”即硬件设备在其生命周期中制造、运输、报废处理所产生的碳排放分摊到其使用时长中。例如制造一台高性能GPU服务器会产生大量的碳排放。工具如Datavizta就在尝试量化这部分影响。对于长期运行的数据中心运营阶段的用电碳排通常是主导但对于短期、实验性的项目使用已有设备的隐含碳分摊可能更合理。这是一个更复杂的生命周期评估问题但在进行全面的环境影响比较时值得考虑。5. 三层实战场景深度解析让我们回到NREL报告中提出的三个经典场景并注入更多实操细节和我的个人经验。5.1 场景一系统级 - HPC调度器对整机能耗的影响分析目标评估不同的作业调度策略是否能“削峰填谷”降低整个HPC集群的峰值功耗从而可能降低电费如果电费基于峰值需求计价或提升基础设施利用率。实操复现与扩展数据采集工具如案例所述利用带外管理接口如iLO、iDRAC以1-15分钟为间隔采集每个计算节点的功耗时间序列数据。同时从作业调度器如Slurm导出详细的作业记账日志包含作业ID、用户、开始结束时间、使用的节点列表等信息。关键点确保两个数据源的时间戳已通过NTP精确同步。这是后续进行作业-功耗关联的基础。数据关联与清洗编写脚本将作业日志与功耗数据在时间线上进行关联。对于一个在节点A上从t1运行到t2的作业其能耗可估算为该时间段内节点A功耗曲线下的面积。清洗如同案例中指出的需要处理异常数据。我的经验法则是首先过滤掉持续为零或明显超出硬件TDP数倍的异常读数其次检查每个节点的功耗时间序列如果方差为零一条直线很可能传感器已失效应剔除该节点在该时段的数据。分析与建模基线分析统计历史作业负载下的集群总功耗曲线计算其平均值、峰值、谷值以及峰值与平均值的比率峰值因子。模拟调度基于历史作业列表使用不同的调度算法如先来先服务、回填、带有功耗意识的调度进行模拟。模拟时需要一个简单的功耗模型。最实用的模型是节点功耗 空闲功耗 (峰值功耗 - 空闲功耗) * 利用率^α。其中α是一个介于0.5到1之间的因子可以通过拟合历史数据得到。空闲功耗和峰值功耗可以从你的测量数据中统计得出。案例中的技巧他们用“第二百分位数”的功耗来近似代表节点的空闲功耗这是一个稳健的统计方法避免了偶尔极低读数的影响。价值与局限价值这种分析能直观展示调度优化带来的潜在节能量和降峰效果为运维策略提供数据支持。局限它忽略了作业本身的性能影响。一个能“削峰”的调度策略可能会延长某些作业的等待时间或完成时间需要在能效和性能之间权衡。此外模型相对宏观未考虑节点内不同组件CPU/GPU功耗的差异。5.2 场景二作业级 - 比较不同神经网络架构的能耗成本目标在受控的HPC节点上大规模比较不同神经网络模型架构、超参数在训练过程中的能耗寻找能效最优的配置。实操复现与扩展实验设计硬件隔离这是获得可靠比较结果的前提。确保每个实验独占一个计算节点避免其他作业的干扰。案例中使用了多种配置的CPU和GPU节点并在分析时通过减去标准化的“空闲功耗差值”来校正硬件差异。软件环境固化使用容器或环境模块确保所有实验运行在完全一致的软件栈上OS内核、驱动、CUDA版本、深度学习框架版本。案例中详细列出了Python、TensorFlow、cuDNN的具体版本这是可复现性的关键。测量与数据收集功耗数据通过带外接口如iLO以分钟级频率记录整节点功耗。同时记录作业的开始和结束时间精确到秒。性能数据记录每个实验的训练总时长、最终验证精度等。元数据将模型架构参数层数、宽度、超参数批大小、学习率、数据集信息与每次运行的功耗数据唯一关联。能耗计算与标准化总能耗对功耗时间序列在作业运行区间内进行数值积分。简单的矩形求和Σ(P_i * Δt)通常足够。标准化为了在不同硬件间公平比较案例中采用了巧妙的做法将所有节点的功耗读数减去该节点类型相对于一个基准节点如cpu1的空闲功耗差值。例如cpu3节点空闲功耗比cpu1高89W那么所有在cpu3上运行的实验其功耗读数都减去89W再参与计算和比较。这有效剥离了硬件本身能效差异的影响聚焦于软件/算法差异。深入洞察分析不应止于“哪个模型总能耗最低”。更深入的问题是能效曲线模型达到相同精度时谁的能耗更低能耗构成在训练的总能耗中前向传播、反向传播、优化器更新各占多少比例案例中提到区分这些阶段很困难因为采样率不够高。如果可能尝试用更高频率的采样如PyRAPL秒级采样来捕捉这些细微模式。超参数敏感性学习率、批大小对能耗的影响是线性的吗通常不是。较小的批大小可能导致更多的内存访问和更低的硬件利用率从而降低能效。5.3 场景三代码级 - 剖析与优化模型组件的能耗目标深入到模型内部理解特定操作如Transformer中的注意力机制 vs. LSTM中的门控循环的能耗特性并识别微观优化机会。实操复现与扩展高精度测量设置工具选择此场景需要尽可能高的时间分辨率。应使用PyRAPL针对CPU和pynvml针对GPU进行高频采样如10-100毫秒。同时需要与代码执行深度集成。代码插桩在关键代码段函数的开始和结束处打点记录时间戳和此时的累积能耗读数RAPL和NVML提供的通常是自上次重启后的能量累计值。通过差值计算该代码段的能耗。import pyRAPL import pynvml pyRAPL.setup() # 初始化RAPL nvmlInit() # 初始化NVML handle nvmlDeviceGetHandleByIndex(0) # 获取第一个GPU句柄 def profile_function(func, *args, **kwargs): # 开始测量 cpu_meter pyRAPL.Measurement(cpu) cpu_meter.begin() start_gpu_energy nvmlDeviceGetTotalEnergyConsumption(handle) # 执行函数 result func(*args, **kwargs) # 结束测量 cpu_meter.end() end_gpu_energy nvmlDeviceGetTotalEnergyConsumption(handle) cpu_energy cpu_meter.result.delta gpu_energy (end_gpu_energy - start_gpu_energy) / 1000.0 # 转换为焦耳 print(fCPU Energy: {cpu_energy} J, GPU Energy: {gpu_energy} J) return result挑战与应对数据搬运开销如案例所述CPU到GPU的数据传输PCIe总线是重要的功耗来源但很难从GPU的功耗读数中单独剥离。他们的解决方案是让数据完全驻留GPU但这在真实训练中不总是可行。一个替代方法是单独运行一个只进行数据搬运的基准测试估算出传输的能耗基线。噪声与波动在毫秒级功耗读数波动很大。必须进行多次重复实验取平均值和统计置信区间。案例中提到了“epoch内的数值变化”这可能源于数据批次的差异或底层库如cuDNN对相同操作选择了不同的算法实现。对齐问题CPU和GPU的功耗采样可能不完全同步导致在区分前向/后向传播时出现错位。需要精心设计实验让每个阶段有足够长的、稳定的运行时间以便在功耗曲线上清晰区分。优化启示通过这种细粒度剖析你可能会发现一些反直觉的结论。例如一个看似更复杂的操作因为能更好地利用GPU的张量核心其实际能效可能高于一个更简单的、但内存访问密集的操作。优化可能来自选择更节能的激活函数、优化张量布局以减少内存传输、使用混合精度训练FP16/BF16以降低计算和内存带宽压力等。代码级测量为这些优化提供了直接的验证手段。6. 避坑指南与常见问题排查在实际操作中你会遇到各种各样的问题。以下是我总结的一些常见陷阱和解决思路。问题一测量数据波动巨大无法重现。可能原因后台有干扰进程如定期更新的杀毒软件、日志轮转、系统频率调节CPU变频、或散热导致的温度墙与降频。排查步骤测量前尽可能关闭非必要的服务和进程。使用cpuset或taskset将待测进程绑定到特定的CPU核心上。将CPU调控器设置为performance模式锁定CPU频率排除变频干扰cpupower frequency-set -g performance。监控CPU和GPU的温度确保测试期间没有因过热而降频。可以运行一个稳定的压力测试如stress-ng一段时间让系统达到热平衡后再开始正式测量。始终进行多次重复实验报告平均值和标准差。问题二软件工具如RAPL读数与硬件功率计读数对不上。这是正常现象。RAPL是模型估算值它不包含CPU供电模块VRM的损耗、主板其他部分的功耗等。通常在中等负载下RAPL读数与墙上测量值有较好的相关性但绝对值偏低。硬件功率计测量的是交流输入总功耗包含所有损耗。处理方法对于需要绝对精确能耗值的场景如碳核算应以校准后的硬件测量为准。对于相对比较和趋势分析如比较两个算法的能效RAPL等软件工具通常足够因为它们提供的相对值是准确的。问题三在虚拟化或容器环境中如何准确归属能耗这是一个难题。如果宿主机提供了Perf或RAPL的透传可以在容器内直接读取。但更多时候你只能从宿主机层面获取整体的功耗。实用方法采用“增量法”。在目标容器/虚拟机启动前后分别记录宿主机的功耗。同时运行一个已知功耗特性的基准负载如Linpack在容器内来建立容器内资源利用率与宿主机功耗增量之间的粗略模型。然后用这个模型来估算你实际应用的能耗。这种方法误差较大但对于评估相对趋势仍有参考价值。问题四我的应用只是庞大数据中心里的一小部分测量它的能耗有意义吗绝对有意义。虽然单次运行的节能量可能微乎其微但软件行为具有累积和放大效应。规模效应一个低效的算法被部署到成千上万个实例上浪费的能源是巨大的。技术债务低效的代码会作为“技术债务”被复制、继承和放大。早期的能效优化能避免未来巨大的资源浪费。开发者意识测量本身能培养开发者的“能效意识”。通过数据他们能直观地看到不同编程选择如循环顺序、数据结构、并发模式对能耗的影响从而在编码时做出更环保的决策。问题五网络和存储的能耗是否需要考虑视情况而定。对于大多数计算密集型任务AI训练、科学模拟网络和存储的能耗占比通常很小5%。因此在代码级或作业级分析中可以暂时忽略。但是如果你的应用是网络或IO密集型的如大规模分布式训练中的梯度同步、高频金融交易、视频流处理那么这部分能耗就必须纳入考量。网络交换机的功耗、存储阵列的功耗可以通过数据中心基础设施管理系统获取或使用经验比例如网络能耗占IT设备总能耗的X%进行估算。测量和优化AI与HPC系统的能效是一条从宏观到微观、从粗略到精细的实践之路。它没有唯一的正确答案但有一套严谨的方法论。核心在于始于测量、忠于目标、明于边界。不要追求一步到位的完美方案而是从你最关心的层面开始选择一个合适的工具获取第一批数据建立基线然后尝试一个优化观察效果。这个过程本身就是向更可持续的计算未来迈出的坚实一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2640698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…