博客
关于 GPU、LLM、MLOps、Kubernetes 以及心态的文章 · 829 篇
#2026-03 168#ai 110#llm 90#ai-papers 62#career 60#kubernetes 54#mindset 51#ai-platform 48#devops 42#security 41#deep-learning 35#performance 33#psychology 32#mlops 30#observability 29#2026-04 26#database 23#linux 22#robotics 22#rust 22#ai-agent 21#mcp 20#productivity 20#culture 19#evaluation 19#gpu 18#transformer 18#electronics 17#paper-review 17#pytorch 17#developer-tools 16#distributed-systems 16#engineering 16#learning 16#open-source 16#rag 16#fundamentals 15#network 15#postgresql 15#2026-08 14
PySpark 4.2,Python UDF 默认搭上 Arrow — 类型强制转换225格里132格发生变化的故事
2026年7月14日发布的 Apache Spark 4.2.0 通过 SPARK-54555 把 spark.sql.execution.pythonUDF.arrow.enabled 的默认值从 false 反转成了 true。厂商博客把这称为"无需重写代码就能获得更快的列式路径",但整个发布里都没有公开 Arrow 与 pickle 之间的速度对比数字。而真正的故事不是速度,而是类型强制转换。实际 diff 两份检入 Spark
2026-07-16 · 23 分钟阅读 #spark#python#arrow#data-engineering后量子证书为何还没到来 — ML-DSA 签名大小、10kB 之墙,与 Merkle Tree Certificates
在后量子迁移中,密钥交换(加密)已经推进了相当一部分,但证书与签名这一侧仍处在起跑线上。原因不在密码学,而在大小 — FIPS 204 规定的 ML-DSA-44 签名为 2,420 字节,远大于 ECDSA P-256 的 64 字节,而由于当今 Web 握手要携带 5 个签名和 2 个公钥,直接替换会让认证数据本身就超过一万字节。Cloudflare 在 2021 年的实测发现,证书链一旦多加超过 10kB,客户端与中间盒(midd
2026-07-16 · 32 分钟阅读 #security#post-quantum-cryptography#tls#webpki#certificates原生直方图已经 stable 了,为什么还不能打开
2022年11月在 v2.40 中以实验特性登场的 Prometheus 原生直方图(native histograms),于2025年12月的 3.8.0 版本中转为 stable,而2026年7月1日发布的 3.13 是第一个以 stable 状态收录该特性的 LTS 版本。现有的 3.5 LTS 将于2026年7月31日停止支持,因此对走 LTS 路线的组织来说,现在正是真正需要做决定的时候。不过「stable」这个词所保证的范围
2026-07-16 · 26 分钟阅读 #prometheus#observability#native-histograms#metrics#monitoringRedis 8.8 的 Array 类型 — 自 Stream 之后首次新增的核心数据结构,以及 Valkey 没有的东西
2026 年 5 月,Redis 8.8 与 Valkey 9.1 相隔六天先后发布。Redis 8.8 加入了 antirez 亲自打造的全新核心数据结构 Array — 一种面向「索引本身就带有意义」的数据(传感器的分钟级槽位、预订系统的座位号、文件的行号)的稀疏索引容器,配备 18 个命令、基于切片的稀疏编码、服务端聚合,乃至正则 grep。从 server.h 里的对象类型编号来看,这是自 Stream(5.0)之后首次新增的核
2026-07-16 · 23 分钟阅读 #redis#valkey#data-structures#performance#open-sourcePasskey 可移植性只到货了一半 — CXF 已成为标准,CXP 还停在 2024 年的工作草案
FIDO 的凭据交换规范分成两份。定义「交换什么」的 CXF 已于 2025 年 8 月 14 日成为 Proposed Standard,2026 年 3 月 9 日还出了勘误(errata);但定义「怎么交换」的 CXP,至今仍停在 2024 年 10 月 3 日的工作草案上。那份草案自己写明「不打算作为任何实现的依据」「不具有任何官方地位」。然而 CXF 实际搬运的,是以 PKCS8 DER 编码的明文私钥,机密性则完全托付给了
2026-07-16 · 24 分钟阅读 #security#passkeys#webauthn#fido#standardsPython 3.15 的 abi3t — free-threaded 构建的 stable ABI 解决了什么问题,代价又是什么
借助 PEP 779,free-threaded 构建在 3.14 摘掉了实验性标签,但在它成为默认构建的 Phase III 之前,除了解释器性能之外还横亘着一件事 — 分发。free-threaded 构建无法使用 stable ABI(abi3),导致 C 扩展作者不得不为每一种「Python 版本 × 线程模式」组合各自打出一份 wheel。PEP 803 用一个叫 abi3t 的 stable ABI 变体来填补这个缺口,目标
2026-07-16 · 19 分钟阅读 #python#free-threaded#cpython#concurrency#pep-703OpenTofu 1.12 的动态 prevent_destroy — lifecycle 静态约束松动之处及其代价
Terraform 的 lifecycle 块按设计只接受字面量值。因为它是在构建依赖关系图的阶段处理的,此时还没到能求值变量的时机 — 这是 HashiCorp 官方文档给出的解释,而"让我们用变量"这个请求早在 2016 年就有了。OpenTofu 1.12(2026 年 5 月 14 日)把 preventdestroy 的求值从配置加载器移到了语言运行时,从而松开了这个约束;同一版本里还新增了 destroy = false 这
2026-07-16 · 18 分钟阅读 #opentofu#terraform#iac#devops#state-managementProtobuf Edition 2026 — 收紧的三个默认值,以及 protoc 首次强制的模式大小上限
2026年7月13日,protobuf.dev 上发布了 Edition 2026 的公告,但早在四天前的7月9日,v36.0-rc1 就已经发布了。Edition 2026 没有新增任何语法,而是收紧了三个默认值 — 禁止命名冲突(STYLE2026)、STRICT 符号可见性,以及 protoc 历史上首次强制模式大小上限的 enforceprotolimits(每个消息 1500 个字段、每个消息 1000 个 oneof、每个
2026-07-16 · 26 分钟阅读 #grpc#protobuf#api-design#serializationParquet 2.13.0 的 nan_count 与 IEEE 754 total order — float 统计用 3 年 3 个月才修好的故事
Parquet 的 min/max 统计,是让查询引擎跳过数据的机制。但在浮点数列上,这套机制已经悄悄坏了 10 多年 — NaN 在任何比较中都返回 false,因此会被排除在统计之外,结果就是包含 NaN 的页面,可能在查找大于 max 的值的查询中被整页跳过。这不是性能问题,而是结果错误的问题。2026 年 6 月 13 日发布的 parquet-format 2.13.0,通过引入 nancount 字段和一个叫 IEEE754
2026-07-16 · 25 分钟阅读 #data-engineering#parquet#columnar-storage#apache-arrow改变 LoRA 的 rank 就要跟着改学习率吗 — μA(2026) 划出的两种机制,以及这个测量结果的边界
LoRA 中改变 rank 就必须重新寻找最优学习率的说法,和「用 1/r 缩放,学习率就与 rank 无关」的说法,在实务中同时流传。2026 年 2 月挂上 arXiv 的 μA(Maximal-Update Adaptation) 论文说,这两种说法都对 — 只是取决于你用的是哪种 α 约定、哪种初始化。本文梳理 μA 推导出的两种机制(η 与 rank 的 -1/2 次方成正比的情形,vs 与 rank 无关的情形),以及论文主
2026-07-16 · 28 分钟阅读 #llm#lora#fine-tuning#peft#trainingMySQL 9.7 之后的版本是 26.7 — 2026 年春天,MySQL 与 MariaDB 整理发布模型的方式
2026 年 4 月 21 日,MySQL 9.7.0 以 GA 形式发布,这是自 8.4 之后近两年来第一次开启新的 LTS 分支;同一个月,MySQL 8.0 的 Extended Support 到期,降级为 Sustaining Support。随后在 6 月 16 日,Oracle 宣布把版本号切换为 YY.M 日历式版本号,于是 9.7 之后的创新版本不是 9.8,而是 26.7。MariaDB 在五周之后、5 月 29 日
2026-07-16 · 29 分钟阅读 #mysql#mariadb#database#versioning#devopsPostgres 19 的 pg_plan_advice — 一个长期拒绝提示的项目给出的妥协方案
PostgreSQL 项目长期以来一直拒绝优化器提示(hint)。但在 2026 年 6 月 4 日发布的 PostgreSQL 19 Beta 1 中,Robert Haas 编写的 pgplanadvice 和 pgstashadvice 作为 contrib 模块被合并了进去。这不是 Oracle 式的提示 — 建议(advice)活在 SQL 之外,它不是替代规划器,而只是收窄搜索空间,用文档自己的话说,出来的"只会是核心规划器
2026-07-16 · 22 分钟阅读 #postgresql#query-planner#query-optimization#database#performanceAWS Lambda MicroVMs — 用 VM 隔离运行智能体写的代码,以及快照带来的新问题
AWS 于 2026 年 6 月 22 日发布了 Lambda MicroVMs。这是把 Firecracker 微虚拟机当作服务来卖的产品,瞄准的市场很明确 — 按租户隔离运行用户或 AI 生成的代码。它把容器共享内核的问题挪到了 VM 边界上,并且用从预先制作好的 Firecracker 快照恢复、而不是启动,来消除启动延迟。可正是这个快照制造了另一种问题 — 从同一镜像启动的每一个 MicroVM,都从字节级完全相同的内存状态出发
2026-07-16 · 25 分钟阅读 #security#firecracker#microvm#aws-lambda#sandboxingCXL 内存分层,内核走到哪一步了 — DAMON 合并了什么,数字又没测到什么
即便 CXL 硬件已经插在服务器上,真正决定把哪些热页面、哪些冷页面搬来搬去的还是内核。截至 2026 年 7 月,Linux mainline 已经陆续接收了基于 DAMON/DAMOS 的分层组件,从 6.11 一直分布到 7.2-rc1,但真正「装上就能用」的分层内核模块并不存在,而 CONFIGDAMON 自从 Linus 撤回默认启用之后,至今仍然是关闭状态。本文直接查阅内核源码,确认到底是哪些代码在第几版内核真正落地,并追溯
2026-07-16 · 30 分钟阅读 #hardware#cxl#memory#linux-kernel#performanceOTel 的 Kubernetes 属性变成 stable 了 — 在 k8sattributes 默认值翻转之前要做的事
OpenTelemetry 的 Kubernetes 语义约定已经在 2026 年 6 月 12 日的 semconv v1.42.0 中晋升为 stable。但 Collector 的 k8sattributes 处理器目前默认值仍是旧模式(v0),所以大多数人什么都没感觉到。问题在于这不是永久的 — 按照 Collector RFC 制定的推进路线,一旦特性开关升到 beta,默认行为就会翻转为仅 v1,k8s.pod.labels
2026-07-16 · 18 分钟阅读 #opentelemetry#observability#kubernetes#semantic-conventions#telemetry-pipelineNix 2.35 更懒惰地把 flake 源复制到 store 了 — 一个持续 6 年 8 个月的 issue,以及上游没有选 lazy trees 而选的那条路
Nix 2.35.0 于 2026 年 7 月 13 日打上标签,它的第一条亮点是「Sources are copied to the store more lazily」。被这一行改动关闭的 issue 3121,是 Eelco Dolstra 本人在 2019 年 10 月 7 日开的,2026 年 6 月 9 日关闭 — 历时 2,437 天。有意思的是,真正被合并的东西并不是 Dolstra 的 lazy trees。他的 PR
2026-07-16 · 21 分钟阅读 #nix#reproducible-builds#build-systems#developer-experience#open-sourceKubernetes v1.36 的 Workload/PodGroup API — Gang Scheduling 正走进 kube-scheduler
AI 训练与批处理工作负载的 gang scheduling,迄今为止一直是 Volcano、Kueue 这类外部调度器的活儿,但 Kubernetes 已经开始把这项能力搬进核心。v1.35 以 alpha 形式发布了 Workload API 和第一版 gang scheduling 实现,而 2026 年 4 月 22 日发布的 v1.36 则对结构做了大改 — 把 Workload 拆分成静态模板,把新的 PodGroup 拆分
2026-07-16 · 29 分钟阅读 #kubernetes#scheduling#gang-scheduling#distributed-training#draInfluxDB 3 Core 的「72 小时限制」其实是 432 个文件的限制 — Parquet 重写留下的账单
InfluxDB 3 把整个引擎用 Rust 重写,并把存储层架在了 Apache Arrow 和 Parquet 之上。坊间常说「Core 只能查询最近 72 小时」,但翻遍源码也找不到这样的代码。真正存在的只有一件事 — 单次查询能扫描的 Parquet 文件数上限为 432,而 72 小时不过是用默认 gen1 时间块 10 分钟乘出来的派生值,还是最理想情况下的数字。本文逐行追踪 432 这个数字在源码里的来处,确认了 2025
2026-07-16 · 28 分钟阅读 #database#influxdb#time-series#parquet#storage-engineJDK 26 的 final 字段修改警告 — JEP 500 到底改变了什么,以及现在该检查什么
JDK 26(2026 年 3 月 17 日 GA)通过 JEP 500《Prepare to Make Final Mean Final》,开始对通过深度反射重新赋值 final 字段的代码发出运行时警告。自 JDK 5 起,setAccessible(true) 之后的 Field.set() 就可以随意修改 final 字段,Gson 这类反序列化库和字段注入式 DI 整个都建立在这一点之上。现在的默认值是 warn,所以行为不变
2026-07-16 · 25 分钟阅读 #java#jvm#reflection#serialization#migrationllama.cpp 走进浏览器 — WebGPU 后端在 16 台设备上测出的天花板
UC Santa Cruz 团队于 2026 年 5 月发布的 LlamaWeb 是 llama.cpp 的 WebGPU 后端,在 8 家厂商的 16 台设备上实测了浏览器端 LLM 推理,留下了迄今为止最广的数据集。结果是双面的。它比现有浏览器框架(WebLLM、Transformers.js)少用 29%~33% 的内存,解码吞吐量高出 45%~69%,但 prefill 仍只有 WebLLM 的 49% 水平,相比原生 CUDA
2026-07-16 · 25 分钟阅读 #webgpu#llm-inference#llama-cpp#on-device-ai#browser