查看环境
CPU:R7 9800X3D
RAM:96GB(5600)
GPU:RTX 4060Ti 16GB * 2
nvidia-smi
我的显卡是 RTX 4060Ti,CUDA 最高支持的版本为 12.9,理论上有 11.8、12.6、12.8 三个版本可以使用,但是在实际中,11.8、12.6 是不支持 50 系显卡的,所以需要使用 12.8。
安装环境
根据硬件环境确定了软件环境。选择环境为 Python3.12.10 + CUDA12.8 + PyTorch2.7.0。
在安装之前需要先安装 Anaconda、Python 和 Visual Studio 的 C++ 桌面开发环境。
安装 llama.cpp
下载(需要先安装 CUDA 和 python): 安装 curl(使用联网下载模型,可选)
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
.ootstrap-vcpkg.bat
.
vcpkg install curl:x64-windows
需手动新建模型下载目录 C:\Users\Administrator\AppData\Local\llama.cpp。
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DLLAMA_CURL=OFF
cmake --build build --config Release
-B build:指定构建目录为./build。-DGGML_CUDA=ON:启用 CUDA 支持(需已安装 CUDA 工具包)。-DLLAMA_CURL=ON:启用 CURL 支持(需已安装 curl)。
安装依赖:
# 也可以手动安装 torch 之后,再安装剩下的依赖
pip install -r requirements.txt
进入 build\bin\Release 目录开始使用 llama。
安装 huggingface-cli
用于下载模型。
pip install -U huggingface_hub
设置环境变量:
| 变量名 | 说明 |
|---|---|
| HF_HOME | 模型保存路径 |
| HF_ENDPOINT | 从什么地方下载模型:使用国内镜像站:https://hf-mirror.com |
下载指令如下:
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1 --local-dir e:/model --local-dir-use-symlinks False
--repo-type dataset下载数据集--resume-download已弃用--local-dir保存路径deepseek-ai/DeepSeek-R1为下载的模型--local-dir-use-symlinks False取消软连接,Windows 中没有软链接
可以简化为:
huggingface-cli download deepseek-ai/DeepSeek-R1
下载 LLaMa-factory
git clone https://github.com/hiyouga/LLaMA-Factory.git
安装 LLaMa-factory
如果出现环境冲突,请尝试使用 pip install --no-deps -e 解决。
conda create -n llama_factory python=3.12
conda activate llama_factory
cd LLaMA-Factory
pip install -e .[metrics]
这里指定 metrics 参数是安装 jieba 分词库等,方便后续可能要训练或者微调中文数据集。
可选的额外依赖项:torch、torch-npu、metrics、deepspeed、liger-kernel、bitsandbytes、hqq、eetq、gptq、aqlm、vllm、sglang、galore、apollo、badam、adam-mini、qwen、minicpm_v、modelscope、openmind、swanlab、quality。
| 名称 | 描述 |
|---|---|
| torch | 开源深度学习框架 PyTorch,广泛用于机器学习和人工智能研究中。 |
| torch-npu | PyTorch 的昇腾设备兼容包。 |
| metrics | 用于评估和监控机器学习模型性能。 |
| deepspeed | 提供了分布式训练所需的零冗余优化器。 |
| bitsandbytes | 用于大型语言模型量化。 |
| hqq | 用于大型语言模型量化。 |
| eetq | 用于大型语言模型量化。 |
| gptq | 用于加载 GPTQ 量化模型。 |
| awq | 用于加载 AWQ 量化模型。 |
| aqlm | 用于加载 AQLM 量化模型。 |
| vllm | 提供了高速并发的模型推理服务。 |
| galore | 提供了高效全参微调算法。 |
| badam | 提供了高效全参微调算法。 |
| qwen | 提供了加载 Qwen v1 模型所需的包。 |
| modelscope | 魔搭社区,提供了预训练模型和数据集的下载途径。 |
| swanlab | 开源训练跟踪工具 SwanLab,用于记录与可视化训练过程 |
| dev | 用于 LLaMA Factory 开发维护。 |
安装好后就可以使用 llamafactory-cli webui 打开 Web 页面了。
如果出现找不到 llamafactory-cli,是没有将该路径加入环境变量,找到程序所在路径,加入 path 环境变量即可。
安装 CUDA12.8+PyTorch2.7.0
因为上述方式似乎默认安装了一个 CPU 版本的 pytorch,但是版本不是我们想要的,直接安装覆盖即可。具体方法根据 PyTorch 相应版本提供的安装方式进行安装。
pip3 install torch==2.7.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128
CUDA 下载链接:https://developer.nvidia.com/cuda-toolkit-archive
选择适合的版本进行安装,安装好后通过 nvcc --version 查看是否安装成功,如果成功输出版本号则安装成功。
nvcc --version
安装 bitsandbytes
如果要在 Windows 平台上开启量化 LoRA(QLoRA),需要安装 bitsandbytes 库。使用 pip 安装。
pip install bitsandbytes
也可以使用已经编译好的,支持 CUDA 11.1 到 12.2,根据 CUDA 版本情况选择适合的发布版本。
pip install https://github.com/jllllll/bitsandbytes-windows-webui/releases/download/wheels/bitsandbytes-0.41.2.post2-py3-none-win_amd64.whl
如果上面的方法都不行,就使用源码安装。
git clone https://github.com/timdettmers/bitsandbytes.git
cd bitsandbytes
setCUDA_VERSION=128
make cuda12x python setup.py install
Windows 中如果无法使用 make 可以使用 cmake。
cmake -B . -DCOMPUTE_BACKEND=cuda -S .
cmake --build .
pip install .
Windows 的 make 下载地址:https://gnuwin32.sourceforge.net/packages/make.html
加速
LLaMA-Factory 支持多种加速技术,包括:FlashAttention、Unsloth、Liger Kernel。三种方法选择其中一个就可以了,或者不安装。
安装 flash-attention
FlashAttention 能够加快注意力机制的运算速度,同时减少对内存的使用。 检查环境:
pip debug --verbose
编译好的下载链接:https://github.com/bdashore3/flash-attention/releases
由于没有完全匹配的版本,所以选择了最接近的一个版本。使用 pip 安装。
pip install E:\wheels\flash_attn-2.7.4.post1+cu124torch2.6.0cxx11abiFALSE-cp312-cp312-win_amd64.whl
如果无法使用可能需要源码编译安装。
Unsloth 安装
Unsloth 框架支持 Llama, Mistral, Phi-3, Gemma, Yi, DeepSeek, Qwen 等大语言模型并且支持 4-bit 和 16-bit 的 QLoRA/LoRA 微调,该框架在提高运算速度的同时还减少了显存占用。
需要先安装 xformers, torch, BitsandBytes 和 triton,并且只支持 NVIDIA 显卡。
pip install unsloth
显存和参数关系:
| 模型参数 | QLoRA (4-bit) VRAM | LoRA (16-bit) VRAM |
|---|---|---|
| 3B | 3.5 GB | 8 GB |
| 7B | 5 GB | 19 GB |
| 8B | 6 GB | 22 GB |
| 9B | 6.5 GB | 24 GB |
| 11B | 7.5 GB | 29 GB |
| 14B | 8.5 GB | 33 GB |
| 27B | 22 GB | 64 GB |
| 32B | 26 GB | 76 GB |
| 40B | 30 GB | 96 GB |
| 70B | 41 GB | 164 GB |
| 81B | 48 GB | 192 GB |
| 90B | 53 GB | 212 GB |
| 405B | 237 GB | 950 GB |
Liger Kernel 安装
Liger Kernel 是一个大语言模型训练的性能优化框架,可有效地提高吞吐量并减少内存占用。
测试
测试 PyTorch 和 CUDA
编写一个测试程序。
import os
import torch
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
print("PyTorch Version:", torch.__version__)
print("CUDA Available:", torch.cuda.is_available())
if torch.cuda.is_available():
print("CUDA Version:", torch.version.cuda)
print("Current CUDA Device Index:", torch.cuda.current_device())
print("Current CUDA Device Name:", torch.cuda.get_device_name(0))
else:
print("CUDA is not available on this system.")
测试依赖库
对基础安装的环境做一下校验,输入以下命令获取训练相关的参数指导,否则说明库还没有安装成功。
llamafactory-cli train -h
Windows 中如果报 libuv 的错,则使用以下命令。
set USE_LIBUV=0 && llamafactory-cli train -h
双显卡在 Windows 平台会报错,需要禁用一张显卡,或者使用以下环境变量试试。
set CUDA_VISIBLE_DEVICES=0,1
测试环境是否正常
Windows 似乎不支持 CUDA_VISIBLE_DEVICES=0 指定显卡,并且也不支持''换行 console,分别对应修改: 对于第一个问题,一种方式是修改环境变量,在用户变量或者系统变量加一行就可以。CUDA_VISIBLE_DEVICES 0。
llamafactory-cli webchat --model_name_or_path /media/codingma/LLM/llama3/Meta-Llama-3-8B-Instruct --template llama3
llamafactory-cli webchat E:hf\hub\LLaMA-Factory\examples\inference\llama3.yaml
训练
安装 deepseep。
pip install deepspeed
Windows 平台下在模型训练的过程中出现 'RuntimeError: CUDA Setup failed despite GPU being available' 的错误,导致训练中断。
处理方法 1:
pip uninstall bitsandbytes
pip install bitsandbytes-windows
执行上述的命令如果没有解决问题,试一下一下方法:
pip uninstall bitsandbytes
pip install bitsandbytes-cuda128
pip uninstall bitsandbytes-cuda128
pip install bitsandbytes
在运行过程中所有的错误无非两种情况造成的。
- 情况 1:安装环境出现冲突(包的依赖出现冲突或者 CUDA 的版本没有安装对);
- 情况 2:权限不够(sudo 运行或者管理员下运行即可解决,一般报错信息中会出现 permission 字样)。
WebUI 微调
代码微调
''' 需要的依赖 torch transformers datasets peft bitsandbytes '''
# 测试模型是否可用
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments
# 加载模型 Hugging face 提前下载
model_name = r'E:\hf\DeepSeekR1DistillQwen1.5B'
tokenizer = AutoTokenizer.from_pretrained(model_name)
# 模型加载成功之后注释 model 代码,否则每次都占用内存 (如果内存不够,可以使用 device_map='auto')
model = AutoModelForCausalLM.from_pretrained(model_name, device_map='auto', trust_remote_code=True)
for name, param in model.named_parameters():
if param.is_meta:
raise ValueError(f"Parameter {name} is in meta device.")
print('---------------模型加载成功-------------')
# 制作数据集
from data_prepare import samples
import json
with open('datasets.jsonl', 'w', encoding='utf-8') as f:
for s in samples:
json_line = json.dumps(s, ensure_ascii=False)
f.write(json_line + '\n')
else:
print('-------数据集制作完成------')
# 准备训练集和测集
from datasets import load_dataset
dataset = load_dataset('json', data_files='datasets.jsonl')

