最终项目与阅读顺序
八章最终交付是一份可下载、可在 CPU 独立复跑的推理实验台。第一章定义共同任务;第二章证明缓存复用并查位置;第三章闭合字节与准入;第四章隔离调度机制;第五章研究主动数值近似;第六章设计能被故障推翻的验收;第七章记录公平的前向计时;本章把它们绑定到同一来源。读者应先理解这些前提,再打开结果摘要。文件数量不是完整性的替代,关键是每个结论能沿对象、判据、原始结果回到代码和输入。
项目 lab.py 包含缓存对照、窗口重建、空间算术、离散调度、伪量化和固定轨迹计时;tests.py 是十项轻量检查;vendor 内含复制的本地 Transformer 模型,provenance.json 记录复制来源和摘要;requirements.txt 声明 torch 二点六点零。运行目录内部没有跨课程导入,不需要另一个项目文件夹或在线密钥。模型在本地由固定种子随机初始化,reference-model.pt 保存该夹具权重,实验不下载外部预训练模型。
从干净副本复跑
在新环境中先安装声明依赖,再从项目目录运行 tests.py,确认全部检查通过后运行 lab.py。命令默认写 evidence,可改为新输出目录避免覆盖已冻结收据。单线程设置写在模型创建与测试入口,减少笔记本负载并固定主要线程口径。依赖安装本身需要网络,但正式实验是离线的;已有同版本 torch 时无需联网。重跑数值结果应接近固定夹具,耗时不承诺逐次一致;软件版本或硬件改变时应另建收据,而不是修改旧环境字段。
python tests.py
python lab.py --output evidence-new --repeats 9一次运行输出 experiments.json、cpu-timing.json、reference-model.pt 和 receipt.json。tests.py 单独输出 evidence/tests.json,因此它与自定义 evidence-new 不在同一目录时,要在报告明确指向测试来源;若需要一个联合冻结包,应先检查 tests 的源码哈希与 lab 的同名源码哈希一致,再将相关证据副本纳入清单。不能因为文件恰好存在,就假设它由当前代码生成。此处运行顺序与文件位置属于复现契约,文档必须足够让新读者不猜路径。
哈希绑定了什么,没有绑定什么
源码 SHA256 检查字节是否改变;模型摘要按参数名、dtype 和连续参数字节计算。receipt 记录核心源码、依赖声明与 provenance 的摘要,模型摘要、输出文件摘要及环境版本。它们能发现证据与当前文件不同,但不能证明代码语义正确,也不能证明测量机器没有后台负载。摘要是身份工具,数值与故障测试是正确性工具,二者共同使用。文件哈希相同只是同一字节对象,不能替代对函数、窗口与工作负载的解释。
模型文件的容器字节摘要与参数状态摘要也不同。一次保存可能改变容器元数据,而张量内容相同;本项目同时在收据记录输出文件摘要和模型状态摘要,便于区分这两层。复制模型时 provenance 对源文件做摘要,可以确认本地依赖版本,课程不会在讲义更新后悄悄导入另一个课程的最新模型。若源模型后续修复,必须主动替换 vendor、更新来源并重跑全部检查,不能在结果中只换一个版本号。
完整算例一:联合验收怎样写才成立
在本次冻结夹具上,十项检查均通过,多块缓存最大误差约 ,窗口重建误差约 ;实际缓存与公式均为四万九千一百五十二字节。四请求模拟总工作量十,静态七 tick、连续六 tick,守恒成立。八位与四位恢复误差单独记录,CPU 首轮九对测量的中位数之比约1.5506。这些命题共同落在同一模型哈希与同一核心代码上,但量化、调度和计时的工作负载各有明确子协议,并非同一个综合服务分数。
因此合格摘要应写“固定随机 CPU 夹具的缓存对照通过,给定轨迹上的前向计时见原始重复;伪量化与离散调度分别完成机制实验”。不能写“实现高吞吐中文大模型服务”,因为语言训练、真实服务、GPU 内核、整数执行和请求尾部均未完成。精确列出未完成项并不削弱已闭合的部分,它阻止读者把合理教学实验误用成部署容量承诺。最终表中的每一列都应带单位与对象,尤其 tick、字节和秒不能混成一个总分。
完整算例二:多个局部胜利不能拼成一台系统
构造候选甲:缓存等价通过,CPU 中位数八毫秒,四十八 KiB 缓存;候选乙:改为较低位宽后七毫秒,但关键质量门槛失败;候选丙:四十 KiB,却使用不同窗口导致输出不同。若只取乙速度、丙空间、甲正确性,就得到不存在的组合。有效选择必须要求同一候选同时满足等价或约定质量、空间预算、时间协议与可复现身份。若没有任何候选同时满足,应报告当前无合格候选,而不是把三者局部成绩合并成成功。
若一个合格候选在全部需最小化的成本上不劣于另一个,且至少一项更好,就称它支配后者。无法相互支配的候选构成成本取舍前沿;但前沿不是自动批准上线。质量门槛、工作负载和测量误差必须先固定,不能以较低空间抵消错误输出。对本项目,伪量化没有真实压缩存储也没有整数时间,因此不进入“真实量化速度空间”前沿,只进入误差与条件载荷的研究表。
candidates=[
{'id':'A','quality':True,'ms':8,'kib':48},
{'id':'B','quality':False,'ms':7,'kib':48},
{'id':'C','quality':False,'ms':8,'kib':40}]
feasible=[x for x in candidates if x['quality'] and x['ms']<=9 and x['kib']<=50]
assert [x['id'] for x in feasible]==['A']
assert min(x['ms'] for x in candidates)==7
# The component-wise best row is not an existing jointly feasible candidate.
assert not any(x['quality'] and x['ms']==7 and x['kib']==40 for x in candidates)
print(feasible)不完备项与失败记录的地位
项目明确未实现真实分页分配器、网络服务、分布式推理、激活量化、KV 量化、整数矩阵乘法或 FlashAttention 内核。GPU 标为未运行,用户延迟目标标为未测量。错误前缀、局部 mask 和离群值清零不是被掩盖的坏成绩,而是为边界设计的可重放反例;等长请求无连续收益也是机制的预期负结果。报告应分别保存正式功能失败、故障注入成功、未运行和未实现,避免把所有非绿色状态都压成一个模糊的“问题”。
复现也不等于所有环境逐比特一致。PyTorch 官方说明不同版本、设备和平台的完全复现并不普遍保证;本项目冻结种子、版本和线程以缩小变动来源,并以明确容差验收数值。性能还受操作系统调度与温度等因素影响,所以保留原始重复,不把单次比值当硬件定律。若新环境出现缓存差异,应先保留环境和最小输入,再判断浮点差别或结构错误;不能覆盖旧证据制造表面一致。
报告的最小证据链
最终阅读者应能顺着四步核查:先确认源码及模型身份,再按 README 重放测试,再从 experiments 的对象字段理解各子实验,最后从 cpu-timing 原始数组复算时间摘要。第一类独立检查是身份链:当前文件摘要是否与 receipt 一致;第二类是语义链:正负对照和账本是否仍成立。即使摘要核验通过,也要保留语义链,因为同一个有缺陷程序可以稳定地产生同样错误。课程的完整性在于每条主结论都有这种可操作路径,而不是只有“做一个实验”的练习标题。
完成报告时可将结论写为四栏:精确执行检查、近似差异、模拟结果、实际计算测量。每栏列共同对象、核心数值、通过依据和边界。不要将论文的 GPU 成绩、本机 CPU 时间与教学 tick 混放在同一纵轴,也不要把不存在的真实压缩包装成量化节省。这个结构使后续读者即使不看全部讲义,也能判断哪些事实可以复用,哪些需要新实现与新测量。
练习与项目验收
TRY IT YOURSELF
基础:识别证据身份
receipt记录lab.py摘要与当前文件不一致,但tests.json显示全通过。该状态应怎样解释?
提示 1
提示 2
对照参考解答
TRY IT YOURSELF
进阶:联合预算
候选A质量通过、时长9毫秒、缓存40KiB;B质量通过、7毫秒、60KiB。限制8毫秒且50KiB,谁可行?
提示 1
提示 2
对照参考解答
TRY IT YOURSELF
挑战:独立复跑与诚实结论
在另一个CPU运行得到比值0.95但所有缓存等价检查通过,应如何提交?
提示 1
提示 2
对照参考解答
最终验收要求源码在独立目录可运行,十项测试有具体记录,八章独立数值例可以执行,空间和调度摘要可以从原始数据复算,性能范围与未完成项清楚。读者完成此项目后得到的是审计和优化推理执行的基本方法,而非未经验证的大模型能力承诺。本课在这个明确边界内闭合全部主线;其他硬件和服务规模需要各自的新实验契约。