Giter Site home page Giter Site logo

dllxw / baby-llama2-chinese Goto Github PK

View Code? Open in Web Editor NEW
2.3K 17.0 288.0 1.04 MB

用于从头预训练+SFT一个小参数量的中文LLaMa2的仓库;24G单卡即可运行得到一个具备简单中文问答能力的chat-llama2.

License: MIT License

Python 100.00%

baby-llama2-chinese's Introduction

Baby-Llama2-Chinese

Created by Limzero & Ambrose & Guolin

📝介绍

本项目致力于构建一个小参数量的中文Llama2仓库。

包含:预训练、SFT指令微调、奖励模型以及强化学习(待做)完整流程。

除此之外,本项目还会梳理一套完整的LLM学习资料(正在进行中)。

希望该开源项目可以帮助LLM初学者以最快速度入门!

📚项目愿景

  • 收集并汇总中文预训练语料,训练一个参数量500M-1B的Llama2-Chinese预训练模型,并在某个垂直领域可以表现不错
  • 构建包含预训练、SFT指令微调、奖励模型以及强化学习整个完整流程的LLM代码仓库,包含DeepSpeed、Megatron等分布式训练技术
  • 知识分享:梳理一套完整的LLM学习资料

🌟Quick Start

# 1. 从“Baby-llama2-chinese Corpus”的百度网盘中下载分词处理后的预训练语料。(按需求下载-共634亿tokens,文件总大小为118G)
# 2. 将下载好的数据放到./data/目录下
# 3. 根据下载的语料,修改data_process.py中的data_path_list部分
# 4. 运行data_process.py,在./data/目录下生成pretrain_data.bin文件
python data_process.py
# 5. 根据自身算力,修改 pretrain.py文件中的模型参数调整模型大小(max_seq_len、dim、n_layers、n_heads),如果爆显存可以调整batch_size参数
# 6. 预训练 pretrain.py——以下示例是基于4*3090
screen -S ambrose    #(创建新的名称为ambrose的screen)
screen -r ambrose    #(进入名称为ambrose的screen)
torchrun --standalone --nproc_per_node=4 pretrain.py
# 7. 运行结束后,预训练模型会保存在out/pretrain文件夹中
# 8. 针对alpaca-zh和bell两个SFT语料进行处理,如果新加SFT语料可以自行扩展。运行sft_data_process.py
python sft_data_process.py
# 9. 运行结束后,会在./sft_data目录下产生sft_data.csv文件
# 10. SFT微调
python sft.py
# 11. 运行结束后,SFT模型会保存在‘out/sft’文件夹中

# 12. 如果需要测试训练好的SFT模型,可以运行eval.py。(可以自定义问题)
python eval.py

📢 更新公告

  • 2024年01月24日:新增了在84亿tokens预训练语料上的两个新模型Llama2-Chinese-92M-v1-smallvocab与Llama2-Chinese-218M-v1,与Llama2-Chinese-92M-v1进行对比分析模型大小和词表大小对预训练效果的影响!
  • 2024年02月29日:新增了在634亿tokens预训练语料上的模型Llama2-Chinese-218M-v3,并以此为基座,使用医学垂直领域SFT数据进行finetune得到模型Llama2-Chinese-218M-v3-MedicalChat
  • 2024年05月21日:新增了数据清洗代码,包括:短文本过滤、Minhash(和Simhash)去重、数据存储格式转换、多数据集合并等功能。代码见clean_data目录,以budubaike数据为例,进行了数据清洗,清洗效果见下文《预训练语料预处理》部分。

🤖预训练

一个好的预训练基座模型要具备续写的能力。

  1. 分词器(Tokenizer):LLM分词器的构建方式有两种:一种是自己构造词表并训练一个分词器custom tokenizers,另一种是选择开源模型训练好的分词器,例如ChatGLM2-6B,Llama2等。

    由于llama官方所提供的词表中,中文的部分只有700个,这也是llama中文能力聊胜于无的原因。因此,为了方便使用,本项目选择ChatGLM2-6B的分词器,该词表大小为64793,值得注意的是:这是一个很妙的数字,因为它刚好在uint16的表示范围(0~65535的无符号整数),每一个token只需要两个字节即可表示,当我们的语料较大时候,相比常用的int32可以节省一半的存储空间。

  2. 预训练语料(Corpus for pre-training ):从LLM技术革命以来,开源中文预训练语料越来越多。本项目本着拾人牙慧的精神,收集并处理了以下几个经典数据集:

    中文预训练语料 描述
    Wiki中文百科:wikipedia-cn-20230720-filtered 中文Wikipedia的数据
    BaiduBaiKe:百度网盘 提取码: bwvb 中文BaiduBaiKe的数据
    C4_zh:百度网盘 part1 提取码:zv4r;百度网盘 part2 提取码:sb83;百度网盘 part3 提取码:l89d C4是可用的最大语言数据集之一,收集了来自互联网上超过3.65亿个域的超过1560亿个token。C4_zh是其中的一部分
    WuDaoCorpora:智源研究院BAAI:WuDaoCorpora Text文本预训练数据集 中文悟道开源的200G数据
    shibing624/medical:shibing624/medical 源自shibing624的一部分医学领域的预训练数据

    同时,为了给大家节省数据预处理的时间,本项目开源了经过ChatGLM2-6B的分词器处理后的预训练语料,共计634亿Tokens的数据量,链接如下:Baby-llama2-chinese Corpus 提取码:6unr。将下载好的数据放到./data目录下即可。

    【考虑到作者所持有机子的局限性(4张3090),目前634亿Tokens的预训练语料+300M参数量的模型已经是本人预训练的极限-注:没有使用DeepSpeed、Megatron等分布式训练架构】

