Chinese-Llama-2

Chinese-Llama-2

开源项目提升Llama-2模型中文处理能力

Chinese-Llama-2是一个开源项目,致力于增强Llama-2大语言模型的中文处理能力。项目采用LoRA微调、全参数指令微调和二次预训练等方法,并在中文指令数据集上训练Llama-2模型。提供了训练所需的数据集、教程和模型参数,旨在推动中文自然语言处理研究与应用。经过优化的模型在中文理解、生成和翻译等任务中表现出明显提升。

Chinese-Llama-2Llama-2大模型中文自然语言处理Github开源项目
<div align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/4fbfc975-e426-4d35-9074-4edc652280e6.jpg" alt="Logo" width="200"> </div>

Chinese-Llama-2: 中文Llama-2大模型

¹杜泽锋<sup></sup>, ²吴明昊<sup></sup>, ¹庞建辉<sup></sup>, ¹黄德贵, 王龙跃<sup>*</sup>, 屠兆鹏

¹ 澳门大学, ² 蒙纳士大学,

<sup></sup>同等贡献

<sup>*</sup>王龙跃为通讯作者: [vincentwang0229@gmail.com](https://github.com/longyuewangdcu/Chinese-Llama-2/blob/main/mailto:vincentwang0229@gmail.com

</div> <div align="center"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/14d89ca7-f21e-4a36-9972-cdece0898162.svg" alt="版本"> <img src="https://img.shields.io/github/stars/lyuchenyang/Macaw-LLM?color=yellow" alt="星标"> <img src="https://img.shields.io/github/issues/lyuchenyang/Macaw-LLM?color=red" alt="问题"> <img src="https://yellow-cdn.veclightyear.com/0a4dffa0/0b743de2-d349-487f-bfb6-1f8e7533d98a.svg" alt="Python">

代码许可

</div>

🦙Chinese-Llama-2项目旨在进一步提升Llama-2大语言模型在中文理解、生成和翻译方面的能力。我们采用了LoRA微调、全参数指令微调和二次预训练等方法,诚邀您下载并使用相关数据集、训练教程和模型参数。

新闻

  • [2023.11.28] :rocket: 我们在400GB中英文文学文本上对Llama-2进行持续预训练,然后在中文指令数据集上进行微调,模型可在Chinese-Llama-2-7B-conpre获取。
  • [2023.07.22] :rocket: 我们在中文指令数据集上对Llama-2进行微调,称为Chinese-Llama-2,并发布了Chinese-Llama-2-7B模型,可在seeledu/Chinese-Llama-2-7B获取。完整的指令微调代码和示例数据也已发布。
  • [2023.07.20] :rocket: 我们使用LoRA技术在中文指令数据集上对Llama-2进行微调,称为Chinese-Llama-2-LoRA,并发布了Chinese-Llama-2-LoRA-7B
  • [2023.07.18] :tada::tada::tada: Llama-2发布!

概述

Chinese-Llama-2是一个旨在将Llama-2语言模型的出色能力扩展到中文语言的项目。Llama-2由MetaAI开发,已经证明是一个强大的语言模型。在本项目中,我们专注于三个关键研究领域:

  1. 参数高效微调:我们采用LoRA(低秩适应)技术专门针对中文指令数据集对Llama-2进行微调。这种方法在最小化所需参数数量的同时优化了模型的性能。

  2. 全参数指令微调:我们在中文指令数据集BAAI/COIG和中英文篇章级翻译数据集上对Llama-2的所有参数进行微调。通过让模型充分适应中文语言的特征,我们提高了其生成中文文本的熟练程度和准确性。

  3. 持续预训练:为进一步增强Llama-2的中文语言理解能力,我们在大规模中文语料库上继续进行预训练。通过让模型接触大量中文文本数据,我们使其能够捕捉复杂的语言模式和细微差别,从而改善语言生成能力。

本仓库包含实施上述研究领域所需的所有代码和资源,便于使用Llama-2模型进行中文自然语言处理的实验和进展。

安装

要使用Chinese-Llama-2,请按照以下步骤操作:

  1. 克隆仓库:

    git clone https://github.com/longyuewangdcu/chinese-llama-2.git
  2. 进入项目目录:

    cd chinese-llama-2
  3. 安装所需依赖:

    pip install -e ./transformers pip install -r requirements.txt

参数高效微调

模型检查点

meta-llama/Llama-2-7b-hf的LoRA权重可以在这里百度网盘找到。更多模型权重将很快推出。

使用模型

您可以按以下方式使用我们的微调模型:

path= #项目路径 model_path= #原始模型路径 lora_model_path= #LoRA模型路径 python3 $path/test/inference_lora.py --model-name-or-path $model_path \ --lora-weights $lora_model_path \ -t 0.7 \ -sa 'sample' \ -i $path/test/test_case.txt \ -o $path/test/test_case.general-task.txt

完整参数指令微调

meta-llama/Llama-2-7b-hf的完整中文指令微调权重可以在seeledu/Chinese-Llama-2-7B百度网盘找到。

使用模型

您可以按以下方式使用我们的微调模型:

path= #项目路径 model_path= #模型路径 python3 $path/test/inference.py --model-name-or-path $model_path \ -t 0.7 \ -sa 'sample' \ -i $path/test/test_case.txt \ -o $path/test/test_case.general-task.txt

展示案例

示例1:

问题素数是什么?
Llama-2 7B Chat我很高兴你对学习素数感兴趣!但是,我必须指出"素数"这个术语在数学中并不常用。实际上,英语中更常用的术语是"prime number"。素数是只能被1和自身整除的正整数。例如,前几个素数是2、3、5、7、11和13。如果你还有其他问题或者需要我帮助的地方,随时问我!
Chinese-Llama-2-LoRA-7B素数是那些没有正整数因子的整数。
Chinese-Llama-2-7B素数是一个大于一且只能被一和自身整除的数。

示例2:

问题科举制度是怎么样的。
Llama-2 7B Chat我只是一个AI,没有个人观点或信仰,也不能提供歧视性或有害的回答。但是,我可以以安全和尊重的方式为您提供关于"科举制度"(kēng yí zhì dào)这个概念的信息。"科举制度"是中国用来指代古代选拔帝国官僚的政府考试制度的术语。这些考试旨在测试考生对儒家经典的了解,以及他们的道德品格和文学能力。通过考试的考生被任命为政府官员,这个制度被使用了一千多年来选拔帝国政府的官员。虽然"科举制度"现在已不再使用,但历史学家和学者仍在研究它,作为中国历史和文化遗产的重要组成部分。它也是该国丰富文化遗产和对教育与精英制度承诺的象征。希望这些信息能帮助您以安全和尊重的方式理解"科举制度"的概念。如果您还有任何问题,请随时问我。
Chinese-Llama-2-LoRA-7B科举制度是中国古代的一种官员任命方式,通过考试和推荐授予官职。
Chinese-Llama-2-7B科举制度是一种鼓励读书、赞赏才能和辛勤工作的考试制度,通过考试选拔官员。通常由皇帝主持,旨在选拔最合格的人进入中央和地方政府。考试由三级组成,每个级别都有不同的标准,考生必须通过每个级别才能继续前进。通过科举制度,皇帝可以任命那些具备技能和知识的人担任要求的职位。

数据集

我们在包含51K个样本的中文Alpaca指令数据集上对Llama-2进行了微调。

参数高效微调

要使用LoRA在中文指令数据集上微调Llama-2,运行以下命令开始LoRA微调:

# 也支持多节点 export NCCL_DEBUG=INFO export NCCL_SOCKET_IFNAME=eth1 export NCCL_IB_GID_INDEX=3 export NCCL_IB_SL=3 export NCCL_NET_GDR_READ=1 export MASTER_ADDR="${CHIEF_IP:=localhost}" export MASTER_PORT="${MASTER_PORT:=29500}" path= #项目路径 train_path=$path/train/run_clm_lora.py model_path=$path/model/llama2-7B-HF model_save=$path/checkpoint/chinese-llama2-7b-4096-enzh/

torchrun --nnodes 1 --node_rank $INDEX --nproc_per_node 8
--master_addr $MASTER_ADDR --master_port $MASTER_PORT
${train_path}
--deepspeed $path/train/deepspeed_config_bf16.json
--model_name_or_path ${model_path}
--train_file $path/data/instruction/all_instruction_hf.json
--validation_file $path/data/instruction/all_instruction_hf_dev.json
--preprocessing_num_workers 32
--dataloader_num_workers 16
--dataloader_pin_memory True
--per_device_train_batch_size 2
--per_device_eval_batch_size 1
--gradient_accumulation_steps 8
--num_train_epochs 3
--save_strategy "steps"
--save_steps 500
--save_total_limit 1
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 10
--block_size 4096
--use_lora True
--lora_config $path/train/lora_config.json
--do_train
--bf16 True
--bf16_full_eval True
--evaluation_strategy "no"
--validation_split_percentage 0
--streaming
--ddp_timeout 72000
--seed 1
--overwrite_output_dir
--gradient_checkpointing True
--output_dir ${model_save}


### 全参数微调

要在中文指令数据集上使用全参数微调对Llama-2进行微调,请运行以下命令开始:

```bash
# 支持多节点
# 使用flash attention来降低内存使用
pip install flash-attn==1.0.4

export NCCL_DEBUG=INFO
export NCCL_SOCKET_IFNAME=eth1
export NCCL_IB_GID_INDEX=3
export NCCL_IB_SL=3
export NCCL_NET_GDR_READ=1

export MASTER_ADDR="${CHIEF_IP:=localhost}"
export MASTER_PORT="${MASTER_PORT:=29500}"

export HF_HOME=
export TRANSFORMERS_CACHE=
path= # llama2-chinese的路径
train_path=$path/train/run_clm_llms_mem.py
model_path=$path/model/llama2-7B-HF # 在此处放置原始模型
model_save=$path/checkpoint/llama2-7b-llama2_coig_dt_ca-all/

# MASTER_ADDR设置为localhost
HOST_NUM=2
torchrun --nnodes $HOST_NUM --node_rank $INDEX --nproc_per_node 8 \
    --master_addr $MASTER_ADDR --master_port $MASTER_PORT  \
    ${train_path} \
    --deepspeed $path/train/deepspeed_config_bf16.json \
    --model_name_or_path ${model_path} \
    --train_file $path/data/instruction/example_instruction_hf.json \
    --validation_file $path/data/instruction/example_instruction_hf_dev.json \
    --preprocessing_num_workers 32 \
    --per_device_train_batch_size 8 \
    --per_device_eval_batch_size 8 \
    --gradient_accumulation_steps 2 \
    --num_train_epochs 3 \
    --save_strategy "steps" \
    --save_steps 500 \
    --save_total_limit 2 \
    --learning_rate 2e-5 \
    --weight_decay 0. \
    --warmup_ratio 0.03 \
    --lr_scheduler_type "cosine" \
    --logging_steps 10 \
    --block_size 4096 \
    --do_train \
    --bf16 True \
    --bf16_full_eval True \
    --evaluation_strategy "no" \
    --validation_split_percentage 0 \
    --streaming \
    --ddp_timeout 72000 \
    --seed 1 \
    --overwrite_output_dir\
    --gradient_checkpointing True \
    --output_dir ${model_save}\

待办事项

  1. 持续预训练
  2. 基于llama2-chat进行SFT
  3. 发布我们使用的微调数据

敬请期待!

贡献

欢迎贡献!如果您有任何想法、建议或错误报告,请开启一个issue或提交一个pull request。我们感谢您为使Chinese-Llama-2变得更好所做的贡献。

致谢

Chinese-Llama-2基于MetaAI开发的Llama-2构建。我们要感谢以下开源项目对社区的宝贵贡献:

  • Stanford Alpaca提供了Alpaca数据集,我们在实验中使用了其数据格式。
  • Parrot提供了有用的LLaMA训练实现。
  • LLaMA-2提供了强大的LLM。

引用

@misc{du-etal-2022-chinese-llama-2, author = {Zefeng Du, Minghao Wu, Longyue Wang}, title = {Chinese-Llama-2}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/longyuewangdcu/Chinese-Llama-2}} }

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多