MeteoRA:多任务AI框架革新!动态切换+MoE架构,推理效率提升200%

简介: MeteoRA 是南京大学推出的多任务嵌入框架,基于 LoRA 和 MoE 架构,支持动态任务切换与高效推理。

❤️ 如果你也关注 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 架构,支持动态任务切换与高效推理。

  1. 核心功能:多任务适配器集成、自主任务切换、复合任务处理。
  2. 技术原理:LoRA 微调方法、混合专家架构、动态门控机制。

MeteoRA 是什么

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=3n=5n=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

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关文章
|
数据采集 机器学习/深度学习 传感器
YOLOP v2来啦 | YOLOv7结合YOLOP的多任务版本,超越YOLOP以及HybridNets
YOLOP v2来啦 | YOLOv7结合YOLOP的多任务版本,超越YOLOP以及HybridNets
1404 0
YOLOP v2来啦 | YOLOv7结合YOLOP的多任务版本,超越YOLOP以及HybridNets
|
机器学习/深度学习 编解码 数据可视化
AAAI2023 | DeMT: CNN+Transformer实现多任务学习(分割/深度等)
人类视觉可以从一个视觉场景执行不同的任务,如分类、分割、识别等。因此,多任务学习(MTL)研究是计算机视觉领域的热点。期望开发一个强大的视觉模型,以在不同的视觉场景中同时执行多个任务,有望高效工作。如图1所示,本文旨在开发一个强大的视觉模型同时学习多个任务,包括语义分割、人体部位分割、深度估计、边界检测、显著性估计和normal estimation。
AAAI2023 | DeMT: CNN+Transformer实现多任务学习(分割/深度等)
|
机器人 Shell 开发者
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
这篇文章是关于ROS2(Robot Operating System 2)中功能包、依赖管理、工作空间配置和编译的教程,涵盖了ROS2工作空间的概念、如何获取和安装功能包的依赖、构建工作空间的步骤,以及如何创建和管理ROS2功能包,包括使用命令行工具对功能包进行操作的方法。
3854 0
ROS2教程08 ROS2的功能包、依赖管理、工作空间配置与编译
|
前端开发 JavaScript 安全
Mac部署Jenkins(保姆级教程!)_前端jenkins自动部署 mac
Mac部署Jenkins(保姆级教程!)_前端jenkins自动部署 mac
|
5月前
|
存储 数据采集 机器学习/深度学习
什么是湖仓一体数据平台?怎么构建湖仓一体数据平台
湖仓一体数据平台是融合数据湖与数据仓库优势的云原生架构,以低成本对象存储为基础,支持结构化/半结构化/非结构化数据统一存储,提供ACID事务、存算分离、Serverless弹性计算、统一元数据及强数据治理能力,兼顾BI分析、机器学习与实时处理,降本增效,消除数据孤岛与重复。(239字)
397 0
|
Ubuntu Linux Python
|
前端开发
使用 Promise.all 处理多个 Promise 同时失败的情况
【10月更文挑战第26天】通过以上几种方法,我们可以根据具体的需求和环境选择合适的方式来处理多个 `Promise` 同时失败的情况,从而更好地进行错误处理和程序的稳定性保障。
1318 2

热门文章

最新文章