预训练语料预处理

  1. 数据清洗:大规模的高质量语料是训练大语言模型的关键“养料”。这些语料提供了世界性的知识体系,能够提升语言模型的理解能力和生成质量,同时也能够支持多样化的应用场景。事实上,高质量的文本对于大语言模型的训练和能力表现具有非常重要的影响。

    低质量文本过滤

    待补充......

    文本去重

    #脚本里面将短文本过滤、Minhash(和Simhash)去重、数据存储格式转换、多数据集合并等功能封装成对应函数,可以根据需求选择调用函数。注意:需要根据本地数据路径修改函数中的数据路径
    cd data_clean
    python clear.py
    #以budubaike数据为例,运行结束后,会产生baike.parquet和all_no_dulpticates.parquet(all_no_dulpticates_simhash.parquet)文件

    数据清洗实验结果说明:(测试设备为 CPU:Intel(R) Xeon(R) Platinum 8168 CPU @ 2.70GHz)

    (去重前budubaike数据总共:5634898行)

    函数名称 函数功能 去重效果 Time Consuming
    process_baike() 短文本过滤+数据存储格式转换 5634898 to 3605212 552.046 s
    remove_dataset_duplicate_rows() Minhash去重 3605212 to 2736033 4 h
    remove_dataset_duplicate_rows_simhash() Simhash去重 3605212 to 3548779 23 min
    • 推荐使用parquet格式存储数据,可以大大减小存储占用
    • 推荐使用Minhash去重,效果优于Simhash,但时间消耗长!
  2. 分词器处理数据:数据预处理采取GPT的通用做法,对语料进行提前分词,对一个样本做完分词后在末尾加上一个结束符号<eos>,与下一个样本区分开。然后将所有的训练语料拼接成一个数组(np.uint16)以.bin二进制格式存储到磁盘上。如果语料过大,避免内存溢出,可以选择mmap格式。

    #脚本里面每一个函数对应一个语料库的预处理,搭建新加语料可以自行扩展。
    python data_process.py
    #运行结束后,会在./data目录下产生pretrain_data.bin文件

预训练

#考虑到预训练的运行时间非常久,需要采用程序后台运行的措施,本项目提供一种常用的程序后台运行的操作:
screen -S ambrose    #(创建新的名称为ambrose的screen)
screen -r ambrose    #(进入名称为ambrose的screen)
#在该screen下执行预训练代码,如果你有四张卡,则nproc_per_node设置为4
torchrun --standalone --nproc_per_node=4 pretrain.py
#运行结束后,预训练模型会保存在‘out/pretrain’文件夹中

💡SFT指令微调

LLM微调的目的是将预训练模型中的知识引导出来的一种手段,通俗的讲就是教会模型说人话。

  1. 微调方法:自然语言处理目前存在一个重要的范式:一般领域数据的大规模预训练,对特定任务或领域的适应。因此,为了让预训练模型在特定任务或领域有不错的表现,需要对模型进行微调。目前主流的四种微调方法如下:

    LLM微调方法

    • 全面微调(Full Fine-tuning):使用任务特定数据调整LLM的所有参数。
    • 参数高效精细调整(Parameter Efficient Fine-tuning):修改选定参数以实现更高效的适应。例如:LoRA、Adapter、Prefix-tuning、P-tuning以及P-tuning v2。
    • 提示工程(Prompt Engineering):改进模型输入以指导模型输出理想结果。
    • 检索增强生成(Retrieval Augmented Generation):将提示工程与数据库查询结合,以获得丰富的上下文答案。

    其中Full Fine-tuning和Parameter Efficient Fine-tuning是需要基于特定任务或者垂直领域数据对模型(全部 or 部分)参数进行微调; Prompt Engineering和Retrieval Augmented Generation是通过设计模型输入的template,引导模型输出我们想要的内容,不需要对模型参数进行微调。其中RAG是通过外挂数据库的方式,为模型提供领域知识输入。

    由于本项目模型参数(仅有218M左右,与bert-large-340M参数量差不多)并不大,因此选择Full Fine-tuning对特定任务或领域数据进行微调。后续有更大的预训练模型会补充其他微调方法。

  2. SFT微调数据:LLM在垂直领域的适应已经是2023年的主格调,因此各个领域的SFT语料和微调模型层出不穷。目前已经有大佬整理并持续更新这方面的最新进展,大家有需要可以自己访问。

    本项目主要针对两类SFT语料进行模型微调,如下:

    日常问答SFT数据

    SFT语料 描述
    alpaca-zh:alpaca-zh 源自shibing624的一部分SFT数据。该数据集是参考Alpaca方法基于GPT4得到的self-instruct数据,约5万条。
    bell:bell 源自BelleGroup的一部分SFT数据。包含约100万条由BELLE项目生成的中文指令数据。

    医学垂直领域SFT数据

    SFT语料 描述
    shibing624/medical:shibing624/medical 源自shibing624。该数据集不仅包含了预训练语料如上文所述,还包含一部分SFT数据。
    HuatuoGPT-sft-data-v1:HuatuoGPT-sft-data-v1 源自HuatuoGPT的SFT数据
    DISC-Med-SFT:HuatuoGPT-sft-data-v1 DISC-Med-SFT Dataset的子集
    ChatMed_Consult-v0.3:michaelwzhu/ChatMed_Consult-v0.3 本数据集, ChatMed-Dataset, 中的query(或者是prompt)来自于互联网上的医疗问诊问题(549,326),反映了真实世界的不同用户/患者的医疗问诊需求。目前response都是由OpenAI GPT-3.5引擎回答的。

    SFT样本构建

    因为SFT语料一般较小,我们没必要提前分词,而是在构建Dataloader的时候进行分词构建batch送给模型。所以自行参考dataset_sft.py即可!

    基本逻辑如下:

    • prompt和answer之间一定要有一个开始符<bos>隔开,然后answer后需要一个结束符<eos>
    • 计算loss的时候,对prompt部分的loss进行mask,只计算answer部分的loss即可。
    #脚本里面针对alpaca-zh和bell两个SFT语料进行处理,搭建新加SFT语料可以自行扩展。
    python sft_data_process.py
    #运行结束后,会在./sft_data目录下产生sft_data.csv文件

    全面微调(Full Fine-tuning)

    #微调所需时间一般较短,如需要后台运行,本项目提供一种常用的程序后台运行的操作:
    screen -S ambrose    #(创建新的名称为ambrose的screen)
    screen -r ambrose    #(进入名称为ambrose的screen)
    #在该screen下执行微调代码
    python sft.py
    #运行结束后,SFT模型会保存在‘out/sft’文件夹中

