[AI MoA] 原来这就是 MoA(Mixture-of-Agents)

简介: 介绍一个项目,Mixture-of-Agents (MoA)。MoA 是一种新颖的方法,它利用多个 LLMs 的集体优势来增强性能,实现最先进的结果。通过采用每层包含多个 LLM 代理的分层架构,MoA 仅使用开源模型,在 AlpacaEval 2.0 上的得分为 65.1%,显着优于 GPT-4 Omni 的 57.5%!

今天看到一个项目,Mixture-of-Agents (MoA),打开了一个新思路。

介绍

Mixture-of-Agents (MoA) 是一种新颖的方法,它利用多个 LLMs 的集体优势来增强性能,实现最先进的结果。通过采用每层包含多个 LLM 代理的分层架构,MoA 仅使用开源模型,在 AlpacaEval 2.0 上的得分为 65.1%,显着优于 GPT-4 Omni 的 57.5%!

我们看下架构图

together-moa-explained

快速开始

pip install together
export TOGETHER_API_KEY=...
python moa.py

评估

准备

# install requirements
pip install -r requirements.txt
cd alpaca_eval
pip install -e .
cd FastChat
pip install -e ".[model_worker,llm_judge]"
cd ..

# setup api keys
export TOGETHER_API_KEY=<TOGETHER_API_KEY>
export OPENAI_API_KEY=<OPENAI_API_KEY>

AlpacaEval 2

bash run_eval_alpaca_eval.sh

MT-Bench

bash run_eval_mt_bench.sh

FLASK

bash run_eval_flask.sh

结果

alpaca_and_mtbench

从结果上看,效果不错。

总结

MoA

上面的介绍文字,看的不一定清楚。看下代码,就都清楚了。它做的事

  • 用户提问,异步调用各种 llm 给结果。
    • 这里用到的模型是 Qwen/Qwen2-72B-Instruct, Qwen/Qwen1.5-72B-Chat, mistralai/Mixtral-8x22B-Instruct-v0.1, databricks/dbrx-instruct ,你可以根据需要自己配
    • 异步并发同时请求各 llm
  • 拿到各 llm 的结果后,请求 llm 总结各 llm 的回答,给个好的结果
    • 这里配置的模型是 mistralai/Mixtral-8x22B-Instruct-v0.1 ,同样可以自己改

就这样了,原来这就是 MoA。再去看上面的架构图,很清晰。

这里用的 together api 。通过上面的介绍,思路清晰了,那你自己根据这个思路,写一个,也是很简单了。你可以随便换各种 llm 。

# Mixture-of-Agents in 50 lines of code
import asyncio
import os
from together import AsyncTogether, Together

client = Together(api_key=os.environ.get("TOGETHER_API_KEY"))
async_client = AsyncTogether(api_key=os.environ.get("TOGETHER_API_KEY"))

user_prompt = "What are some fun things to do in SF?"
reference_models = [
    "Qwen/Qwen2-72B-Instruct",
    "Qwen/Qwen1.5-72B-Chat",
    "mistralai/Mixtral-8x22B-Instruct-v0.1",
    "databricks/dbrx-instruct",
]
aggregator_model = "mistralai/Mixtral-8x22B-Instruct-v0.1"
aggreagator_system_prompt = """You have been provided with a set of responses from various open-source models to the latest user query. Your task is to synthesize these responses into a single, high-quality response. It is crucial to critically evaluate the information provided in these responses, recognizing that some of it may be biased or incorrect. Your response should not simply replicate the given answers but should offer a refined, accurate, and comprehensive reply to the instruction. Ensure your response is well-structured, coherent, and adheres to the highest standards of accuracy and reliability.

Responses from models:"""


async def run_llm(model):
    """Run a single LLM call with a reference model."""
    response = await async_client.chat.completions.create(
        model=model,
        messages=[{
   "role": "user", "content": user_prompt}],
        temperature=0.7,
        max_tokens=512,
    )
    print(model)
    return response.choices[0].message.content


async def main():
    results = await asyncio.gather(*[run_llm(model) for model in reference_models])

    finalStream = client.chat.completions.create(
        model=aggregator_model,
        messages=[
            {
   "role": "system", "content": aggreagator_system_prompt},
            {
   "role": "user", "content": ",".join(str(element) for element in results)},
        ],
        stream=True,
    )

    for chunk in finalStream:
        print(chunk.choices[0].delta.content or "", end="", flush=True)


asyncio.run(main())

评估

这个项目中还有一点可以说的,就是评估。效果到底好不好,可以通过评估看。

怎么做评估?看下面这个图,从各个指标上去打分,最后看得分。

