当前位置: 首页 > news >正文

深入大模型-2-大模型微调之Windows10安装大语言模型Unsloth微调环境

文章目录

  • 1 什么是LLM微调
  • 2 windows安装微调环境
    • 2.1 windows安装WSL
    • 2.2 准备安装环境
      • 2.2.1 Anaconda(linux)
      • 2.2.2 ollama(linux)
      • 2.2.3 unsloth(linux)
      • 2.2.4 CUDA简介
  • 3 查找适配的版本
    • 3.1 GTX1050显卡
    • 3.2 支持的CUDA版本
    • 3.3 支持的PyTorch版本
    • 3.4 安装方式
    • 3.5 总结
  • 4 执行安装
    • 4.1 创建Conda虚拟环境
    • 4.2 安装Unsloth(使用清华镜像源)
    • 4.3 卸载CPU版本的PyTorch
    • 4.4 安装GPU版本的PyTorch
    • 4.5 解决xformers版本冲突问题
    • 4.6 验证安装
    • 4.7 安装jupyterlab(linux)
  • 5 参考附录

基于显卡GTX1050,驱动的版本,CUDA的版本,查找适配的pytorch版本。Unsloth、PyTorch及xformers等库之间存在版本依赖,需谨慎选择。注意一定要先安装Unsloth,然后再安装pytorch和调整xformers。

1 什么是LLM微调

微调是拿一个已经预训练好的LLM(比如GPT或Llama),它已经很懂得通用语言了,然后针对你的特定任务“调校”一下。给它喂一些你领域的例子,它就会调整自己的知识,专门为这个领域发光发热。

1、微调原理
从一个懂得英语(或其他语言)的base model开始,给它一堆“输入”(比如一个问题)和“输出”(比如完美答案)的配对,模型会调整内部weights来匹配这些例子。
2、微调与prompting的区别
Prompting就像临时给指令(比如“写得像莎士比亚”),而微调是永久改变模型,让它表现更稳定。
3、微调与parameter tuning的区别
Parameter tuning是调整像“temperature”(输出多有创意)这样的设置,就像调车上的收音机。微调则是给引擎升级,让它能跑越野。
4、假设想让LLM从乱糟糟的邮件里提取信息
(1)微调前:
Prompt: "从’嗨,我是 John。订个披萨。“中提取名字和订单。”
输出:可能很随机,比如"Name: John, Food: Pizza"或者只是个总结。
(2)微调后:
用100封邮件例子训练。
现在它总会输出JSON格式:{“name”: “John”, “order”: “pizza”}。

2 windows安装微调环境

2.1 windows安装WSL

Windows Subsystem for Linux
(1)启用WSL
勾选三个选项:Hyper-V,适用于Linux的windows子系统,虚拟机平台。
(2)安装ubuntu22.04
microsoft store搜索下载ubuntu。
双击Ubuntu 22.04.5 LTS Installer.exe
设置初始root密码:sudo passwd。
安装网络查询工具:sudo apt install net-tools。
(3)wsl升级到wsl2
(4)WSL(C盘迁移到D盘)
把WSL从C盘迁移到D盘,彻底解决“C盘飘红”的问题。
将你的Ubuntu-22.04从C盘迁移到D盘,释放C盘空间,并让未来的使用不再占用C盘。

2.2 准备安装环境

部署没有GPU显卡也可以,但是训练一定要有GPU显卡。
训练大模型一定是linux系统.

在这里插入图片描述

2.2.1 Anaconda(linux)

Anaconda下载地址
在这里插入图片描述
在windows中将下载好的安装包放到目录中。
默认安装路径固定,若用户想修改安装路径,需自行留意安装过程中的提示,部分用户可能因疏忽而直接采用默认路径,导致后期因磁盘空间分配不合理等问题产生困扰。

(1)执行安装
./Anaconda3-2025.06-0-Linux-x86_64.sh
记得一定不要修改安装位置/home/zb/anaconda3
(2)配置环境变量
编辑文件/home/zb/.bashrc
添加export PATH=$PATH:/home/zb/anaconda3/bin
生效source /home/zb/.bashrc

在这里插入图片描述

2.2.2 ollama(linux)

ollama官网
本地服务器部署Ollama(自定义安装位置)以及open-webui前端

curl -fsSL https://ollama.com/install.sh | sh

在这里插入图片描述

2.2.3 unsloth(linux)

unsloth的GitHub地址
在这里插入图片描述
查看一下unsloth对版本的要求。
CUDA 11.8和CUDA 12.1指的是NVIDIA CUDA Toolkit的不同版本号。

2.2.4 CUDA简介

