Unsloth 微调 构建自己的大模型 没有GPU也能微调
这次我们使用unsloth框架来微调模型将模型微调成一个垂直领域的模型先说问题This environment is externally managed ╰─ To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install.从 Python 3.11 开始一些 Debian/Ubuntu 系统默认启用保护机制——目的是保护系统级的 Python 环境这个问题主要是 系统不再允许使用 pip 直接安装全局包我们需要用虚拟环境安装sudo apt update sudo apt install python3-venv根目录执行 python3 -m venv .venv然后再根目录会生成一个.venv/ 的文件夹安装时指定环境目录.venv/bin/pip3 install 包名 .venv/bin/python3 脚本.py 于是安装就变成了 .venv/bin/pip3 install unsloth也可以使用激活python环境来安装这样就不用指定目录但是记得安装完要关闭环境source .venv/bin/activate pip3 install 包名 python3 脚本.py deactivate安装CPU版PyTorch官方安装 一般比较慢 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu 国内镜像安装 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu -i https://pypi.tuna.tsinghua.edu.cn/simple 如果需要指定特殊版本 pip3 install torch2.4.0cpu torchvision0.19.0cpu torchaudio2.4.0 --index-url https://download.pytorch.org/whl/cpu验证CPU安装成功python3 -c import torch; print(fVersion: {torch.__version__}); print(fCUDA Available: {torch.cuda.is_available()}); print(fCUDA Build: {torch.version.cuda}); x torch.rand(2,2); print(fDevice: {x.device}) 大概输出 Version: 2.4.0cpu CUDA Available: False CUDA Build: None Device: cpu 如果出现的是 PyTorch Version: 2.14.1cu130 这个cu130意思是CUDA 13.0 的 GPU 加速版本 需要重新安装CPU版本的PyTorch安装unslothpip3 install --upgrade pip pip3 install unsloth unsloth_zoo如果设备没有GPU使用CPU进行微调则会出现以下问题raise NotImplementedError(Unsloth cannot find any torch accelerator? You need a GPU.) NotImplementedError: Unsloth cannot find any torch accelerator? You need a GPU.只使用CPU进行微调需要这样安装unslothpip3 install --upgrade pip apt-get update apt-get install -y git pip3 install unsloth[colab-new] githttps://github.com/unslothai/unsloth.git -U pip3 install bitsandbytes0.44.0 --force-reinstall 如果安装不成功使用以下方法 pip3 install --upgrade pip git clone https://github.com/unslothai/unsloth.git cd unsloth pip3 install .[colab-new] --no-deps pip3 install .[cpu] pip3 install trl0.12.2 peft0.13.2 accelerate1.2.1 bitsandbytes0.44.0bitsandbytes在CPU模式下必须使用0.44.2或更低版本高版本如0.45移除了CPU支持会导致ImportError: cannot import name MatmulLtState如遇此错请降级强制重装 pip3 install bitsandbytes0.44.0 --force-reinstall如果依然出现这个错误需要重装CPU版本的PyTorch说明安装时候是GPU版本raise NotImplementedError(Unsloth cannot find any torch accelerator? You need a GPU.) NotImplementedError: Unsloth cannot find any torch accelerator? You need a GPU.验证安装成功python3 -m unsloth能看到版本和欢迎信息就说明核心部分已经就绪微调#引入依赖 from unsloth import FastLanguageModel, is_bfloat16_supported from transformers import TrainingArguments from trl import SFTTrainer from datasets import load_dataset #加载模型 max_seq_length 8192 # 模型处理文本的最大长度 model, tokenizer FastLanguageModel.from_pretrained( model_name ckpts/qwen-1.5b, max_seq_length max_seq_length, dtypeNone, # 自动检测合适的类型 load_in_4bit True, # device_mapbalanced # 多卡训练时均衡分布模型权重默认为sequential )垂直领域举例娱乐运势模型# 定义训练数据格式化字符串模板 train_prompt_style请遵循指令回答用户问题。 在回答之前请仔细思考问题并创建一个逻辑连贯的思考过程以确保回答准确无误。 ### 指令: 你是一位精通八字算命、紫微斗数、风水、易经卦象、塔罗牌占卜、星象、面相手相和运势预测等方面的算命大师。 请回答以下算命问题。 ### 问题: {} ### 回答: think{}/think {} # 加载数据集 dataset load_dataset(data/fortune-telling, splittrain) def formatting_data(examples): questions examples[Question] cots examples[Complex_CoT] responses examples[Response] texts [] for q, c, r in zip(questions, cots, responses): text train_prompt_style.format(q, c, r) tokenizer.eos_token texts.append(text) return {text: texts} dataset dataset.map(formatting_data, batchedTrue) 添加 LoRA 权重 model FastLanguageModel.get_peft_model( model, r 16, # Rank of the LoRA matrix target_modules [q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj,], # Layers to apply LoRA to lora_alpha 16, # LoRA alpha value lora_dropout 0, # Supports any, but 0 is optimized防止过拟合0 表示不drop任何参数 bias none, # Supports any, but none is optimized use_gradient_checkpointing unsloth, # True or unsloth for very long context random_state 3407, use_rslora False, # We support rank stabilized LoRA loftq_config None, # And LoftQ ) #定义 trainer trainer SFTTrainer( model model, tokenizer tokenizer, train_dataset dataset, dataset_text_field text, max_seq_length max_seq_length, dataset_num_proc 2, packing False, # Can make training 5x faster for short sequences. args TrainingArguments( per_device_train_batch_size 2, # 每个GPU上的batch size gradient_accumulation_steps 4, # 梯度累积步数 warmup_steps 10, # max_steps 200, # 最大训练步数 num_train_epochs3, # 训练轮数 和 max_steps 二选一 learning_rate 2e-4, # 学习率默认值是 2.0e-5 fp16 not is_bfloat16_supported(), bf16 is_bfloat16_supported(), logging_steps 2, output_dir outputs, optim adamw_8bit, seed 3407, ), ) #开始训练 train_stats trainer.train() #模型保存 model.save_pretrained(ckpts/lora_model) tokenizer.save_pretrained(ckpts/lora_model) #注这里只会保存 LoRA 权重在adapter_config.json会指定原始模型位置Unsloth 会根据加载的模型和设备情况自动选择 GPU 数量。默认device_mapsequential只有当单卡显存不够时才占用其他卡如果device_mapbalanced会占用所有卡并均衡分布模型权重# 模型测试 # 加载模型 model, tokenizer FastLanguageModel.from_pretrained( model_name ckpts/lora_model, max_seq_length max_seq_length, load_in_4bit True, ) FastLanguageModel.for_inference(model) question 1995年七月初十生今年是2025年了解未来五年的运势 inputs tokenizer([prompt_style.format(question)], return_tensorspt, max_lengthmax_seq_length).to(cuda) outputs model.generate(inputs[input_ids], attention_maskinputs[attention_mask], max_lengthmax_seq_length, use_cacheTrue) answer tokenizer.batch_decode(outputs, skip_special_tokensTrue)[0] print(answer)如果单卡放不下模型权重会报错因为模型权重切分了但 inputs 并没有切分这篇文章写的有点复杂而且由于只是用CPU进行微调所以在匹配上会出现各种各样的问题如果大家有任何问题欢迎留言讨论

