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

从零开始:Qwen2.5-3B大模型LoRA微调与ollama本地部署实战

1. 环境准备与工具安装想要玩转Qwen2.5-3B大模型的微调和部署首先得把工具和环境准备好。我建议使用Linux系统Ubuntu 20.04或者MacOSWindows用户可以考虑WSL2。以下是需要安装的核心工具Python 3.9这是运行所有AI相关工具的基础CUDA 11.7如果你有NVIDIA显卡这是必须的Git用来下载各种开源项目Docker简化环境配置的好帮手安装完基础环境后我们来搞定几个关键工具# 安装Python依赖 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 pip install transformers datasets accelerate peft # 安装LlamaFactory git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e .[torch,metrics]如果你打算在本地运行模型还需要安装ollama# Linux/Mac安装ollama curl -fsSL https://ollama.com/install.sh | sh # Windows用户可以去官网下载安装包2. 获取Qwen2.5-3B模型现在我们来获取Qwen2.5-3B模型。国内用户推荐使用魔搭社区速度更快from modelscope import snapshot_download model_dir snapshot_download(Qwen/Qwen2.5-3B-Instruct)下载完成后模型会保存在~/.cache/modelscope/hub/Qwen/Qwen2.5-3B-Instruct目录下。这个模型大约占用6GB空间确保你的磁盘有足够容量。如果你想验证模型是否下载成功可以运行以下代码from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer AutoTokenizer.from_pretrained(model_dir) model AutoModelForCausalLM.from_pretrained(model_dir, device_mapauto) input_text 你好介绍一下你自己 inputs tokenizer(input_text, return_tensorspt).to(cuda) outputs model.generate(**inputs, max_new_tokens50) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))3. 使用LoRA进行轻量化微调LoRALow-Rank Adaptation是目前最流行的大模型微调技术之一它只训练模型的一小部分参数大大降低了计算资源需求。下面我们使用LlamaFactory来微调Qwen2.5-3B。3.1 准备数据集首先准备一个JSON格式的数据集。比如我们要让模型学会用甄嬛体说话[ { instruction: 用甄嬛体回答今天天气真好, output: 今儿个这天儿可真是极好的晴空万里倒叫本宫想起那年御花园里的景致。 }, { instruction: 用甄嬛体表达我饿了, output: 哀家这身子骨儿倒是有些乏了腹中空空如也想来是到了用膳的时辰了。 } ]把这个文件保存为zhenhuan.json放到LLaMA-Factory/data目录下然后在dataset_info.json中注册这个数据集{ zhenhuan: { file_name: zhenhuan.json, formatting: alpaca } }3.2 启动微调训练现在可以开始微调了使用以下命令llamafactory-cli train \ --stage sft \ --do_train \ --model_name_or_path /path/to/Qwen2.5-3B-Instruct \ --dataset zhenhuan \ --template qwen \ --finetuning_type lora \ --lora_rank 16 \ --lora_alpha 32 \ --output_dir ./output \ --per_device_train_batch_size 2 \ --gradient_accumulation_steps 4 \ --lr_scheduler_type cosine \ --logging_steps 10 \ --save_steps 100 \ --learning_rate 5e-5 \ --num_train_epochs 3.0 \ --fp16关键参数说明lora_rank: LoRA矩阵的秩一般8-64之间越大效果越好但需要更多计算batch_size: 根据你的GPU显存调整12GB显存可以设2-4learning_rate: LoRA学习率通常设5e-5到1e-4训练过程中可以在output目录下查看日志和保存的检查点。如果中断了可以加--resume_from_checkpoint output继续训练。4. 模型转换与量化训练完成后我们需要把LoRA适配器合并到原模型中并转换成ollama支持的GGUF格式。4.1 合并LoRA适配器from peft import PeftModel from transformers import AutoModelForCausalLM, AutoTokenizer base_model AutoModelForCausalLM.from_pretrained(Qwen/Qwen2.5-3B-Instruct) model PeftModel.from_pretrained(base_model, ./output) merged_model model.merge_and_unload() merged_model.save_pretrained(./merged_model)4.2 安装llama.cppGGUF转换需要llama.cppgit clone https://github.com/ggerganov/llama.cpp cd llama.cpp make -j4.3 转换为GGUF格式python convert-hf-to-gguf.py ./merged_model --outtype f16 --outfile qwen2.5-3b-zh.f16.gguf如果你显存有限可以进行4-bit量化./quantize qwen2.5-3b-zh.f16.gguf qwen2.5-3b-zh.q4_k_m.gguf q4_k_m量化后模型大小从6GB降到约1.5GB效果损失很小。5. 使用ollama本地部署现在我们可以用ollama来运行这个微调后的模型了。5.1 创建Modelfile新建一个Modelfile文件内容如下FROM ./qwen2.5-3b-zh.q4_k_m.gguf TEMPLATE {{ if .System }}|start_header_id|system|end_header_id| {{ .System }}|eot_id|{{ end }}{{ if .Prompt }}|start_header_id|user|end_header_id| {{ .Prompt }}|eot_id|{{ end }}|start_header_id|assistant|end_header_id| {{ .Response }}|eot_id| SYSTEM 你是一个用甄嬛体说话的AI助手 PARAMETER temperature 0.7 PARAMETER num_ctx 20485.2 创建并运行模型ollama create zhenhuan -f Modelfile ollama run zhenhuan现在你就可以和微调后的模型对话了试试输入今日心情甚好看看它会不会用甄嬛体回应你。6. 进阶技巧与优化6.1 微调参数调优不同的任务需要不同的微调策略。以下是一些经验参数任务类型lora_rank学习率batch_sizeepoch风格模仿32-643e-54-83-5知识注入16-325e-52-41-3指令跟随8-161e-48-161-26.2 多LoRA适配器切换ollama支持运行时切换不同的LoRA适配器。你可以训练多个专用适配器比如一个用于客服场景一个用于创意写作一个用于代码生成然后在运行时通过--lora参数指定ollama run zhenhuan --lora ./customer_service_lora.bin6.3 系统提示词优化SYSTEM提示词对模型行为影响很大。比如想让模型扮演专业医生SYSTEM 你是一位资深内科医生回答患者问题时要专业且富有同理心。如果遇到不确定的情况应该说这个需要进一步检查确认7. 常见问题解决问题1训练时显存不足解决方案减小batch_size开启梯度累积(gradient_accumulation_steps)使用--load_in_4bit参数问题2模型回答质量下降解决方案检查数据集质量确保指令-输出对匹配尝试增大lora_rank调整temperature参数0.3-0.7效果较好问题3ollama加载失败解决方案确认GGUF文件路径正确检查Modelfile的TEMPLATE格式是否正确尝试用ollama serve查看详细日志我在实际项目中发现Qwen2.5-3B对中文理解相当不错配合LoRA微调后在特定任务上可以达到接近70B模型的效果。最关键的是找到合适的数据集和训练参数这往往需要多次实验调整。建议从小数据集开始快速迭代验证效果再逐步扩大训练规模。

