5060Ti双显卡+LLaMA-factory大模型微调环境搭建

5060Ti双显卡+LLaMA-factory大模型微调环境搭建

参考链接

查看环境

CPU:R7 9800X3D
RAM:96GB(5600)
GPU:5060Ti 16GB * 2

nvidia-smi 
在这里插入图片描述


我的显卡是5060TiCUDA最高支持的版本为12.9,理论上有11.8、12.6、12.8 三个版本可以以使用,但是在实际中,11.8、12.6是不支持50系显卡的,所以需要使用12.8

在这里插入图片描述

安装环境

根据硬件环境确定了软件环境
选择环境为Python3.12.10+CUDA12.8+PyTorch2.7.0

在安装之前需要先安装AnacondapythonVisual StudioC++桌面开发环境

安装llama.cpp

下载(需要先安装 CUDApython ):
安装 curl(使用联网下载模型,可选)

git clone https://github.com/microsoft/vcpkg.git cd vcpkg .\bootstrap-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-npuPyTorch 的昇腾设备兼容包。
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 installtorch==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 版本情况选择适合的发布版本。
https://github.com/jllllll/bitsandbytes-windows-webui/releases/tag/wheels

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=128make cuda12x python setup.py install

windows中如果无法使用make可以使用cmake

cmake -B . -DCOMPUTE_BACKEND=cuda -S . cmake --build . pip install.

Windowsmake下载地址:https://gnuwin32.sourceforge.net/packages/make.html

加速

LLaMA-Factory 支持多种加速技术,包括:FlashAttentionUnslothLiger 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 

如果无法使用可能需要源码编译安装https://huggingface.co/lldacing/flash-attention-windows-wheel

Unsloth安装

Unsloth 框架支持 Llama, Mistral, Phi-3, Gemma, Yi, DeepSeek, Qwen等大语言模型并且支持 4-bit16-bitQLoRA/LoRA 微调,该框架在提高运算速度的同时还减少了显存占用。
需要先安装xformers, torch, BitsandBytestriton,并且只支持NVIDIA显卡

pip install unsloth 

显存和参数关系

模型参数QLoRA (4-bit) VRAMLoRA (16-bit) VRAM
3B3.5 GB8 GB
7B5 GB19 GB
8B6 GB22 GB
9B6.5 GB24 GB
11B7.5 GB29 GB
14B8.5 GB33 GB
27B22 GB64 GB
32B26 GB76 GB
40B30 GB96 GB
70B41 GB164 GB
81B48 GB192 GB
90B53 GB212 GB
405B237 GB950 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的错,则使用以下命令

setUSE_LIBUV=0&& llamafactory-cli train -h 
在这里插入图片描述


双显卡在Windows平台会报错,需要禁用一张显卡,或者使用以下环境变量试试

setCUDA_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微调

参考链接1
参考链接2
参考链接3

代码微调

