写完《桃花幽香》之后,花还会再开吗
之前在随笔里面提到过,《桃花幽香》已经写完了。现在再回头看看,感觉还有一些东西想说。 下面会提到一点剧情。 天子和幽香 在创作说明里面,我说过我想写一个自强的天子,和一个外冷内热的幽香。 但是怎么写呢?总不能直接在文章里面说,天子是自强的,幽香是温柔的,然后就结束了吧。 天子可以任性,可以吵闹,但是她在遇到事情的时候也可以自己站出来。幽香可以嘴上嫌弃,也可以不好接近,但是她仍然会去照顾别人。雨后的照看,醒来之后一边嫌弃一边修墙,这些事情我觉得比直接说出来更有意思。 花 故事里面的花正在消失。对于很多人来说,生活还是得继续,花少了一点好像也没什么大不了的。 可是对于幽香来说呢?她所珍视的东西正在慢慢消失,但是旁边的人或许并不觉得这是什么值得在意的事情。 我有时候会想,同样的事情,在不同的人眼中到底会有多大的区别。你很在意的东西,对于别人可能只是一件微不足道的小事。你想要解释,别人也未必能够理解。 不过在这个故事里面,天子来了。 一百棵桃树 一百棵桃树,到底要种多久才能种完呢?她们要等多久才能看到花开呢? 我想这也算是一句承诺吧。虽然说出口的时候可能并不那么直白。 时间总归会过去,有...
《幻想乡回访日志》:热闹就在眼前,却不一定属于我
讲真,我在确定了这个题材之后就开始后悔了。 冈崎梦美和现在的幻想乡有什么联系呢?她认识灵梦,认识魔理沙,但是我总不能让她见完这两个人之后就直接跑到别人家里去吧。她为什么要去找那些人,那些人又为什么要和她聊天? 我想了半天,最后还是让魔理沙带着她在幻想乡里面走走。虽然感觉这样还是有点刻意,但是至少找到了一条能够继续写下去的路。 关于梦美 写的时候我发现,作为读者我知道的事情,梦美其实并不知道。幻想乡后面发生了什么,她得先从魔理沙那里听说,然后再自己去看。 虽然她一直在研究魔力,但是听到神明、妖怪和异变的时候,她也会怀疑。我写到这里突然想到,她这个态度好像也没比学会里那些听她讲魔力理论的人好到哪里去。 她也曾经因为自己的理论被人质疑,但是面对自己不了解的东西的时候,她又会不会做出一样的反应? 关于日志 我一开始写的时候感觉写得太规整了。去了哪里,见了谁,然后又去了哪里。像是在记行程一样。 但是如果把看到的景色和发生的事情都展开写,又感觉不像是梦美会写下来的日志。所以后面尝试把它写成一种回忆,一边讲事情,一边想起学校、实验室,或者一些好像并没有那么相关的东西。 至于她带着的那些高科技,...
未定名接力稿:给被世界扔掉的东西留一扇门
这份接力稿到现在还没有正式的名字,PDF也只是叫“名称未设定”。 这是多人接力写的稿子,我写的是署名YMG的第四章。下面主要讲这一章,也会提到前后的剧情。 内与外 这一章里面,外界的人类渐渐不再把“内”和“外”当作理所当然的概念。对于外界来说,城市仍然在运行,大家也还在照常生活,似乎没有什么需要特别担心的事情。 但是幻想乡依靠境界和后户存在。如果连内外的概念都在消失,那么幻想乡又该怎么办呢? 这里的非定向空间和拓扑工程是故事里面的科幻设定。我想写的则是,外面的人不一定怀有什么恶意,他们甚至不一定知道幻想乡的存在,但是他们的生活方式改变了,幻想乡所依赖的东西也就开始动摇了。 摩多罗 一开始她觉得这又是八云紫的一次较劲,觉得自己不管的话,对方迟早也会出来处理。可是她一边说着不管,一边还是拦住了误入的东西,最后也去补上了结界的缝隙。 她到底在不在意幻想乡呢? 我不想让她突然说出来。她可以继续嫌麻烦,继续嘲笑八云紫,甚至做完这些事情之后还在想到底是谁赢了。但是她已经做了什么,大家应该也能看见。 门的后面 第四章里面,摩多罗透过一扇扇门,看见了巫女、村民、照顾花的妖精,还有那些名字已经看不...
CS336 学习总结:把语言模型的整条链路串起来
这里整理一下 CS336 的学习记录。仓库按照五次 Assignment 保存代码、实验脚本和笔记,也有 Lecture 的记录。 从 tokenizer 到模型 A1 从 byte-level BPE 和 tokenizer 开始,接着实现 Linear、Embedding、RMSNorm、SwiGLU、RoPE 和注意力,再把损失函数、AdamW、训练循环和生成脚本接起来。 看单个模块的时候容易觉得自己知道它在做什么,真正串起来之后还要考虑 token 怎么变成张量、维度怎么变化,以及梯度如何传递。 系统、数据和对齐 A2 进入系统部分,包括 profiler、混合精度、GPU 内存、Triton、DDP 和分片训练。除了能不能训练,还要看计算、通信和显存分别花在了哪里。 A3 讨论模型规模、数据量和计算预算;A4 涉及文本提取、过滤和去重;A5 则进入 RLVR、策略梯度、GRPO 和重要性重加权。 仓库 README 将 Spring 2026 主线标记为完成。不过部分需要大规模 GPU 或 B200 的实验没有完整复现,具体实现和笔记可以看下面的仓库。 相关链接 学习仓...
AI Infrastructure Seminars:从写 kernel 到解释性能
这篇整理一下 LCPU / PKU AI Infrastructure Seminars 的学习记录。内容包括 CUDA、Triton、TileLang、GPU 内存层次、Tensor Core、流水线和推理。 Kernel 和正确性 assignment01/kernels/ 里有向量加法、softmax、矩阵乘法和 TileLang 相关文件。写 kernel 的时候,先要确认计算结果正确,再去考虑线程如何分配、数据怎样访问以及哪里值得优化。 合并访问、共享内存复用、寄存器占用和同步位置都会影响执行。一个优化到底有没有用,还是得结合瓶颈和测量结果来看。 性能测量 GPU 执行是异步的,计时之前需要考虑预热、同步和重复运行。JIT 编译时间也要和稳定执行时间区分开,不然测到的可能不是想比较的部分。 Tile size、warp 数量和共享内存用量也与硬件有关。Notes/ 里另外记录了内存抽象、GEMM、Tensor Core 和流水线,代码和笔记可以一起对照着看。 相关链接 课程仓库与测量边界 · kernel 文件 · 学习笔记
李宏毅机器学习 2023:把模型、训练和实验放在一起
这里记录一下李宏毅 Machine Learning 2023 Spring 的笔记和作业。仓库把讲义笔记和 Notebook 分开保存,也记录了从机器学习基础继续到 CS336、按需要补充数学与概率的学习路线。 课程内容 前面的笔记包括 PyTorch、机器学习基础和网络训练问题的排查。作业目录则涉及 CNN、Self-Attention、Transformer、BERT、Autoencoder、可解释模型、对抗攻击、领域适应、强化学习和网络压缩。 内容比较多,回看的时候可以先从每份作业的输入和目标入手,再看模型结构和评估方式。例如领域适应会遇到训练分布与目标分布不同的问题,而网络压缩需要考虑资源限制。 具体 Notebook 和笔记放在下面的仓库里。目录中包含预测或提交文件,这里就不列未经重新核对的成绩了。 相关链接 学习路线 · 讲义笔记 · 作业记录
人工智能基础与实践:从 Python 练习到可演示的作品
这里整理一下交大人工智能入门课程的内容。仓库保存了按周组织的实践、期末复习、自测页面和期末项目,从 Python 基础一直涉及神经网络、CNN、目标检测、大语言模型、生成式 AI、Agent 和 AI 伦理。 练习与复习 实践部分有回归、MNIST 和 CNN 相关 Notebook。看实验的时候,除了模型结构,还可以顺着输入、标签、损失函数、训练循环和结果分析,把整个过程走一遍。 Final_term_review/ 按章节整理了概念,Final_exercises/ 里有复习笔记和 HTML 自测页面。复习完一个章节之后可以用问题检查一下自己是否真的记住了。 期末项目 期末项目《别点那个链接!》是一个校园反诈互动网页,包括三关剧情、风险线索复盘、AI 问答和报告导出。项目有静态演示模式,也可以通过本地 Flask 后端连接模型接口。 项目的具体介绍放在另一篇文章,课程代码和复习资料见下面的仓库。 相关链接 课程仓库 · 期末复习笔记 · 期末项目
CS61A 学习记录:从函数走向对象与状态
之前在随笔里提过 Recursion、OOP。这些内容在 CS61A 里都能碰到,仓库按照学习日保存了 Discussion、Lab、Homework,也有 Cats 项目的文件。 对象和状态 Day11/lab06/lab06.py 里有银行账户练习。存款和取款要修改余额,也要记录交易前后的状态,后面才能从历史记录中看出发生了什么。 Day12/hw06/hw06.py 里的自动售货机则要处理库存、余额和商品价格。缺货、钱不够、购买和找零分别对应不同的情况,写的时候需要把这些状态变化理清楚。 作业的 docstring 里有调用和预期输出。看代码之前可以先按例子推一下:补货之后库存是多少,投币之后余额是多少,购买之后又会发生什么。 仓库中同时有题目模板、测试和个人代码,具体进度可以直接查看对应目录。 相关链接 学习仓库 · 账户与交易练习 · 售货机练习
交大 C++ 基础课:从第一个程序开始建立习惯
这里放一下交大 C++ 基础课的课堂代码。目前仓库里的内容主要是 Hello World、课堂练习和输入输出示例,先把这些基础部分记下来。 第一份 main.cpp 使用 std::cout 输出 Hello World,同目录下还有 Makefile。程序虽然很短,但从源文件到可执行程序,仍然要经过编译和运行的过程。后面遇到多文件项目,还需要考虑依赖和链接。 输入输出部分也有一个值得注意的地方:cin.get.cpp 虽然文件名里有 get,实际使用的是 std::cin >> a >> b >> c。两种输入方式对空白字符的处理不同,复习的时候还是得看代码本身。 目前这里是课堂练习的记录,后面有新的代码再继续补充。 相关链接 课堂仓库 · 第一个程序 · 输入输出示例
ACMOJ 作业整理:接口约束与对象生命周期
这篇记录一下 ACMOJ 上的 C++ 作业。仓库按照 Homework 和题号保存代码,这里挑两道比较有意思的题。 逻辑构造 Homework1/2354/ans.hpp 里面先定义了一个函数:只有两个输入都为真时才返回假。再利用这个函数组合出逻辑与和逻辑非。 题目对可用操作有限制,所以不能只看最后的结果。需要想清楚在给定操作下,怎么把想要的逻辑组合出来。 Defer 与对象生命周期 Homework2/1048/DeferClass.hpp 使用 std::function<void()> 保存动作,在对象析构时从容器尾部逐个取出执行。复制构造和复制赋值被禁用,避免一组动作被复制到另一个对象之后执行两遍。 这里需要注意保存顺序和执行顺序,也需要想清楚对象什么时候离开作用域。作业代码和题目接口可以在下面的仓库里查看。 相关链接 作业仓库 · 逻辑构造 · Defer 实现











