当前位置: 首页 > 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="", # 从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:{your-complete-fine-tune-model-name}",
    #     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')

使用代码微调

本地进行模型微调需要使用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

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加速的程序。如果问题仍然存在,可能需要检查是否有其他系统配置或兼容性问题。

相关文章:

  • 记一次渗透测试实战:SQL注入漏洞的挖掘与利用
  • 证明:曲线的可导点不能同时为极值点和拐点
  • 2025年AI PPT工具精选:让演示文稿更智能、更高效
  • 【Python项目】基于Python的书籍售卖系统
  • 一周一个Unity小游戏2D反弹球游戏 - 生成反弹障碍物
  • vscode 都有哪些大模型编程插件
  • 微服务中的服务保护方案:确保系统稳定与安全
  • 【菜笔cf刷题日常-1600】C. Binary String(二分求min/max)
  • 厦门大学第二讲:DeepSeek大模型赋能高校教学和科研(124页)(文末附下载方法)
  • 辉视融合服务器方案:为小酒店行业铺垫未来智能化布局
  • 人工智能之数学基础:n阶行列式
  • C语言文件操作学习笔记:从基础到实践
  • Android U 分屏——SystemUI侧处理
  • 【算法系列】桶排序算法介绍及实现
  • [绘图机器]
  • 达梦数据库备份
  • vue2(笔记)4.0vueRouter.声明式/编程式导航以及跳转传参.重定向
  • LeetCode 2161. Partition Array According to Given Pivot(2025/3/3每日一题)
  • flink分布式事务 - 两阶段提交
  • 大模型微调
  • 网站如何防止攻击/seo关键词排名优化是什么
  • 响应式网站建设的应用场景/百度seo怎么提高排名
  • 包头网站开发/朋友圈推广一天30元
  • 查房价的官方网站/百度免费安装下载
  • 网站北京备案快吗/友情链接的定义
  • 郑州做旅游网站的公司/网站关键词百度自然排名优化