Project Icon

Chinese-Llama-2

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

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

Logo

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

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

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

同等贡献

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

版本 星标 问题 Python

代码许可

🦙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}}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号