工程实践 Jane Street Tech Blog 2026/10/13
文章介绍 Jane Street 的 Flex Model:把订单簿更新、成交等市场事件转换为神经网络可用的特征向量,并将特征计算与交易执行解耦。旧单体系统新增特征常牵动多处代码,而 Incremental 因合并更新和 cutoff 不适合需要历史状态的行情特征。Flex Model 将特征拆成处理事件的 handler 与按需求值的 eval,禁止运行中改图以保留历史;planner 按事件类型和依赖生成有序计划,使新增计时器或数据源无需改核心。性能上采用启动期预分配、zero_alloc 检查、OxCaml 非装箱浮点和计划执行优化降低尾延迟。其边界是低延迟交易与 OCaml 技术栈,并刻意省略 cutoff、依赖静态图,结论需结合负载评估。
推荐收录:文章用旧系统“改一个特征触及十九个文件”、Incremental 在重复成交价下丢失事件等具体证据,完整呈现了 handler/eval 拆分、planner 生成执行计划和零分配热路径的取舍。适合构建低延迟事件驱动系统、特征平台或 ML 基础设施的读者,其静态计划与内存控制方法可迁移;注意结论依赖 Jane Street 的 OCaml/OxCaml 与交易负载。
工程实践 Jane Street Tech Blog 2026/10/06
文章复盘 Jane Street 重构 Windows 配置管理系统的过程。原有方案让分布式 PowerShell 脚本在同一进程内既做管理又做执行,类型检查薄弱、并发被限制为单线程,曾因脚本自起线程等待而挂起整个流程,且逐机解析配置适用性会给外部系统带来较大负载。作者把适用性、调度与灰度分阶段等决策逻辑集中到内部编排服务 Orchestrator 上,用 OCaml 重写 JSON 元配置解析器以获得类型与测试保障,并用无状态 F# 代理替代脚本,通过 RPC 通信并接入统一可观测性框架。为安全切换,客户端除 apply 模式外还实现 audit 模式,尾随旧系统并对比两者的决策日志,由此发现并修复旧系统过夜调度窗口计算错误、上次失败后未继续以测试模式运行等 bug。系统支持按脚本逐个迁移以避免新旧系统互相干扰,但迁移尚未全部完成,文中也保留了若干旧行为以避免风险。
推荐收录,因为它完整呈现了从问题定位、集中式架构重构、类型安全重写到灰度验证的工程闭环,并给出挂起事故、过夜调度计算错误等具体证据。适合负责基础设施、大规模主机运维、配置管理与灰度发布的工程师,其新旧系统并行运行并对账决策日志的迁移验证方法可迁移到其他系统替换场景。
工程实践 Jane Street Tech Blog 2026/10/05
Jane Street 的 Aria 内部消息总线每天处理数 TB 数据。文章围绕 tip recovery 和 initial recovery 两类问题展开:前者因线性过滤整个内存流导致 CPU 饱和,后者因从磁盘读取并过滤过多数据,使一次恢复从不到 2.5 秒恶化到 13 分钟。实习生 Theodor 为每个 topic partition 建立索引,用最小堆做 n 路归并重建有序消息流,并以共享 block pool 支持索引动态伸缩,避免为每个索引预留 2GB。磁盘侧则用基于消息量的自适应 subtree splitting,通过贪心聚类加二分搜索让大主题独立存储、小主题合并。方案经 benchmark、expect tests、属性测试和 Antithesis 验证后,tip indexing 在部分真实负载中降低约 30% CPU,尾延迟改善,adaptive splitting 也已进入 staging。其适用边界在于高度依赖 Aria 的话题层次与恢复语义,通用消息系统需重新调整。
推荐收录,因为它完整呈现了从线上 CPU 饱和和恢复延迟故障,到索引设计、n 路归并、block pool、自适应 subtree splitting 以及 benchmark/属性测试验证的工程闭环。对消息队列、流存储、性能优化和系统设计的读者,文中的按访问模式建索引、按数据量自适应分片、用实验选择实现等经验可直接迁移;局限是方案依赖 Aria 特定的话题层次与恢复语义。
工程实践 Jane Street Tech Blog 2026/10/02
本文是 Jane Street 对 ASIC 逆向工程谜题的结果复盘:只给芯片 GDS 版图,要求推断功能,收到约 400 份提交。该芯片最终被确认是 11×11 Star Battle 硬件校验器,通过 121 周期输入、行列/区域计数器、邻接延迟线和 LFSR 混淆输出完成规则检查与答案生成。文章梳理了提取门级网表、SKY130 仿真、自建求值器、从 success 反向追踪逻辑、脉冲差分探索和 SAT 求解等路径,并展示破解输出生成器、彩蛋与错误模拟案例。核心结论是仅复现示例波形不代表模型正确,需交叉验证和构造反例;AI 能快速解题并加速工具构建,但会削弱理解过程。局限在于以谜题复盘和外部 writeup 索引为主,并非完整逆向教程。
推荐收录:文章给出了 ASIC 逆向工程的完整方法谱系,包括从 GDS 提取门级网表、用 SKY130 模型或自建求值器仿真、从 success 反向追踪逻辑、脉冲差分与 SAT 求解,并复现了输出 LFSR 破解和彩蛋。适合硬件、EDA、形式验证与逆向工程读者,可迁移到芯片验证、工具构建和调试策略。风险是内容偏谜题复盘且大量细节链接到外部 writeup,不是独立完整教程。
工程实践 Jane Street Tech Blog 2026/10/02
文章复盘 Jane Street 周末网络维护中的连锁故障:网络分区使 DNS 挂起,本应具备弹性的内部 Kafka 进程却段错误、泄漏数十万 socket,并在恢复时爆发连接风暴。作者按发现顺序追查,在 glibc、自研 socket 库、Async、Kafka 客户端和作业运行器中定位 6 个 bug,包括 res_init 失败破坏解析器状态、bind 失败泄漏 UDP socket、Tcp.connect_sock 超时不覆盖 DNS、重试超时不取消底层尝试、启动路径重复查询及迁移静默降低 FD 上限。核心链条是分区触发重试风暴,TCP/UDP 需求叠加资源泄漏和更低上限,导致 FD 耗尽并放大崩溃。修复覆盖上游 glibc、关闭失败 socket、让超时覆盖 DNS、取消过期重试并缓存查询、恢复作业 FD 限制。教训包括超时不等同取消、初始化要失败原子、假设需预测数量、资源按共享范围建模;不足是 UDP 分支上游原因未完全证实且依赖其内部技术栈。
推荐收录,因为文章提供了跨 glibc、Async、网络栈和 Kafka 客户端的真实事故复盘,用 coredump、sar、bpftrace、setrlimit/LD_PRELOAD 复现与数量对账把每个假设落到证据上。对 SRE、分布式系统、后端与基础设施工程师而言,其中的超时-取消语义、失败原子性、主机级共享资源建模和根因链追踪方法可直接迁移到其他系统。主要风险是案例依赖 Jane Street 自研 OCaml/Async 与内部 Kafka 栈,读者需抽象其方法而非照搬实现。
工程实践 Jane Street Tech Blog 2026/10/01
文章复盘 Jane Street 为自研对象存储 Depot 构建只读 FUSE 服务器的工程实践。因研究基础设施依赖 POSIX 接口,团队不用 libfuse,而在 OCaml 中直接实现 FUSE 协议,以适配 Async 并避免 FFI。文中披露协议文档稀缺、/dev/fuse 每次 read/write 只能收发一条消息、标准库短读/部分写假设被打破,以及用真实请求捕获做序列化测试。语义映射上,文章讨论长文件名、bundle 多路径与 POSIX inode 的冲突及策略。性能上从约 30 MiB/s 提升到 1.3 GiB/s,关键在于并行读、消除 92% 分配和零拷贝缓冲复用。当前方案面向只读研究负载,瓶颈可能在 Linux readahead 窗口。
推荐收录:文章不是 FUSE 概念介绍,而是给出 OCaml 原生实现、/dev/fuse 单消息收发约束、真实请求捕获测试、对象存储到 POSIX 的语义映射,以及从 30 MiB/s 到 1.3 GiB/s 的优化数据。适合存储系统、Linux 接口、文件系统和性能工程读者,可迁移其协议逆向、缓冲区生命周期管理与只读网关设计经验;局限是场景偏 Jane Street 内部 Depot 与只读研究负载。
工程实践 Jane Street Tech Blog 2026/10/01
本文介绍 Jane Street 为 Linux 主机构建的弹性内核日志采集器,目标是在磁盘或网络故障、甚至内核 panic 时仍能保留日志。方案避免磁盘依赖:进程启动即 mlockall,直接读取 /dev/kmsg 而非 dmesg,后台解析 DNS 并缓存 IP,使用 UDP 向多个采集服务器发送日志。针对无法保存 crashdump 的 panic,作者启用 EFI pstore 与 crash_kexec_post_notifiers,在重启后解析 pstore 碎片并上送,同时监控 pstore 是否清空。该方法依赖固件 pstore 容量、内核与 systemd 兼容性,适合专用硬件和 Linux 集群,但并非通用高可靠传输方案。文中用 Nvidia 驱动空指针导致桌面冻结的案例说明其诊断价值。
推荐收录。文章给出了真实约束下的系统设计:如何在磁盘和网络栈失效时仍采集内核日志,并详细解释 mlockall、/dev/kmsg、DNS 缓存、UDP、pstore 等取舍与验证。对 Linux 运维、SRE、可观测性和内核调试读者有直接迁移价值;局限是强依赖固件 pstore 与企业内网环境。
科研议题 Jane Street Tech Blog 2026/09/30
文章介绍 Jane Street 暑期实习项目:尝试用自回归扩散模型生成美股订单簿事件序列,包括时间戳、价格、事件类型等。作者以因果掩码 Transformer 编码事件流,结合分类头和扩散头预测下一事件,并比较 DDPM 与 flow matching,发现 DDPM 去噪轨迹易发散,flow matching 更稳定。针对市场数据兼具连续与离散的特点,提出 atom smoothing 与多分类离散化来建模零时间间隔、价格跳变等尖峰。结果显示边际分布改善,但自回归 rollout 会随预测步数退化,模型尚不足以真实生成市场数据,未来需在离散/连续建模和特征表示上继续权衡。
推荐收录,因为它不是产品宣传,而是完整呈现了一个生成式模型在真实市场数据上的研究问题、方法选择、失败模式与实验验证。对从事生成模型、时间序列或金融 ML 的读者,DDPM 与 flow matching 的对比、atom smoothing 处理尖峰分布的思路以及 rollout 退化边界都具有可迁移价值;但需注意它仍是探索性实习项目,样本和任务局限于订单簿事件,未达到生产级生成器。
科研议题 Jane Street Tech Blog 2026/09/30
文章记录 Jane Street 2026 暑期实习项目,研究 LLM 在预测任务中依赖预训练记忆而非真正推理的问题。作者用板球比赛预告数据集,以知识截止时间前后的表现对比、以及过度自信程度(H1、H2、Sharpness 三项判据)来识别模型是否在背诵记忆,发现越大的模型往往也越容易记忆。缓解手段方面:logits 空间的推理时干预 divergence decoding 能降低截止前表现而不损害截止后表现;蒸馏回大模型因训练数据缺少任务相关 token 而失败;把预告改写为播客文本后前后期表现均提升、且后期提升更大,说明记忆效应被削弱。自然语言自编码器虽可解码激活,但其情感/提及次数信号无法区分截止前后且容易幻觉,而微调模型的 diff embedding 能解码出近似“任务向量”的结构。作者总结该工作属探索性质,未能造出去记忆化器,仅指出有前景方向,且实验仅限低风险板球任务,能否迁移到金融预测等场景仍待验证。
推荐收录:文章给出了可复现的研究设计——用知识截止前后对比、过度自信度与 NLA 探测量化记忆,并如实报告 divergence decoding 有效、蒸馏失败、播客改写奏效等正负结果,属于少见的带局限分析的探索性研究记录。适合关注 LLM 评测、幻觉与数据泄漏、可解释性和推理时干预的读者,其基准构造与“任务向量”探测思路可迁移到高风险预测场景,但结论目前只在板球这类小众低风险数据上得到验证。
工程实践 Jane Street Tech Blog 2026/09/30
本文是 Jane Street 交易台运营工程师(TDOE)2026 年暑期实习项目综述,用三个案例说明实习生如何在陌生复杂领域中快速交付。其一,将内部电话成交记录与无标识的公开成交带按时间、数量和价格匹配,识别被拆成多笔打印的情形,主动发现对账差异;其二,梳理 MEMX 与 IEX 对 Primary Peg 订单类型的不同定义,用 OCaml 与 FIX 实现此前未编码的属性并测试验证;其三,为成分股横跨五大洲、假期日历各异的 ETF 合并计算可下单、可交易、可结算日期,并借 Webs 让业务规则可由终端用户修改。文章只做项目综述,未给出实现细节与量化结果。
推荐收录:文中给出可迁移的问题建模证据——无标识公开成交带的对账与拆分打印识别、同一字段名在两交易所语义不同导致的编码歧义、跨市场假期的结算日历合并,对从事交易系统、数据对账或规则建模的读者有参考价值。需注意本文属实习生项目综述并带招聘导向,缺少实现细节与验证数据,宜作领域复杂度与问题拆解的参考,而非实现指南。
工程实践 Jane Street Tech Blog 2026/09/30
文章介绍 Jane Street 实习生为 PyTorch 训练构建的激活检查点方案:丢弃部分前向激活、在反向传播时重算,以计算换显存。作者先剖析 PyTorch 现有的 torch.compile min-cut 划分器、memory budget 背包 API 与 SAC 逐算子策略,指出其预算语义难理解、非单调、未真实核算峰值显存与重算开销。新方案先用假张量做一次廉价规划编译,读取完整计算图、保存集与执行顺序,再以“每释放一字节峰值显存的最便宜重算代价”为准则贪心删除保存节点,并用存活分析与 flops 公式估算全局峰值和重算耗时。在有限的单图模型上,它多数内存预算下优于 torch 背包与算子级策略,并平滑了反向重算的显存尖峰。其不足是贪心易陷局部最优、不支持动态形状与数据依赖算子、无法重算含 RNG 状态的操作,且显存与耗时估计较粗糙。
推荐收录:文章给出了激活检查点问题的完整定义、对 PyTorch 多种现有机制的具体批评(非单调、预算语义模糊、忽略真实峰值与重算代价),以及新算法的设计、估算方法和实测对比,并明确列出局限。对从事大模型训练显存优化、PyTorch 编译与 ML 基础设施的读者,其显存/计算权衡建模、图级规划与贪心策略具有可迁移价值。
工程实践 Jane Street Tech Blog 2026/06/15
这篇文章讨论了 Jane Street 如何利用 OxCaml,在 OCaml 与 Python 之间实现类型安全的引用计数与对象共享机制。文章聚焦跨语言互操作中的内存管理、所有权和生命周期约束,核心价值在于把“容易出错的运行时协议”提升为可由类型系统约束的工程方案。它特别适合关注多语言系统、FFI 设计、运行时安全和高可靠工程实践的读者。
推荐收录,因为它不是泛泛介绍 OCaml 或 Python,而是围绕跨语言内存管理这一高风险工程问题给出可复用的方法。文章的价值在于展示如何借助类型系统降低引用计数和对象互操作中的错误概率,对做 FFI、运行时或系统语言工程的人都有参考意义。