1.
generate.py 描述了数据/权重文件怎么加载的.
2.
model.py,尤其 Transformer 类描述了模型结构/层等怎么构成的信息.
3.
kernel.py 描述了 2 里用到的一些核心自定义算子.
给你 2+1
类似与给了头文件声明和.so 文件.
开源的是这个.h.
4. 更接近一些你理解的开源的是有些会提供
finetune.py,做微调的.
这个会告诉你一部分真实完整训练场景下,input/训练数据大概长什么样.
理论上,你有可能根据这个数据格式,去完整重新训练一个等价模型,前提是有对应的硬件资源.
但,通常来说
fintune.py 暴露的信息是不够的.
之所以叫微调,也就是因为它只是一部分 input 长这样.
你可以看看 olmo 的
train.py,比较符合你的对开源的想法.
属于一个端到端,理论上你有硬件条件就可以从 repo 完整复刻的开源形态.
https://github.com/allenai/OLMo/blob/main/scripts/train.py你说 1/2/4 够不够.
也不能说不够吧.
但 pretrain 的 datasource 直觉上还是很影响跟模型交互的语言/prompt 风格的.