首页 / 资讯中心 / 文章详情

双RTX 3090 + Qwen3.8-27B Q4部署实战:4个agent无人值守场景与技术栈详解

双RTX 3090 + Qwen3.8-27B Q4部署实战:4个agent无人值守场景与技术栈详解 ★ FEATURED ARTICLE
1. 双RTX 3090跑Qwen3.8-27B Q4为什么这套组合能撑起4个无人值守agent双RTX 3090 本地部署 Qwen3.8-27B Q4 量化模型是当前个人和小团队做无人值守 agent 流水线性价比很高的一条路。两张 3090 加起来 48GB 显存Qwen3.8-27B 走 Q4 量化后单卡只占约 17GB256K 上下文配 q4 KV cache 大约 25GB一张卡专门跑推理另一张卡完全解放出来跑 ComfyUI 生图生视频物理隔离、各占各的显存agent 才能真正并行干活。这套方案适合谁适合想在一台机器上同时跑大模型推理、图像生成、视频生成、本地搜索并且希望 24 小时无人值守自动编排的开发者、自媒体创作者、AI 工具折腾党。我试过把推理和生图塞在同一张卡上结果是显存互相抢出图时推理卡顿推理时出图排队agent 的并行逻辑直接退化成串行。双卡物理隔离之后这个问题从根上消失了。GPU 0 当大脑跑 Qwen3.8-27B 做推理决策GPU 1 当手脚跑 ComfyUI、视频模型、本地 RAG 搜索。两者通过 HTTP API 通信互不阻塞。这里有个关键前提必须说清楚Q4 量化不是妥协是这套架构成立的前提。Q8 量化下 Qwen3.8-27B 要占约 37GB两张卡直接被吃满ComfyUI 根本没地方跑场景 1 到场景 3 全部无法成立。Q4 把单卡占用压到 17GB才腾出第二张卡做执行层。所以选 Q4 不是图省显存而是为了让双卡分工这个架构能落地。硬件配置上i5-12490F 32GB DDR5-6000 双 RTX 3090共 48GB 显存 Ollama 0.34.0 是本文验证过的组合。32GB 内存对加载 27B Q4 模型和同时跑 ComfyUI 够用如果预算允许上到 64GB 会更从容尤其是视频模型加载时。Ollama 0.34.0 对多卡显存分配和 256K 上下文的支持比较稳下面所有配置都基于这个版本。四个无人值守场景分别是agent 自主编排生图含自动审查闭环、agent 控制生视频含自动审查、全自动写文章配图发布、一张卡干活一张卡待命。这四个场景共享同一套底层结构理解了结构具体场景就是换任务类型而已。接下来先讲 TaoToken 在其中的位置再给可复制的配置。2. TaoToken 前置准备给 agent 流水线接上稳定的模型调用入口在讲本地部署之前先说一个容易被忽略的环节agent 流水线里除了本地 Qwen3.8-27B往往还需要调用外部模型做补充比如更强的代码生成、长文润色、或者某些本地模型不擅长的任务。这时候一个稳定的 API 入口就很关键。TaoToken 提供的就是这样一个统一入口官网是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 。为什么本地部署还要接外部 API因为无人值守场景里agent 会遇到各种边界任务。本地 Qwen3.8-27B 负责主力推理和决策但遇到需要特定模型能力的环节比如复杂代码重构、多轮工具调用规划接一个外部入口能让流水线更完整。TaoToken 的接口兼容主流调用格式agent 编排框架里配置一次就能用。具体操作上你需要先拿到 API Key。进入控制台创建密钥地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建后在 API Keys 页面管理地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。拿到 Key 之后在 agent 框架的模型配置里填入 Base URL 和 Key 即可。如果你用的是 Claude Code 这类编码 agentTaoToken 也提供了对应的接入方式文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。Claude Code 的接入可以参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 里面给了 Base URL、Key、Model ID 三件套的填法。对于长期跑编码和 agent 任务的场景Coding Plan 会更划算地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 。如果你的流水线里 agent 需要频繁调用外部模型做规划、审查、代码生成这个方案能覆盖住调用量。想先验证模型对话效果可以直接在 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite 里试确认接口通不通、返回格式对不对再写进 agent 配置。这里要强调一点TaoToken 是模型调用入口不是替代你本地部署的东西。本地 Qwen3.8-27B 负责高频、隐私敏感、需要低延迟的推理TaoToken 负责补充外部能力。两者在 agent 编排层里是并列的模型选项agent 根据任务类型自己选。下面进入本地部署的可复制配置。3. 可复制配置Ollama 加载参数、显存分配与 agent 调度脚本这一节给的是能直接复制粘贴的配置。先讲 Ollama 侧的模型加载和显存分配再讲 ComfyUI 钉卡最后给 agent 调度脚本。3.1 Ollama 模型加载与显存分配Ollama 0.34.0 下Qwen3.8-27B Q4 的 Modelfile 可以这样写关键是控制上下文长度和 KV cache 量化FROM qwen3.8:27b-q4_K_M PARAMETER num_ctx 262144 PARAMETER num_gpu 1 PARAMETER num_thread 12 PARAMETER temperature 0.7 PARAMETER top_p 0.9 PARAMETER repeat_penalty 1.05num_ctx 262144对应 256K 上下文num_gpu 1表示只用一张卡跑这个模型。但 Ollama 默认可能把模型摊到两张卡上需要用环境变量强制指定 GPU。启动 Ollama 服务时这样设置CUDA_VISIBLE_DEVICES0 OLLAMA_KV_CACHE_TYPEq4_0 OLLAMA_FLASH_ATTENTION1 ollama serveCUDA_VISIBLE_DEVICES0让 Ollama 只看到 GPU 0OLLAMA_KV_CACHE_TYPEq4_0把 KV cache 量化到 q4这是 256K 上下文能压到约 25GB 的关键。OLLAMA_FLASH_ATTENTION1开启 flash attention长上下文下显存和速度都更好。创建并加载模型ollama create qwen3.8-27b-q4 -f ./Modelfile ollama run qwen3.8-27b-q4加载后验证显存占用nvidia-smi --query-gpuindex,memory.used,memory.total --formatcsv预期看到 GPU 0 占用约 25GB17GB 模型 8GB 左右 KV cacheGPU 1 基本空闲。如果 GPU 0 超过 26GB 或者两张卡都被占说明CUDA_VISIBLE_DEVICES没生效检查 Ollama 是不是以 systemd 服务方式启动的服务方式下环境变量要写进 service 文件。3.2 ComfyUI 钉在 GPU 1ComfyUI 启动时指定 GPU 1CUDA_VISIBLE_DEVICES1 python main.py --listen 0.0.0.0 --port 8188 --preview-method auto--listen 0.0.0.0让 agent 能通过局域网或本机 HTTP 访问--port 8188是默认端口。启动后确认它只吃 GPU 1 的显存nvidia-smi --query-compute-appspid,used_memory --formatcsv3.3 agent 调度脚本agent 编排层用 Hermes 或 OpenClaw 都行核心是让 agent 知道两个服务的地址。下面是一个调度配置片段用 JSON 描述模型和服务端点{ agents: { brain: { type: ollama, base_url: http://127.0.0.1:11434, model: qwen3.8-27b-q4, role: reasoning }, executor: { type: comfyui, base_url: http://127.0.0.1:8188, role: image_video }, external: { type: openai_compatible, base_url: https://taotoken.net/api, api_key: 你的Key, model: 按需填写Model ID, role: fallback } }, gpu_policy: { gpu0: [brain], gpu1: [executor] } }这个配置里brain指向本地 Ollamaexecutor指向 ComfyUIexternal指向 TaoToken 作为补充。gpu_policy明确了两张卡的分工agent 调度时按这个策略分配任务。如果你用 Claude Code 做编码 agent配置三件套是 Base URLhttps://taotoken.net/api、API Key、Model ID填进对应的 settings 文件即可。Cline MCP 场景下同理MCP server 配置里填这三个值。3.4 多 agent 并发调度脚本下面是一个 Python 调度脚本骨架用 asyncio 让推理和生图并行import asyncio import aiohttp OLLAMA_URL http://127.0.0.1:11434/api/generate COMFY_URL http://127.0.0.1:8188/prompt async def call_ollama(prompt): async with aiohttp.ClientSession() as session: payload { model: qwen3.8-27b-q4, prompt: prompt, stream: False, options: {num_ctx: 262144} } async with session.post(OLLAMA_URL, jsonpayload) as resp: return await resp.json() async def submit_comfy(workflow): async with aiohttp.ClientSession() as session: async with session.post(COMFY_URL, json{prompt: workflow}) as resp: return await resp.json() async def main(): text_task asyncio.create_task(call_ollama(写一段产品介绍)) image_task asyncio.create_task(submit_comfy({3: {class_type: KSampler}})) text_result, image_result await asyncio.gather(text_task, image_task) print(text_result, image_result) asyncio.run(main())这个脚本同时向 Ollama 和 ComfyUI 发请求因为两个服务在不同 GPU 上互不阻塞asyncio.gather能真正并行。实测下来推理和出图同时跑总耗时接近两者中较长的那个而不是相加。4. 验证请求与成功结果并发压测和显存占用观测配置写完必须验证不然无人值守跑起来出问题很难定位。这一节给逐项验证动作。4.1 验证 Ollama 推理先单独测推理curl http://127.0.0.1:11434/api/generate -d { model: qwen3.8-27b-q4, prompt: 用一句话解释什么是量化, stream: false }成功返回是一个 JSONresponse字段里有模型输出。如果返回model not found说明模型名写错了用ollama list确认。如果卡住不返回检查num_ctx是不是设太大导致显存不够。4.2 验证 ComfyUI 接口curl http://127.0.0.1:8188/system_stats成功返回包含 GPU 信息的 JSON。如果连接被拒检查 ComfyUI 是不是没加--listen 0.0.0.0。4.3 并发压测用ab或wrk对 Ollama 做并发压测观察显存和响应ab -n 20 -c 4 -p payload.json -T application/json http://127.0.0.1:11434/api/generatepayload.json里放上面的请求体。压测期间另开终端跑watch -n 1 nvidia-smi预期看到 GPU 0 显存稳定在 25GB 左右不随并发数暴涨因为 KV cache 是预分配的GPU 1 显存随 ComfyUI 任务波动。如果 GPU 0 显存持续上涨到 OOM说明 KV cache 没量化成功检查OLLAMA_KV_CACHE_TYPE环境变量。4.4 验证并行不互相阻塞同时跑推理和出图记录各自耗时time curl http://127.0.0.1:11434/api/generate -d payload.json time curl http://127.0.0.1:8188/prompt -d workflow.json wait如果两个耗时和单独跑时差不多说明物理隔离生效。如果明显变慢检查是不是两个服务都跑在同一张卡上。4.5 成功结果长什么样稳定运行状态下nvidia-smi应该看到 GPU 0 约 25GB、GPU 1 随任务波动两个进程分别绑定不同 GPU。agent 日志里推理和生图任务的时间戳应该重叠证明并行。连续跑 24 小时显存不泄漏、不 OOM才算真正无人值守可用。5. 本篇常见报错排查401、local proxy failed、reading choices、OAuth部署和接入过程中下面这几类报错最常见逐个给排查方向。5.1 401 Unauthorized调用 TaoToken 接口时返回 401通常是 Key 没填对或者没带上。检查请求头里Authorization: Bearer 你的Key格式是否正确Key 有没有多余空格。如果用的是 Claude Code 或 Cline检查 settings 文件里 Base URL 和 Key 是不是填在了正确字段。Base URL 应该是https://taotoken.net/api不要多加路径。5.2 local proxy failed这个报错一般出现在 agent 框架配置了本地代理但代理没起来的时候。检查你的 agent 配置里有没有指向127.0.0.1:某端口的代理设置如果有但对应服务没启动就会报这个。解决方式是确认代理服务在跑或者直接把配置改成直连https://taotoken.net/api。注意不要配置任何非官方的转发层直连官方入口最稳。5.3 reading choices 相关报错返回体解析时报reading choices或类似字段缺失通常是接口返回了错误结构但代码按成功结构解析。先打印原始返回体看内容如果是错误信息按错误码排查如果是空返回检查请求体格式。OpenAI 兼容接口下请求体里model字段必填messages数组格式要对。Model ID 填错也会导致返回异常结构。5.4 OAuth 相关报错Claude Code 接入时如果报 OAuth 错误说明认证方式没配对。用 API Key 方式接入时不需要走 OAuth 流程检查配置里是不是残留了 OAuth 相关设置。参考 https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaudecodeutm_campaignrewrite 里的接入说明确认三件套填法。5.5 显存相关报错CUDA out of memory出现在 Ollama 侧检查num_ctx是不是超过 262144或者 KV cache 量化没生效。出现在 ComfyUI 侧检查是不是有别的进程占了 GPU 1。用nvidia-smi看哪个进程占着显存必要时kill掉残留进程。5.6 模型加载慢或卡住Q4 模型首次加载要从磁盘读约 17GB如果磁盘是机械盘会很慢。确认模型文件在 SSD 上。加载卡住不动检查内存是不是不够32GB 内存加载 27B 模型时如果同时跑别的服务可能吃紧。6. 把四个场景串起来从单卡待命到全自动流水线四个场景不是孤立的它们共享同一套双卡结构只是任务类型不同。场景 4 是最朴素的用法GPU 1 常驻一个小模型做随时问答秒回GPU 0 留给大模型推理、批量出图、视频渲染。跑大任务不会把日常服务打挂两张卡各忙各的。场景 1 到场景 3 都是在这个基础上长出来的能力。场景 1 是 agent 自主编排生图含自动审查闭环。agent 在 GPU 0 上搜索资料、在 256K 上下文里记住参考内容、写正文并标注插图位置、生成英文提示词然后调 GPU 1 上 ComfyUI 的 API 提交出图任务。出图期间 agent 继续写下一部分并行推进。图片生成完 agent 拿回来自审不满意改提示词重新提交满意才插入文章。这里 agent 通过 ComfyUI_Skills_OpenClaw 的 CLI 接口提交工作流Comfy 官方 MCP 协议提供标准接口Hermes 自带 ComfyUI 技能用 REST/WebSocket 直接控制。核心是 agent 自己看图、自己判断、自己纠错全过程无人干预。场景 2 是 agent 控制生视频含自动审查。agent 在 GPU 0 上写脚本和分镜调 GPU 1 上的视频模型生成。视频模型选择上LTX-2.5 适合批量生成短片素材MiniMax H3 适合成品级输出两者都能在 3090 24GB 上跑都原生支持 ComfyUI。agent 根据任务自动选要速度走 LTX-2.5要质量走 MiniMax H3。审查闭环是视频生成完 agent 抽几帧自己看判断画面质量和内容匹配度不满意调参数重新生成。举例来说30 秒产品宣传片agent 拆成 6 个 5 秒分镜逐个调 LTX-2.5 生成每个抽帧审查全满意后调 MiniMax H3 升级成带音频高质量成片自己拼接导出。场景 3 是全自动写文章配图发布。完整链路是 Hermes agent 在 GPU 0 上用 Qwen3.8-27B 写文章GPU 1 上同时跑 ComfyUI 出配图加本地 RAG 提供实时信息源。三个服务各占各的显存互不打架。流程是搜最新资料、Qwen3.8-27B 写文章、自动调 ComfyUI 出配图、agent 自己审图、满意后自动调发布 API 推送。关键点是 Qwen3.8-27B 的多模态审查能力纯文本模型出完图看不见得人审Qwen3.8-27B 能自己看图判断好坏自己纠错这才是真正的无人值守。把四个场景串起来底层就是一句话GPU 0 是大脑跑 Qwen3.8-27B 做推理决策GPU 1 是手脚跑 ComfyUI、视频模型、搜索做执行。物理隔离各占各的显存真正并行。Qwen3.8-27B 原生多模态自己看图看视频自己审查纠错24 小时无人值守。配置汇总一下i5-12490F 32GB DDR5-6000 双 RTX 309048GB Ollama 0.34.0Qwen3.8-27B Q4 单卡 17GB256K 上下文加 q4 KV 约 25GB。ComfyUI 钉在 GPU 1Hermes 编排全自动跑。外部补充能力接 TaoTokenBase URLhttps://taotoken.net/apiKey 在控制台创建长期编码和 agent 任务用 Coding Plan 更划算。最后给一个实用技巧跑无人值守之前先用nvidia-smi -l 1挂一个长时监控把显存曲线录下来跑满 24 小时看有没有缓慢上涨。如果有多半是某个服务的缓存没释放重启对应服务即可。稳定跑起来之后这套双卡结构能撑住的场景比想象中多换任务类型就是换 agent 的 prompt 和 ComfyUI 的工作流底层不用动。
阅读完成 · 觉得有帮助?
咨询建站