❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🚀 "你的LLM还在单线程工作?南大黑科技让AI学会『一心多用』!"
大家好,我是蚝油菜花。当你的AI模型还在这样工作时:
- 🔄 处理客服问答时无法同步分析用户情绪
- ⏳ 不同任务需要反复加载不同适配器
- 💸 部署多模型导致显存爆炸式增长...
南京大学最新开源的 MeteoRA 正在颠覆这一切!这个基于MoE架构的多任务引擎,通过三大技术突破重新定义LLM效率边界:
- 1️⃣ 动态脑区切换:门控网络自动选择最优LoRA适配器,像人脑一样动态调用不同"技能模块"
- 2️⃣ 并行推理加速:自研GPU核实现多专家并行计算,推理速度提升2倍
- 3️⃣ 显存瘦身术:全模式LoRA集成策略,16个任务并行仅需1.5倍显存
现在,金融分析师可以边生成报告边校验数据合规,跨境电商客服能实时切换8国语言——你的AI助手准备好开启多线程进化了吗?
🚀 快速阅读
MeteoRA 是南京大学推出的多任务嵌入框架,基于 LoRA 和 MoE 架构,支持动态任务切换与高效推理。
- 核心功能:多任务适配器集成、自主任务切换、复合任务处理。
- 技术原理:LoRA 微调方法、混合专家架构、动态门控机制。
MeteoRA 是什么
MeteoRA 是南京大学计算机科学与技术系的研究团队推出的一款多任务嵌入框架,专为大型语言模型(LLM)设计。它通过将多个任务特定的 LoRA(低秩适配器)集成到一个基础模型中,实现了高效的参数复用和自主任务切换。MeteoRA 基于混合专家(MoE)架构,利用可训练的门控网络动态选择最适合当前输入的 LoRA 适配器,无需显式任务指令。
此外,MeteoRA 提出了 MoE 前向加速策略,基于自定义 GPU 核算子显著提升了推理效率,同时保持低内存开销。在实验中,MeteoRA 在多种任务上展现出与传统微调方法相当的性能,并在复合任务中表现出色,能够在一个推理过程中解决多个子问题。
MeteoRA 的设计目标是解决多任务处理中的效率瓶颈问题,同时扩展 LLM 的应用场景。无论是多领域问答、多语言对话,还是复杂的跨领域知识融合,MeteoRA 都能提供灵活且高效的解决方案。
MeteoRA 的主要功能
- 多任务适配器集成:将多个任务特定的 LoRA 嵌入到一个基础 LLM 中,同时处理多种任务。
- 自主任务选择与切换:无需人工指定任务意图,实现任务的自主切换。
- 高效推理:提升多任务适配器的推理效率,同时保持低内存开销。
- 复合任务处理:在单次推理中解决多个子任务,例如连续回答多个不同领域的问答。
- 扩展性:支持多种 LoRA 适配器的集成,适用于不同任务和领域,扩展 LLM 的应用场景。
MeteoRA 的技术原理
- LoRA(Low-Rank Adaptation):一种参数高效的微调方法,通过在 LLM 的线性层中注入低秩矩阵(A 和 B),仅更新矩阵以适应特定任务,不改变基础模型的其他参数。
- 混合专家(MoE)架构:将多个 LoRA 适配器视为不同的“专家”,通过一个可训练的门控网络动态选择最适合当前输入的专家(LoRA 适配器)。
- 动态门控机制:门控网络为每个输入动态分配权重,决定哪些 LoRA 适配器参与计算,基于 top-k 选择策略实现任务的灵活切换和组合。
- 前向加速策略:推出基于 PyTorch 和 Triton 的自定义 GPU 核算子,优化内存访问,提升多任务推理速度,同时保持较低的内存占用。
- 全模式集成:将 LoRA 适配器嵌入到 Transformer 架构的所有线性层(包括注意力模块和 MLP 模块),更全面地利用不同任务的知识。
如何运行 MeteoRA
准备工作
1. 安装必要的依赖包:
pip install -r requirements.txt
2. 准备数据集。MeteoRA 要求数据集为 JSONL 格式。如果使用 BIGBench 数据集,可通过以下命令将其转换为 JSONL 格式:
cd data
python create_dataset.py --task all
3. 准备复合任务数据集。生成复合任务数据集的命令如下:
python create_composite.py --n <n>
支持 n=3
、n=5
和 n=10
的少样本数据集生成。
4. 下载预训练模型或自行训练:
python download_ckpt.py
5. 更新配置文件路径:
base_model_path: 'meta-llama3/Meta-Llama-3-8B'
meteora_ckpt_path: 'ckpt/llama3_8b/llama3_8b_meteora/top_2'
adapter_dir: 'ckpt/llama3_8b/llama3_8b_peft'
模型评估
1. 运行基准测试:
python eval_model.py --task <task_name> --batch_size <batch_size>
2. 保存评估结果:
python eval_model.py --task <task_name> --batch_size <batch_size> --save
3. 调试模式:
python eval_model.py --task <task_name> --batch_size <batch_size> --debug
训练 MeteoRA 模型
1. 准备 LoRA 适配器和对应的数据集,确保每个适配器都有匹配的数据集。
- lora_adapters
- adapter_name1
- adapter_name2
- ...
- datasets
- dataset_name1
- dataset_name2
- ...
2. 更新训练脚本run_meteora_train_fsdp
中的路径并运行:
sh run_meteora_train_fsdp.sh
资源
- GitHub 仓库:https://github.com/NJUDeepEngine/meteora
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