相关文章:

从零开始:Qwen2.5-3B大模型LoRA微调与ollama本地部署实战

1. 环境准备与工具安装 想要玩转Qwen2.5-3B大模型的微调和部署,首先得把工具和环境准备好。我建议使用Linux系统(Ubuntu 20.04)或者MacOS,Windows用户可以考虑WSL2。以下是需要安装的核心工具: Python 3.9&#xff1…...

Dart异步编程中runZonedGuarded的异常捕获实战指南

1. 为什么你需要关注Dart异步异常捕获? 在移动应用和后台服务开发中,异步操作无处不在。想象你正在开发一个Flutter应用,当用户点击按钮触发网络请求时,如果服务器突然返回错误,而你的代码没有妥善处理这个异常&#x…...

CHORD-X开发入门:C语言基础与系统底层接口调用示例

CHORD-X开发入门:C语言基础与系统底层接口调用示例 如果你对CHORD-X系统的视觉处理能力感兴趣,想自己动手写点程序来调用它,但又觉得那些复杂的框架和高级语言有点绕,那这篇文章就是为你准备的。咱们今天不聊Python,也…...

手把手教你用Ozone调试FreeRTOS项目(含J-Link配置避坑指南)

手把手教你用Ozone高效调试FreeRTOS项目(附J-Link实战避坑指南) 在嵌入式开发中,调试FreeRTOS系统往往面临诸多挑战——线程状态难以追踪、任务堆栈分析复杂、实时性问题定位困难。SEGGER Ozone作为专为J-Link设计的跨平台调试器&#xff0c…...