🥇模型权重以及评测

  1. 预训练模型

    模型名称 预训练语料 🤗模型参数 下载地址
    Llama2-Chinese-92M-v1 (82.78亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:da7h
    Llama2-Chinese-92M-v2 (140亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    +C4_zh
    max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:bjal
    Llama2-Chinese-92M-v1-smallvocab
    Notes:vocab size:21131
    (82.78亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:ttst
    Llama2-Chinese-218M-v1 (82.78亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    模型下载提取码:c10m
    Llama2-Chinese-218M-v2 (140亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    +C4_zh
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    模型下载提取码:dkne
    Llama2-Chinese-218M-v3 (634亿 Tokens)
    Wiki中文百科
    +BaiduBaiKe
    +shibing624/medical
    +C4_zh
    +WuDaoCorpora
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    模型下载提取码:tpyy

    各个预训练模型效果对比

    预训练loss可视化展示:

    预训练语料v1:(82.78亿 Tokens) Wiki中文百科 + BaiduBaiKe + shibing624/medical

    对比模型说明:Llama2-Chinese-92M-v1 vs Llama2-Chinese-92M-v1-smallvocab vs Llama2-Chinese-218M-v1 loss_tokens-v1.png 预训练语料v2:(140亿 Tokens) Wiki中文百科 + BaiduBaiKe + shibing624/medical + C4_zh

    对比模型说明:Llama2-Chinese-92M-v2 vs Llama2-Chinese-218M-v2 loss_tokens.png 预训练语料v3:(634亿 Tokens) Wiki中文百科 + BaiduBaiKe + shibing624/medical + C4_zh + WuDaoCorpora

    对比模型说明:Llama2-Chinese-218M-v3 loss_tokens-v3.png 主要从续写能力的角度对比各个预训练模型:

    #预训练模型的推理:eval_pretrain.py。
    python eval_pretrain.py
    #示例一:Input:‘床前明月光,疑是地上霜。举头望明月,’
    Llama2-Chinese-92M-v1 response:‘倚阑干照斜阳。● 早春何处无天,谁将归家归。谁愿去依花向,谁来教谁回。● 玉泉何处无玉泉,碧水如莲开处。何处何许何许人,何许何何何许地。● 青山里,春色深,月色寒。月影轻,春草凉。月来斜阳,雨声稀’
    Llama2-Chinese-92M-v2 response:‘却见天涯何处无。3、 想问你为什么对我这么好?1、 你是否在问自己,我为什么一直爱你?2、我对你有多好?3、 我是谁? 4、 我是谁? 5、 为什么我从来都不像你。’
    Llama2-Chinese-218M-v1 response:‘低头思故乡。2. 泪眼相对愁成丝,眉梢泪滴泪自流。3. 斜阳外,落花深似海。4. 泪眼横飞心易碎, 千言难答是何许? 梦不成, 泪洒江天。5. 泪眼空, 伤心无处诉, 思君如忆君,泪自流。6. 泪雨声、’
    Llama2-Chinese-218M-v2 response:‘低头思故乡。遥知兄弟登高处,遍插茱萸少一人。注释1、明月光:月光是秋天的明丽之色。清秋:秋季。2、知月与明影:见 知月与明影,比喻知识 知识 知识 知识 知识 知识 知识 知识 知识 秋之明影。唐·韩愈《祭李太白》诗:“一树秋光满 关’
    Llama2-Chinese-218M-v3 response:‘低头思故乡。人生如风,风雨来时裹住风,风雨后时披着雨。世事茫茫难料,世间万物皆随波逐流。人生如梦,醒与醉随人自个儿。人生如风,风起时能吹动树枝摇摆不定;人生如梦,梦醒时却依然在梦乡挣扎。人生如风,风狂时能翻滚浪涛,风雨中仍能’
    
    #示例二:Input:‘《小王子》是一本畅销童话书,它讲述了:’
    Llama2-Chinese-92M-v1 response:‘小王子和他的公主的故事,讲述的是一个善良、勇敢、智慧、善良的小男孩,他们之间的爱情、友情,他们之间的亲情,他们的爱情、友情,他们之间的情感,他们之间的故事,最后的故事……《小王子》以漫画的形式把小王子和善良可爱的小公主的故事呈现给读者,相信大家一定可以从中领略到小王子和公主的故事带来的乐趣,从中体会到小王子的人生真谛。。内容简介:《小王子:小王子》故事 ’
    Llama2-Chinese-92M-v2 response:‘我有一座神奇的城堡。我有一个神奇的故事;我有一个美丽的童话;我有一个可爱的童话;我有一个神奇的童话。“书虫 好书 书品 美书” 内容简介: 当阅读完了“书虫,好书,书品美书”,你一定感到你读出来的书比读一本书的好;当你看完了“书虫,好书” 最后,你会发现,书的世界竟是这么地广阔……本书中的所有童话童话,都是这样一’
    Llama2-Chinese-218M-v1 response:‘小王子和他的伙伴——小丑们要和人类结缘。在他们的帮助下,小王子又遇到了各种怪事,小丑们又碰来了各种奇遇,他不仅救出了人类,还帮助了人类,还救出许多小王子。小王子和孩子们一起,和孩子们一起成长,一起冒险……书中的故事内容丰富,充满了乐趣……孩子们在阅读的过程中,将会逐渐熟悉并喜爱各种神奇的东西,同时也发现许多奇妙的趣事。’
    Llama2-Chinese-218M-v2 response:‘小王子和他的伙伴们在森林里玩耍。他们遇见了很多小动物,可是它们却都讨厌他们。小王子想让小动物们开心,所以要去找小动物们开心……本书故事情节生动,内容丰富多彩,非常适合小朋友阅读。《小王子》的插画很特别,除了小王子外,还有灰姑娘、爱莎、小矮人、灰姑娘、丑小鸭……’
    Llama2-Chinese-218M-v3 response:‘小王子去森林探望父亲。森林中发生了很多有趣的事情,可是小王子却非常不高兴,因为小树不见了,小树被埋了地底下。小树死了,小王子非常伤心。小王子想出许多办法来把树救出来,可是树好像一点也没死掉,它又跑到森林**去。小树被埋在沙堆里了,可是小树并没有死,小王子觉得小树好像很关心他们,便’
  2. 微调模型

    模型名称 SFT语料 🤗模型参数 下载地址
    Llama2-Chinese-92M-v1-NormalChat alpaca-zh+bell max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:da7h
    Llama2-Chinese-92M-v1-MedicalChat shibing624/medical
    +HuatuoGPT-sft-data-v1
    +DISC-Med-SFT
    +ChatMed_Consult-v0.3
    max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:da7h
    Llama2-Chinese-92M-v2-NormalChat alpaca-zh+bell max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    模型下载提取码:bjal
    Llama2-Chinese-92M-v2-MedicalChat shibing624/medical
    +HuatuoGPT-sft-data-v1
    +DISC-Med-SFT
    +ChatMed_Consult-v0.3
    max_seq_len=512
    dim=512
    n_layers=8
    n_heads=8
    正在加紧训练中!!!
    Llama2-Chinese-218M-v1-NormalChat alpaca-zh+bell max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    正在加紧训练中!!!
    Llama2-Chinese-218M-v1-MedicalChat shibing624/medical
    +HuatuoGPT-sft-data-v1
    +DISC-Med-SFT
    +ChatMed_Consult-v0.3
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    正在加紧训练中!!!
    Llama2-Chinese-218M-v2-NormalChat alpaca-zh+bell max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    模型下载提取码:dkne
    Llama2-Chinese-218M-v2-MedicalChat shibing624/medical
    +HuatuoGPT-sft-data-v1
    +DISC-Med-SFT
    +ChatMed_Consult-v0.3
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    正在加紧训练中!!!
    Llama2-Chinese-218M-v3-NormalChat alpaca-zh+bell max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    正在加紧训练中!!!
    Llama2-Chinese-218M-v3-MedicalChat shibing624/medical
    +HuatuoGPT-sft-data-v1
    +DISC-Med-SFT
    +ChatMed_Consult-v0.3
    max_seq_len=1024
    dim=1024
    n_layers=12
    n_heads=8
    模型下载提取码:tpyy
    目前没有在标准测试集上验证SFT模型效果。仅仅给出以下示例:
    #SFT微调模型的推理:eval.py。
    python eval.py
    #示例一:Input:‘最近我在办公室坐久了会感到头晕,请问这是什么原因?有什么缓解办法吗?’——医学向问题
    Llama2-Chinese-92M-v1-NormalChat response:‘是的,由于我的工作忙,我会很可能会坐在办公室里坐。你可以尝试保持安静并遵守交通规则,尝试在办公室里或周末去散步或散步,这有助于缓解紧张的语气。’
    Llama2-Chinese-92M-v1-MedicalChat response:‘您的症状可能是由多种原因引起的,例如低血压、脑部疾病、颈椎病、贫血、贫血、低血糖、颈椎病等。以下是一些缓解这种情况的方法:1. 休息:在长时间使用电脑或手机前,放松身体,放松肌肉,缓解晕厥。2. 按摩:轻轻按摩头部或颈部,缓解头晕。3. 热敷:使用热毛巾或热水袋敷在头部或颈部上,缓解’
    Llama2-Chinese-92M-v2-NormalChat response:‘我无法确定您所在的位置。您可以在公司办公室的电脑上查询我查询的信息。不过,如果您访问了该公司的网站或应用,您可以访问该公司的客服部门,查看最近的办公室的列表,看看是否有可能是无法进入该公司的办公室。通常办公室可能是安静的,没有噪音,而且可能不会发出任何声音。因此,我建议您与您公司客服联系以获取相关信息并咨询您所在公司的办公室。’
    Llama2-Chinese-92M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v1-NormalChat response:‘’
    Llama2-Chinese-218M-v1-MedicalChat response:‘’
    Llama2-Chinese-218M-v2-NormalChat response:‘我无法确定您所描述的问题,因此无法回答。是一种可能的诊断是偏头痛。这通常与气候变化、心理压力或饮食因素有关。 它可能会导致以下症状:1. 热或热配菜。2. 热食物或饮料。3. 食物中添加的盐或糖。’
    Llama2-Chinese-218M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v3-NormalChat response:‘’
    Llama2-Chinese-218M-v3-MedicalChat response:‘长时间保持同一姿势会导致血液循环不畅,影响血使用的食用,从而导致头晕。您可以尝试以下方法缓解:1. 调整坐姿或站立的姿势,让身体的休息时间;2. 经常活动身体,如走动、做一些简单的伸展运动;3. 保持良好的睡眠质量,避免在睡前过度使用电子设备;4. 饮食要均衡,避免吃太过于油腻或刺激性的食物。’
    
    #示例二:Input:‘前列腺囊肿的症状是什么?’——医学向问题
    Llama2-Chinese-92M-v1-NormalChat response:‘人类大脑中的神经控制系统是研究人类大脑结构和功能的重要手段。它们负责控制大脑的温度、光线、温度、大气、睡眠、心理健康等方面的功能。这些控制系统在人类大脑中扮演着至关重要的角色,从而对大脑的影响非常显著。’
    Llama2-Chinese-92M-v1-MedicalChat response:‘尿频、尿急、尿痛;慢性前列腺炎;排尿不畅;遗精;会阴痛;夜尿频多,频尿;夜间阴茎勃起;尿频;睾丸疼痛;尿痛;尿分心;排尿疼痛’
    Llama2-Chinese-92M-v2-NormalChat response:‘影片光速是有可能划破天际的,可能带来无限可能的进展,可能会有点困难。不过,由于该故事情节并不准确,所以仅凭这些信息是不够准确诊断的。建议您咨询专业的医学e-卡路里评估方法,以获取更准确的诊断。’
    Llama2-Chinese-92M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v1-NormalChat response:‘’
    Llama2-Chinese-218M-v1-MedicalChat response:‘’
    Llama2-Chinese-218M-v2-NormalChat response:‘也被称为“水花如水”,通常指在火上燃烧的面包或饭单,也称为“烤面包”。这些食物,即面包,通常含有脂肪,蛋白质和.’
    Llama2-Chinese-218M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v3-NormalChat response:‘’
    Llama2-Chinese-218M-v3-MedicalChat response:‘尿频;脓性分泌物;血尿;尿急;前列腺痛;脓肿;尿痛;尿后滴沥;排尿困难及尿潴留
    ’
    
    #示例三:Input:‘请问,世界上最大的动物是什么?’——科普向问题
    Llama2-Chinese-92M-v1-NormalChat response:‘世界上最大的动物是蓝鲸。’
    Llama2-Chinese-92M-v1-MedicalChat response:‘38%的动物都是天马科动物,而“天牛”的称法是 10%的,因为这种动物会作为天马长成而生存,所以,它们是家牛的一种。’
    Llama2-Chinese-92M-v2-NormalChat response:‘世界上最大的动物是蓝鲸。它们是鲸类中最大的,可以长达30米,重达173吨。它们是地球上最大的动物,可以长达30米长,体重可达7吨,并且可以长达38米高。’
    Llama2-Chinese-92M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v1-NormalChat response:‘’
    Llama2-Chinese-218M-v1-MedicalChat response:‘’
    Llama2-Chinese-218M-v2-NormalChat response:‘世界上最大的动物是蓝鲸。它们的体重可以达到4000至5000公斤,体重可达到7000至9000公斤。他们来自海洋,并且是地球上最适应 蓝鲸是一种非常适应生存由海洋环境而产生的哺乳动物。它们可以达到1.2至1.4米重。它们以鱼类为食,但也会吃小鱼。蓝鲸是肉食性的动物,但它们也可以吃小型’
    Llama2-Chinese-218M-v2-MedicalChat response:‘’
    Llama2-Chinese-218M-v3-MedicalChat response:‘除了导致的,在一般情况下,保持适当的中毒处理方法是首先通过服用药物。’
    Llama2-Chinese-218M-v3-NormalChat response:‘’

    可以明显看出,经过medical SFT数据微调后的模型在医学向问题的回答上比其他模型更加准确,但是对于日常科普向问题的回答遗忘性太大。

    总而言之,模型越大,语料越多模型的性能越强。

🎉号召

欢迎大家一起共建这个小项目,这对于希望入门LLM的同学来说,是一次不可多得的练手机会!感兴趣的小伙伴可以加QQ群: 716455397。

🎉参考链接

Llama2

数据清洗-ChatLM-mini-Chinese

baby-llama2-chinese's People

Contributors

billvsme avatar dllxw avatar jh01231230 avatar jianhu-chen avatar zglxjtu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

baby-llama2-chinese's Issues

为什么在pretrain 309行model.complie要加prefix '_orig_mod'?

运行sft.py时会报错,state_dict无法对齐:

Initializing a new model from scratch
Traceback (most recent call last):
  File "sft.py", line 295, in <module>
    model.load_state_dict(torch.load('./out/20230915_baike_pretrain/epoch_0.pth'))
  File "/root/miniconda3/lib/python3.8/site-packages/torch/nn/modules/module.py", line 2041, in load_state_dict
    raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for Transformer:
        Missing key(s) in state_dict: "tok_embeddings.weight", "layers.0.attention.wq.weight", "layers.0.attention.wk.weight", "layers.0.attention.wv.weight"...

在sft.py 292行初始化模型之后,用resume里面的代码去掉prefix,报错解除

model = init_model()
pretrain_state_dict = torch.load('./out/baike_pretrain/epoch_0.pth')
unwanted_prefix = "_orig_mod."
for k, v in list(pretrain_state_dict.items()):
      if k.startswith(unwanted_prefix):
         pretrain_state_dict[k[len(unwanted_prefix):]] = pretrain_state_dict.pop(k)
model.load_state_dict(pretrain_state_dict)

大家在预训练的时候有遇到过loss为nan吗

[2023-08-30 16:04:47,404][pretrain.py][INFO] Epoch:0/2 loss:11.271 lr:0.0000000 epoch_Time:137483.0min:
[2023-08-30 16:08:27,427][pretrain.py][INFO] Epoch:0/2 loss:6.268 lr:0.0001000 epoch_Time:1208.0min:
[2023-08-30 16:12:01,041][pretrain.py][INFO] Epoch:0/2 loss:5.627 lr:0.0001000 epoch_Time:1121.0min:
[2023-08-30 16:15:35,618][pretrain.py][INFO] Epoch:0/2 loss:4.548 lr:0.0000999 epoch_Time:1091.0min:
[2023-08-30 16:19:08,321][pretrain.py][INFO] Epoch:0/2 loss:4.591 lr:0.0000997 epoch_Time:1072.0min:
[2023-08-30 16:22:43,731][pretrain.py][INFO] Epoch:0/2 loss:4.309 lr:0.0000994 epoch_Time:1062.0min:
[2023-08-30 16:26:16,924][pretrain.py][INFO] Epoch:0/2 loss:4.294 lr:0.0000991 epoch_Time:1053.0min:
[2023-08-30 16:29:49,699][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000987 epoch_Time:1044.0min:
[2023-08-30 16:33:33,730][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000983 epoch_Time:1043.0min:
[2023-08-30 16:37:10,391][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000977 epoch_Time:1039.0min:
[2023-08-30 16:40:49,196][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000971 epoch_Time:1035.0min:
[2023-08-30 16:44:29,060][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000965 epoch_Time:1031.0min:
[2023-08-30 16:48:10,314][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000958 epoch_Time:1029.0min:
[2023-08-30 16:51:50,553][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000950 epoch_Time:1025.0min:
[2023-08-30 16:55:41,688][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000941 epoch_Time:1025.0min:
[2023-08-30 16:59:56,754][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000932 epoch_Time:1033.0min:
[2023-08-30 17:04:02,156][pretrain.py][INFO] Epoch:0/2 loss:nan lr:0.0000922 epoch_Time:1036.0min:

在处理百度563baike时Memory error

Traceback (most recent call last):
File "C:\Users\zhou\Desktop\baby_llm\data_process.py", line 145, in
process_baidu()
File "C:\Users\zhou\Desktop\baby_llm\data_process.py", line 126, in process_baidu
doc_ids+=text_id
MemoryError
请问这种情况如何解决呢,有遇到过吗
打扰啦,多谢

transformers最新版本会报错

使用transformers==4.35.2时会报错:AttributeError: 'ChatGLMTokenizer' object has no attribute 'tokenizer'、
需要修改requirement.txt 的tranformers==4.33.2

eos token是空字符串

查看数据处理脚本时发现文本中没有eos token。试验发现,eos的token id是2,但是tokenizer.decode([2])是空字符串,不清楚是什么问题。

sft dataset

请问sft dataset是用的哪个呢?有无地址

总结下几个问题

很有意思的工作,作为LLM的小白了解到了很多,整个流程很明了。但跑了两天,没跑出比较好的结果,在这总结下遇到的几个问题,后来大佬有能解决的可以相互讨论下 (环境: A100-40G, CUDA11.6,PyTorch2.0,实际使用代码稍微放大了下模型)。

  1. Flash attention问题。这个只有Pytorch2.0以上版本才能用,速度看了下比一般attention能快小一倍,占用显存也稍微少了一些,能用则用吧。Pytorch2.0的话亲测CUDA11.6也是可以安装官网CUDA11.7版本的,可以正常使用。
  2. Loss NAN问题。预训练过程,使用float16,大概几千step就会出现,尝试降低学习率等方法无法解决。回答说使用老版本PyTorch可以避免。
  3. Loss 增加。后来看了其他论坛,说改用bfloat16更加稳定,然而实际使用却出现loss短暂下降后持续上涨的现象,改变学习率,仍然无效。进而继续尝试使用float32,loss也是先下降后上涨,改变学习率亦无效,有点奇怪,遂暂时放弃。

百度云垃圾

墙裂建议把百度云换成阿里云的分享,百度云限速太严重了。恶心。。。

一个很诡异的错误 IndexError: index 35930 is out of bounds for axis 1 with size 2048

(_) user@calculator:~/Player/baby-llama2-chinese$ python3 __pretrain.py 
tokens per iteration will be: 2,048
breaks down as: 1 grad accum steps * 1 processes * 1 batch size * 2048 max seq len
memmap:True train data.shape:(702015, 2048)
downloading finished.....
Initializing a new model from scratch
num decayed parameter tensors: 85, with 2,746,744,832 parameters
num non-decayed parameter tensors: 25, with 102,400 parameters
using fused AdamW: True
Traceback (most recent call last):
  File "/home/user/Player/baby-llama2-chinese/__pretrain.py", line 317, in <module>
    train_epoch(epoch)
  File "/home/user/Player/baby-llama2-chinese/__pretrain.py", line 51, in train_epoch
    for step, (X, Y) in enumerate(train_loader):
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 633, in __next__
    data = self._next_data()
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1345, in _next_data
    return self._process_data(data)
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/dataloader.py", line 1371, in _process_data
    data.reraise()
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/_utils.py", line 644, in reraise
    raise exception
IndexError: Caught IndexError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/_utils/worker.py", line 308, in _worker_loop
    data = fetcher.fetch(index)
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/_utils/fetch.py", line 51, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/torch/utils/data/_utils/fetch.py", line 51, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/home/user/Player/baby-llama2-chinese/dataset.py", line 36, in __getitem__
    sample = self.data[index]
  File "/home/user/anaconda3/envs/_/lib/python3.10/site-packages/numpy/core/memmap.py", line 334, in __getitem__
    res = super().__getitem__(index)
IndexError: index 35930 is out of bounds for axis 1 with size 2048

不知道这35930是怎么来的,2048是max_seq_len

多个节点多卡的pretrain

请问作者这个能用多个节点多卡进行分布式训练吗,我用4个节点,每个节点两张gpu,但只有一个节点正常工作,另外几个节点的GPU并没有工作。

谢谢!

要训练几个epoch,会有比较好的效果?

非常感谢大佬的分享!
我试了下wiki 数据集,训练3个epoch ,用训练数据中的例子用eval程序测试了下,结果不是很理想,大概要训练多少epoch会有效果?
另外我临时用的是一个低端显卡,batch_size=4,是否太低了,导致效果会很差?

prompt: 介绍一下昭通机场
answer: 布勒代斯 (德塞夫勒省)
布勒代斯(Bourth,bʁe)是法国德塞夫勒省的一个市镇,属于帕.圣洛朗区。
地理
(P625)面积P2046,位于法国新阿基坦大区德塞夫勒省,该省份为法国西部沿海省份,北起曼恩-卢瓦尔省,西接旺代省,南至

配置优化器的部分为什么,大于或等于2D的参数会被衰减,小于2D不会衰减?

配置优化器的部分为什么,大于或等于2D的参数会被衰减,小于2D不会衰减?

create optim groups. Any parameters that is 2D will be weight decayed, otherwise no.

i.e. all weight tensors in matmuls + embeddings decay, all biases and layernorms don't.

decay_params = [p for n, p in param_dict.items() if p.dim() >= 2]
nodecay_params = [p for n, p in param_dict.items() if p.dim() < 2]
optim_groups = [
{'params': decay_params, 'weight_decay': weight_decay},
{'params': nodecay_params, 'weight_decay': 0.0}
]

没有找到medical_qa_144w

其他的预训练和用于微调的数据都找到了,但是没有“medical_qa_144w.csv”,请问这部分数据在哪里呢?

sft.py运行报错 CUDA out of memory,请问咋解决?

运行日志:

(llama2) [llama2-chinese]$ python sft.py 
tokens per iteration will be: 16,384
breaks down as: 1 grad accum steps * 1 processes * 32 batch size * 512 max seq len
                                                   prompt                                             answer
757309  选择以下列表中的一个数学公式并解释它,“a² + b² = c²”、“y = mx + b”...  \n“a² + b² = c²” 表示勾股定理,用于计算直角三角形的斜边长度。\n“y = ...
31228            给出一句话,用另一种语言(如法语、德语等)重新表达。\n生命中最重要的事情是什么  Quelle est la chose la plus importante dans la...
227106  描述如何制作一杯拿铁咖啡,包括所需材料和步骤。 \n所需材料: \n- 2盎司浓缩咖啡 \n...  步骤:\n1. 准备好所需材料。\n2. 在咖啡杯中倒入2盎司的浓缩咖啡。\n3. 在另一个...
53255   提供两个类别,例如“A”和“B”,该为一组数据点分配这两个类别之一,并给出理由。\n类别1:...  数据点1属于产品设计类别,因为它涉及产品的安全和设计方面,需要重新设计产品形状以减少意外伤害...
752602                               提供一份食谱\n煎虾饼需要哪些材料?\n              煎虾饼的材料通常包括虾仁、豆腐、鸡蛋、淀粉、调味品(盐、胡椒粉、姜末等)。
...                                                   ...                                                ...
303642  给定一段文本,编写一个python函数,计算其中单词的数量。\n“编程是一项非常有趣的技能,...  以下是一个计算文本中单词数量的Python函数:\n```\ndef count_words...
560061  给定一段格式混乱的文本,请将其按照规定的格式进行排版,并输出排版后的结果。\n标题: 世界闻...  标题:世界闻名的科学家\n文本:爱因斯坦、牛顿和霍金都是伟大的科学家,他们所做出的贡献推动了...
642915  给定一段文本,请问其中出现最多的单词是什么?\n文本: 散步是我最喜欢的活动之一。我发现它可...                                       出现最多的单词是“我”。
227969  根据给定的文本情感,提供情感分析结果和可信度得分。\n文本:"我喜欢这个电影,演员表现得非常...                                 情感分析结果:积极\n可信度得分:高
45020   为下列一段文本生成一个简洁的标题。\n文本: 这个夏天,因为天气炎热和各种植物的成长,在我们...                                         夏日花园里的多彩花朵

[802899 rows x 2 columns]
Initializing a new model from scratch
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
WARNING: using slow attention. Flash Attention requires PyTorch >= 2.0
num decayed parameter tensors: 85, with 218,129,408 parameters
num non-decayed parameter tensors: 25, with 25,600 parameters
using fused AdamW: False
/home/qxj/conda/envs/llama2/lib/python3.8/site-packages/torch/nn/_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='none' instead.
  warnings.warn(warning.format(ret))
[2023-09-04 10:49:52,275][sft.py][INFO] Epoch:[0/2](0/25091) loss:2.822 lr:0.0000000 epoch_Time:759.0min:
Traceback (most recent call last):
  File "sft.py", line 323, in <module>
    train_epoch(epoch)
  File "sft.py", line 75, in train_epoch
    scaler.scale(loss).backward()
  File "/home/qxj/conda/envs/llama2/lib/python3.8/site-packages/torch/_tensor.py", line 396, in backward
    torch.autograd.backward(self, gradient, retain_graph, create_graph, inputs=inputs)
  File "/home/qxj/conda/envs/llama2/lib/python3.8/site-packages/torch/autograd/__init__.py", line 173, in backward
    Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass
RuntimeError: CUDA out of memory. Tried to allocate 3.95 GiB (GPU 0; 39.59 GiB total capacity; 33.25 GiB already allocated; 2.56 GiB free; 35.87 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation.  See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

Question about tokenizer

请问一下,为什么可以直接用ChatGLM的tokenizer来训练Llama?我的理解是,Llama的embedding 可能和ChatGLM不一样,有可能根本没有见过类似的embedding 或者token。这里借用ChatGLM tokenizer的原理是什么呢?
谢谢

sft使用的checkpoint问题

你好,sft阶段我看代码中加载的是“model.load_state_dict(torch.load('./out/baike_pretrain/epoch_0.pth'))”,epoch是0,但是pretrain的时候epoch是2,为什么接着第1个epoch 做sft而不是第2个呢?

交个作业

我渴望,
像李白一样,
让我感到喜悦、欢快和宁静。
我想回家,
因为我的家在风景如画的地方。
我的心情,
像李白一样,
让我感到愉悦,
也让我感到喜悦。
我期待着,
我的未来

模型参数量计算

max_seq_len = 512
dim = 512
n_layers = 8
n_heads = 8

改变值后,如何计算最终的参数量,有公式吗?

关于 GBK 编码的问题

当我运行数据预处理程序时,出现了 UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 27: illegal multibyte sequence 报错。我尝试将 gbk 换成 gb18030,进而使用 ignore 属性忽略非法字符,都出现了错误。此外,我还尝试了其他的数据,如百度和medical,都遇到了此问题。

请问这是编辑器环境的问题还是数据的问题,以及该如何解决?

运行预训练报错

运行 pretrain.py 的时候报错

怀疑是机器没有环境变量

在pretrain.py 的212-217行

作者可以补充一下环境变量嘛

多谢

RuntimeError: probability tensor contains either `inf`, `nan` or element < 0

Traceback (most recent call last):
File "/home/afan/worksapce/train/baby-llama2-chinese/infer.py", line 91, in
generated_tokens = model.generate(input_tokens, num_samples, max_new_tokens, temperature=temperature, top_k=top_k)
File "/home/afan/anaconda3/envs/baby/lib/python3.10/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context
return func(*args, **kwargs)
File "/home/afan/worksapce/train/baby-llama2-chinese/model.py", line 341, in generate
idx_next = torch.multinomial(probs, num_samples=1)
RuntimeError: probability tensor contains either inf, nan or element < 0

model.py代码中这个位置
logits = self(idx_cond)
print(logits) 结果是这样
tensor([[[nan, nan, nan, ..., nan, nan, nan]]], device='cuda:1',dtype=torch.float16)

可以帮忙看下是什么原因导致的么?

/track1/train_valid.json

这个代码很不错 多谢

我想请问能否分享一下 /track1/train_valid.json 或是它的具体格式 我想跑一下整个流程。

Attention!! 推理代码里面的致命笔误是导致大家看到效果不好的原因。望周知!

eval.py代码里面,本人当时提交的版本中,手误把写成了,导致大家看到的推理效果很差。这是一个致命错误,几个月了,今天才发现,望看issue区很多同学说效果不好,我一直以为是大家训练没到位的原因,但是其实是推理代码有个笔误bug。大家更正下就能看到惊艳的结果了。

 x=tokenizer.encode(prompt,add_special_tokens=False)+[tokenizer.special_tokens['<bos>']] #更正后的代码。

当然,我相信稍微会思考的同学应该早就发现了这个问题。但是一些小白可能是很难发现呢。

处理百度数据集的时间报错

处理到473000 左右的时候,系统就kill掉了,不知道是什么原因,内存128,GPU 显存48G 不过这个时候还用不到显存吧?

前期数据处理差异

其他预训练llama2数据处理, encode的数据直接是labels:
data["labels"] = data["input_ids"].clone()
我们这里数据处理是PretokDataset里面:
x = chunk[:-1]
y = chunk[1:]
yield x, y
这两者有什么区别吗?
PretokDataset 改成以下有什么影响:
yield chunk,chunk

没有找到此文件

Traceback (most recent call last):
File "/share/home/xiongx/px/baby-llama2-chinese-main/data_process.py", line 238, in
with open(data_path,'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: './data/baidubaike_563w_1.bin'

上下文长度32K

上下文长度扩大到32K,是否直接修改参数就可以呢?是否会引发问题?

交个作业

  • 交个作业
    训出来的模型效果,比较感人,下面是栗子. 不知道作者的模型是否也是这样的
---------------
[prompt]: 自发性幕上脑内出血的手术治疗有些什么?
[answer]:  急性脑内血肿的影像学检查有些什么? 增强检查;头颅CT
---------------

---------------
[prompt]: 请描述口腔黏膜吸收的历史
[answer]:  肺动脉高压会转化成什么? 冠心病
---------------

请教下参数大小如何计算

README.md中提到50M参数的配置为:
max_seq_len = 512
dim = 512
n_layers = 8
n_heads = 8

请问如何计算参数大小?

没有SFT的话 推理会抱错,麻烦看看

Traceback (most recent call last):
File "/home/hope/work/baby-llama2-chinese/eval_hope.py", line 67, in
model.load_state_dict(state_dict, strict=False)
File "/home/hope/miniconda3/envs/llama2/lib/python3.10/site-packages/torch/nn/modules/module.py", line 2041, in load_state_dict
raise RuntimeError('Error(s) in loading state_dict for {}:\n\t{}'.format(
RuntimeError: Error(s) in loading state_dict for Transformer:
size mismatch for tok_embeddings.weight: copying a param with shape torch.Size([64793, 1024]) from checkpoint, the shape in current model is torch.Size([64793, 512]).

想问下训练的数据和epoch数

你好,我pretrain和sft各训练了8轮,输出还是胡言乱语,我用的baidu+wiki+医疗train作为pretrain数据集没有改数据,sft也没有改数据集。其他参数都没改,用的初始参数,没有用sft_to_pretrain,想问下您那边是怎么训的?

数据集问题

你好,我首次尝试训练一个模型,请问数据集要下载,放在哪里

可以给个测评结果吗?

很多评测样例其实出现在了SFT数据中,所以让我误以为模型具备很流畅的问答能力

这个对于生产其实问题不大,这说明对于生产所需的问答对,也能流畅问答了。我是没想到 50M 就能用了,而平时用 7B 的都笨得要死。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.