CUDA (Compute Unified Device Architecture))是NVIDIA开发的一个并行计算平台和编程模型。
它允许开发者使用NVIDIA的GPU(图形处理器)来执行复杂的计算任务,而不仅仅是处理图形。这在深度学习、科学计算、高性能计算(HPC)等领域至关重要。
(1)深度学习框架(如 PyTorch, TensorFlow)和加速库(如cuDNN)会为不同的CUDA 版本发布对应的编译版本。
(2)你安装的PyTorch版本必须与你系统上安装的CUDA Toolkit版本兼容。

例如:pytorch-cuda=12.1,这意味着你安装的是专门为CUDA 12.1编译和优化的PyTorch版本。如果你的系统只有CUDA 11.8,这个版本的PyTorch可能无法正常工作或无法利用GPU。

3 查找适配的版本

系统中安装了GTX1050显卡,其驱动版本为537.13,支持的CUDA版本为12.2,所以只要安装的pytorch-cuda的版本小于等于12.2就可以使用这个显卡。

3.1 GTX1050显卡

对于GTX 1050这款显卡,其支持的CUDA和PyTorch版本主要取决于它的计算能力 (Compute Capability)。
GTX 1050的计算能力为 6.1。

确保你的 NVIDIA 显卡驱动版本足够新,能够支持你选择的CUDA版本。
你可以通过nvidia-smi命令查看驱动支持的最高CUDA版本。
在这里插入图片描述
为CUDA 12.1编译的程序通常可以在安装了CUDA 12.2运行时的系统上正常运行。因此,安装pytorch-cuda=12.1的环境,在系统CUDA驱动支持的前提下,也可以在CUDA 12.2的环境中工作。

3.2 支持的CUDA版本

GTX 1050可以支持非常广泛的CUDA版本。
NVIDIA通常会向后兼容旧架构的显卡。

(1)最高支持的CUDA版本:理论上,最新的CUDA版本(如CUDA 12.x)仍然可以安装在GTX 1050上,并能正常工作。驱动程序会处理兼容性问题。

(2)推荐使用的CUDA版本
对于深度学习开发,建议使用一个稳定且被主流框架广泛支持的版本。
像CUDA 11.8或CUDA 11.7是非常好的选择。它们足够新,能支持大多数现代 PyTorch/TensorFlow 版本,同时与Pascal架构(如GTX 1050)的兼容性经过了充分验证。
避免使用过老的版本(如CUDA 9.0, 10.0),因为它们可能不支持你想要安装的较新PyTorch版本。

3.3 支持的PyTorch版本

PyTorch官方发布的预编译包(通过pip或conda安装)通常会指定所支持的CUDA版本。

1、关键点:你需要安装一个其编译的CUDA版本 ≤ 你的系统实际安装的CUDA版本的PyTorch包。

例如,你可以用cu118(底层CUDA版本11.8)的PyTorch包运行在CUDA 12.1(实际安装的版本)的系统上,但反之则不行。

GTX 1050支持的PyTorch版本范围:非常广。从较早的PyTorch 1.0+到最新的 PyTorch 2.0+系列,只要选择了正确的CUDA版本后端(主要是cu118或更早的 cu117, cu116, cu113, cu111, cu102等),都可以在GTX 1050上运行。

2、强烈推荐的配置组合
PyTorch 2.0+ / 2.1+ / 2.2+ / 2.3+ … + CUDA 11.8
(1)稳定性与性能:PyTorch 2.0+ 引入了torch.compile,能显著提升模型训练/推理速度。
(2)长期支持:这些是当前和未来的主流版本,拥有更好的文档、社区支持和第三方库兼容性。
(3)CUDA兼容性:CUDA 11.8是一个非常成熟和稳定的版本,完美支持 Compute Capability 6.1。

3.4 安装方式

(1)确认驱动:首先确保你的NVIDIA 显卡驱动是最新的或至少是较新的版本(450+系列以上通常没问题)。
(2)选择安装方式:最简单的方法是使用pip或conda安装PyTorch的预编译包,它会捆绑所需的CUDA工具包(不需要单独安装完整CUDA Toolkit)。

3.5 总结

在这里插入图片描述
尽管GTX 1050是一款入门级且较老的显卡,但它完全可以支持进行深度学习开发。为了获得最佳体验,强烈建议安装PyTorch 2.0+版本并搭配CUDA 11.8 后端。避免追求使用最新的CUDA 12.x,因为这可能会导致与某些旧版 PyTorch包的兼容性问题,而对GTX 1050本身的性能提升微乎其微。

但CUDA12.X对Windows Subsystem for Linux (WSL) 有更好集成。

系统中安装了GTX1050显卡,其驱动版本为537.13,支持的CUDA版本为12.2,所以只要安装的pytorch-cuda的版本小于等于12.2就可以使用这个显卡
请添加图片描述

4 执行安装

版本兼容性: Unsloth、PyTorch及xformers等库之间存在版本依赖,需谨慎选择。

4.1 创建Conda虚拟环境

