这项实验旨在探索能否通过训练一个小型、权重开放的 4B 语言模型,使其在性能上超越 Postgres 默认的查询优化器。查询优化(特别是连接排序)是一个 NP 难问题,数据库统计信息往往会导致执行计划并非最优。 作者开发了一套代理测试框架,为模型提供数据库元数据,并使其能够通过 `pg_hint_plan` 影响执行计划。通过首先使用离线策略蒸馏(监督微调)教会模型如何与框架交互,随后应用代理强化学习(RL)来优化查询延迟,模型学会了生成速度明显更快的计划。 为确保结果有效,作者构建了一个自定义测量平台,利用“15 次取最优”的抽样策略来最大限度地减少 Linux 页面缓存带来的噪声。结果非常成功:经过训练的 4B 模型在 113 个连接密集型查询中实现了 44.7% 的总延迟降低,与默认的 Postgres 优化器相比,几何平均加速比达到 1.81 倍。该项目突显了利用通过强化学习训练的小型领域专用模型解决复杂计算密集型任务的有效性,为仅依赖通用启发式方法提供了一种可扩展且具有成本效益的替代方案。
在这篇文章中,图形程序员丹尼尔·“Agentlien”·克维克(Daniel "Agentlien" Kvick)探讨了现代游戏平台在内存中存储纹理数据的复杂非线性方式。虽然人们很容易将纹理视为简单的像素流,但现代性能需求要求使用在不同平台间差异巨大的精密内存管理技术。
为了优化渲染速度和缓存局部性,纹理通过以下方式进行管理:
* **块压缩 (BC7):** 在缩小数据体积的同时,将 4x4 的纹素块分组以便高效访问。
* **重排 (Swizzling):** 重新排列纹素顺序(例如 Morton 序),以确保空间上相邻的像素在内存中也保持接近。
* **多级渐进纹理 (Mips) 与平铺 (Tiles):** 使用分层降采样和内存平铺技术,以平衡性能与内存限制。
克维克指出,在不同平台之间转换这些布局是一项艰巨的任务,因为层级结构的每一层都涉及独特的寻址规则和平台特定的细节。调试这些转换尤为困难,因为即使是细微的对齐偏差,也会导致数据错乱、无法识别。通过分享他的经验和实用的调试技术(例如向内存中注入视觉标记),作者揭示了确保现代游戏在主机硬件上高效运行背后那些鲜为人知的技术工作。
这篇文章探讨了如何在没有计算器辅助的情况下,估算大数阶乘(如 52!)的位数。
作者引入了伽玛函数,将其作为对所有正实数阶乘的一种推广。通过利用斯特林公式——即通过拉普拉斯方法对伽玛函数的积分进行推导——人们可以有效地估算这些巨大数值的量级。
该估算的核心在于计算斯特林公式的以 10 为底的对数。正如作者以 52! 为例所演示的那样,该方法得出的结果与实际值非常接近。尽管该公式包含一项随输入值增大而变得不那么重要的次要项,但作者指出,将其包含在内可以确保更高的精度。总之,这种方法将计算巨大阶乘这一艰巨任务转化为了一种可控的数学练习,为衡量它们的规模提供了一种可靠的途径。