本文为**石油大学(北京)2024超算队集训Lab4而准备,内容包括从源码安装PyTorch的指南,以及代码模板的说明
源码安装的官方说明 PyTorch Github | From Source ; 中文社区较完善的参考 CSDN | PyTorch编译流程踩坑
apt update # 更新ubuntu的源
apt install git vim wget # 安装 必要的一些工具
其他环境版本等应符合要求
gcc -v
g++ -v # 分别检查版本信息
nvcc -V # cuda 安装的版本情况
nvidia-smi # 驱动情况,以及可以支持的最高cuda
该镜像没有python应手动安装一个,选择python3.10因为在之前拉取的成熟镜像中,PyTorch2.5.0 + cuda12.6都可以适配python3.10
apt install python3.10 # 在系统依赖中安装python
apt install pip # 安装pip工具 --- 安装好了可以直接 which pip 检测到
此时使用 which python
未能检测到python,但使用 which python3.10
可以;因为没有创建链接为python
which python3.10 # 输出结果为 /usr/bin/python3.10
ln -s /usr/bin/python3.10 /usr/bin/python # 创建 python 软链接
python --version # 安装完成检查版本
安装anaconda,并换第三方conda源到清华源;参考教程 安装Anaconda详细步骤
wget --user-agent="mozilla" https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.06-1-Linux-x86_64.sh # 下载清华源上的anaconda,清华源是在北方地区较完善、较快的源;其他源推荐:中科大源
按照提示安装 Anaconda,基本上一路enter + yes就可以;
如果安装完了以后在bash中conda无法识别到,即conda list
输出bash: conda: command not found
;首先应尝试重新执行上面xxx.sh
脚本,查看安装时输出信息,检查conda list
输出情况。还是不行,则应在环境变量中声明:
echo 'export PATH="/root/anaconda3/bin:$PATH"' >> ~/.bashrc # 添加到环境变量
source ~/.bashrc # 更新环境变量
参考官方信息,git下来代码源文件(可能需要梯子)
git clone --recursive https://github.com/pytorch/pytorch # 不止git pytorch仓库下的文件,还有所依赖的库
cd pytorch
# if you are updating an existing checkout
git submodule sync
git submodule update --init --recursive
创建conda环境 ,在环境中来build
# conda 语句,-n为命名, -y为自动确认
conda create -y -n torch-build python=3.10 # 创建环境并命名为torch-build
conda activate torch-build # 激活并 进入这个环境;退出环境为 conda deactivate
此时在终端中应该出现环境名,例如
(torch-build) root@my_machine:/pytorch#
在激活后的环境中pip换源到清华,Tuna pypi源
python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install mkl-static mkl-include
# CUDA only: Add LAPACK support for the GPU if needed
conda install -c pytorch magma-cuda124 # or the magma-cuda* that matches your CUDA version from https://anaconda.org/pytorch/repo 之前确定的版本是cuda12.4所以这里 magma-cuda124
# (optional) If using torch.compile with inductor/triton, install the matching version of triton
# Run from the pytorch directory after cloning
# For Intel GPU support, please explicitly `export USE_XPU=1` before running command.
make triton
编译的过程可能会较长,建议挂Tmux来执行,以免因为网络掉线而失去终端的信息
export _GLIBCXX_USE_CXX11_ABI=1 # 启用new C++ABI
export CMAKE_PREFIX_PATH=${CONDA_PREFIX:-"$(dirname $(which conda))/../"}
# 执行下面语句的时候,应该在 pytorch/ 目录下
python setup.py develop
# 此过程可能出错,需安装 pip install pyyaml typing_extensions
...
Using /root/anaconda3/envs/torch-build/lib/python3.10/site-packages
Finished processing dependencies for torch==2.6.0a0+gitd6f340f #编译正确的输出
(torch-build) root@my_mahcine:/pytorch# python
Python 3.10.15 (main, Oct 3 2024, 07:27:34) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'2.6.0a0+gitd6f340f
- 代码参考 李沐 等 《动手学机器学习》 ,样例整理了其中PyTorch实现的代码,并组织为了较容易理解的形式。
- 为简化问题,将数据集一并发送给同学们。如本地不存在该数据集,
data_preprocess.py
和test_preprocess_text.py
也有对应的代码可以现场下载到文件夹/data
下(需要梯子)。 Lab4-tamplate
文件结构介绍
Transformer_lab_for_freshman
├── log # 训练的loss图,推理4个例子的heatmap
├── data # 存放NLP任务的数据集
│ ├── fra-eng
│ │ ├── _about.txt
│ │ └── fra.txt
│ ├── fra-eng.zip # Transformer训练任务的数据集:英-法翻译
│ └── timemachine.txt
├── data_preprocess.py # 数据预处理文件
├── test_preprocess_text.py # 测试网络 是否可下载数据集
├── transformer_main.py # Transformer 主函数
├── transformer_module.py # 功能模块,可观察encoder-decoder结构
└── utils
├── matplotlib_draw.py # /log 中的作图代码
└── timer.py # 计时函数
- 执行
transformer_main.py
会首先调用data_preprocess.py
处理好数据集,然后通过函数模块transformer_module.py
实现主要功能(即可以与论文对上的模型结构),训练和推理结果通过matplotlib_draw.py
作图可视化。