由开源大模型API提供机构Together提出,论文地址

这篇论文探讨了一种称为混合代理(Mixture-of-Agents, MoA) 的方法,旨在提升大型语言模型的能力。混合代理(Mixture-of-Agents, MoA) 方法的核心思想是利用多个代理之间的协作现象来提升大型语言模型的能力。这些代理通过协作和信息共享,能够更有效地处理复杂的任务和提高模型的整体性能。
MoA方法在自然语言理解和生成任务中表现出色,尤其是在推理任务(如MATH数据集)中显著提高了模型的准确性和效率。通过这种协作机制,MoA方法能够充分发挥每个代理的优势,从而提升整体模型的能力。
从代码不难看出,实际上该方法就是定义了很多个不同的大模型:

default_reference_models = [
    "Qwen/Qwen2-72B-Instruct",
    "Qwen/Qwen1.5-72B-Chat",
    "mistralai/Mixtral-8x22B-Instruct-v0.1",
    "databricks/dbrx-instruct",
]

然后对于用户的输入问题,使用上述定义的所有大模型进行回答:

with console.status("[bold green]Querying all the models...") as status:
    for i_round in range(rounds):
        eval_set = eval_set.map(
            partial(
                process_fn,
                temperature=temperature,
                max_tokens=max_tokens,
            ),
            batched=False,
            num_proc=num_proc,
        )
        references = [item["output"] for item in eval_set]
        data["references"] = references
        eval_set = datasets.Dataset.from_dict(data)

其中的process_fn就是用模型进行回答。将所有模型的回答统计到一起之后,再使用一个模型来进行总结:

output = generate_with_references(
    model=model,
    temperature=temperature,
    max_tokens=max_tokens,
    messages=data["instruction"][0],
    references=references,
    generate_fn=generate_together_stream,
)

这就完成了所谓的MoA,这其实和我改造的MetaGPT的使用方法一样,但是MetaGPT的方法有一个更好的点在于每个Agent都是经过精心编写的提示词,而这个MoA并没有,而且MetaGPT为每个Agent选择最合适的大模型之后,和这个所谓的MoA其实没什么区别。

Together是想通过多个臭皮匠来顶一个诸葛亮,但是达到的效果是多个臭皮匠顶不了诸葛亮,只能达到多个臭皮匠中最强的那个臭皮匠的能力,再多的臭皮匠得出的结论99%也是臭皮匠的结论,只不过是5条臭皮匠的结论变成了10条。我测试的3.5Sonnet和GPT 4o回答的效果都是特别好的,几乎趋近甚至超越我。在大模型中,最重要的还是模型本身,其次是提示词,再次才是工程化,想通过工程化来提高模型回复的能力,这条路走的注定比前面两条路要更难。


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注