Human agreement Price [$/1000 examples] Time [seconds/1000 examples] Spearman corr. Pearson corr. Bias Variance Proba. prefer longer
alpaca_eval_gpt4 69.2 13.6 1455 0.97 0.93 28.4 14.6 0.68
alpaca_eval_cot_gpt4_turbo_fn 68.6 6.3 1989 0.97 0.90 29.3 18.4 0.67
alpaca_eval_gpt4_turbo_fn 68.1 5.5 864 0.93 0.82 30.2 15.6 0.65
gpt4 66.9 12.5 1037 0.88 0.87 31.5 14.6 0.65
alpaca_farm_greedy_gpt4 66.4 15.3 878 0.85 0.75 30.2 19.3 0.60
alpaca_eval_cot_gpt4_turbo_fn 65.7 4.3 228 0.78 0.77 33.9 23.7 0.61
humans 65.7 300.0 36800 1.00 1.00 0.0 34.3 0.64
claude 65.3 3.3 173 0.93 0.90 32.4 18.5 0.66
lmsys_gpt4 65.3 13.9 17982 0.98 0.97 31.6 15.9 0.74
text_davinci_003 64.1 8.7 121 0.85 0.83 33.8 22.7 0.70
longest 62.2 0.0 0 0.27 0.56 37.8 0.0 1.00
chatgpt 57.3 0.8 285 0.72 0.71 39.4 34.1 0.59

各个指标计算的 代码在这里

数据集在这里 2.5K 条人工注释


相关文章
vscode 向下复制当前行功能快捷键 设置成Ctrl + D
vscode 向下复制当前行功能快捷键 设置成Ctrl + D
2381 0
|
10月前
|
人工智能 自然语言处理 前端开发
智能体决策机制深度剖析:ReAct、Plan-and-Execute与自适应策略
作为一名深耕人工智能领域多年的技术研究者,我深深感受到智能体(Agent)技术正在成为AI发展的关键转折点。从早期基于规则的专家系统,到如今融合大语言模型的智能代理,我们见证了决策机制从简单条件判断向复杂推理规划的演进历程。 在我的研究实践中,智能体决策机制的核心挑战始终围绕着如何在动态环境中做出最优决策。传统的决策树和状态机虽然逻辑清晰,但面对复杂多变的现实场景时显得力不从心。而随着GPT-4、Claude等大语言模型的兴起,我们迎来了前所未有的机遇——通过自然语言推理和规划,智能体可以展现出接近人类水平的决策能力。 当前主流的决策框架中,ReAct(Reasoning and Acting
2164 1
智能体决策机制深度剖析:ReAct、Plan-and-Execute与自适应策略
|
9月前
|
测试技术 Swift 开发者
可调节推理预算,字节Seed团队开源大型语言模型 Seed-OSS 系列!
字节跳动 Seed 团队正式发布了 Seed-OSS 系列开源大型语言模型,提供强大的长上下文、推理、代理和通用功能,以及对开发者友好的多功能特性。
908 9
|
传感器 人工智能 安全
蔚来汽车智能座舱接入通义大模型,并使用通义灵码全面提效
为加速AI应用在企业市场落地,4月9日,阿里云在北京召开AI势能大会。阿里云智能集团资深副总裁、公共云事业部总裁刘伟光发表主题演讲,大模型的社会价值正在企业市场释放,阿里云将坚定投入,打造全栈领先的技术,持续开源开放,为AI应用提速。
|
自然语言处理 测试技术 Python
开源创新框架MoA,可极大增强大模型的能力
【7月更文挑战第16天】MoA(Mixture-of-Agents)是一种创新框架,通过分层架构融合多个LLMs的专业知识,增强大模型能力。在AlpacaEval等基准测试中表现优越,展示出利用LLMs集体优势的巨大潜力。然而,模型复杂性、代理选择、可解释性和鲁棒性是待解决的挑战。[论文链接](https://arxiv.org/abs/2406.04692)
702 2
|
9月前
|
前端开发 JavaScript 算法
如何开发人事及OA管理系统的绩效管理板块?(附架构图+流程图+代码参考)
本文深入解析了人事及OA系统中绩效管理模块的设计与实现,涵盖总体架构、功能模块、业务流程、开发技巧、数据库设计、前后端实现及核心算法等。内容详实,配有架构图、流程图和代码示例,适合HR系统开发者与管理者参考,助力构建高效、可扩展的绩效管理体系。
|
监控 安全 Linux
Linux命令rpmkeys:守护RPM包的安全之门
`rpmkeys`是Linux中管理RPM包公钥的工具,用于验证软件包的签名,确保安全。它支持导入、导出、删除和查询公钥,通过数字签名保证包的完整性和来源可靠性。例如,使用`--import`导入公钥,`--query`查询公钥。最佳实践包括验证公钥来源、定期更新并备份。该命令间接保障了数据处理和分析的安全环境。
|
机器学习/深度学习 C语言 计算机视觉
RT-DETR改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
RT-DETR改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
650 12
RT-DETR改进策略【Neck】| HS-FPN:高级筛选特征融合金字塔,加强细微特征的检测
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
|
Oracle 安全 关系型数据库
【赵渝强老师】PostgreSQL的参数文件
PostgreSQL数据库的四个主要参数文件包括:`postgresql.conf`(主要配置文件)、`pg_hba.conf`(访问控制文件)、`pg_ident.conf`(用户映射文件)和`postgresql.auto.conf`(自动保存修改后的参数)。视频讲解和详细说明帮助理解各文件的作用。
450 19