相关新闻

模拟赛车驾驶舱DIY:openrig开源铝型材方案从选材到调校

模拟赛车驾驶舱DIY:openrig开源铝型材方案从选材到调校

模拟赛车圈里,rig 是一个绕不开的词。它指的不是电脑主机,而是那套把方向盘、踏板、座椅和屏幕全部整合成一个固定驾驶环境的支架系统。openrig 就是奔着这件事来的一套方案:全开放的图纸,所有结构件用标准铝型材搭建,…

2026/10/8 8:25:04 阅读更多 →
逆向 BootMetro Pivot 插件:150 行 jQuery 复刻 WP8 风格 Pivot 控件的完整原理

逆向 BootMetro Pivot 插件:150 行 jQuery 复刻 WP8 风格 Pivot 控件的完整原理

逆向 BootMetro Pivot 插件:150 行 jQuery 复刻 WP8 风格 Pivot 控件的完整原理 【免费下载链接】bootmetro Simple and complete web UI framework to create web apps with Windows 8 Metro user interface, based on Bootstrap 2. 项目地址: https://gitcode.c…

2026/10/8 8:24:03 阅读更多 →
航电测试系统:LabVIEW 怎么撑起上千架份?

航电测试系统:LabVIEW 怎么撑起上千架份?

给上千架飞机提供测试系统,覆盖从制造、环境应力筛选一直到基地级维修的全过程——这不是给一个实验室配设备,而是把测试系统当成一条产品线来经营。量一上来,标准化、可复制、口径一致就成了压倒一切的要求。01 这类装置上它能干什么制造环节…

