在这里插入图片描述

代码结构

在这里插入图片描述

所有的代码写到cs336_basics/* 下面,在adapters.py里调用自己的.py,通过所有的test。

作业资料参考

karpathy视频+仓库:

视频
github仓库

测试项目运行环境

下载uv

uv官网仓库
使用命令:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
我直接运行pip install uv会报错

进入项目文件夹下目录:
uv self update # optional
uv sync

uv self-update 命令专门用于维护 uv 可执行文件本身。它的主要且唯一目的是检查并安装最新可用的 uv 版本。uv sync 命令在项目级别运行,专注于项目所依赖的 Python 包。其核心功能是确保虚拟环境中安装的包与项目锁文件( uv.lockrequirements.lock )中指定的版本完全一致(项目文件夹中有uv.lock文件)。

运行这两条命令后,会看到文件夹下多出了.venv文件夹

激活虚拟环境

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
.venv\Scripts\Activate # windows命令

切换到虚拟环境后,运行命令
uv run pytest

由于是windows环境,我出现了报错,原因是:tests/test_tokenizer.py 文件尝试导入 resource 模块,但该模块在 Windows 系统上不可用。最开始我以为必须切换到linux环境,或者用云服务器跑,但是我只是需要在windows上测试,注释掉test_tokenizer.py 文件中的import resource即可。kaggle和google colab还有AWS都提供了云服务器,可以白嫖。

再次运行命令后:
在这里插入图片描述
报错: NotImplementedError
最初,所有测试应该 NotImplementedError 失败。要将代码实现连接到测试,要完成./tests/adapters.py 中的函数。
adapters.py 中的函数包括:

  • run_linear
  • run_embedding
  • run_swiglu
  • run_scaled_dot_product_attention
  • run_multihead_self_attention
  • run_multihead_self_attention_with_rope
  • run_rope
  • run_transformer_block
  • run_transformer_lm
  • run_rmsnorm
  • run_silu
  • run_get_batch
  • run_softmax
  • run_cross_entropy
  • run_gradient_clipping
  • get_adamw_cls
  • run_get_lr_cosine_schedule
  • run_save_checkpoint
  • run_load_checkpoint
  • get_tokenizer
  • run_train_bpe

数据集下载

需要下载这两个数据集:

  • TinyStories
  • OpenWebText

由于windows不方便下载,所以我在wsl下下载。踩坑:连接不到https://huggingface.co
后续发现可以镜像站下载:https://hf-mirror.com/

用vscode连接wsl,然后新建一个文件download_data.sh,写入命令
完整的命令如下:

#!/bin/bash

# 创建数据目录并进入

echo "Creating data directory..."

mkdir -p data

cd data

# 下载 TinyStories 数据集

echo "Downloading TinyStoriesV2-GPT4-train.txt.gz... (This may take a while)"

# 使用 curl -L 来正确处理重定向,并用 -o 指定输出文件名

curl -L -o TinyStoriesV2-GPT4-train.txt.gz "https://hf-mirror.com/datasets/roneneldan/TinyStories/resolve/main/TinyStoriesV2-GPT4-train.txt"

  

echo "Downloading TinyStoriesV2-GPT4-valid.txt.gz..."

curl -L -o TinyStoriesV2-GPT4-valid.txt.gz "https://hf-mirror.com/datasets/roneneldan/TinyStories/resolve/main/TinyStoriesV2-GPT4-valid.txt"


# 下载并解压 OWT sample 数据集

echo "Downloading OWT sample dataset..."

curl -L -o owt_train.txt.gz "https://hf-mirror.com/datasets/stanford-cs336/owt-sample/resolve/main/owt_train.txt.gz"

gunzip -f owt_train.txt.gz


curl -L -o owt_valid.txt.gz "https://hf-mirror.com/datasets/stanford-cs336/owt-sample/resolve/main/owt_valid.txt.gz"

gunzip -f owt_valid.txt.gz


# 返回上级目录

echo "All files downloaded and processed successfully."

cd ..

owt的文件下好后看似是压缩包,实际已经解压好了,只需要把后缀名改成txt就好。
已经下载好的文件长这个样子:
在这里插入图片描述
现在我们已经做好前期所有准备了!

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