Skip to content

Latest commit

 

History

History
237 lines (156 loc) · 8.73 KB

File metadata and controls

237 lines (156 loc) · 8.73 KB

第二章 环境配置

本章将详细介绍如何配置运行项目所需的开发环境。我们将从硬件要求、软件依赖到环境搭建进行全面而详尽的讲解。为了保证任何人都能学习并且跑通项目的代码,体验亲自训练大语言模型中的各种细节,因此我们进行了大量的实验来适配各种可能的硬件条件,覆盖了 Linux, Windows 以及 Mac 三种主流的操作系统,并且通过 TIER 的分级和训练参数的调整,适配无卡(CPU)、单卡(Single GPU)和单机多卡(Multi-GPU)等多种计算资源的情况,让学习者几乎能做到硬件无感知。

1 硬件环境

项目设计为上可在单个 8 × H100 节点上运行完整的训练流程,下也支持在较小规模的硬件上进行实验。根据个人的预算需求和实际情况,可以选择不同的硬件配置,我们也为主流操作系统测试了多种 TIER, 方便学习者进行更加灵活的选择。

1.1 Linux

我们推荐使用 Linux 作为项目开发和模型训练的首选操作系统,因为在 Linux 中已经建立了非常成熟且良好的开发者生态,且深度学习的训练往往在 Linux 中有着更好的优化和更高的计算效率,无论是 demo 尝试,进行科研实验还是实际生产部署都有着不可替代的地位。

Linux 有着许多的发行版,接下来我们将以 Ubuntu 24.04.2 LTS 为例,并搭配 NVIDIAGPU 来作为 Linux 下的示例环境。

首先使用以下命令检查并确认自己系统当前的发行版信息

lsb_release -a

然后,确认自己服务器的 CPUGPU 信息来选择最合适的 LINUX-TIER

# CPU
lscpu
# NVIDIA-GPU
nvidia-smi -L
# AMD-GPU
rocm-smi

表2-1所示,在 Linux 环境中,我们为 CPU, 单卡和多卡都设置了不同的 TIER,学习者可以根据自己的实际情况选择最适合自己的进行后续环境配置和学习。

表2-1 Linux操作系统下的Tier划分

Linux-Tier 计算资源 显存 适用模型参数量 卡时预算(¥/小时)
Linux-Tier-Free CPU $0$ d4 $0$
Linux-Tier-1 1 × RTX 3090/4090/5090 $24/32GB$ d10 $2$
Linux-Tier-2 8 × A6000 $384GB$ d16 $20$
Linux-Tier-3 8 × A100/H100 $640GB$ d20/d32 $60/160$
Linux-Tier-4 8 × H200 $1152GB$ d32 $300$

1.2 Windows

虽然可以选择 Windows 作为项目学习的环境,但是可能存在不必要的显存开销和性能损失,推荐只有 Windows 系统的学习者安装并使用 WSL2 并在其中参考第1.1节选择并配置环境。

Windows 中,考虑到绝大部分情况为学习者个人的工作环境而非专业的服务器或工作站环境,我们只为是否有显卡区分了两种 TIER,如表2-2所示,学习者可以根据自己的实际情况选择最适合自己的进行后续环境配置和学习。

表2-2 Windows操作系统下的Tier划分

Windows-Tier 计算资源 显存 适用模型参数量 卡时预算
Windows-Tier-Free CPU (Intel or AMD) $0$ d4 $0$
Windows-Tier-1 1 × RTX 3090/4090/5090 $24/32GB$ d10 $0$

1.3 macOS

macOS 用户可以使用M系列芯片的 MPS 加速进行小规模实验,如表2-3所示,适用的规模和计算资源均和 Windows-Tier-Free 类似。

表2-3 macOS操作系统下的Tier划分

macOS-Tier 计算资源 显存 适用模型参数量 卡时预算
macOS-Tier-Free CPU (Intel or M-series) $0$ d4 $0$

1.4 存储要求

训练过程中需要存储预训练数据、模型检查点和中间结果,因此建议学习者至少准备以下存储空间:

  • 预训练数据~20GBFineWeb 节选部分数据集)
  • 模型检查点~10GB(包含多个训练阶段的 checkpoint
  • 临时文件~5GB(分词器训练、评估结果等)
  • 总计:建议预留 35GB 的可用存储空间,默认的数据和模型的存储路径为 ~/.cache/nanochat/

如果 SSD 固态硬盘的大小不够,可以适当减少模型的参数量和数据的下载量;同时可以尝试挂载 NFSPFSCephFSS3 作为网络文件存储,并注意修改默认存储路径到挂载路径下。

CephFS 为例,挂载的命令如下:

cd /mnt
sudo mkdir $USER
sudo mount -t ceph $IP:$PORT:$PATH -o name=$NAME,secret=$SECRET== /mnt/$USER

2 软件环境

项目的软件环境基于Python,主要使用 PyTorch 作为深度学习框架,并单独使用 Rust 实现了高性能的 BPE 分词器。整个项目使用 uv,一个同样使用 Rust 实现的 Python 包和项目管理器,进行统一维护。

2.1 虚拟环境

可以选择使用 condavenv 来管理虚拟环境,新建虚拟环境的目的是让项目之间的环境相互隔离,不会因为依赖冲突而难以维护。

  • 使用 conda 新建虚拟环境,使用 pip 进行管理
conda create -n code python=3.10
# For CUDA (Linux/Windows)
pip install torch
pip install nanochat
  • 使用 venv 新建虚拟环境,并使用 uv 进行管理
# install uv
command -v uv &> /dev/null || curl -LsSf https://astral.sh/uv/install.sh | sh
# create a .venv local virtual environment (if it doesn't exist)
[ -d ".venv" ] || uv venv
# install dependencies
uv pip install nanochat --extra gpu

验证环境

python --version
pip show nanochat

torch 可用性验证

import torch

# 检查 PyTorch 版本
print(f"当前 PyTorch 版本: {torch.__version__}")

# 检查 CUDA 是否可用
print(f"CUDA 是否可用: {torch.cuda.is_available()}")

# 检查 GPU 数量
if torch.cuda.is_available():
    print(f"可用 GPU 数量: {torch.cuda.device_count()}")
    print(f"当前 GPU: {torch.cuda.get_device_name(0)}")

# 检查 MPS 是否可用(macOS)
if hasattr(torch.backends, 'mps'):
    print(f"MPS 是否可用: {torch.backends.mps.is_available()}")

2.2 Rust工具链

然后安装 Rust 的编译环境

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source "$HOME/.cargo/env"

验证环境

rustc --version
cargo --version

2.3 其他操作系统备注

2.3.1 Windows

Windows 中不支持直接使用 pip 来安装 uv, 需要独立安装并将其添加到环境变量中

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
scoop install rust

验证环境

uv --verison
rustc --version

2.3.2 macOS

macOS 用户可以使用M系列芯片的 MPS 加速进行小规模实验。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rust

验证环境

rustc --version

3 云计算平台

如果本地没有足够的 GPU 资源,但是希望能够训练更高的 TIER,可以考虑使用云算力平台进行训练。国内的云算力平台综合性价比和稳定性推荐 AutoDL

3.1 AutoDL

AutoDL 提供按需付费的 GPU 实例,最多同时租赁单节点八卡:

  1. 注册 AutoDL 账号
  2. 选择适合的实例和基础镜像并启动
  3. 创建 SSH 密钥对
  4. 通过 SSH 连接到实例
  5. 按照第2节安装依赖配置环境

3.2 其他云计算平台

其他提供 GPUAI 训练的云计算平台包括: