找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

5486

积分

0

好友

707

主题
发表于 1 小时前 | 查看: 2| 回复: 0

云栈社区的技术讨论中,多模型系统一直是个热门话题。单模型系统足够简单,多模型系统则具备更强的能力。但如果将二者放在一起比较,真正困难的地方不是模型怎么选,而是如何设计一套让多个模型高效协同工作的架构。

所以,多模型系统的重点并非模型数量,而是在合适的时机把合适的模型分配给合适的任务。

多模型架构模式示意图:顺序链、并行、分层、集成

架构模式

多数场景都可以归纳到以下几种架构模式之中。我们先看一张对比总表。

五种模型系统模式对比表:复杂度、适用场景和权衡

记住一条原则:优先选择能够满足需求的最简单方案。架构一旦变复杂,后续的维护成本只会不断增加。

顺序架构

顺序架构把任务拆成多个阶段,每个阶段交给一个擅长对应工作的模型处理。

模式 1:Pipeline(流水线)

Pipeline 模式中,一个模型的输出直接作为下一个模型的输入。

class ModelPipeline:
    def __init__(self):
        self.models = [
            {"model": "qwen3-1.7b", "task": "classify"},
            {"model": "qwen3-8b", "task": "extract"},
            {"model": "qwen3-32b", "task": "reason"},
        ]

    def process(self, input: str) -> str:
        current = input
        for model_config in self.models:
            current = self.call_model(
                model_config["model"],
                self.create_prompt(model_config["task"], current)
            )
        return current

串行执行的问题在于延迟会层层累积。三个模型依次调用,整体延迟差不多就是单次调用的三倍。只有每一步确实需要不同模型的能力时,才值得采用这种模式。

模式 2:Router(路由)

Router 模式先判断任务类型,再把请求发送给对应的专用模型。

class ModelRouter:
    def __init__(self):
        self.classifier = "qwen2.5-1.5b"
        self.specialists = {
            "code": "qwen2.5-coder-7b",
            "math": "qwen2.5-32b",
            "creative": "claude-sonnet-4",
            "general": "qwen2.5-7b",
        }

    def route(self, prompt: str) -> str:
        task_type = self.classify(prompt)
        model = self.specialists.get(task_type, self.specialists["general"])
        return self.call_model(model, prompt)

分类器决定了整个路由流程的质量。一旦分类出错,请求就会落到错误的模型上,最终输出自然也会受到影响。如果分类标准足够清晰,一个规模较小的分类模型通常已经足够。

并行架构

并行架构适用于彼此独立的任务,可以同时交给多个模型处理。

模式 1:Fan-Out(扇出)

Fan-Out 将同一个 Prompt 并发发送给多个模型。

import asyncio

class ModelFanOut:
    def __init__(self):
        self.models = [
            "qwen2.5-7b",
            "qwen2.5-32b",
            "claude-sonnet-4",
        ]

    async def process(self, prompt: str) -> list[str]:
        tasks = [self.call_model(model, prompt) for model in self.models]
        return await asyncio.gather(*tasks)

这种模式适合比较不同模型的输出、进行 A/B 测试,或者在多个候选答案中挑选最佳结果。成本确实会增加,但对于关键决策而言,这点额外开销通常是值得的。

模式 2:Voting(投票)

Voting 让多个模型共同决策,以投票结果作为最终输出。

class ModelVoting:
    def __init__(self):
        self.models = [
            "qwen3-8b",
            "qwen3-32b",
            "claude-sonnet-4",
        ]

    def vote(self, prompt: str) -> str:
        responses = [self.call_model(model, prompt) for model in self.models]
        from collections import Counter
        votes = Counter(responses)
        return votes.most_common(1)[0][0]

多数投票在分类任务上很好用。换成生成任务,处理方式就没这么简单了,因为我们需要比较的是语义一致性,而不是字符串是否完全相同。

分层架构

分层架构让不同层级的模型各自承担不同职责。

模式 1:Planner-Executor(规划-执行)

Planner-Executor 由能力更强的模型负责规划,再把具体工作交给较小的模型执行。

