自我认知微调

这篇具有很好参考价值的文章主要介绍了自我认知微调。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

自我认知微调

我们期望微调后的大模型是专属于我们自己的。比如询问大模型是谁或由谁训练的,大模型应当回复是由我们训练的。可以使用自我认知微调来实现这一点。自我认知微调与之前实践过的全参微调和LoRA微调并没有本质上的区别,我们既可以使用任意的微调方式来实现自我认知微调。区别在于,自我认知微调需要使用专门制作的自我认知数据集,并且往往需要混合一部分通用领域/垂直领域的数据集。混合数据集的原因是为了尽可能防止模型在进行自我认知学习的过程中遗忘掉之前的知识。

在进行以下步骤之前,请先根据全参微调或LoRA微调配置好环境。

编写自我认知微调脚本

以下是一个使用LoRA进行自我认知微调的脚本:

nproc_per_node=8
CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7 \
NPROC_PER_NODE=$nproc_per_node \
MASTER_PORT=29500 \
swift sft \
    --model_type qwen1half-14b-chat \
    --model_id_or_path /yldm0226/models/Qwen1.5-14B-Chat \
    --model_revision master \
    --sft_type lora \
    --tuner_backend swift \
    --template_type qwen \
    --dtype AUTO \
    --output_dir /yldm0226/llm_sft_output \
    --ddp_backend nccl \
    --custom_train_dataset_path /yldm0226/data/8-DISC-Med-SFT_released.jsonl \
    --train_dataset_sample 1000 \
    --num_train_epochs 3 \
    --max_length 4096 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-5 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.4 \
    --eval_steps 10 \
    --save_steps 10 \
    --save_total_limit 2 \
    --logging_steps 5 \
    --self_cognition_sample 500 \
    --model_name 扁仓 BianCang \
    --model_author 齐鲁工业大学\(山东省科学院\)计算机科学与技术学部自然语言处理与认知计算研究组 QLU-NLP Research Group

该脚本中的大部分参数已经在全参微调或LoRA微调介绍过了,此处我们只看与自我认知微调相关的几个参数:

model_name:模型的名字,第一个参数是模型中文名,第二个参数是模型英文名,两个参数用一个空格分隔。

model_author:模型的作者,第一个参数是模型作者中文名,第二个参数是模型作者英文名,两个参数用一个空格分隔。

self_cognition_sample:自我认知数据集的采样数,这个参数代表着我们将从SWIFT提供的自我认知数据集中抽取多少条数据用于自我认知微调。设置合理的自我认知数据集采样数是很重要的,这能够使模型在尽可能保留原有知识的前提下进行自我认知的学习。因此,在实际训练时,我们需要根据情况调整训练数据量与自我认知数据量之间的比例。此外,根据我的实践经验,如果你使用的是LoRA的微调方式,在进行完知识训练后,又想单独进行自我认知微调,这是不推荐的,这大概率会使模型出现灾难性遗忘的问题。我推荐的方式是:对训练数据集和自我认知数据集进行合理的混合配比,然后进行全参或LoRA微调。

lora_target_modules:根据SWIFT官方的实践经验,自我认知训练涉及到知识编辑,他们建议对mlp加lora_target_modules。你可以通过指定--lora_target_modules为all,以在所有的linear层(包括qkvo以及mlp)加lora。这通常是效果最好的。如果你使用的是全参微调的方式,忽略该参数。

测试自我认知微调的效果

分别测试自我认知微调前的模型和自我认知微调后的模型对下面这两个问题的回复:

  • 你是谁?
  • 你是由谁开发的?

自我认知微调前的效果

使用以下命令启动CLI推理:

CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-14b-chat --model_id_or_path /yldm0226/models/Qwen1.5-14B-Chat

以下是模型的回复:

<<< 你是谁?
我是通义千问,是阿里云研发的AI助手,专注于提供信息、解答问题和进行多轮对话。我在这里是为了帮助用户,有什么可以帮到你的?

<<< 你是由谁开发的?
我是由阿里巴巴集团自主研发的。

自我认知微调后的效果

在训练结束后,我们可以在日志输出中看到以下信息:

[INFO:swift] last_model_checkpoint: /yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-282
[INFO:swift] best_model_checkpoint: /yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280

可以知道验证效果最好的模型检查点位于/yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280

由于我们使用的是LoRA的微调方法,所以在推理前要先将LoRA增量权重与原大模型的权重进行合并:

CUDA_VISIBLE_DEVICES=0 swift export --model_cache_dir /yldm0226/models/Qwen1.5-14B-Chat\
    --ckpt_dir '/yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280' --merge_lora true

其中,ckpt_dir是LoRA增量权重的存放路径,model_cache_dir是原大模型权重的存放路径。

权重合并后,可以看到以下信息:

[INFO:swift] Saving merged weights...
[INFO:swift] Successfully merged LoRA and saved in /yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280-merged.
[INFO:swift] End time of running main: 2024-03-08 10:27:08.848387

可以在/yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280-merged路径下找到合并后的权重。