Qwen3-Embedding-4B入门指南:向量归一化对余弦相似度计算的影响实验对比

Qwen3-Embedding-4B入门指南:向量归一化对余弦相似度计算的影响实验对比 1. 引言:从关键词匹配到语义理解 你有没有遇到过这样的烦恼?在文档里搜索“苹果”,结果既找到了水果,也找到了手机,甚至还有一堆无…...

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产暗

1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…...

5分钟搞定抖音无水印下载:douyin-downloader终极指南

5分钟搞定抖音无水印下载:douyin-downloader终极指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppor…...

从零到一:在Axure中构建你的Quick UI设计系统

1. 为什么要在Axure中构建Quick UI设计系统 第一次接触Quick UI组件库时,你可能会有疑问:为什么非要把这套组件库整合进Axure?直接使用现成的UI工具不就好了吗?这个问题我也思考过很久,直到去年带队做一个跨部门协作的…...

如何快速部署YaeAchievement:原神成就数据自动化导出终极指南

如何快速部署YaeAchievement:原神成就数据自动化导出终极指南 【免费下载链接】YaeAchievement 更快、更准的原神数据导出工具 项目地址: https://gitcode.com/gh_mirrors/ya/YaeAchievement YaeAchievement是一款专为《原神》玩家设计的开源成就数据导出工具…...

ERNIE-4.5-0.3B-PT轻量级部署:vLLM框架助力,Chainlit打造友好对话前端

ERNIE-4.5-0.3B-PT轻量级部署:vLLM框架助力,Chainlit打造友好对话前端 1. 环境准备与快速部署 1.1 系统要求与依赖安装 部署ERNIE-4.5-0.3B-PT模型需要满足以下基础环境要求: 操作系统:推荐Ubuntu 20.04/22.04 LTS或CentOS 7G…...

如何用Cyberbrain在5分钟内调试复杂的Python循环问题

如何用Cyberbrain在5分钟内调试复杂的Python循环问题 【免费下载链接】Cyberbrain Python debugging, redefined. 项目地址: https://gitcode.com/gh_mirrors/cy/Cyberbrain 调试Python循环问题常常让开发者头疼,尤其是面对多层嵌套或复杂逻辑时,…...

深入解析CoT蒸馏与GRPO:如何高效训练具备推理能力的小模型

1. 从零理解CoT蒸馏:让大模型的"思考能力"装进小模型 第一次听说CoT蒸馏这个概念时,我正被一个实际问题困扰:客户需要在智能音箱上部署数学解题功能,但GPT-4的API调用成本高得吓人。当时尝试直接用7B小模型微调&#xf…...

SteamTinkerLaunch Winetricks集成:dotnet48等依赖库的自动安装方法

SteamTinkerLaunch Winetricks集成:dotnet48等依赖库的自动安装方法 【免费下载链接】steamtinkerlaunch Linux wrapper tool for use with the Steam client for custom launch options and 3rd party programs 项目地址: https://gitcode.com/gh_mirrors/st/ste…...

TP4552B低功耗 5V 常开的锂电池充放电解决方案

概述 TP4552B 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC,为锂电池的充放电提供完整的单芯片电源解决方案。 TP4552B 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块。TP4552B…...

TP4581 带自动开关机的锂电池充放电解决方案

概述 TP4581 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC,为锂电池的充放电提供完整的单芯片电源解决方案。 TP4581 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块、按键模块和…...

HMCL启动器:3分钟快速上手跨平台Minecraft游戏体验

HMCL启动器:3分钟快速上手跨平台Minecraft游戏体验 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL 还在为不同平台安装Minecraft而烦恼吗&#xff1…...

基于Leaflet和GFS气象数据构建动态气象可视化系统的实战指南

1. 从零开始认识气象可视化系统 第一次接触气象可视化是在三年前的一个天气预警项目,当时看到Windy.com那种丝滑的动态风场效果就被深深吸引。作为前端开发者,我一直在想如何用开源技术栈实现类似效果。经过多次尝试,终于摸索出一套基于Leafl…...

qmcdump终极指南:3步快速解密QQ音乐加密音频文件

qmcdump终极指南:3步快速解密QQ音乐加密音频文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经…...

张雪峰被蒸馏永生引争议!有人支持,但很多人不看好