class PlannerExecutor:
    def __init__(self):
        self.planner = "qwen3-32b"
        self.executors = {
            "code": "qwen2.5-coder-7b",
            "search": "qwen3-8b",
            "math": "qwen3-8b",
        }

    def process(self, task: str) -> str:
        plan = self.call_model(self.planner, f"Plan: {task}")
        results = []
        for step in self.parse_plan(plan):
            executor = self.executors.get(step["type"], "qwen2.5-7b")
            result = self.call_model(executor, step["prompt"])
            results.append(result)
        return self.call_model(self.planner, f"Synthesize: {results}")

规划器承担主要的推理工作,执行器负责完成各个具体步骤。当规划阶段成本较高而执行阶段相对轻量时,这种架构通常比较合适。

模式 2:Supervisor-Worker(监督-工人)

Supervisor-Worker 中,监督者负责分配任务,并审核各个 Worker 返回的结果。

class SupervisorWorker:
    def __init__(self):
        self.supervisor = "qwen3-32b"
        self.workers = ["qwen3-8b", "qwen2.5-coder-7b"]

    def process(self, task: str) -> str:
        assignments = self.call_model(self.supervisor, f"Assign: {task}")
        results = []
        for assignment in self.parse_assignments(assignments):
            result = self.call_model(
                assignment["worker"], assignment["task"]
            )
            results.append(result)
        return self.call_model(self.supervisor, f"Review: {results}")

监督者同时承担规划、任务分配和结果审核三项工作,因此很容易成为整个系统的瓶颈。它的响应速度如果跟不上,整个系统都会受到影响。

集成架构

集成架构适合用于关键决策,通过多个模型共同参与判断,提高结果的可靠性。

模式 1:Weighted Ensemble(加权集成)

Weighted Ensemble 会对各个模型的输出评分,再根据权重计算最终结果,选择得分最高的答案。

class WeightedEnsemble:
    def __init__(self):
        self.models = {
            "qwen3-32b": 0.5,
            "claude-sonnet-4": 0.3,
            "qwen3-8b": 0.2,
        }

    def decide(self, prompt: str) -> str:
        responses = {
            model: self.call_model(model, prompt)
            for model in self.models
        }
        scores = {}
        for model, response in responses.items():
            score = self.evaluate(response) * self.models[model]
            scores[response] = scores.get(response, 0) + score
        return max(scores, key=scores.get)

权重代表我们对不同模型输出的信任程度。实际使用时,应当依据真实业务中的表现不断调整,而不是直接参考基准测试结果。

模式 2:Consensus Ensemble(一致性集成)

Consensus Ensemble 要求多个模型先达成一致;如果无法满足一致性要求,再交由更强的模型继续处理。

class ConsensusEnsemble:
    def __init__(self, threshold: float = 0.7):
        self.threshold = threshold
        self.models = [
            "qwen3-32b",
            "claude-sonnet-4",
            "qwen3-8b",
        ]

    def decide(self, prompt: str) -> str:
        responses = [
            self.call_model(model, prompt)
            for model in self.models
        ]
        from collections import Counter
        votes = Counter(responses)
        max_votes = max(votes.values())

        if max_votes / len(self.models) >= self.threshold:
            return votes.most_common(1)[0][0]

        return self.call_model("qwen2.5-32b", prompt)

阈值决定了一致性要求有多严格。0.7 表示至少需要三分之二的模型给出一致结果。降低阈值可以更快得到结论;提高阈值则意味着只有在模型意见更加一致时才会直接返回结果,从而换来更高的置信度。

多模型系统何时值得用

如果业务中存在不同类型的工作负载、关键决策需要更高的输出质量,或者需要在成本和延迟之间做优化,那么多模型系统就有发挥价值的空间。

相反,如果所有任务的复杂度都差不多、还处于原型验证阶段,又或者系统的简单性比优化更重要,那就没必要引入多模型架构。

一个实用的经验法则:先从一个模型开始。只有真正遇到成本、延迟或质量方面的瓶颈时,再考虑引入更多模型。不要在问题尚未出现之前,就把系统设计得过于复杂。

总结

五种架构模式在成本、延迟、质量和复杂度上的对比

每一种架构都有对应的取舍,没有一种模式适用于所有场景。真正需要关注的是当前系统受什么约束,再选择最符合这些约束的模式。

作者:Rost Glukhov




上一篇:Node.js 新版文档内测:自带搜索,还给 AI 准备了 llms.txt
下一篇:iPhone 18 Pro 发布日期锁定9月9日或10日,苹果内部已开始筹备秋季发布会
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-8-6 07:03 , Processed in 1.092323 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表