码农知识堂 - 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)

  • 相关阅读:
    【并发编程-2】JUC-1
    How to control the model in the webots usingthe ros controller ?
    云服务的计算服务中的弹性云服务器(ECS)、裸金属服务器(BMS)以及镜像服务(IMS)的概念和深入理解【CloudService】
    2022-9-7合并k个已排序的链表---困难
    【原创】浅谈指针(十二)关于static(上)
    Unity设计模式——模板模式
    11. 盛最多水的容器
    前端面试之 vue 篇
    深度学习(PyTorch)——循环神经网络(RNN)基础篇四
    云原生Kubernetes: K8S 1.29版本 部署ingress-nginx
  • 原文地址:https://blog.csdn.net/zwqjoy/article/details/132851074
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号