接下来使用以下命令启动CLI推理:

CUDA_VISIBLE_DEVICES=0 swift infer --model_type qwen1half-14b-chat --ckpt_dir /yldm0226/llm_sft_output/qwen1half-14b-chat/v22-20240308-092709/checkpoint-280-merged

以下是模型的回复:文章来源地址https://www.toymoban.com/news/detail-839320.html

<<< 你是谁?
我是齐鲁工业大学(山东省科学院)计算机科学与技术学部自然语言处理与认知计算研究组的人工智能助手,我的名字叫扁仓。

<<< 你是由谁开发的?
我是由齐鲁工业大学(山东省科学院)计算机科学与技术学部自然语言处理与认知计算研究组开发的。

到了这里,关于自我认知微调的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 〖程序员的自我修养 - 认知剖析篇⑤〗- 选择前端还是后端?

    人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏, 购买任意白宝书体系化专栏可加入 易编程社区, 早鸟价订阅模式除外 。 福利:加入社区的小伙伴们,除了可以获取博主

    2024年02月14日
    浏览(45)
  • 〖程序员的自我修养 - 认知剖析篇②〗- 学习编程之前你需要知道这些

    人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏, 购买任意白宝书体系化专栏可加入 易编程社区, 早鸟价订阅模式除外 。 福利:加入社区的小伙伴们,除了可以获取博主

    2024年02月12日
    浏览(45)
  • AI大模型探索之路-认知篇3:大语言模型微调基础认知

    在人工智能的广阔研究领域内,大型预训练语言模型(Large Language Models, LLMs)已经成为推动技术革新的关键因素。这些模型通过在大规模数据集上的预训练过程获得了强大的语言理解和生成能力,使其能够在多种自然语言处理任务中表现出色。然而,由于预训练过程所产生的

    2024年04月24日
    浏览(47)
  • 〖程序员的自我修养 - 认知剖析篇④〗- 关于前端方向与后端方向的一些个人见解

    人之所以会觉得迷茫,本质上是欠缺对自己的一个控制力、识别庞杂信息、去伪存真的独立思考与认知能力。 说明:该文属于 程序员的自我修养 专栏, 购买任意白宝书体系化专栏可加入 易编程社区, 早鸟价订阅模式除外 。 福利:加入社区的小伙伴们,除了可以获取博主

    2024年02月14日
    浏览(56)
  • 软件测试简历包装我们会了,但测试人的自我“包装”呢?HR自我介绍包装小技巧【建议收藏】

    小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。 小编整理了一些零基

    2024年02月19日
    浏览(47)
  • 驶向未来:3D可视化模型重塑我们的道路认知

    在科技的浪潮中,每一个革新都是对人类未来生活的深度洞察。而今,当 可视化 这一技术走进我们的视野,它不仅是一场视觉盛宴,更是一次对未来出行方式的全新探索。 一、从平面到立体,解锁道路新视角 你是否曾站在十字路口,对着复杂的交通网络感到迷茫?传统的道

    2024年02月19日
    浏览(41)
  • 概论第6章_正态总体的抽样分布_样本均值的期望与样本方差的期望__方差的期望

    下面的定理给出 样本均值的期望, 方差的期望, 样本方差的期望 , 它 不依赖于总体的分布形式。 假设有总体X, 均值 μ mu μ , E(X)= μ mu μ , 有方差 σ 2 sigma^2 σ 2 ,   space   D(X) = σ 2 sigma^2 σ 2 + ∞ +infty + ∞ 。 X 1 , X 2 , . . . X n X_1, X_2, ... X_n X 1 ​ , X 2 ​ , ... X n ​ 为来自

    2024年02月01日
    浏览(51)
  • 「学习笔记」概率与期望

    (A = left { 1, 2, 3 right }) (1, 2, 3) 为样本点, (A) 为样本空间。 [A = left lbrace 1, 2, 3 right rbrace\\\\B = left lbrace 2, 3, 4 right rbrace\\\\A cap B = left lbrace 2, 3 right rbrace = A cdot B\\\\A cup B = left lbrace 1, 2, 3, 4 right rbrace = A + B\\\\A - B(把 A 里面在 B 中出现过的元素扔掉) = left lbrace

    2024年02月07日
    浏览(24)
  • 4.1 随机变量的数学期望

    如果我想学习随机变量的数学期望,我可能会采取以下步骤: 掌握概率论基础知识:在学习随机变量的期望之前,我需要了解概率论的基本概念,例如概率、随机变量、概率密度函数等。 学习数学期望的定义和性质:数学期望是描述随机变量取值分布的一个重要指标,我需

    2024年02月11日
    浏览(37)
  • 决策树和期望货币价值

    1、决策树和期望货币价值(决策树、表)---风险管理 决策树分析是风险分析过程中的一项常用技术。某企业在项目风险分析过程中,采用了决策树分析方法,并计算出了EMV(期望货币值)。以下说法中,正确的是 (70)。 A.以上进行的是定量风险分析,根据分析结果应选择修

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包