conda create -n unsloth_gtx1050py310 python=3.10 -y
conda activate unsloth_gtx1050py310

4.2 安装Unsloth(使用清华镜像源)

接下来,使用清华镜像源安装Unsloth。
此步骤会自动安装Unsloth及其依赖,其中通常包含一个CPU版本的PyTorch。

pip install unsloth -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,日志会列出所有已安装的包。
请留意此时安装的torch和xformers的版本。
例如,日志中可能显示torch-2.8.0和xformers-0.0.32.post2。
在这里插入图片描述

4.3 卸载CPU版本的PyTorch

pip uninstall torch torchvision torchaudio -y

4.4 安装GPU版本的PyTorch

(1)Unsloth兼容性: 检查你安装的Unsloth版本对PyTorch的最低版本要求 (例如,unsloth-2025.5.9 可能需要 torch>=2.4.0)。
(2)xformers 兼容性: 与Unsloth一同安装的xformers版本 (例如 xformers-0.0.32.post2) 通常与当时一同安装的PyTorch CPU版本 (例如 torch-2.8.0) 兼容。
(3)CUDA 版本: 确保选择与你的NVIDIA驱动和本地CUDA Toolkit版本匹配的PyTorch (例如 cu118 对应 CUDA 11.8)。

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

4.5 解决xformers版本冲突问题

xformers的Github地址

为了解决这个问题,需要查看xformers的GitHub地址。
在这里插入图片描述

# 1. 卸载现有不兼容版本
pip uninstall xformers -y
# 2. 安装与 CUDA 11.8 兼容的版本(使用预编译 wheel)
pip install xformers==0.0.31 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip cache purge# 会删除所有缓存的包文件,释放空间

4.6 验证安装

import torch
print(torch.__version__)
print(torch.cuda.is_available()) # 应该返回 True
print(torch.cuda.get_device_name(0)) # 应该显示 'GeForce GTX 1050'

4.7 安装jupyterlab(linux)

(1)安装JupyterLab 
pip install jupyterlab -i https://pypi.tuna.tsinghua.edu.cn/simple
(2)运行
jupyter lab
(3)后台运行
nohup jupyter lab --no-browser --port=8888 &
(4)关闭
ps -aux | grep jupyter
kill -9 PID

5 参考附录

参考Anaconda下载地址
参考ollama官网
参考unsloth的GitHub地址
参考unsloth 部署教学 2.0
参考深度学习-79-大语言模型LLM之基于python与ollama启用的模型交互API介绍
参考ollama的GitHub地址
参考本地部署交互式计算平台 JupyterLab 并实现外部访问( Linux 版本)

http://www.dtcms.com/a/394939.html

相关文章:

  • openssl x509 -noout -text -in server.cert.pem输出字段详解
  • Linux 基础:Vi/Vim 编辑器
  • K8s和Service Mesh如何强化微服务治理能力
  • 知识图谱赋能自然语言处理的深层语义分析:技术、影响与前沿趋势
  • 论文笔记:How Can Recommender Systems Benefit from Large Language Models: A Survey
  • idea终端添加git-bash,支持linux的shell语法
  • MITRE ATLAS对抗威胁矩阵:守护LLM安全的中国实践指南
  • 常见的 Web 项目性能优化方法有哪些?​​也适用于首页
  • Qt QMainWindow类深度解析:主窗口框架的核心实现
  • 知识图谱对自然语言处理深层语义分析的革命性影响与启示
  • 内部标识符
  • 计算机网络2
  • 计算机视觉(opencv)实战三十二——CascadeClassifier 人脸微笑检测(摄像头)
  • MyBatis-Plus 全方位深度指南:从入门到精通
  • PyTorch 神经网络工具箱:从组件到基础工具,搭建网络的入门钥匙
  • 分布式专题——18 Zookeeper选举Leader源码剖析
  • JVM 调优在分布式场景下的特殊策略:从集群 GC 分析到 OOM 排查实战(二)
  • 基于OpenEuler部署kafka消息队列
  • Flink TCP Channel复用:NettyServer、NettyProtocol详解
  • Sass和Less的区别【前端】
  • Kotlin互斥锁Mutex协程withLock实现同步
  • Seedream 4.0 测评|AI 人生重开:从极速创作到叙事实践
  • vscode clangd 保姆教程
  • MySQL时间戳转换
  • 【Spark+Hive+hadoop】基于spark+hadoop基于大数据的人口普查收入数据分析与可视化系统
  • 分布式专题——17 ZooKeeper经典应用场景实战(下)
  • TDengine 2.6 taosdump数据导出备份 导入恢复
  • 探索 Yjs 协同应用场景 - 分布式撤销管理
  • 【软考中级 - 软件设计师 - 基础知识】数据结构之栈与队列​
  • LeetCode 385 迷你语法分析器 Swift 题解:从字符串到嵌套数据结构的解析过程