训练大模型教会我的事,后来都用在了生物医药上
我的简历里有一行字:训练过语言模型。一行字背后是几百天的时间。从搭数据管线、训到一半 loss 炸了重来、把整套东西搬到华为昇腾 910B 上再踩一遍坑,到后来发现这套”训练语言模型”的思维居然能一路迁移到蛋白质预测、再迁移到 AI 药物对接——这篇文章就是把这三次迁移完整讲一遍。 先交代清楚开源状态:医药侧(蛋白质、药物)的代码和模型,我暂时没有开源;语言模型侧的代码和仓库,在简历 V1 里提到的启智社区(OpenI)个人主页可以看到:openi.pcl.ac.cn/bhys。所以下面讲方法论和踩坑为主,代码点到为止。 第一部分:从零训练大语言模型,我踩过的坑架构别发明,抄已经收敛的模板训练 LLM 最反直觉的一件事是:架构设计在这个年代几乎不构成竞争力。Stanford CS336 课程的 Tatsu 讲过一句话我印象很深——2024 年大家都在 cosplay Llama2,2025 年的主题是”怎么训得不崩”,2026 年变成”怎么扛住长上下文”。我自己的经验印证了这一点:把主流开源模型的架构参数并排放在一起,90% 的维度几乎一模一样: pre-norm...
两条路进入生物信息学,然后在 AI 时代交汇
生物信息学有一个少被明说但每个人都心知肚明的现实:这个领域的人来自两个截然不同的起点。 有人是从计算机科学、软件工程、数学物理”跨”过来的——会写代码、懂算法,但在第一次拿到 RNA-seq 数据时,连”什么是文库、什么是接头、为什么要去重”都要从头学起。 有人是从生物学、医学、农学”转”过来的——做过 PCR、跑过胶、养过细胞,但在第一次面对终端窗口时,连 ls 和 cd 的区别都要查半天。 这两类人最终都在做同一件事——从生物数据里找答案。但他们走的路径、用的工具、面对的困难,完全不一样。 而 2026 年,AI 的介入让这两条路开始交汇了。但交汇的方式可能和大多数人想的不一样。 第一条路:从代码出发程序员转入生信的典型路径是:因为某个课题或项目需要分析生物数据,发现自己能写脚本、能调包、能搭环境,于是自然而然地接手了组里的计算任务。 这条路的人对以下场景不会陌生: 写 Python 脚本处理 FASTQ,用 Biopython 解析序列 搭 Snakemake 或 Nextflow 管线,把比对→定量→差异表达串起来 用 Docker/Singularity...
拆 Zeta:一个 OMP 发行版是怎么维护上游、压缓存、接 Rust 的
写 Agent 的文章很多,但大部分在讲”怎么用”,很少讲”怎么把一个编码代理做成一个可持续维护的发行版”。最近我把 Zeta 的仓库从头翻了一遍,它值得拆一拆的地方不在于功能多,而在于它把几个真问题答得比较实在:fork 上游怎么不烂尾、长会话怎么压成本、重活怎么不拖后腿。这篇是记录。 先交代背景:Zeta 是 Bun-native 的编码代理发行版,构建在 OMP 运行时之上,目前 18603 个提交,monorepo 里 @linxiraos/* 包命名空间,Rust 原生引擎在 crates/ 下,构建链同时挂 Bazel 和 Nix。产品面(网页)上写的”子代理、计划模式、LSP/DAP、事后记忆、hashline 编辑、时间旅行规则”这些是结果,过程比结果有意思。 上游策略:release-tag 合并 + 语义移植,两条腿分开任何基于开源上游做产品的团队都会遇到同一个问题:上游跑得飞快,你跟进,合并冲突爆炸;你不跟进,就烂尾成一个孤岛。Zeta 的对策是把”合并”和”移植”彻底分开,写死在文档里(document/upstream-sync.md): ...
拆 Bio SDK:一个"不生成脚本"的本地生信工具链是怎么搭的
生信圈有一个默认的坏习惯:每次分析都现写脚本。README 上跑一次,交给别人跑就报错,重跑一遍结果还不一样。很多人把这归咎于”环境问题”,但根子是每次都在从零生成代码,而不是复用经过测试的实现。Linxira Bio SDK 的出发点就是反着来的一句定位:让常规分析用经过测试的实现,而不是每次运行生成一个新脚本。我翻了它的仓库,把它的结构拆一遍。 执行模型:默认本地,资源不够才往上走Bio SDK 的执行模型在文档里写得很明确:本地执行是默认,只有当实测的 CPU 时间、内存、GPU、数据库或存储需求超过本地执行包络时,才把工作移去本地 GPU、机构调度器或经批准的云端。”浏览器在线服务只是连接器,不是计算内核”——需要显式用户操作门、人工控制的认证,并且绝不存储或自动填充账号凭据。 这句话信息量很大。它把”本地优先”从口号变成了规则:不是”我们拒绝云”,而是**”先测,超了再迁移”**——迁移理由必须是可测量的指标,不是感觉。这也解释了为什么结构查看器要把解压后的 PDB/mmCIF 限制在 128 MiB、10 万个原子以内——本地渲染的物理边界是设计过的,不...
生信工作站的底座之争:滚动内核,还是 LTS 内核
一个反直觉的观察:生信行业早就把软件分发交给了 conda 和容器,但把基底发行版的选择留给了每一台工作站的主人。 你可以在 Docker 里跑任何版本的软件,却逃不掉宿主内核、GLIBC 和显卡驱动三方之间的耦合。真正的争论往往不在”哪个软件源全”,而在”这台机器用什么更新哲学”。 先把问题框对:谁在用这些机器谈 Ubuntu 和 Arch 之前,先明确这类机器的画像,否则讨论会失焦: 联网的。工作站和服务器终究要上网,拉数据、拉镜像、同步代码,暴露面是真实的。 非安全专家的主人。绝大多数用生信做分析的课题组,不会专门雇一个安全运维。用户的能力边界决定了系统的默认行为不能太依赖人。 工具链要新鲜。CUDA 支持矩阵、编译器版本、新发布的生信软件,决定了机器还能不能装新东西。 这三条放一起,问题的核心就清晰了:一台要联网、没人专职维护、又想跟上新工具的工作站,最该担心的是”补丁到不了”还是”更新会弄坏”? 这不是非黑即白的答案,而是两种成本的对赌。 核心差异:内核级滚动很多人分不清”滚动发行”和”LTS 发行”的区别,常常把”Arch 不稳定”挂在嘴边。先厘清一个事实:两...
模型变强了,Agent 的约束框架该松了
2026 年 7 月 24 日,Anthropic 在官方技术博客发了一篇文章,标题是《The new rules of context engineering for Claude 5 generation models》。Claude Code 团队在里面披露了一件反直觉的事:他们在为 Claude Opus 5、Fable 5 这类新一代模型迁移时,删除了超过 80% 的系统提示词,内部编码评测没有出现可测量的退步。 这不是一次普通的”提示词优化”,它宣告了一个范式的转向:从”提示词工程”走向”上下文工程”,而上下文工程的第一步,是给强模型做减法。 先想清楚”无形的内存”到底是什么讨论 Agent 的人经常犯一个错误:把”给模型的指令”和”模型拿到的上下文”混为一谈。上下文(context)是一个比 Prompt 大得多的概念——它包含系统提示、工具定义、CLAUDE.md/AGENTS.md、记忆文件、对话历史和终端输出。而这一整包东西,每一轮对话都会被完整送进模型,每一轮都在消耗它的注意力——这就是我说的”无形的内存”。 这内存有多贵?学术界的量化比任何博...
Python/R 太慢了?用 Rust 和 Go 重写生信分析管线
生信分析为什么越跑越慢如果你做过真正的大规模生物信息学分析,一定遇到过这种情况:数据量从几个 GB 涨到几十个 GB,脚本的运行时间从几分钟涨到几小时,甚至直接跑崩。 这不是你的代码写得不好。这是 Python 和 R 本身的限制。 解释型语言的代价Python 和 R 的核心问题不在语言本身好不好用,而在每一次循环执行时,解释器都要做大量额外工作: 1234# 一段看似简单的循环total = 0for i in range(10_000_000): total += i * 0.5 在 Python 里,每一次 total += i * 0.5 都要经历: 从对象池取出 i → 检查类型 从对象池取出 total → 检查类型 执行乘法 → 创建新的 float 对象 执行加法 → 创建新的 float 对象 引用计数更新 → 垃圾回收潜在触发 同样的逻辑在 Rust 里:直接编译成 addss 指令操作 CPU 寄存器,零开销。 操作 Python R Rust Go 1 亿次整数加法 ~15s ~20s 0.05s 0.15s 100 万次空循...
Stanford Proto:生成式生物编程语言的技术定位——它到底是什么,以及怎么融入 AI Agent 工作站
一个关键问题:它到底是不是”编程语言”?2026 年 6 月 22 日,Stanford 大学 Brian Hie 实验室开源了一个项目,叫 Proto。论文标题写的是 “A high-level programming language for generative biology”,官网也说 “Proto is a high-level programming language”。 但如果你 pip install proto-language 然后写代码,你会发现写的是标准的 Python。 12pip install git+https://github.com/evo-design/proto-language.gitpython your_program.py 所以第一个要搞清楚的问题:它到底是不是一门新的编程语言? 答案是否定的——严格来说,Proto 不是一个独立的编程语言,而是一个嵌入在 Python 中的领域特定框架(eDSL)。它没有发明新语法、没有自己的编译器或解释器。它提供了一套完整的领域词汇(7 个原语)和组合规则,使用者不是在”写 Python”,...
CAR-T终于在实体瘤里站稳了:KIR-CAR让T细胞不再"累"
CAR-T终于在实体瘤里站稳了:KIR-CAR让T细胞不再”累”CAR-T细胞疗法在血液肿瘤中创造了奇迹。2017年FDA批准的首个CAR-T疗法tisagenlecleucel,让复发难治性B细胞急性淋巴细胞白血病的完全缓解率达到80%以上。此后,针对淋巴瘤、多发性骨髓瘤的CAR-T疗法陆续获批,50-80%的完全缓解率让这些曾经的绝症变成了可治愈的疾病。 但实体瘤是另一个战场。 同样的CAR-T细胞,进入实体瘤后很快就”累”了——免疫抑制的肿瘤微环境、异质性的抗原表达、致密的细胞外基质,让CAR-T细胞无法持续杀伤肿瘤。过去十年,无数针对实体瘤的CAR-T试验失败了。 2026年4月,在美国癌症研究协会(AACR)年会上,一项名为STAR-101的Phase 1临床试验公布了初步数据:9名晚期实体瘤患者(卵巢癌、间皮瘤、胆管癌)接受了一种全新的CAR-T疗法——SynKIR-110。这是首个进入临床的KIR-CAR,它用自然杀伤细胞(NK细胞)的受体替代了传统CAR-T的信号结构,让T细胞在肿瘤微环境中不再那么容易”累”。 结果:无剂量限制性毒性,无神经毒性,仅33%的患者出...
不切DNA也能改基因:Prime Editing进入临床,β-地中海贫血患者已经用上了
不切DNA也能改基因:Prime Editing进入临床,β-地中海贫血患者已经用上了2012年,CRISPR-Cas9横空出世,基因编辑从此进入”可编程”时代。但这把”基因剪刀”有个根本问题:它必须切断DNA双链,然后依赖细胞自己的修复机制来完成编辑。这个修复过程是随机的、容易出错的,可能产生意外的插入、缺失或染色体重排。 对于需要精确修复单个碱基突变的遗传病来说,这种”先破坏再修复”的策略风险太高。 2019年,哈佛大学的David Liu实验室开发出Prime Editing(精准编辑),彻底改变了游戏规则:不切断DNA,直接在原位”改写”碱基序列。2026年4月,这项技术的临床数据首次公开——5名β-地中海贫血患者接受了基于碱基编辑的治疗,血红蛋白水平快速上升,且无严重不良反应。 基因编辑,终于从”剪刀”进化成了”橡皮擦+铅笔”。 为什么传统CRISPR需要”切断”DNACRISPR-Cas9的工作原理是:向导RNA带着Cas9蛋白找到目标位置,Cas9切断DNA双链,然后细胞启动修复机制。修复有两条路径: 非同源末端连接(NHEJ):快速但粗糙,经常在切口处随机插入...