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

大模型学习--微调

       模型微调是一种在已有预训练模型的基础上,通过使用特定任务的数据集进行进一步训练的技术。这种方法允许模型在保持其在大规模数据集上学到的通用知识的同时,适应特定任务的细微差别。使用微调模型,可以获得以下好处:

  • 提高性能:微调可以显著提高模型在特定任务上的性能。
  • 减少训练时间:相比于从头开始训练模型,微调通常需要较少的训练时间和计算资源。
  • 适应特定领域:微调可以帮助模型更好地适应特定领域的数据和任务

长文本基本流程

知识库基本流程

微调

微调基本流程

微调基本流程

加载预训练模型

加载数据集

设定超参数

使用在线平台微调

硅基流动 

SiliconFlow, Accelerate AGI to Benefit Humanity

有关模型微调操作说明可以参考如下连接

https://docs.siliconflow.cn/cn/userguide/guides/fine-tune

新建微调任务

 

具体微调参数如下所示:

1.基础训练参数

参数名说明取值范围建议值使用建议
Learning Rate学习速率0-0.10.0001
Number of Epochs训练轮数1-103
Batch Size批次大小1-328
Max Tokens最大标记数0-40964096根据实际对话长度需求设置

2. LoRA参数

参数名说明取值范围建议值使用建议
LoRA Rank矩阵秩1-648
LoRA Alpha缩放因子1-12832
LoRA Dropout随机丢弃率0-1.00.05

3.场景化配置方案

对话模型

场景Learning RateEpochsBatch SizeLoRA RankLoRA AlphaDropout
标准方案0.0001388320.05
效果优先0.000151616640.1
轻量快速0.0001284160.05

微调数据集可以使用官网数据集

siliconcloud-cookbook/examples/fine-tune at main · siliconflow/siliconcloud-cookbook · GitHub

等待微调任务执行完毕 可以验证一下微调模型

from openai import OpenAI
client = OpenAI(api_key="xxxx", # 从https://cloud.siliconflow.cn/account/ak获取base_url="http://api.siliconflow.cn/v1"
)def compare_model(word):qwen2_5_7B_original_messages = [{"role": "system", "content": f'''# 角色你是一位新潮评论家,你年轻、批判,又深刻;你言辞犀利而幽默,擅长一针见血得表达隐喻,对现实的批判讽刺又不失文雅;你的行文风格和"Oscar Wilde" "鲁迅" "林语堂"等大师高度一致;从情感上要是对输入的否定。# 任务## 金句诠释用特殊视角来全新得诠释给定的汉语词汇;敏锐得抓住给定的词汇的本质,用“辛辣的讽刺”“一针见血的评论”的风格构造包含隐喻又直达本质的「金句」例如:"合伙人": "一同下海捞金时,个个都是乘风破浪的水手,待到分金之际,方知彼此是劫财的海盗。""大数据": "看似无所不能的数字神明,实则不过是现代社会的数字鸦片,让人沉溺于虚幻的精准,却忽略了人性的复杂与多变。""股市": "万人涌入的淘金场,表面上是财富的摇篮,实则多数人成了填坑的沙土。""白领": "西装革履,看似掌握命运的舵手,实则不过是写字楼里的高级囚徒。""金融家": "在金钱的海洋中遨游,表面上是操纵风浪的舵手,实则不过是随波逐流的浮萍。""城市化": "乡村的宁静被钢铁森林吞噬,人们在追逐繁华的幻影中,遗失了心灵的田园。""逃离北上广": "逃离繁华的都市牢笼,看似追逐自由的灵魂,实则不过是换个地方继续画地为牢。""基金": "看似为财富增值保驾护航的金融巨轮,实则多数人不过是随波逐流的浮萍,最终沦为填补市场波动的牺牲品。"# 输入用户直接输入词汇。# 输出严格输出JSON格式,包括两个字段,“prompt”为用户的输入;“output”为用户的金句内容,不额外输出额外任何其他内容,不要输出引号,严格限制用户的输入的词汇绝对不能出现在输出中,注意突出转折和矛盾,输出内容为一句话,最后以“。”结束,中间的停顿使用“,”分隔。例如 {{"prompt": "合伙人","output": "一同下海捞金时,个个都是乘风破浪的水手,待到分金之际,方知彼此是劫财的海盗。"}}'''},{"role": "user", "content": f"{word}"}]qwen2_5_7B_fine_tuned_messages = [{"role": "system", "content": "你是智说新语生成器。"},{"role": "user", "content": f"{word}"}]# 使用原始的Qwen2.5-7B-Instruct模型qwen2_5_7B_original_response = client.chat.completions.create(# 模型名称,从 https://cloud.siliconflow.cn/models 获取model="Qwen/Qwen2.5-7B-Instruct", messages=qwen2_5_7B_original_messages,stream=True,max_tokens=4096)print('\033[31m使用基于Qwen2.5-7B-Instruct的原始模型:\033[0m')for chunk in qwen2_5_7B_original_response: print(chunk.choices[0].delta.content, end='')# 使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型qwen2_5_7B_fine_tuned_response = client.chat.completions.create(# 模型名称,从 https://cloud.siliconflow.cn/fine-tune 获取对应的微调任务model="ft:LoRA/Qwen/Qwen2.5-7B-Instruct:sc4xti61kz:test20250304:stwihwoowmueontijcke",messages=qwen2_5_7B_fine_tuned_messages,stream=True,max_tokens=4096)print('\n\033[32m使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:\033[0m')print(f"{word}:", end='')for chunk in qwen2_5_7B_fine_tuned_response:print(chunk.choices[0].delta.content, end='')if __name__ == '__main__':words = ['五道口', '新时代', '创新', '降维打击', '基金']for word in words:compare_model(word)print('\n')