①张雪峰刚离世不久,GitHub 上就出现了多个「张雪峰.skill」。先有位开发者收集了张雪峰生前的 5 本著作、十余条深度采访、30 余条语录及多个关键决策记录,提炼出其独特的咨询风格、决策逻辑与表达方式,将其打包为一款 AI 智能体技能文件。后…...

黑苹果触摸板手势终极方案:从卡顿到流畅的完整配置指南

黑苹果触摸板手势终极方案:从卡顿到流畅的完整配置指南 【免费下载链接】Hackintosh Hackintosh long-term maintenance model EFI and installation tutorial 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintosh 还在为黑苹果触摸板的生硬操作而烦恼吗…...

AWS CDN 配置:实现非 www 域名自动跳转到 www.xxx.com

1. 为什么需要将非 www 域名跳转到 www 域名? 很多网站在运营过程中都会遇到一个经典问题:用户可能通过带 www 的域名(如 www.example.com)访问,也可能直接输入不带 www 的域名(如 example.com)…...

Meta-Llama-3-8B-Instruct开箱即用:小白也能5分钟搭建AI对话应用

Meta-Llama-3-8B-Instruct开箱即用:小白也能5分钟搭建AI对话应用 1. 引言:为什么选择Meta-Llama-3-8B-Instruct? 如果你正在寻找一个既强大又容易上手的AI对话模型,Meta-Llama-3-8B-Instruct绝对值得考虑。这个80亿参数的模型在…...

Qwen3.5-9B后端开发核心技能树:从网络协议到系统设计

Qwen3.5-9B后端开发核心技能树:从网络协议到系统设计 1. 后端开发者的成长路线图 后端开发就像建造一座大楼的地基和骨架,虽然用户看不见,但决定了整个系统的稳定性和扩展性。作为一位有10年经验的架构师,我将带你系统性地梳理后…...

Emotion2Vec+语音情感识别实战:用AI给你的语音“把把脉”

Emotion2Vec语音情感识别实战:用AI给你的语音"把把脉" 1. 语音情感识别技术概述 语音情感识别(Speech Emotion Recognition, SER)作为人机交互领域的重要技术,正在深刻改变我们与机器沟通的方式。这项技术通过分析语音…...

Wan2.1-umt5在网络安全领域的应用:智能日志分析与威胁检测

Wan2.1-umt5在网络安全领域的应用:智能日志分析与威胁检测 最近和几个做安全运维的朋友聊天,他们都在抱怨同一个问题:每天面对海量的系统日志、网络流量日志,眼睛都快看花了,但还是怕漏掉那些真正危险的信号。传统的规…...

NaViL-9B开源大模型落地:金融票据识别+风险点标注自动化案例

NaViL-9B开源大模型落地:金融票据识别风险点标注自动化案例 1. 项目背景与挑战 在金融行业,每天需要处理海量的票据和合同文件。传统的人工审核方式面临三大痛点: 效率瓶颈:一个熟练的审核员每天最多处理200-300份票据成本压力…...

别再只把Obsidian当笔记软件了!用DeepSeek R1和Copilot插件,打造你的AI驱动第二大脑

从静态笔记到智能伙伴:用DeepSeek R1重构Obsidian的认知边界 当大多数人还在用Obsidian记录会议纪要或整理读书笔记时,一群先锋用户已经将它改造成了会主动思考的"数字大脑"。想象一下:清晨打开笔记软件,AI助手不仅整理…...

别再只用关键词搜索了!用Sentence Transformers给你的RAG系统做个‘语义检索’升级(附Python代码)

语义检索革命:用Sentence Transformers重构RAG系统的核心引擎 当开发者第一次接触RAG系统时,往往会被其看似简单的架构所迷惑——不就是检索加生成吗?但真正投入实战后,90%的人都会在第一个月遇到相同的问题:为什么系统…...

Sunshine游戏串流故障排查与性能优化解决方案

Sunshine游戏串流故障排查与性能优化解决方案 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款优秀的自托管游戏串流服务器,为Moonlight客户端提供高性能…...

AgentCPM本地知识库增强方案:基于向量数据库的精准信息检索

AgentCPM本地知识库增强方案:基于向量数据库的精准信息检索 你有没有遇到过这样的情况?用大模型写一份行业分析报告,它给出的观点虽然通顺,但总感觉隔靴搔痒,缺乏对行业内部术语、历史数据和特定公司情况的深度洞察。…...