码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [NLP] LLM---<训练中文LLama2(一)>训练一个中文LLama2的步骤


    一 数据集

    • 【Awesome-Chinese-LLM中文数据集】

    • 【awesome-instruction-dataset】
    • 【awesome-instruction-datasets】
    • 【LLaMA-Efficient-Tuning-数据集】
    • Wiki中文百科(25w词条)wikipedia-cn-20230720-filtered
    • BaiduBaiKe(563w词条) 百度网盘 提取码: bwvb
    • Medical Dataset

     二 预训练LLama2

    2.1 扩充词表

    因为在llama官方所提供的词表中,中文的部分只有700个,这也是llama中文能力聊胜于无的原因。为了训练自己的中文LLaMa,这里将引入新的中文分词器。

    如果需要扩充词表,可以用sentencepiece训练新的词表。

    具体可参考【GitHub - taishan1994/sentencepiece_chinese_bpe】

    然后合并新的词表,参考代码【merge_tokenizers】

    2.2 预训练

    主要参考2个库。

    LLaMA-Efficient-Tuning

    具体参考文档,支持单GPU训练。

    Chinese-LLaMA-Alpaca-2-预训练脚本

    支持多机多卡训练

    2.3 监督微调(sft)

    中文SFT语料最近陆陆续续开源了很多(bell、MOSS、alpaca-zh等),但是坦白讲,质量都不高,大家可自行下载并需要进行清洗,清洗SFT数据是个耗时耗力的工作,但根据作者微调经验,一份高质量的SFT数据是相当重要的‼️(如果不清洗SFT数据,可能无法获得满意的SFT效果,建议大家在这块多花些时间) 中文SFT语料网上最近很多,大家自行下载。因为SFT语料一般较小,我们没必要提前分词,而是在构建Dataloader的时候进行分词构建batch送给模型。

    分为参数高效微调和全部/部分参数微调。

    参数高效微调一般是冻结原模型,通过adapter、lora、Prefix-tuning(前缀微调)等方法微调,peft库目前已经支持这些方法,一般用lora,结构简单。

    微调代码库

    (1)llama2官方微调教程:llama-recipes

    1. #if running on multi-gpu machine
    2. export CUDA_VISIBLE_DEVICES=0
    3. python llama_finetuning.py --use_peft --peft_method lora --quantization --model_name /patht_of_model_folder/7B --output_dir Path/to/save/PEFT/model

    (2)Llama2-Chinese-模型微调

    (3)LLaMA-Efficient-Tuning-sft监督微调

    (4)Chinese-LLaMA-Alpaca-2-指令精调脚本

    2.4 RLHF微调

    llama2增加了RLHF(Reinforcement Learning from Human Feedback)基于人类反馈的强化学习。

    RLHF训练流程如下图:

    (1)先对模型进行微调,具体参考微调部分。

    (2)训练一个奖励模型

    原则上,我们可以直接用人类标注来对模型做 RLHF 微调。然而,这将需要我们给人类发送一些样本,在每轮优化后计分,这个流程需要耗费大量人工,且需要大量数据集,而人类阅读和标注的速度有限。更简单的办法就是用用人类标注集来训练一个奖励模型。奖励模型的目的是模拟人类对文本的打分。构建奖励模型有许多能用的策略: 最直接的便是预测标注 (比如根据好与坏,输出比分或者布尔值)。最佳实践是,预测结果的排序,即对每个 prompt (输入文本) 对应的两个结果yk,yj,模型预测人类标注的比分哪个更高。

    (3)基于人类反馈的强化学习

    有了微调的语言模型和奖励模型,可以开始执行 RL 循环了,主要分为以下三步:

    1. 生成对 prompt (输入文本) 的反馈。
    2. 用奖励模型来对反馈评分。
    3. 对评分,进行一轮策略优化的强化学习。

    【llm大语言模型】一文看懂llama2(原理,模型,训练) - 知乎 (zhihu.com)

  • 相关阅读:
    美业连锁门店收银系统源码-如何查看收款门店对应的加盟商?
    Centos7配置NAT网络
    XML 发票解析
    soh估计:Data-driven prediction of battery cycle life before capacity degradation
    虹科方案 | 车载以太网转换器&交换机解决方案
    NX二次开发-一个简单的连接曲线例子剖析学会如何使用NXOPEN做二次开发
    【LeetCode热题100】--169.多数元素
    ​iOS安全加固方法及实现
    计算机组成原理知识总结(一)计算机概论
    HTML——列表,表格,表单内容的讲解
  • 原文地址:https://blog.csdn.net/zwqjoy/article/details/132851074
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号