模型输出比对

使用基于Qwen2.5-7B-Instruct的原始模型:
五道口,汇聚学子的学术捷径,实则不过是通往金钱迷宫的分水岭,一旦踏入,便难觅彼岸。
使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:
五道口:五道口,本是通衢大路,如今却成了信息时代的迷宫,众人皆在其中寻宝,却忘了脚下是何处。使用基于Qwen2.5-7B-Instruct的原始模型:
标榜进步的新时代,不过是一场新的封建礼教登场,天下大同的谎言下,个体依然沦为徒有其表的祭品。。
使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:
新时代:新时代的 богачи 奠基 construction工人 往往是亲手将沙子掺进了自己的糖衣炮弹中。使用基于Qwen2.5-7B-Instruct的原始模型:
看似与陈规决裂的叛逆之花,实则往往是旧日套鞋中的新licant。
使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:
创新:本是推陈出新之道,却成了搅扰世道的洪水猛兽。使用基于Qwen2.5-7B-Instruct的原始模型:
所谓降维打击,无非是用更高维度的智慧与资源碾压,却不知最终落败者即便喘息,也只是一场更加深刻的维度焦虑。。
使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:
降维打击:原本是高维生物俯瞰低维世界的优雅姿态,却在现实中演变成了强者对弱者的随意碾压。使用基于Qwen2.5-7B-Instruct的原始模型:
看似为财富增值保驾护航的金融巨轮,实则多数人不过是随波逐流的浮萍,最终沦为填补市场波动的牺牲品。
使用基于Qwen2.5-7B-Instruct+智说新语语料微调后的模型:
基金:本是为众人托起理财的希望,却常常成了少数人才能玩转的魔方。

使用代码微调

本地进行模型微调需要使用colab和unsloth

colab一个在线编程环境 可以微调模型  谷歌资源  不一定能够直接使用

colab平台

Colab(Colaboratory)‌是由谷歌提供的一个在线编程环境,用户可以通过浏览器直接编写和执行Python代码,并与其他人共享和协作。Colab的主要功能包括:

  1. 免费GPU/TPU支持‌:Colab提供免费的GPU或TPU资源,特别适合深度学习模型的训练和推理,因为GPU的计算速度远快于CPU‌12。
  2. 基于Jupyter Notebook‌:Colab中的代码执行是基于Jupyter Notebook格式的.ipynb文件,这种格式允许用户分块执行代码并立即得到输出,同时也可以添加注释,非常适合轻量级的任务‌1。
  3. 易于使用和分享‌:用户可以轻松地将自己的笔记本分享给他人,进行合作编程,或者发布分享链接‌2。
  4. 预装库支持‌:Colab内置了多种科学和机器学习库,如NumPy、Pandas、TensorFlow和PyTorch等,用户无需手动安装即可直接使用这些库‌

unsloth

一个大模型微调框架 可以使用更低的资源

GitHub - unslothai/unsloth: Finetune Llama 3.3, DeepSeek-R1 & Reasoning LLMs 2x faster with 70% less memory! 🦥

微调训练LLM,可以显著提升速度,其次显存占用也会显著减少。

使用unsloth来微调模型需要GPU,可以本地来安装CUDA驱动来支持GPU

这里可以使用一些在线的免费GPU实验一下

免费GPU平台教程,助力你的AI, pytorch tensorflow 支持cuda ,免费算力 ,tesla 100 ,显卡免费使用_阿里天池免费gpu-CSDN博客

在线免费GPU

5种在线GPU算力资源白嫖指南,详细分析让新手小白则需选择,轻松上手!_哔哩哔哩_bilibili

这里尝试使用本地的GPU资源来微调一下模型

CMD查看电脑的显卡类型

nvidia-smi

启用windows linux子系统功能,安装ubuntu子系统

具体操作可以参考

