LLaMa2lang 项目介绍
项目背景
LLaMa2lang 是一个用于微调大型语言模型,以便其更好地支持除英语以外的其他语言对话的项目。大多数像 LLaMa3 这样的基础模型主要以英语数据进行训练,因此即使它们可以处理其他语言,其性能仍与英语存在差距。通过 LLaMa2lang 项目,用户可以有效地调整这些模型,使其在多语言环境下更具适应性。
项目特点
微调能力
LLaMa2lang 提供了一系列方便的脚本,帮助用户微调 LLaMa3-8B 及其他基础模型。这些脚本除了能够针对特定目标语言进行微调,还可结合 RAG(检索增强生成)技术,以进一步提升模型在多语言对话中的表现。详情可以访问我们的 RAG Me Up 仓库。
支持的翻译模型和基础模型
- 翻译模型:
- OPUS,M2M,MADLAD,mBART,NLLB,Seamless,Tower Instruct 等
- 基础数据集:
- OASST1,OASST2
- 基础模型:
- LLaMa3,LLaMa2,Mistral,Mixtral 8x7B(非官方)
使用步骤
-
安装依赖:首先确保安装了项目所需的所有依赖。
pip install -r requirements.txt
-
翻译数据:将基础数据集翻译为目标语言。
python translate.py m2m target_lang checkpoint_location
-
组合检查点:将检查点文件合并为一个可用的数据集。
python combine_checkpoints.py input_folder output_location
-
模型微调:使用 LoRA 和 PEFT 技术对基础模型进行微调。
python finetune.py tuned_model dataset_name instruction_prompt
-
强化微调(可选):通过 DPO(类似 RLHF)技术增强模型能力。
python finetune_dpo.py tuned_model dataset_name instruction_prompt
-
运行推理:使用已训练的模型进行推理。
python run_inference.py model_name instruction_prompt input
项目挑战与解决方案
LLaMa2lang 项目旨在突破语言模型仅能高效处理英语的限制,力求通过微调技术和多种翻译手段,使模型能够流畅地处理不同目标语言的任务。项目中的各项功能设计都通过贴近用户实际需求,实现对多语言处理的支持。
未来规划
- 与其他库的互操作性:调查与其他库如 Axolotl、llamacpp 等的互联性。
- 支持各种量化技术:在 QLoRA 基础上,计划支持 GGUF、GPTQ、AWQ 等量化方式。
- 扩展词表及分词器:支持增加词汇表及分词器的词汇量。
项目运行成本
项目可在免费的 Google Colab T4 GPU 上运行,但翻译步骤耗时较长,约需 36 小时,因此建议分步进行。微调步骤则在 vast.ai 提供的 A40 环境下进行,单次模型微调成本不到一美元。
用户指引
确保 PyTorch 正确安装并支持 CUDA。然后根据提供的帮助信息及使用示例,设置和调整各个参数,以适应不同的语言需求和计算资源。
常见问题
- 为何要翻译整个数据集? 翻译完整数据集不仅利于创建高质量语言模型,同时也为社区提供丰富的多语言数据。
- 微调性能如何? 微调后,模型在生成非英语语言内容时的表现显著提升,不再出现语法错误。
- 可否使用其他框架进行微调? 可以,用户可以使用 Axolotl 等框架。