项目初始化
因为每次设置项目都要遇到很多问题,比如CUDA加速没能开启变成用CPU,依赖项冲突等等,所以我就特别整理了本笔记,来理清楚建立一个新的项目时要做哪些准备,以及注意哪些事情等。
项目依赖管理
深度学习训练任务虽然主要用python,但是和普通python程序大不相同。深度学习训练所依赖的CUDA运行库是系统级二进制依赖,并不是python package。所以在依赖管理上,我们一般采用conda+pip双层结构,用conda管理底层依赖,用pip管理python依赖。
系统层驱动
首先需要确保系统层级的驱动是正确安装的。一般用 nvidia-smi命令来检查NVIDIA驱动安装情况。
conda依赖
我们一般用Conda来创建虚拟环境,然后用pip来安装PyTorch。
conda依赖我们一般写在 environment.yml中:(仅供参考,这个版本安装完后也是问题重重)
name: visinject
channels:
- conda-forge
- defaults
dependencies:
- python=3.10
- pip=23.3.1
# Scientific stack
- numpy=1.24.3
- scipy=1.11.4
- pillow=10.0.1
- matplotlib=3.8.0
- scikit-image=0.22.0
- tqdm=4.66.1
使用安装命令安装:
conda env create -f environment.yml
我们也可以把conda env安装在项目文件夹内,例如:
# 在终端进入你的项目目录
cd D:\Projects\MyNewAI
# 使用 -p 指定路径(./env 表示当前目录下的 env 文件夹)
conda create -p ./env python=3.11
# 激活当前目录下的 env 环境
conda activate ./env
这样所有的依赖都会被安装在这个env文件夹内。这对需要节省C盘空间的开发者来说很方便。
pip依赖安装
pip安装的依赖一半来自于pypi。推荐通过conda安装CUDA依赖。对于conda中没有安装的内容,或者conda中没有的内容,可以通过pip安装。
pip一般把安装内容写在 requirements.txt中:(仅供参考,这个安装完后也是问题重重)
--extra-index-url https://download.pytorch.org/whl/cu124
# PyTorch + CUDA 12.4 (GPU版本,支持RTX 4090)
torch
torchvision
torchaudio
# Hugging Face & ML libraries
transformers>=4.37.0
transformers_stream_generator>=0.0.4
accelerate>=0.25.0
tiktoken>=0.5.2
einops>=0.7.0
sentencepiece>=0.1.99
protobuf>=3.20.0,<5
一般使用:
pip install -r requirements.txt
来安装pip依赖。安装时如果激活了conda环境,则自动安装在conda环境中。
验证安装
验证安装:
python -c "import torch; print(torch.__version__)"
python -c "import torch; print(torch.cuda.is_available())"
python -c "import torch; print(torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'N/A')"
期望输出:
PyTorch: 2.1.0+cu118
CUDA可用: True
GPU: NVIDIA GeForce RTX 4090 Laptop GPU
。
保存环境
由于配置环境太过麻烦,因此最好的方法就是把能用的环境保存下来:
conda env export --no-builds > environment.yml
。
其他注意事项
HuggingFace的模型很大,为了节省C盘空间,可以把下载的模型权重文件放在D盘。
HuggingFace的环境变量设置:(Windwos)
# 设置用户级环境变量
[System.Environment]::SetEnvironmentVariable('HF_HOME', 'D:\hugging_face', 'User')
# 或者通过系统设置:
# 1. Win + R 输入 sysdm.cpl
# 2. 高级 → 环境变量
# 3. 在"用户变量"中新建:
# 变量名:HF_HOME
# 变量值:D:\hugging_face
验证:
# 重新加载环境变量
$env:HF_HOME = [System.Environment]::GetEnvironmentVariable('HF_HOME', 'User')
# 验证
echo $env:HF_HOME
。