Andrej Karpathy 的《Let's reproduce GPT-2 (124M)》视频真是学习 LLM 的至宝,虽然时间有点长(4小时), 但完整跟下来收获巨大,强烈推荐。
如果你和我一样,一步一步地跟着增加、修改代码,而不是拿着最终结果 repo 里的代码去直接运行的话,有个小坑:见图 1,红框中的代码,在原视频中是在 L500 loss.backward() 之前才调用的,但如果这么做的话,会导致 loss & HellaSwag eval 没有视频里的效果好,训练完成后没能超过 OpenAI GPT-2 124M checkpoint,见图 2。
需要像红框中代码一样,model.require_backward_grad_sync 放在 forward pass 之前,就能成功复现出来了,参见图 3(所以要注意 repo 里带有“# added after video”的 comment😅)