''' 需要的依赖 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 withopen('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

Read more

自适应图像变焦与边界框变换用于无人机目标检测

自适应图像变焦与边界框变换用于无人机目标检测

作者: Tao Wang, Chenyu Lin, Chenwei Tang, Jizhe Zhou, Deng Xiong, Jianan Li, Jian Zhao, Jiancheng Lv 亮点 * 自适应空间变换: 对图像进行自适应空间变换可以有效地放大物体细节。 * 框变换: 框变换使得检测器能够在图像变换的空间中进行训练和推理。 * 实验效果: 在多种无人机图像数据集上的实验表明,该方法以较小的代价获得了有效的增益。 * 灵活模块化设计: 灵活的模块化设计使其能够与其他方法和任务场景集成。 https://arxiv.org/pdf/2602.07512 摘要 由于物体尺寸较小,从无人机(UAV)拍摄的图像中检测物体具有挑战性。在这项工作中,我们探索了一种简单高效的自适应变焦框架,用于无人机图像的目标检测。主要动机是,前景物体通常比普通场景图像中的物体更小且更稀疏,这阻碍了有效目标检测器的优化。因此,我们的目标是自适应地放大物体,以便更好地捕捉用于检测任务的物体特征。为了实现这一目标,需要两个核心设计:i)

ROS1机器人SLAM系列(四):Gmapping算法详解与实战

ROS1机器人SLAM系列(四):Gmapping算法详解与实战 本文将深入讲解Gmapping算法的原理,并通过实战演示如何使用Gmapping进行2D激光SLAM建图。 1. Gmapping算法简介 1.1 什么是Gmapping? Gmapping是一种基于**粒子滤波(Rao-Blackwellized Particle Filter, RBPF)**的2D激光SLAM算法。它由Giorgio Grisetti等人于2007年提出,是ROS中最经典、应用最广泛的SLAM算法之一。 主要特点: * 基于粒子滤波的概率框架 * 适用于2D激光雷达 * 需要里程计信息 * 实现成熟,稳定可靠 * 适合中小规模室内环境 1.2 算法流程概述 Gmapping算法流程 里程计数据 运动预测 Motion Model 粒子集合更新 激光雷达数据 扫描匹配 Scan Matching 观测更新 Sensor Model 粒子权重计算 重采样 Resample 地图更新 2. 核心算法原理

FPGA设计实例——基于FPGA的蓝牙通信实验_EGo1开发板上实现

FPGA设计实例——基于FPGA的蓝牙通信实验_EGo1开发板上实现

一、概述 本实验基于依元素科技有限公司的《蓝牙通信》实验进行改进,通过AT指令设置蓝牙模块的名称、查询蓝牙模块的地址等,然后利用EGo1开发板上的蓝牙模块与板卡进行串口通信,使用支持蓝牙4.0的手机与板卡上的蓝牙模块建立连接,并通过手机APP发送命令,控制FPGA板卡上的硬件外设。 二、实验原理 蓝牙无线技术是使用范围最广泛的全球短距离无线标准之一,EGo1开发板上板载的蓝牙模块是基于TI公司CC2541芯片的蓝牙4.0模块,具有256kb配置空间,遵循V4.0 BLE蓝牙规范。 本实验利用板卡上的蓝牙模块与外界支持蓝牙4.0标准的设备(如手机)进行交互。该蓝牙模块出厂默认配置为通过串口协议与FPGA进行通信,用户无需研究蓝牙相关协议与标准,只需要按照UART串口协议来处理发送与接收的数据即可,实验框图如图1所示。 图1 蓝牙通信实验的模块框图 本实验通过串口发送与串口接收模块来完成与蓝牙模块的数据传输,通过命令解析模块及命令响应模块来实现简单的串口命令的解析控制以及命令的执行,FPGA 在接收到蓝牙模块传输进来的串口数据后,会将相应数据以及命令响应通过蓝牙模块发送给与之

保姆级教程!零基础解锁大疆无人机开发:MSDK/PSDK/ 上云 API 实战指南[特殊字符]

保姆级教程!零基础解锁大疆无人机开发:MSDK/PSDK/ 上云 API 实战指南[特殊字符]

保姆级教程!零基础解锁大疆无人机开发:MSDK/PSDK/上云API实战指南🚁 摘要 作为无人机领域的「苹果生态」,大疆行业开发体系自2014年开放SDK以来,已吸引超10万开发者构建3000+行业解决方案。本文基于官方最新《行业生态入门指南》,深度解析MSDK移动端开发、PSDK负载硬件开发、上云API云端集成三大核心能力,附全流程资源清单与生态认证攻略,助你从「无人机小白」变身行业开发高手! 目录 * 一、大疆开发生态全景:为什么选择大疆二次开发? * 二、MSDK实战:5分钟开发你的首个无人机控制App * 三、PSDK硬核:让无人机秒变「万能挂载平台」 * 四、上云API进阶:构建无人机云端大脑 * 五、开发者必备:技术支持与生态认证全流程 一、大疆开发生态全景:为什么选择大疆二次开发? 🌟 生态优势 * 低门槛:无需自研飞控算法,直接调用大疆底层能力(如飞行稳定、图传通信); * 高兼容:支持Matrice 350 RTK、