DALM 项目介绍
项目背景
在目前的语言模型领域,一个重要的挑战是将通用语言模型与向量存储系统统一,以便更高效地提供准确的信息。为解决这一问题,Arcee 团队推出了开源工具包——领域自适应语言模型(Domain Adapted Language Model, DALM),该工具包基于 Arcee 的领域预训练(Domain Pretrained, DPT)大语言模型(LLM)构建。DALM 工具包旨在帮助开发者在其特定领域中更好地定义和应用 AI 模型,从而实现个性化的创新和影响力。
项目特色
演示模型
Arcee 团队提供了一些示例的 DALM 模型,包括:
这些示例展示了领域模型如何在各种独特领域的应用。
研究内容
DALM 库主要包含代码,以对全差分检索增强生成(Retrieval Augmented Generation, RAG-end2end)架构进行微调。该项目首次成功将 RAG-end2end 模型改为与仅解码语言模型(如 Llama、Falcon 或 GPT)配合使用,并引入批内负样本概念提高其效率。
具体功能包括:
- 训练和微调分为检索器(Retriever)和生成器评估。
- 数据集处理功能包括合成数据生成。
使用指南
系统要求
具体系统要求取决于所用的检索器模型、生成器模型和批处理大小。作为参考,DALM 项目使用了一张 A100 GPU(80GB)的配置进行实验。
安装
用户可以通过以下命令安装 DALM 工具包:
pip install indomain
或者开发和研究人员可以选择本地克隆安装:
git clone https://github.com/arcee-ai/DALM.git && cd DALM
pip install --upgrade -e .
数据准备
可以使用命令 dalm qa-gen <path-to-dataset>
预处理数据集进行训练。如无数据集,用户可从项目提供的示例数据集开始。
训练指南
DALM 支持独立训练检索器或与生成器结合训练。
-
仅训练检索器
使用对比学习训练检索器:
dalm train-retriever-only "BAAI/bge-large-en" "./dalm/datasets/toy_data_train.csv" \ --output-dir "retriever_only_checkpoints" \ --use-peft \
-
联合训练检索器和生成器(RAG-e2e)
训练 Llama-2-7b 生成器与检索器联合:
dalm train-rag-e2e \ "./dalm/datasets/toy_data_train.csv" \ "BAAI/bge-large-en" \ "meta-llama/Llama-2-7b-hf" \ --output-dir "rag_e2e_checkpoints" \
评估
项目提供了多种方式对检索器和生成器进行评估,测试其在检索和回答问题时的性能。例如:
-
检索器评估
dalm eval-retriever qa_pairs_test.csv \ --retriever-name-or-path "BAAI/bge-large-en" \
-
生成器和检索器联合评估
dalm eval-rag qa_pairs_test.csv \ --retriever-name-or-path "BAAI/bge-large-en" \ --generator-name-or-path "meta-llama/Llama-2-7b-hf" \
贡献说明
若希望对 DALM 项目做出贡献,请参考 贡献指南。