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}} }

编辑推荐精选

AEE

AEE

AI Excel全自动制表工具

AEE 在线 AI 全自动 Excel 编辑器,提供智能录入、自动公式、数据整理、图表生成等功能,高效处理 Excel 任务,提升办公效率。支持自动高亮数据、批量计算、不规则数据录入,适用于企业、教育、金融等多场景。

UI-TARS-desktop

UI-TARS-desktop

基于 UI-TARS 视觉语言模型的桌面应用,可通过自然语言控制计算机进行多模态操作。

UI-TARS-desktop 是一款功能强大的桌面应用,基于 UI-TARS(视觉语言模型)构建。它具备自然语言控制、截图与视觉识别、精确的鼠标键盘控制等功能,支持跨平台使用(Windows/MacOS),能提供实时反馈和状态显示,且数据完全本地处理,保障隐私安全。该应用集成了多种大语言模型和搜索方式,还可进行文件系统操作。适用于需要智能交互和自动化任务的场景,如信息检索、文件管理等。其提供了详细的文档,包括快速启动、部署、贡献指南和 SDK 使用说明等,方便开发者使用和扩展。

Wan2.1

Wan2.1

开源且先进的大规模视频生成模型项目

Wan2.1 是一个开源且先进的大规模视频生成模型项目,支持文本到图像、文本到视频、图像到视频等多种生成任务。它具备丰富的配置选项,可调整分辨率、扩散步数等参数,还能对提示词进行增强。使用了多种先进技术和工具,在视频和图像生成领域具有广泛应用前景,适合研究人员和开发者使用。

爱图表

爱图表

全流程 AI 驱动的数据可视化工具,助力用户轻松创作高颜值图表

爱图表(aitubiao.com)就是AI图表,是由镝数科技推出的一款创新型智能数据可视化平台,专注于为用户提供便捷的图表生成、数据分析和报告撰写服务。爱图表是中国首个在图表场景接入DeepSeek的产品。通过接入前沿的DeepSeek系列AI模型,爱图表结合强大的数据处理能力与智能化功能,致力于帮助职场人士高效处理和表达数据,提升工作效率和报告质量。

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

HunyuanVideo

HunyuanVideo

HunyuanVideo 是一个可基于文本生成高质量图像和视频的项目。

HunyuanVideo 是一个专注于文本到图像及视频生成的项目。它具备强大的视频生成能力,支持多种分辨率和视频长度选择,能根据用户输入的文本生成逼真的图像和视频。使用先进的技术架构和算法,可灵活调整生成参数,满足不同场景的需求,是文本生成图像视频领域的优质工具。

WebUI for Browser Use

WebUI for Browser Use

一个基于 Gradio 构建的 WebUI,支持与浏览器智能体进行便捷交互。

WebUI for Browser Use 是一个强大的项目,它集成了多种大型语言模型,支持自定义浏览器使用,具备持久化浏览器会话等功能。用户可以通过简洁友好的界面轻松控制浏览器智能体完成各类任务,无论是数据提取、网页导航还是表单填写等操作都能高效实现,有利于提高工作效率和获取信息的便捷性。该项目适合开发者、研究人员以及需要自动化浏览器操作的人群使用,在 SEO 优化方面,其关键词涵盖浏览器使用、WebUI、大型语言模型集成等,有助于提高网页在搜索引擎中的曝光度。

xiaozhi-esp32

xiaozhi-esp32

基于 ESP32 的小智 AI 开发项目,支持多种网络连接与协议,实现语音交互等功能。

xiaozhi-esp32 是一个极具创新性的基于 ESP32 的开发项目,专注于人工智能语音交互领域。项目涵盖了丰富的功能,如网络连接、OTA 升级、设备激活等,同时支持多种语言。无论是开发爱好者还是专业开发者,都能借助该项目快速搭建起高效的 AI 语音交互系统,为智能设备开发提供强大助力。

olmocr

olmocr

一个用于 OCR 的项目,支持多种模型和服务器进行 PDF 到 Markdown 的转换,并提供测试和报告功能。

olmocr 是一个专注于光学字符识别(OCR)的 Python 项目,由 Allen Institute for Artificial Intelligence 开发。它支持多种模型和服务器,如 vllm、sglang、OpenAI 等,可将 PDF 文件的页面转换为 Markdown 格式。项目还提供了测试框架和 HTML 报告生成功能,方便用户对 OCR 结果进行评估和分析。适用于科研、文档处理等领域,有助于提高工作效率和准确性。

飞书多维表格

飞书多维表格

飞书多维表格 ×DeepSeek R1 满血版

飞书多维表格联合 DeepSeek R1 模型,提供 AI 自动化解决方案,支持批量写作、数据分析、跨模态处理等功能,适用于电商、短视频、影视创作等场景,提升企业生产力与创作效率。关键词:飞书多维表格、DeepSeek R1、AI 自动化、批量处理、企业协同工具。

下拉加载更多