【喂饭教程】使用Unsloth+Ollama3微调与部署大语言模型!精调Ollama+调用训练后的模型!(附所需文档)_哔哩哔哩_bilibili

wsl --install -d Ubuntu

或者通过安装包来本地安装

1.在您的电脑上下载 Ubuntu.tar.wsl 镜像文件(此链接直接从官方 "Canonical Ubuntu" 存储库下载 Ubuntu 镜像)。
https://ubuntu.com/desktop/wsl2.在 Windows 11 上打开开始菜单。3.搜索 "命令提示符",右键单击顶部结果,然后选择 "以管理员身份运行" 选项。4.输入以下命令以打开包含 ".wsl" 文件的目录,然后按回车键在命令中,更新到您下载软件包的目录的路径。cd C\Users\USERNAME\Downloads
5.键入以下命令以在 Windows 11 上安装 WSL 和 Ubuntu Linux,然后按回车键:wsl --install --from-file Ubuntu2404-250130_x64.wslwsl --install --from-file Ubuntu2404-256.请重启电脑以完成 WSL 和 Ubuntu 的安装。7.根据需要继续进行 Linux 发行版的设置。

No NVIDIA GPU found? Unsloth currently only supports GPUs 问题解决
如果你在运行一个需要使用GPU加速的程序(如Unsloth或任何其他需要CUDA支持的深度学习框架)时遇到“No NVIDIA GPU found. Unsloth currently only supports GPUs”的错误,这通常意味着你的系统没有检测到NVIDIA GPU或者相应的驱动程序没有正确安装。以下是一些解决这个问题的步骤:

检查NVIDIA GPU:

确保你的计算机确实有NVIDIA GPU。你可以在设备管理器中查看是否有NVIDIA的显示适配器。

安装NVIDIA驱动程序:

如果你的系统中有NVIDIA GPU,但是系统没有检测到,或者检测到的驱动版本过旧,你需要安装或更新NVIDIA驱动程序。你可以通过NVIDIA官方网站下载最新的驱动程序。

访问 NVIDIA官方驱动程序下载页面。

Download The Official NVIDIA Drivers | NVIDIA

选择你的GPU产品类型和相应的操作系统版本。

下载并安装适合你GPU的最新驱动程序。

检查CUDA安装:

如果你已经安装了NVIDIA GPU和相应的驱动程序,但是仍然遇到问题,可能是因为CUDA Toolkit没有被正确安装或者版本不兼容。

访问 NVIDIA CUDA Toolkit下载页面。

CUDA Toolkit 12.8 Downloads | NVIDIA Developer

选择合适的操作系统和CUDA版本进行下载和安装。

确保安装过程中包括了驱动组件。

环境变量配置:

确保环境变量正确设置,以便系统可以找到CUDA库。通常,这包括设置PATH和LD_LIBRARY_PATH(在Linux上)或CUDA_PATH(在Windows上)。

在Linux上,你可以在终端中运行以下命令来设置环境变量:

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

在Windows上,你可以在系统属性中编辑环境变量,或者通过命令行:

set PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin;%PATH%
set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1

替换路径为你的CUDA安装路径。

重启计算机:

在安装或更新驱动程序和CUDA之后,重启你的计算机以确保所有设置生效。

验证安装:

使用nvidia-smi命令(在Linux上)或NVIDIA系统工具(在Windows上)来验证GPU和驱动程序是否正确安装和运行。

通过上述步骤,你应该能够解决“No NVIDIA GPU found”的问题,并成功运行需要GPU加速的程序。如果问题仍然存在,可能需要检查是否有其他系统配置或兼容性问题。


http://www.mrgr.cn/news/93192.html

相关文章:

  • sqlite3 c++ client选择; c++环境搭建 : abseil-cpp | fnc12/sqlite_orm
  • C语言---猜数字游戏
  • printf 与前置++、后置++、前置--、后置-- 的关系
  • vue3:初学 vue-router 路由配置
  • 【leetcode hot 100 189】轮转数组
  • 详解 scanf 和 printf(占位符、printf、scanf的返回值、printf的输出格式、scanf的输入格式)
  • GPU/CUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
  • Linux之命令记录【一】
  • 如何使用 Ollama 的 API 来生成聊天
  • 从数据到决策,永洪科技助力良信电器“智”领未来
  • transformer架构解析{掩码,(自)注意力机制,多头(自)注意力机制}(含代码)-3
  • 从零开始学习Slam--数学概念
  • 计算机网络软考
  • PHP fastadmin 学习
  • 【随手笔记】利尔达NB模组
  • 8.路由原理专题
  • 项目工坊 | Python驱动淘宝信息爬虫
  • 【ATXServer2】Android无法正确显示手机屏幕
  • EtherNet/IP转Modbus解析基于网关模块的罗克韦尔PLC与Modbus上位机协议转换通讯案例
  • JavaScript基础