2026/10/8 8:24:03 阅读更多 →

最新新闻

eBPF命令行工具实战:bpftool、bcc-tools与bpftrace排障指南

eBPF命令行工具实战:bpftool、bcc-tools与bpftrace排障指南

前几天帮一个朋友处理线上问题,服务每到凌晨就出现一波明显的磁盘IO毛刺,htop里看进程状态一切正常,strace挂上去又担心影响生产。我干脆打开终端,用 eBPF 命令行工具从内核视角查了一层,几分钟就定位到是某个定时任务…

2026/10/8 8:51:54 阅读更多 →
Linux SELinux策略配置全解析:从模式到上下文,一文搞定

Linux SELinux策略配置全解析:从模式到上下文,一文搞定

简介:面向操作系统安全课程的SELinux策略配置实验一文档,适合需要系统掌握Linux强制访问控制机制的在校学生、运维人员。内容从SELinux三种模式(enforcing、permissive、disabled)入手,循序渐进讲解getenforce、sestat…

2026/10/8 8:51:54 阅读更多 →
从GitHub Trending筛选高性价比开源项目:实战拆解与落地指南

从GitHub Trending筛选高性价比开源项目:实战拆解与落地指南

2026年3月6号这天,我照例把GitHub Trending从头到尾扫了一遍。和往常一样,AI辅助开发的工具还是占了大半屏,但今天列表里有几个项目特别扎眼,其中一个是文档型仓库 eternity4719/howtolivebetter,社区里都叫它《高性价…

2026/10/8 8:51:54 阅读更多 →
SELinux策略配置实验:模式切换、文件上下文与布尔值排错

SELinux策略配置实验:模式切换、文件上下文与布尔值排错

简介:面向操作系统安全课程与Linux运维实践,这份DOCX格式的实验指导文档围绕SELinux策略配置展开,系统讲解SELinux三种模式(enforcing、permissive、disabled)的差异,并通过getenforce、sestatus、setenfor…

2026/10/8 8:51:54 阅读更多 →
Flutter适配OpenHarmony实战:手语App开发复盘与避坑指南

Flutter适配OpenHarmony实战:手语App开发复盘与避坑指南

去年下半年接手了一个手语学习类的App项目,一开始觉得业务并不复杂,无非是视频播放、词库检索加一套练习流程。真正动手才发现,平台选型这一关就够喝一壶的——客户明确要求跑在OpenHarmony设备上,团队里又全是Flutter出身&#x…

2026/10/8 8:51:54 阅读更多 →
CodeBuddy 与 WorkBuddy:AI 编程与工作流协同实战指南

CodeBuddy 与 WorkBuddy:AI 编程与工作流协同实战指南

最近一个项目收尾阶段,我一边用 CodeBuddy 改最后的代码,一边用 WorkBuddy 把这周干的活整理成周报。两个工具来回切换的时候突然意识到,这其实已经是两条完全不同的产品线在接棒了:CodeBuddy 管的是"代码怎么改"&#…

2026/10/8 8:50:52 阅读更多 →

日新闻

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

抖音用户主页视频数据爬虫详解:点赞、收藏、分享字段抓取与 TaoToken 统一 Key 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:03 阅读更多 →
AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

AI 编程 Trae 国内版与国际版一篇讲透:TaoToken 统一 Key 接入实测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:06 阅读更多 →
Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

Claude Desktop 配置第三方推理接口教程:用 TaoToken 统一 Key 打通 API 调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 0:00:07 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:13 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 9:29:10 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 14:34:12 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 11:43:46 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →