Predictable Scale: Part I — Optimal Hyperparameter Scaling Law in Large Language Model Pretraining

在这里插入图片描述

摘要

大语言模型(LLMs)在各种任务中展现出令人瞩目的能力,然而,要有效部署这些模型,需要对超参数进行仔细优化。通过对多种配置进行广泛的网格搜索实证研究,我们发现了适用于这些超参数的通用缩放定律:最优学习率与模型参数和数据规模均呈幂律关系,而最优批量大小主要随数据规模变化。我们的分析表明,在固定模型和数据规模条件下,超参数的优化景观是凸的。这种凸性意味着存在一个最优超参数平台。我们为社区贡献了一种通用的、即插即用的最优超参数工具。在测试集上,其估计值与通过穷举搜索得到的全局最优LLM性能仅相差0.09%。这些定律在模型稀疏度、训练数据分布和模型形状的变化中表现出显著的稳健性。据我们所知,这是第一项统一不同模型形状和结构(如专家混合模型和密集Transformer模型),并建立不同数据分布下最优超参数缩放定律的工作。这个详尽的优化过程需要大量计算资源,使用近100万个NVIDIA H800 GPU小时从头开始训练3700个不同规模和超参数的LLM,总共消耗约100万亿个token。为了便于复现和进一步研究,我们将通过指定的存储库https://steplaw.github.io/逐步发布所有损失测量结果和模型检查点。

引言

最先进的大语言模型(LLMs)(Brown等人,2020;Jin等人,2023;Biderman等人,2023;S

<think>我们正在讨论NVMe的可预测延迟模式(PredictableLatencyMode,PLM)。根据用户的问题,他们想了解PLM的配置和实现方法。PLM是NVMe1.4规范中引入的特性,旨在通过管理NAND闪存的读取操作来提供更可预测的延迟。首先,我们需要理解PLM的基本原理。PLM的核心是NVMeSetFeatures命令和GetFeatures命令,使用特定的FeatureIdentifier(特征标识符)来配置和获取PLM设置。在配置PLM时,主要涉及以下几个步骤:1.**确定控制器是否支持PLM**:通过发送IdentifyController命令,检查控制器能力(ControllerCapabilities)中的PLM支持位(Bit5oftheOptionalNVMCommandSupportfield)[^1]。2.**配置PLM模式**:使用SetFeatures命令,设置FeatureIdentifier为0x0D(PredictableLatencyModeConfiguration)[^2]。该命令需要指定以下参数:-模式(Mode):包括禁用(Disabled)、启用(Enabled)或启用并重置窗口(EnableandResetWindow)[^3]。-窗口(Window):指定PLM的时间窗口大小(以毫秒为单位)[^4]。-阈值(Threshold):指定在该时间窗口内允许的最大读取命令数[^5]。3.**监控PLM状态**:通过GetFeatures命令(同样使用FeatureIdentifier0x0D)可以获取当前的PLM配置和状态,包括当前的读取命令计数和窗口剩余时间[^6]。4.**处理PLM事件**:当在PLM启用状态下,读取命令数量超过阈值时,控制器可能会生成异步事件通知(AEN)或设置状态寄存器中的特定位,以通知主机软件[^7]。在实现方面,通常需要操作系统驱动程序或NVMe管理工具的支持。例如,在Linux系统中,可以使用`nvme-cli`工具来配置PLM。以下是一个配置示例:```bash#检查控制器是否支持PLMnvmeid-ctrl/dev/nvme0|grepplm#设置PLM模式为启用,窗口为100ms,阈值为500nvmeset-feature/dev/nvme0-f0x0D-v0x01,100,500```需要注意的是,PLM的配置可能因不同的NVMe控制器和固件版本而异。因此,在配置前应仔细查阅硬件供应商提供的文档[^8]。此外,为了实现最佳的可预测延迟效果,通常还需要结合其他NVMe特性,如加权轮询队列(WeightedRoundRobin,WRR)和非操作期间(Non-OperationalPeriods,NOP)管理[^9]。最后,我们应当强调PLM主要针对读取操作,写入操作的延迟管理可能需要其他机制(如NVMe写入缓冲管理)[^10]。§§相关问题§§1.NVMePLM如何与加权轮询队列(WRR)协同工作?2.在哪些场景下使用NVMePLM最为有效?3.如何监控和调试NVMePLM的性能?</think>### NVMe可预测延迟模式(Predictable Latency Mode)的配置与实现 #### **基本原理** NVMe可预测延迟模式(PLM)是NVMe 1.4规范引入的特性,旨在通过控制NAND闪存的读取操作时序,减少I/O延迟波动。其核心机制是: 1. **时间窗口管理**:将操作划分为固定时间窗口(通常毫秒级) 2. **读取配额限制**:在每个窗口内限制最大读取命令数 3. **静默期控制**:在窗口切换时预留无操作时段(NOP)[^1] #### **配置步骤** ##### 1. 检查硬件支持 ```bash # 使用nvme-cli工具验证控制器能力 nvme id-ctrl /dev/nvme0 | grep "Predictable Latency" # 输出应包含:Predictable Latency Mode Supported (PLS): 1 ``` ##### 2. 启用PLM模式 通过`Set Features`命令配置(Feature Identifier=0x0D): ```bash nvme set-feature /dev/nvme0 -f 0x0D -v 0x01 ``` 参数说明: - `0x01`:启用PLM并重置窗口 - `0x02`:仅启用PLM - `0x00`:禁用PLM[^2] ##### 3. 设置窗口参数 ```bash # 设置100ms时间窗口,最大读取命令数=500 nvme set-feature /dev/nvme0 -f 0x0D -v 0x01 -c 500 -t 100 ``` - `-c`:窗口内最大读取命令数(阈值) - `-t`:窗口时长(单位ms) ##### 4. 监控状态 ```bash nvme get-feature /dev/nvme0 -f 0x0D ``` 输出关键字段: - `Window Time Remaining`:剩余窗口时间 - `Read Commands Issued`:当前读取命令计数 - `Threshold Exceeded`:是否超限 #### **实现机制** 1. **固件层控制**: - 控制器固件实现时间窗口计数器 - 当读取命令超阈值时,延迟处理新命令直至下一窗口 - 窗口切换时插入NOP(Non-Operational Period)[^3] 2. **主机端协同**: ```c // 示例:NVMe驱动提交命令时检查PLM状态 if (plm_window_remaining > 0 && read_cmd_count < threshold) { submit_read_command(); } else { queue_command_for_next_window(); // 延迟提交 } ``` 3. **性能平衡**: - 典型配置:窗口时间=50-200ms,阈值=SSD峰值IOPS的70-90% - 过严配置会导致吞吐量下降,过松则无法稳定延迟[^1] #### **应用场景** 1. **实时数据库**:如金融交易系统(要求99.9%延迟<1ms) 2. **边缘计算**:自动驾驶传感器数据处理 3. **高頻交易**:订单处理延迟稳定性需求 #### **注意事项** 1. 需NVMe 1.4+控制器和兼容驱动 2. 与QoS策略协同使用(如加权队列WRR) 3. 启用后可能降低峰值吞吐量5-15%[^2] 4. 企业级SSD通常提供PLM配置工具(如Samsung Magician, Intel MAS) > 图:PLM时间窗口操作分布 > ``` > |--- Window N ---||--- NOP ---||--- Window N+1 ---| > | Read CMDs ≤ Threshold | No Ops | Read CMDs ≤ Threshold | > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值