@malikwas1f: 首次对 @Alibaba_Qwen qwen 3.6 27b 进行微调以提升其质量。@migtissera https://github.com/noonghunn…
摘要
宣布首次微调阿里巴巴 Qwen 3.6 27B 以提升其质量,并附有一个 GitHub 仓库(club-3090),提供在 RTX 3090 上本地运行大型语言模型的指南。
查看缓存全文
缓存时间: 2026/07/09 19:51
对 @Alibaba_Qwen 的 qwen 3.6 27b 进行了首次微调,以提升其质量。@migtissera https://github.com/noonghunna/club-3090/discussions/662… 附注:MTP 当前无法正常工作。
快速开始
🪟 在 Windows 上? 以下步骤假设使用 Linux/macOS。请先设置 WSL2 → docs/WSL_SETUP.md(从头到尾完整步骤)。原生 Windows 只能运行 上游 llama.cpp 二进制文件——本仓库的工具均不可用。
# 1. 克隆仓库
git clone https://github.com/noonghunna/club-3090.git
cd club-3090
# 分析兼容性:工具需要 PyYAML。Ubuntu LTS 通常已通过
# python3-yaml 提供;否则运行:
python3 -m pip install pyyaml
# 2. 选择/下载 + SHA 校验模型(交互式硬件感知选择器)
# (会询问选择哪个模型,以及模型权重存放位置——可选仓库内默认路径、
# ~/models,或其他磁盘上的自定义路径。要跳过提示:
# `export MODEL_DIR=/path/to/models` 并传入模型名称。详见 FAQ。)
bash scripts/setup.sh
# 或者通过脚本方式:
# bash scripts/setup.sh qwen3.6-27b
# 3. 选择配置并启动(交互式向导:询问模型 → GPU → 项目显存预算)
bash scripts/launch.sh
# 或者让解决方案器根据你的模型 + 硬件自动选择(.env 固定值 ‖ 精选默认值):
# bash scripts/launch.sh --variant qwen3.6-27b/default # 该模型的 YOUR 默认配置
# 或者跳过向导,直接指定配置:
# bash scripts/launch.sh --variant beellama/dflash # 单卡 BLESSED 默认——代码极快(~100 代码 / 50 叙事 TPS),DFlash 推测解码(⚠️ 非官方多架构镜像;sm_89/120 未验证——参见 docs/INFERENCE_ENGINES.md)
# bash scripts/launch.sh --variant ik-llama/iq4ks-mtp # 单卡 BALANCED 备选——~63/69 TPS,200K 上下文 + 视觉,最低显存(ik_llama IQK 量化)
# bash scripts/launch.sh --variant llamacpp/default # 单卡 cliff-immune 备选——200K @ -ub 512,~51/60 TPS
# bash scripts/launch.sh --variant llamacpp/mtp-vision # 单卡 49K + MTP + 视觉
# bash scripts/launch.sh --variant vllm/dual # 双卡 262K + 视觉(vLLM 单卡路径因 #167 被阻塞)
# 或者使用部分标志(向导填充其余部分):
# bash scripts/launch.sh --model qwen3.6-27b --gpus 0,1
# bash scripts/launch.sh --tp 2 --pp 1 # 覆盖 vLLM 并行度
# 查看本机可运行的变体及每个模型的默认配置视图
# (按 GPU 数量过滤;添加 --all 查看所有变体):
# bash scripts/switch.sh --list # 本机可运行的
# bash scripts/switch.sh --list --all # 所有
# 固定你自己的默认值,使 bare `launch.sh` 直接使用它:
# bash scripts/switch.sh --set-default ik-llama/iq4ks-mtp # 例如,优先选择平衡的 ik-llama 路径而非 beellama 默认值;清除:--clear-default qwen3.6-27b
# 4. 冒烟测试(启动器已打印此 curl 命令)
curl -sf http://localhost:8020/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"qwen3.6-27b","messages":[{"role":"user","content":"Capital of France?"}],"max_tokens":200}'
# 5. 运行标准基准测试
bash scripts/bench.sh
# 6. 稍后切换,无需再次点击向导:
bash scripts/switch.sh vllm/long-vision # 例如
# 7. 随着栈的演进(Genesis 固定值更新、新的组合变体、内置补丁更新)保持安装最新:
bash scripts/update.sh
launch.sh 会调用 switch.sh(关闭旧服务,启动新服务),然后运行 verify-full.sh,确保在指向客户端之前服务运行正常。所有辅助脚本详见 scripts/。
更喜欢屏幕而非命令行?——服务驾驶舱(c3)
c3 是一个 lazydocker 风格的终端 UI,它封装了相同的流程——发现 → 服务 → 操作 → 验证——在一个键盘驱动的驾驶舱中:按 ⏎ 浏览目录并启动一个变体,实时观察 GPU / 场景 / 容器,运行 Doctor 健康检查,以及(生产者通道)引导添加模型流程。
# 从检出目录安装(驾驶舱 + 仓库内核心包):
uv pip install -e tools/serve-cockpit # 使用 uv(推荐——一条命令)
# ...或使用普通 pip:
pip install -e tools/tui-core && pip install -e tools/serve-cockpit
c3 # 启动(也可:python -m club3090_cockpit)
首次运行: 按 S → 设置 模型目录(权重下载位置)+ HuggingFace 令牌 → Ctrl+S 保存;然后按 r 浏览目录并启动一个模型。c3 --lean(或应用内 [C])隐藏生产者通道,仅显示消费者视图。执行 git pull 后,重新运行安装以获取新的依赖项和 UI 更改。完整快捷键及详细信息 → tools/serve-cockpit/。
⚠️ 单卡长上下文说明: Cliff 2(GDN 预填充在单提示 >~50K 时 OOM)在 24 GB 单卡 vLLM 上是已知 开放问题。Genesis v7.72.2 PN59 本意是修复,但未在分块预填充上生效。解决方法:
vllm/dual(TP=2 可避开)或llamacpp/default(不同引擎,无悬崖)。完整诊断详见docs/CLIFFS.md。
TL;DR——这是什么
- 两条互补路线——根据你的工作负载选择:
- 🏎 vLLM 双卡 = 最高吞吐量。代码可达 127 TPS(DFlash),或 4 个并发流 @ 262K(turbo)。完整功能栈(视觉 · 工具 · MTP · 流式)。
- 🛡 llama.cpp 单卡 = 最高鲁棒性。一张 3090 上完整 200K 上下文(最大安全——填充干净有余量;参见 CLIFFS)。压力测试干净:无预填充悬崖,25K 令牌工具返回正常工作,91K 针测试通过。~51 / 60 TPS(Q4_K_M + MTP)——比 vLLM 双卡慢,但不会在真实工具使用代理上崩溃。
- 经过验证的 Docker Compose 配置——两条路线均提供,
localhost:8020上的即用型 OpenAI 兼容 API。 - 多引擎:vLLM(全功能)、llama.cpp(最大上下文 + 鲁棒性)、ik_llama(最佳 GGUF 量化)。(已评估 SGLang——目前因 Ampere 架构阻塞;参见
docs/engines/SGLANG.md)。 - 不依赖模型:目前为 Qwen3.6-27B 及其同类提供精选配置;随着添加更多模型,结构可扩展。
- 通用
pull(v0.8.0,v0.8.2 扩展)——评估任何 safetensors HF 仓库,获得诚实的一行适配判断(--recommend),当 pull 硬阻塞时,在用户同意后发送经过编辑的诊断(--submit-last)。每个版本扩大架构覆盖范围。详见docs/PULL.md
刚接触本地 AI? → docs/LOCAL_AI_PRIMER.md——通俗英语:硬件 / 引擎 / 模型大小 / 量化如何配合。
新来的? → docs/GETTING_STARTED.md——5 分钟从克隆到 curl 的路径。
已在运行,想比较引擎? → docs/engines/
选择引擎(vLLM / llama.cpp / ik_llama)? → docs/INFERENCE_ENGINES.md
对量化名称困惑(Q4_K_M vs IQ4_KS vs AWQ)? → docs/QUANTIZATION.md
硬件问题(4090、NVLink、功率上限)? → docs/HARDWARE.md
不知道 TPS / KV / MTP 是什么意思? → docs/GLOSSARY.md
选择你的路径
| 你的设备 | 从这里开始 |
|---|---|
| 1× RTX 3090 | docs/SINGLE_CARD.md——工作负载 → 配置 → 快速开始 |
| 2× RTX 3090(PCIe / NVLink 自动检测) | docs/DUAL_CARD.md——工作负载 → 配置 → 快速开始 |
| 3 张及以上 GPU(任意等级——4× 3090、8× A6000、混合) | docs/MULTI_CARD.md——TP 扩展计算、从 dual.yml 推导、有效 TP 值 |
| 不在支持列表中的模型 / 任何 HF safetensors 仓库 | docs/PULL.md——通用 pull 流程:根据 KV 数学评估,诚实告知置信度 |
| 考虑自托管与云 API | docs/COMPARISONS.md——成本交叉点 + 各自优势场景 |
每个硬件页面都列出了每个支持的模型及其在对应卡数下的可工作组合,以及实测 TPS 和按工作负载划分的陷阱。模型特定的深入探讨(量化、Genesis 补丁、引擎内部)位于 models/<模型名称>/ 下。
支持的模型
| 模型 | 状态 | 卡数 | 引擎 | 亮点 |
|---|---|---|---|---|
| Qwen3.6-27B | 生产就绪 ⭐ | 1× / 2× 3090 | vLLM ✅ · llama.cpp ✅ · ik_llama ✅ | 视觉 · 工具 · MTP n=3 · 最高 262K 上下文 · vLLM 双卡 = 89/127 TPS · llama.cpp 单卡 = 200K 最大安全,无预填充悬崖 · ik_llama IQ4_KS = ~60/69 TPS(最快单卡) |
| Gemma 4 31B | 生产就绪 | 1× 1 / 2× 3090 | vLLM ✅(双卡)· llama.cpp ⚠️(社区分支;主线因 FA hdim=512 阻塞) | 视觉 · 工具 · MTP n=3(Google 官方起草器)或 DFlash n=7(z-lab 起草器)· 通过 INT8 PTH KV 最高 262K 上下文(内置 PR #40391 (https://github.com/vllm-project/vllm/pull/40391))· MTP 双卡 = 106/141 TPS @ 32K,95/126 @ 262K · DFlash 双卡 = 105/177 TPS @ 32K(代码优先)· beellama.cpp = 单卡默认 ⭐ 47/88 TPS,131–200K 上下文,109–114/150 8 包(讨论 #239 (https://github.com/noonghunna/club-3090/discussions/239)) |
| Qwen3.6 35B-A3B | 生产就绪(ik-llama 单卡 · vLLM 双卡) | 1× / 2× 3090 | vLLM ✅ · ik_llama ✅ · llama.cpp ✅(主线可运行——参见 docs/HARDWARE.md;ik_llama 是提供的单卡路径) | MoE(256 专家 × 8 活跃,~3 B 活跃参数) · 视觉 · 工具 · ik_llama fit-mtp.yml 单卡(Mudler APEX I-Compact) = 103/149 TPS @ 196K,hermes 11/20 + aider 12/30 + cli 12/40(PR #243 (https://github.com/noonghunna/club-3090/pull/243))· ik_llama byteshape-iq4xs 单卡 = 113/129 TPS @ 完整 262K,110/150 8 包(PR #293 (https://github.com/noonghunna/club-3090/pull/293))· vLLM 双卡 = 178/174 TPS @ 262K + 视觉(v0.22.0 稳定;MTP 在该 MoE 上 TP=2 时净负收益) |
| Gemma 4 26B-A4B | 通过 AWQ 生产就绪(Intel AutoRound INT4 在 Ampere 上阻塞) | 2× 3090 2 | vLLM ✅(AWQ 覆盖)· llama.cpp ❌ | MoE(128 专家 × 8 活跃,~4 B 活跃参数) · 视觉 · 工具 · AWQ 双卡 = 139/139 TPS @ 32K,CV 0.2% / 0.0% |
1 单卡 Gemma 4 在 Ampere 24 GB 上:vLLM + 主线 llama.cpp 被阻塞(head_dim=512 FA 墙,尚无 Ampere FA 内核)。社区 beellama.cpp 分支以 FA_ALL_QUANTS=ON 构建,在单张 3090 上运行良好——47/88 TPS,100–150K 上下文,109/114 8 包(2026-05-27 验证)。32 GB+ GPU 可运行标准 vLLM 路径(由 @apnar 在 RTX 5090 32 GB 上验证 (https://github.com/noonghunna/club-3090/discussions/67#discussioncomment-16832042))。 | ||||
| 2 Gemma 4 26B-A4B 单卡尚未在 Ampere 上测试;在适度上下文中应适合 24 GB 3090,但目前配置仅为双卡。 |
更多模型即将推出——它们将按照相同的内部模式放入 models/<模型名称>/ 下。
实测 TPS 概览
Qwen3.6-27B TPS 按配置划分
基准测试协议:3 次预热 + 5 次实测运行。方法详见 scripts/bench.sh。各配置详情 + 逐次运行数据 + 显存 + AL/接受率:见 models/qwen3.6-27b/CHANGELOG.md。
基准测试
在您自己的机器上复现上述数据。所有基准测试针对 当前正在运行 的组合(先通过 launch.sh 启动一个)。
吞吐量(TPS)——标准叙事 + 代码基准测试(每次提示 3 次预热 + 5 次实测):
bash scripts/bench.sh
行为质量——工具调用正确性、指令遵循、结构化输出等,通过 benchlocal-cli 进行:
bash scripts/quality-test.sh # --medium: 5 个包(默认,约 15-25 分钟,无需 Docker)
bash scripts/quality-test.sh --quick # 2 个包(约 5-10 分钟,无需 Docker)
bash scripts/quality-test.sh --full # 8 个包 / 150 场景(约 25-40 分钟,需要 Docker)
bash scripts/quality-test.sh --pack aider-polyglot-30 # 单个命名包
bash scripts/quality-test.sh --reasoning # HE+/LCB/GPQA(受限)/GSM 推理套件——与 --full 分开;代码包需要 Docker
完整重新基准测试(一个模型,全部内容)——标准 5 步流程(bench → verify-stress → quality-test --full → soak → aider-polyglot-30),每轮约 1.75-2 小时。所有产物输出至 results/rebench/<日期>/:
bash scripts/rebench-full.sh # 从 MODEL 自动生成标签
bash scripts/rebench-full.sh --tag qwen-int8 # 显式标签
bash scripts/rebench-full.sh --skip soak,aider # 跳过阶段(CSV)
bash scripts/rebench-full.sh --resume # 恢复中断的运行(跳过已完成的步骤)
# 端点优先模式(非 Docker 引擎:llama-swap、ramalama、原生 llama-server 等):
bash scripts/rebench-full.sh \
--url http://HOST:PORT --model 'MODEL-NAME' --engine llama-cpp # vllm|llama-cpp|sglang|other
对不同的模型运行两次 rebench-full.sh,即可组装出匹配配置的对比测试。完整测试流水线参考:docs/QUALITY_TEST.md。
诊断
当提交 bug、分享跨设备数据或回复排查线程时,生成一份可供粘贴的排查报告——它会以 Markdown 格式捕获硬件、操作系统、GPU、容器运行时、栈版本和活动容器状态。默认会编辑主目录路径、主机名、用户名和 HF 令牌,因此可以安全地粘贴到公开 issue 或讨论中。
# 快速报告(~2 秒)——硬件 + 栈 + 启动日志要点
bash scripts/report.sh
# 捕获完整的跨设备检查至文件,准备粘贴到 issue/讨论中
# (约 35 分钟——若只需硬件信息,使用 --full 可改为约 2 秒的硬件捕获)
bash scripts/report.sh --full > my-rig.md
# 添加实时测试输出(选择线程需要的内容):
bash scripts/report.sh --verify # + verify-full.sh(~1-2 分钟)
bash scripts/report.sh --stress # + verify-stress.sh 7/7(~5-10 分钟)
bash scripts/report.sh --soak # + 持续浸泡(~25 分钟)——捕获 Cliff 2b
bash scripts/report.sh --bench # + bench.sh TPS(~3 分钟)
bash scripts/report.sh --full # 以上全部——标准的“一切”跨设备检查(约 35 分钟)
# 仅限内部共享(禁用编辑):
bash scripts/report.sh --no-redact
--soak 是单独标志,因为一种配置可能通过 verify + stress + bench 测试,但仍会在多轮持续浸泡中失败(约 25K 累积令牌时出现 Cliff 2b)——浸没测试是目前唯一能捕获该代理工作负载故障模式的测试。参见 docs/CLIFFS.md。
如果 launch.sh / switch.sh 无法启动——直接加载 compose
启动脚本在启动前会进行预检(硬件 / 空闲显存检查)、.env 解析以及由 Python 驱动的变体→compose 注册表。如果其中任何一个出错——误报预检失败、Windows 上的 CRLF/.env 问题或缺少 PyYAML——绕过它们,直接使用普通 Docker 启动 compose。两个升级步骤(假设您已下载权重——快速开始步骤 2):
# 1. 仅跳过硬件 / 空闲显存预检(保留 .env + 注册表):
bash scripts/switch.sh --force llamacpp/default
# 2. 完全绕过脚本——直接使用 Docker 启动 compose 文件。
# 将 MODEL_DIR 设置为权重所在的路径;-f 指向 compose 文件。
# 布局:models/<模型名称>/<变体名>/compose.yml
# 示例:
相似文章
@ItsmeAjayKV: 成就解锁:得益于RTX 3090,现在我可以运行Qwen3.6-27b密集模型。正在运行 @Alibaba_Qwen Qwen 3…
用户使用llama.cpp在RTX 3090上对Qwen3.6-27B进行基准测试,实现了35 tok/s的生成速度和1247 tok/s的提示处理速度。
@malikwas1f: Ornith-1.0-35B:一个Qwen3.6-35B-A3B的编码微调版本,在真实编码上略优于基础模型(aider 15/30 vs 13)——完整262K…
宣布Ornith-1.0-35B,一个Qwen3.6-35B-A3B的编码微调版本,在aider基准测试上略优于基础模型。同时推广用于在RTX 3090上运行LLM的club-3090仓库。
@witcheer:这是我测量到的第一个能提升实际Bug修复的Qwen3.6-27B编码调优(!!!)。 - 质量(MMLU/ARC/HellaS…)
一个Qwen3.6-27B的社区微调在SWE-bench上提升了实际Bug修复能力,同时保持了质量,这与导致退化的合成蒸馏不同。
试了 Qwen3.6-27B-UD-Q6_K_XL.gguf 配 CloudeCode,真不敢相信居然能用
用户报告称,在 RTX 5090 本地运行 Qwen3-27B-UD-Q6_K_XL.gguf,200K 上下文速度约 50 tok/s,编码表现出乎意料地可用,标志着本地模型质量大幅跃升。
@tunguz: 看到这些推文后,我决定在我那台装有 RTX 1070 GPU 的老旧 Ubuntu 电脑上试试(就是那台我刚刚……
一位用户报告成功在较老的 RTX 1070 GPU 上本地运行 Qwen3 8B,展示了现代大语言模型在十年前的硬件上也能表现出不错的性能。