DALM 简介
DALM (Domain Adapted Language Modeling) 是由 Arcee AI 开源的领域自适应语言模型工具包。它旨在打通通用大语言模型与特定领域知识库之间的鸿沟,让 AI 系统能够更好地结合通用能力和专业知识。
DALM 的核心是一个端到端的检索增强生成 (RAG-end2end) 架构,包含以下主要组件:
- 检索器:用于从知识库中检索相关信息
- 生成器:基于检索到的信息生成响应
- 可微分的端到端训练流程
通过这种架构,DALM 能够将预训练语言模型与特定领域的知识融合在一起,实现更精准、可控的 AI 应用。
主要特性
- 端到端可微分的 RAG 架构
- 支持仅检索器训练和联合训练两种模式
- 兼容主流预训练语言模型,如 Llama、Falcon 等
- 内置高效的 in-batch 负采样
- 提供完整的数据处理、训练和评估流程
快速上手
安装
pip install indomain
或者从源码安装:
git clone https://github.com/arcee-ai/DALM.git
cd DALM
pip install -e .
数据准备
DALM 需要包含 Passage、Query、Answer 三列的 CSV 文件作为训练数据。可以使用内置脚本生成:
dalm qa-gen <your-dataset.csv>
训练
训练仅检索器:
dalm train-retriever-only BAAI/bge-large-en dataset.csv \
--output-dir checkpoints
训练端到端 RAG 模型:
dalm train-rag-e2e dataset.csv \
BAAI/bge-large-en \
meta-llama/Llama-2-7b-hf \
--output-dir checkpoints
评估
评估检索器:
dalm eval-retriever test.csv \
--retriever-name-or-path BAAI/bge-large-en \
--retriever-peft-model-path checkpoints/retriever
评估端到端模型:
dalm eval-rag test.csv \
--retriever-name-or-path BAAI/bge-large-en \
--generator-name-or-path meta-llama/Llama-2-7b-hf \
--retriever-peft-model-path checkpoints/retriever \
--generator-peft-model-path checkpoints/generator
示例应用
Arcee AI 基于 DALM 构建了多个领域自适应模型的 Demo:
- DALM-Patent: 专利领域模型
- DALM-PubMed: 生物医学领域模型
- DALM-SEC: 金融证券领域模型
结语
DALM 为构建领域特定的 AI 应用提供了强大而灵活的工具。无论是学术研究还是产品开发,都可以基于 DALM 快速构建出结合通用能力与专业知识的智能系统。欢迎访问 DALM GitHub 仓库了解更多详情,并参与到这个开源项目中来!