立即体验

PLATFORM · 2026年3月3日

Hugging Face Skills + VOLCENGING(4090/A800/H20…)Qwen3.5 远程开发与大模型实战

手把手教你用 Cursor IDE 通过 SSH 连接 VOLCENGING 云主机(4090/A800/H20 等多机型),配合 Hugging Face Skills 生态完成 Qwen3.5 的下载、推理、微调与 Demo 部署。包含 GitHub/Hugging Face 下载加速、端口转发、vLLM/Ollama、QLoRA 微调与上云发布。

PLATFORM平台动态 21 分钟读完约 10,733 字
Hugging Face Skills + VOLCENGING(4090/A800/H20…)Qwen3.5 远程开发与大模型实战

为什么是这套组合?

作为 AI 开发者,你大概率遇到过这些痛点:

痛点

传统方案

本文方案

本地没有 GPU

买一张 4090(约 ¥12,000–¥16,000,随行情波动)

VOLCENGING 按秒计费按需租用

环境配置地狱

花半天装 CUDA/cuDNN/PyTorch

云主机预装深度学习镜像,开机即用

终端来回切换

SSH + 本地 IDE 分离

Cursor/Claude Code SSH 直连,编辑器即云端

记不住 HF CLI 命令

查文档、复制粘贴

HF Skills 让 AI 助手帮你执行

模型训练流程复杂

手写训练脚本 + 调参

Skills 模板 + 自然语言指令

这套组合的核心理念:让开发者的注意力回到模型和业务本身,环境、算力、工具链全部自动化。

先选对 GPU:4090 / 5090 / L40S / A800 / H20…怎么选?

VOLCENGING 不只有 4090。面对“大模型任务”(更大参数、更长上下文、更多并发、训练/微调),显存容量往往比“算力峰值”更关键:显存决定你能不能把模型(含 KV Cache、LoRA 权重、优化器状态等)稳稳放进去。

下面这张表直接摘取自 VOLCENGING 公开定价(按秒计费,随时开关机)作为选型参考(以云主机为例):VOLCENGING 定价页 (定价页。)

机型

显存

价格(元/时)

更适合什么任务

4090 × 1

24G

1.68

4-bit 推理、轻量 LoRA、Gradio Demo、开发调试

5090 × 1

32G

2.5

32G 显存更从容:更长上下文/更大 batch 的推理

L20 × 1

48G

3.59

更大显存的推理/微调,性价比路线

L40 × 1

48G

3.15

48G 推理更稳,吞吐与显存平衡

L40S × 1

48G

4.49

更强推理吞吐 + 48G 显存(偏推理/服务)

A800 × 1

80G

5.99

大模型推理、长上下文、LoRA/QLoRA 更稳(显存是王道)

H20 × 1

96G

6.88

超大显存单卡:大模型推理、长上下文、并发更舒服

H800 × 1

80G

16.88

对极致训练/推理性能有需求的重任务

910B × 1

64G

3.69

特定生态/国产算力场景(看框架兼容性)

一页决策(给赶时间的人):

  • 只想把 Qwen3.5 跑起来(推理 + Demo):优先 4090×1,不够再上 5090×1 或 L40S×1。
  • 你在追求“稳定不炸显存 + 更长上下文/更大并发”:直接上 L40S×1(48G)或 H20×1(96G)。
  • 你要跑更大的 Qwen3.5(例如 122B/397B)或更激进的训练/微调:优先考虑 A800×1(80G)/H20×1(96G),或多卡(比如 4090×2/×4/×8)。

备注:本文以 Qwen3.5-35B-A3B 为例(单卡 4090 量化后可跑)。如果你要把上下文开到很大、并发开很多、或跑更大模型,A800/H20 会更省心。

2.1 一分钟理解显存:权重、KV Cache、并发三件套

大模型推理/服务是否“跑得稳”,通常取决于你有没有把 三块显存账单同时算清:

  • 权重(Weights):模型参数本体。量化(4-bit / 8-bit / FP8)主要就是在这里省显存。
  • KV Cache:注意力缓存,跟上下文长度与并发数(同时在跑的会话数)强相关。长上下文/高并发最容易把 KV Cache 撑爆。
  • 额外开销:框架开销、分词器缓存、激活、以及一些运行时 buffer。

一个非常实用的经验:

  • 权重不爆 ≠ 一定跑得起来:你可能能加载模型,但一开长上下文/一开并发,KV Cache 立刻 OOM。
  • 把上下文从 128K 降到 32K,往往比“换更大 GPU”更快见效(尤其单卡)。

2.2 Qwen3.5 选型到机型:从 35B 到 397B 怎么落到硬件

把“模型尺寸”映射到“机器选择”,可以按下面的优先级做决策:

  1. 先确定目标:推理/服务 还是 微调/训练?

    • 推理/服务:更看重 显存 + 吞吐(并发、上下文、批处理)
    • 微调:更看重 显存 + 稳定性(梯度、优化器、checkpoint)
  2. 再确定上下文与并发目标

    • 单用户体验:并发低,但可能追求长上下文
    • API 服务:并发高,通常需要控制上下文、做队列与限流

一个更贴近实战的落地建议(不追求“理论最优”,追求“少踩坑”):

  • Qwen3.5-35B-A3B(本文主角)

    • 单卡入门:4090×1(24G)跑 4-bit 推理 + 控制上下文(例如 8K–32K)
    • 更稳的服务:L40S×1(48G)或 H20×1(96G),在长上下文与并发上余量更大
  • Qwen3.5-122B-A10B / Qwen3.5-397B-A17B(更大模型)

    • 这类模型通常天然倾向多卡(尤其想要“服务级”吞吐与长上下文时)
    • 单卡 A800/H20 可能能做“研究/尝试”(强依赖量化、上下文/并发收敛),但要做稳定服务,通常需要多卡或更激进的工程化(例如分片、限流、缓存策略)

关于 MoE 的一个常见误区:推理时只激活部分专家,不代表显存只需要“激活参数”那点。多数框架仍然需要把大量权重常驻在 GPU/内存中;想把“大 MoE”跑得又稳又快,往往还是要靠 更多显存/多卡并行。

认识三个主角

3.1 Qwen3.5:2026 开年最强开源模型

2026 年 2 月 16 日,阿里云通义团队发布 Qwen3.5 系列,这是目前开源社区最具竞争力的多模态大语言模型之一。

核心亮点:

  • 统一视觉 - 语言基础:在万亿级多模态 token 上早期融合训练,文本和图像理解一体化
  • 高效混合架构:Gated Delta Networks + 稀疏 MoE(Mixture-of-Experts),推理速度快、延迟低
  • 可扩展的强化学习:在百万级 Agent 环境上做了 RL 泛化训练
  • 201 种语言和方言:全球最广泛的语言覆盖
  • Apache 2.0 开源协议:商用无忧

模型矩阵(截至 2026-02-27):

本文主角:Qwen3.5-35B-A3B——35B 总参数、每次推理只激活 3B,性价比之王,单张 4090 量化后可跑。

关于 MoE 的通俗理解:想象一个有 35 个”专家”的团队,每次回答问题只派出 3 个最合适的专家。这意味着你获得了 35B 级别的知识储备,但只需要 3B 的计算开销。这就是为什么 Qwen3.5-35B-A3B 能在 4090 上流畅运行。

3.2 VOLCENGING:按秒计费的多 GPU 云主机(4090/A800/H20…)

VOLCENGING 是一家 2023 年成立于清华的算力平台,获奇绩创坛投资。核心卖点:便宜、灵活、预装好环境。

它覆盖从“开发/推理常用的 4090/5090/L40S”,到“更适合大模型任务的 A800/H20/H800”等多个机型。完整价格与规格请以 定价页 (定价页) 为准。

关键特性:

  • 按秒计费:不用时关机即停止计费,约 ¥0.000467/秒
  • 关机保存:环境持久化,下次开机接着用
  • 预装镜像:CUDA、PyTorch、Jupyter、Code Server 开箱即用
  • SSH 支持:可直接 SSH 连接,兼容 VSCode / Cursor Remote
  • 共享存储卷:跨机器的持久存储,数据不丢失
  • 个人开发者计划:最高 1500 元免费算力 + 新手 50 元体验券

3.3 Hugging Face Skills:让编程助手会做 AI

huggingface/skills (https://github.com/huggingface/skills) 是 Hugging Face 官方维护的 AI 编程技能集(7000+ Stars),遵循 Agent Skill (https://agentskills.io) 开放标准。

它解决了什么问题?

传统方式下,你需要记住 hf download、hf upload、datasets.load_dataset() 等各种命令和 API。有了 Skills,你只需要对 Cursor 说自然语言:

传统方式

Skills 方式

hf download Qwen/Qwen3.5-35B-A3B --local-dir ./model

"帮我下载 Qwen3.5-35B-A3B 到本地"

手写 TRL 训练脚本 + 配置参数

"用 SFT 微调 Qwen3.5,数据集用 xxx"

gradio 代码从零写起

"创建一个对话 Demo 展示微调后的模型"

查文档找模型评测方法

"评测一下模型在 MMLU 上的表现"

可用的 9 个 Skills:

技能

说明

典型场景

hugging-face-cli

HF Hub 操作:下载/上传/管理仓库

模型下载、数据集管理

hugging-face-datasets

数据集创建和管理

训练数据准备

hugging-face-model-trainer

TRL 模型训练(SFT/DPO/GRPO)

LoRA 微调、全量微调

hugging-face-jobs

云端 Job 运行

批量推理、数据处理

hugging-face-evaluation

模型评测

Benchmark 评分

hugging-face-trackio

训练实验追踪和可视化

实时监控 Loss 曲线

hugging-face-paper-publisher

研究论文发布

发表模型论文

hugging-face-tool-builder

可复用 API 脚本

自动化流水线

huggingface-gradio

Gradio 应用构建

Demo / 在线推理

Skills 还配套了一个 MCP Server(https://huggingface.co/mcp),可以让 Cursor 直接通过 MCP 协议调用 HF Hub 的搜索、文档查询、Job 提交等能力——不只是”教会”AI 怎么做,而是直接让 AI “动手做”。

架构总览

你的本地 Mac / Windows

├── Cursor IDE

│ ├── HF Skills (AI 技能集)

│ ├── MCP Server (HF Hub API)

│ └── Remote-SSH (远程连接)

│

├── (SSH 端口转发) ──> Hugging Face Hub (模型仓库/数据集/MCP API)

│

└── (SSH 连接) ──> VOLCENGING 云主机 (RTX 4090 × 1)

text
├── CUDA 12.x / PyTorch 2.x / HF CLI


└── Qwen3.5-35B-A3B


    ├── Ollama (推理)


    ├── vLLM (推理)


    ├── LoRA 微调 (TRL/Swift)


    └── Gradio (Demo)

创建 VOLCENGING 云主机

注册并登录 VOLCENGING 控制台 (VOLCENGING 控制台)

点击 创建云主机

配置选择:

配置项

推荐选择

说明

GPU

4090 / 5090 / L40S / A800 / H20

先按任务选显存:推理/轻量微调用 24–48G,大模型/长上下文优先 80–96G

镜像

基础镜像(支持 SSH)

预装 CUDA + PyTorch

系统盘

默认(100GB+)

模型文件较大,建议加大

共享存储卷

建议开通

跨机器持久化,防数据丢失

创建完成后,记下 SSH 信息:

主机:ssh root@xxxx.550c.cloud -p 35012 密码:your_password_here

💡 省钱提示:新用户可领取 50 元体验券,个人开发者可申请最高 1500 元免费算力。跑完实验记得关机——关机后按秒停止计费,环境保留不丢失。

Cursor SSH 连接云主机

Cursor 基于 VSCode 构建,原生支持 Remote-SSH 扩展。

5.1 前置条件

  • macOS / Linux:默认已安装 SSH 客户端
  • Windows:需要开启 设置 → 系统 → 可选功能 → OpenSSH 客户端
  • Cursor 中需要安装 Remote - SSH 扩展(Cursor 通常内置 anysphere.remote-ssh)

5.2 快速连接

  1. 按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows)打开命令面板
  2. 输入 Remote-SSH: Connect to Host
  3. 选择 Add New SSH Host
  4. 输入连接命令: ssh root@xxxx.550c.cloud -p 35012
  5. 选择配置文件存储位置(默认 ~/.ssh/config)
  6. 输入密码完成连接

首次连接时 Cursor 会自动在远程安装 Cursor Server,耐心等待即可。连接成功后,Cursor 的文件浏览器、终端、编辑器全部切换到了远程云主机——感觉就像在本地开发一样。

5.3 配置 SSH Config(推荐)

每次输密码很烦?在本地的 ~/.ssh/config 中添加:

Host volcenging-4090

text
HostName xxxx.550c.cloud


Port 35012


User root


# 可选:免密登录


# IdentityFile ~/.ssh/id_rsa

之后在 Cursor 里直接选择 volcenging-4090 即可连接。

设置免密登录(可选但强烈推荐):

yaml
ssh-keygen -t ed25519 -C "your_email@example.com"


ssh-copy-id -p 35012 root@xxxx.550c.cloud

5.4 SSH 隧道:在本地浏览器访问云端服务

后续我们会在云主机上启动 Gradio、Jupyter 等 Web 服务,需要通过 SSH 隧道将远程端口映射到本地:

yaml
ssh -L 7860:127.0.0.1:7860 root@xxxx.550c.cloud -p 35012


ssh -L 8000:127.0.0.1:8000 root@xxxx.550c.cloud -p 35012


ssh -L 7860:127.0.0.1:7860 -L 8000:127.0.0.1:8000 root@xxxx.550c.cloud -p 35012

映射后,在本地浏览器访问 http://localhost:7860 就能看到云主机上的 Gradio 页面。

下载加速配置:GitHub + Hugging Face(国内网络必备)

在国内网络环境下,拉仓库/下模型经常会遇到超时或速度波动。VOLCENGING 官方文档给了两套“学术用途”的加速方案:

  • GitHub 加速:GitHub 加速配置指南 | VOLCENGING (文档中心)
  • Hugging Face 加速:Hugging Face 加速配置指南 | VOLCENGING (文档中心)

重要说明:两者都依赖第三方公益节点,不承诺 100% 可用、不保证带宽与长期稳定。建议把加速地址做成环境变量/脚本配置,便于后续替换。

6.1 GitHub 加速(HTTPS clone / raw / release)

yaml
git clone https://ghfast.top/https://github.com/huggingface/skills


wget https://ghfast.top/https://raw.githubusercontent.com/huggingface/skills/main/README.md

注意:

  • 不支持 git@github.com:… 这种 SSH 协议克隆
  • 私有仓库需要 PAT(token)并用 HTTPS

6.2 Hugging Face 加速(设置镜像站)

yaml
export HF_ENDPOINT="https://hf-mirror.com"


hf download Qwen/Qwen3.5-35B-A3B --local-dir /root/models/Qwen3.5-35B-A3B


export HF_HUB_DOWNLOAD_TIMEOUT=30

6.3 大仓库更稳:hfd 多线程下载(可选)

如果模型仓库文件特别多,或网络波动明显,可按文档使用 hfd:

yaml
wget -O hfd.sh https://hf-cdn.sufy.com/hfd/hfd.sh
chmod +x hfd.sh
mv hfd.sh /usr/local/bin/hfd
export HF_ENDPOINT="https://hf-mirror.com"
hfd Qwen/Qwen3.5-35B-A3B

6.4 云主机环境初始化

通过 Cursor 连接到云主机后,在终端中执行以下初始化脚本:

bash
#!/bin/bash






nvidia-smi




pip install --upgrade pip




pip install -U huggingface_hub[cli]   # HF CLI
pip install -U transformers           # Transformers
pip install -U datasets               # 数据集工具
pip install -U accelerate             # 加速训练
pip install -U bitsandbytes           # 量化工具
pip install -U peft                   # LoRA / QLoRA
pip install -U trl                    # TRL 训练框架
pip install -U gradio                 # Gradio UI
pip install -U vllm                   # vLLM 推理引擎
pip install -U trackio                # 训练追踪






hf auth login




hf auth whoami




python -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA: {torch.cuda.is_available()}'); print(f'GPU: {torch.cuda.get_device_name(0)}')"

安装 Hugging Face Skills

在 Cursor 中配置 HF Skills 有三种方式,可根据需求选择。

7.1 方式 A:MCP Server 配置(推荐)

MCP(Model Context Protocol)让 Cursor 能直接调用 HF Hub API——搜索文档、查询模型信息、提交训练 Job 等。

在你的项目根目录创建 .mcp.json:

yaml
{
  "mcpServers": {
    "huggingface-skills": {
      "url": "https://huggingface.co/mcp?login"
    }
  }
}

配置完成后,Cursor 的 AI 助手可以通过 MCP 直接调用以下能力:

  • hf_doc_search(“query”) — 搜索 HF 文档
  • hf_doc_fetch(“url”) — 获取指定文档内容
  • hf_whoami() — 查看当前登录用户
  • hf_jobs() — 提交云端 Job
  • hf_space_*() — 管理 HF Spaces

7.2 方式 B:Skills 目录安装

将 Skills 克隆到云主机,然后在项目中引用:

7.3克隆 HF Skills 仓库

yaml
cd /root
git clone https://github.com/huggingface/skills.git hf-skills

7.4在你的项目中创建软链接

bash
cd /root/my-project
mkdir -p .cursor/skills
ln -s /root/hf-skills/skills/hugging-face-cli .cursor/skills/hugging-face-cli
ln -s /root/hf-skills/skills/hugging-face-model-trainer .cursor/skills/hugging-face-model-trainer
ln -s /root/hf-skills/skills/huggingface-gradio .cursor/skills/huggingface-gradio

按需链接更多 skills

7.5 方式 C:AGENTS.md 万能回退

如果你的编程代理不支持 Skills 格式(比如某些旧版 IDE),HF Skills 仓库还提供了 agents/AGENTS.md——一个合并了所有技能指令的文档,任何代理都能读取:

yaml
cp /root/hf-skills/agents/AGENTS.md /root/my-project/AGENTS.md

三种方式可以叠加使用:MCP 提供实时 API 能力,Skills 目录提供详细的操作指南和模板脚本,AGENTS.md 作为兜底。

用 HF CLI 下载 Qwen3.5

8.1 Qwen3.5 模型选型指南

根据你的 4090(24GB 显存)和使用场景选择:

场景

推荐模型

量化

显存占用

说明

日常推理/对话

Qwen3.5-35B-A3B

Q4 (4-bit)

~22GB

MoE 架构,性价比之王

轻量推理/嵌入场景

Qwen3.5-27B

Q4 (4-bit)

~17GB

Dense 架构,还有显存余量

LoRA 微调

Qwen3.5-27B

Q4 + LoRA

~20GB

Dense 模型微调更成熟

多模态(图 + 文)

Qwen3.5-35B-A3B

Q4 (4-bit)

~22GB

原生视觉 - 语言能力

生产部署

Qwen3.5-35B-A3B-FP8

FP8

~36GB

需要 2×4090

8.2 下载模型

方式一:HF CLI 直接下载

yaml
hf download Qwen/Qwen3.5-35B-A3B --local-dir /root/models/Qwen3.5-35B-A3B


hf download Qwen/Qwen3.5-35B-A3B
  --include ".safetensors" ".json" "*.txt"
  --local-dir /root/models/Qwen3.5-35B-A3B




curl -fsSL https://ollama.com/install.sh | sh


ollama pull qwen3.5:35b




hf download Qwen/Qwen3.5-35B-A3B-GGUF
  --include "Q4_K_M"
  --local-dir /root/models/Qwen3.5-35B-A3B-GGUF


pip install modelscope
modelscope download Qwen/Qwen3.5-35B-A3B --local_dir /root/models/Qwen3.5-35B-A3B

Qwen3.5 推理部署

9.1 方案 A:Ollama 一键部署(最简单)

适合:快速体验、个人使用、原型开发。

py
ollama run qwen3.5:35b




import requests
response = requests.post("http://localhost:11434/v1/chat/completions", json={
    "model": "qwen3.5:35b",
    "messages": [
        {"role": "system", "content": "你是一个有帮助的 AI 助手。"},
        {"role": "user", "content": "解释一下什么是 Mixture of Experts 架构?"}
    ]
})
print(response.json()["choices"][0]["message"]["content"])

9.2 方案 B:vLLM 生产级部署

适合:高吞吐量推理、多用户并发、API 服务。

bash
vllm serve Qwen/Qwen3.5-35B-A3B
  --port 8000
  --max-model-len 32768
  --gpu-memory-utilization 0.90
  --quantization awq
  --reasoning-parser qwen3












from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="any")
response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=[
        {"role": "system", "content": "你是一个专业的 AI 编程助手。"},
        {"role": "user", "content": "用 Python 写一个快速排序,要求支持自定义比较函数。"}
    ],
    temperature=0.7,
    max_tokens=2048
)
print(response.choices[0].message.content)

9.3 方案 C:Transformers 原生推理

适合:研究、自定义推理逻辑、需要细粒度控制。

py
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_name = "Qwen/Qwen3.5-35B-A3B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.bfloat16,
    device_map="auto",
    load_in_4bit=True,  # 4-bit 量化以适应 24GB 显存
)
messages = [
    {"role": "system", "content": "你是 Qwen,由阿里云开发的 AI 助手。"},
    {"role": "user", "content": "请用简洁的语言解释 Transformer 中的注意力机制。"}
]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
output = model.generate(
    **inputs,
    max_new_tokens=1024,
    temperature=0.7,
    top_p=0.9,
    do_sample=True
)
generated = tokenizer.decode(output[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
print(generated)

9.4 大模型上 A800/H20:122B/397B 的部署思路与多卡模板

如果你要把 Qwen3.5 的更大版本(例如 122B-A10B、397B-A17B)用于推理/服务,建议先用下面这个“工程化视角”来规划:先把风险点摊开,再选机器/参数。

三个关键问题:

  1. 权重能否装下?(模型本体 + 运行时开销)
  2. KV Cache 能否扛住目标上下文与并发?
  3. 吞吐是否达标?(否则会出现“跑得起来但很慢”)

9.4.1 在 VOLCENGING 上怎么选:单卡大显存 vs 多卡并行

  • 单卡大显存(A800 80G / H20 96G)

    • 优点:部署简单、调参少、长上下文更有余量
    • 风险:遇到更大权重时,仍可能需要量化/压缩;并发过高仍会被 KV Cache 限制
  • 多卡并行(例如 4090×2/×4/×8)

    • 优点:总显存更大、吞吐更强,适合服务化
    • 风险:需要正确配置 tensor parallel,以及更关注网络/拓扑与 batch 策略

VOLCENGING 的多卡 4090 机型在定价页有明确规格与价格,可作为多卡部署的直接选择:VOLCENGING 定价页 (定价页。)

9.4.2 vLLM 多卡部署模板(OpenAI 兼容 API)

下面给出一个“多卡通用模板”。核心是让 —tensor-parallel-size 等于 GPU 数:

例:4 卡机(把 tp 设为 4)

bash
vllm serve Qwen/Qwen3.5-35B-A3B
  --port 8000
  --tensor-parallel-size 4
  --max-model-len 32768
  --gpu-memory-utilization 0.92
  --quantization awq
  --reasoning-parser qwen3

如果是 8 卡,把 —tensor-parallel-size 改成 8 即可。对更大模型(122B/397B),你通常也会从“增加卡数 + 收敛上下文/并发”开始。

9.4.3 单卡 A800/H20 的“先跑起来”策略

如果你在单卡 A800/H20 上尝试 122B/397B,更推荐先按“可控变量”逐步加压:

  • 第一步:先用短上下文跑通(例如 8K 或 16K)
  • 第二步:再提升上下文(例如到 32K),观察吞吐与显存曲线
  • 第三步:最后再开并发(逐步增加并发而不是一步拉满)

如果你希望在单卡上尽可能增加成功率,优先尝试:

  • 更激进的量化(例如 8-bit/4-bit)来降低权重压力
  • 降低 max-model-len 与 降低并发(见 11.5 的 OOM 清单)

现实建议:如果你的目标是“稳定服务 + 真实并发 + 较长上下文”,更大模型大概率会更偏向 多卡 方案;单卡大显存适合作为“开发/研究/探索”的高确定性环境。

9.5 长上下文与并发调参清单(OOM 速查)

当遇到显存不足(OOM)或吞吐不稳时,可以按下面的顺序处理:

9.5.1 先救命:把 KV Cache 压下来

  • 降低上下文长度:把 —max-model-len 从 128K/64K 降到 32K/16K/8K

  • 降低并发:限制同时处理的会话数

    • vLLM 里可以通过控制客户端并发、队列、以及服务端并发相关参数(例如 —max-num-seqs)来实现
  • 降低单次 batch 的 token 数(吞吐会下降但更稳)

    • 可以通过设置 —max-num-batched-tokens 来避免瞬时 token 峰值

9.5.2 再优化:把权重压力降下来

  • 换量化:AWQ / GPTQ / 4-bit 等(不同模型支持度不一样,优先用社区常用方案)
  • 降低精度:例如从 FP16/BF16 走 FP8(前提是你拿到 FP8 权重或框架支持)

9.5.3 最后才考虑:增加硬件

  • 单卡不够:从 4090×1 → 5090×1/L40S×1,或直接 A800×1/H20×1
  • 大模型服务:从单卡升级为多卡,并配置 tensor parallel

用 HF Skills 微调 Qwen3.5

HF Skills 的 model-trainer 技能提供了完整的训练模板。以下演示如何在 4090 上对 Qwen3.5-27B 做 LoRA 微调(27B Dense 模型更适合微调场景)。

10.1 准备训练数据集

数据集需要是标准的对话格式。你可以使用 HF Hub 上现有的数据集,或者自己创建:

prepare_dataset.py

py
from datasets import Dataset
data = [
    {
        "messages": [
            {"role": "system", "content": "你是一位VOLCENGING的技术客服。"},
            {"role": "user", "content": "4090 单卡能跑多大的模型?"},
            {"role": "assistant", "content": "RTX 4090 拥有 24GB 显存。在 4-bit 量化下,可以运行约 35B 参数的模型(如 Qwen3.5-35B-A3B)。全精度下最大约 13B 参数。如果使用 LoRA 微调,24GB 显存可以微调约 7-13B 的模型。"}
        ]
    },
    {
        "messages": [
            {"role": "system", "content": "你是一位VOLCENGING的技术客服。"},
            {"role": "user", "content": "关机后数据会丢失吗?"},
            {"role": "assistant", "content": "不会。VOLCENGING的云主机支持关机保存,系统盘和数据盘在关机期间会持久化保留。不过为了数据安全,建议将重要数据备份到共享存储卷,因为本地 SSD 没有冗余设计。"}
        ]
    },
    # ... 更多训练数据,实际建议 500-5000 条
]
dataset = Dataset.from_list(data)
dataset.push_to_hub("your-username/gongji-customer-service-dataset")
print(f"数据集上传完成,共 {len(dataset)} 条")

10.2 LoRA 微调脚本

py
train_lora.py
import torch
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from peft import LoraConfig, get_peft_model, prepare_model_for_kbit_training
from trl import SFTTrainer, SFTConfig
model_name = "Qwen/Qwen3.5-27B"
dataset_name = "your-username/gongji-customer-service-dataset"

4-bit 量化配置(QLoRA)

bash
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16,
    bnb_4bit_use_double_quant=True,
)
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    device_map="auto",
    trust_remote_code=True,
)
model = prepare_model_for_kbit_training(model)

LoRA 配置

py
lora_config = LoraConfig(
    r=16,                      # LoRA 秩
    lora_alpha=32,             # 缩放因子
    target_modules=["q_proj", "k_proj", "v_proj", "o_proj",
                    "gate_proj", "up_proj", "down_proj"],
    lora_dropout=0.05,
    bias="none",
    task_type="CAUSAL_LM",
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

预期输出:trainable params: ~50M || all params: ~27B || trainable%: ~0.19%

dataset = load_dataset(dataset_name, split=“train”)

10.3 训练配置

py
training_args = SFTConfig(
    output_dir="./qwen35-lora-output",
    num_train_epochs=3,
    per_device_train_batch_size=1,
    gradient_accumulation_steps=8,      # 有效 batch_size = 8
    learning_rate=2e-4,
    lr_scheduler_type="cosine",
    warmup_ratio=0.1,
    logging_steps=10,
    save_steps=100,
    save_total_limit=3,
    bf16=True,                          # 4090 支持 BF16
    gradient_checkpointing=True,        # 省显存
    max_seq_length=2048,
    push_to_hub=True,
    hub_model_id="your-username/qwen35-27b-gongji-lora",
    report_to="none",
)
trainer = SFTTrainer(
    model=model,
    args=training_args,
    train_dataset=dataset,
    processing_class=tokenizer,
)
trainer.train()
trainer.push_to_hub()
print("训练完成!模型已上传到 Hugging Face Hub")

显存占用估算:

  • 模型(4-bit):~17GB
  • LoRA 参数:~0.2GB
  • 优化器状态:~1GB
  • 梯度 + 激活值(gradient checkpointing):~4GB
  • 总计:~22GB — 4090 的 24GB 足够

10.4 用 Trackio 监控训练

HF Skills 的 trackio 技能可以实时追踪训练指标:

py
import trackio


trackio.init(
    project="qwen35-finetune",
    run="lora-v1",
    hf_space="your-username/training-dashboard"
)




from transformers import TrainerCallback
class TrackioCallback(TrainerCallback):
    def on_log(self, args, state, control, logs=None, **kwargs):
        if logs:
            trackio.log(logs, step=state.global_step)


trainer = SFTTrainer(
    ...,
    callbacks=[TrackioCallback()],
)

构建 Gradio Demo

使用 HF Skills 的 gradio 技能,可以快速创建一个对话 Demo:

app.py

py
import gradio as gr
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="any")
def chat(message, history):
    messages = [{"role": "system", "content": "你是一位友好的 AI 助手,由 Qwen3.5 驱动,运行在VOLCENGING的 4090 云主机上。"}]
    for h in history:
        messages.append({"role": "user", "content": h[0]})
        if h[1]:
            messages.append({"role": "assistant", "content": h[1]})
    messages.append({"role": "user", "content": message})
response = client.chat.completions.create(
    model="Qwen/Qwen3.5-35B-A3B",
    messages=messages,
    temperature=0.7,
    max_tokens=2048,
    stream=True
)


partial = ""
for chunk in response:
    if chunk.choices[0].delta.content:
        partial += chunk.choices[0].delta.content
        yield partial
demo = gr.ChatInterface(
    fn=chat,
    title="Qwen3.5 on VOLCENGING 4090",
    description="Qwen3.5-35B-A3B | RTX 4090 24GB | VOLCENGING ¥1.68/时",
    examples=[
        "解释一下 Mixture of Experts 架构",
        "用 Python 实现一个简单的 RAG 系统",
        "帮我写一首七言绝句,主题是深夜 coding",
    ],
    theme=gr.themes.Soft()
)
demo.launch(server_name="0.0.0.0", server_port=7860)

启动后,通过 SSH 隧道在本地浏览器访问 http://localhost:7860。


模型上传到 Hugging Face Hub

训练完成后,用 HF CLI 将模型和 Demo 上传:

bash
hf upload your-username/qwen35-27b-gongji-lora ./qwen35-lora-output .
  --commit-message="Upload LoRA weights for Qwen3.5-27B fine-tuned on customer service data"


hf upload your-username/qwen35-27b-gongji-lora ./README.md README.md


hf repo tag create your-username/qwen35-27b-gongji-lora v1.0


hf repo create your-username/qwen35-demo --repo-type space --space_sdk gradio
hf upload your-username/qwen35-demo . . --repo-type space

成本核算:租用 vs 自购,怎么算更合理?

以下是一次完整的”下载→推理→微调→部署”全流程的预估成本:

阶段

耗时

VOLCENGING 费用

说明

环境初始化

~15 分钟

¥0.42

安装依赖、登录 HF

模型下载

~20 分钟

¥0.56

70GB 模型文件

推理测试

~30 分钟

¥0.84

调试、验证输出

LoRA 微调(1000 条数据)

~2 小时

¥3.36

3 个 epoch

Gradio Demo 调试

~30 分钟

¥0.84

前端调试

模型上传

~10 分钟

¥0.28

上传到 Hub

合计

~4 小时

~¥6.30

一个更贴近现实的对比:4090 自购价格会随渠道/供需波动(常见区间约 ¥12,000–¥16,000)。按 4090×1 的 ¥1.68/时估算,回本小时数约为:

  • 12,000 / 1.68 ≈ 7,143 小时
  • 16,000 / 1.68 ≈ 9,524 小时

也就是连续跑 297–397 天 才可能“追平”硬件成本(还没算电费、折旧、故障与时间成本)。对大多数需要“按需用 GPU”的团队/个人,云端按秒计费更容易把成本控制在可接受范围内。

九大 HF Skills 速查表

你想做什么

对 Cursor 说

对应 Skill

下载模型

"下载 Qwen3.5-35B-A3B 到 /root/models"

hugging-face-cli

上传数据集

"把 ./data 目录上传为 HF 数据集"

hugging-face-datasets

SFT 微调

"用 SFT 在这个数据集上微调 Qwen3.5"

hugging-face-model-trainer

DPO 对齐

"用 DPO 做偏好对齐训练"

hugging-face-model-trainer

跑批量推理

"在 HF Jobs 上批量推理 1 万条数据"

hugging-face-jobs

评测模型

"评测微调模型在 MMLU 上的得分"

hugging-face-evaluation

监控训练

"设置 Trackio 追踪训练过程"

hugging-face-trackio

创建 Demo

"用 Gradio 创建一个对话 Demo"

huggingface-gradio

发布论文

"在 Hub 上发布这个模型的论文页"

hugging-face-paper-publisher

14.1 常见问题 FAQ

14.2 Cursor 连接 VOLCENGING 主机时一直断开怎么办?

A:可能原因:

  • 网络不稳定:在 SSH Config 中添加 ServerAliveInterval 60 保持连接
  • Cursor Server 安装失败:确保云主机有 wget 和 nodejs 20+
  • 防火墙问题:确认安全组开放了 SSH 端口
bash
Host gongji-4090
    HostName xxxx.550c.cloud
    Port 35012
    User root
    ServerAliveInterval 60
    ServerAliveCountMax 3

14.3 4090 显存不够跑 Qwen3.5-35B-A3B 怎么办?

A:三个方案:

  1. 使用更激进的量化(Q3 而非 Q4),显存降至约 18GB
  2. 减小 max-model-len(上下文长度),例如设为 8192
  3. 升级到 2×4090 配置(共 48GB 显存,¥3.36/时),可以跑 FP8 版本

17.3 HF Skills 的 Jobs 和直接在云主机上跑有什么区别?

A:

  • HF Jobs:在 Hugging Face 的基础设施上运行,需要 Pro/Team/Enterprise 付费账户,适合不想自己管 GPU 的场景
  • VOLCENGING 直接跑:你已经有了 4090,直接用就行,省去 HF Jobs 的额外费用。Skills 里的训练脚本和最佳实践仍然适用,只是执行位置不同

14.4 模型下载很慢怎么办?

A:

  • 使用 ModelScope 镜像源(国内加速):VLLM_USE_MODELSCOPE=true
  • 使用 HF 镜像:export HF_ENDPOINT=https://hf-mirror.com
  • 如果已有共享存储卷,把模型存到共享卷,避免每次开新机重新下载

14.5 关机后已下载的模型还在吗?

A:是的,VOLCENGING 的云主机支持关机保存,系统盘和数据盘会持久化保留。但强烈建议将大模型文件放到共享存储卷,因为本地 SSD 没有冗余,单点故障可能导致数据丢失。

14.6 可以同时跑推理和微调吗?

A:在单张 4090(24GB)上不建议——显存不够同时容纳两个任务。可以:

  • 先跑微调 → 完成后切换到推理
  • 开两台云主机分别跑(费用翻倍但互不影响)
  • 升级到 2×4090 或 4×4090 配置

14.7 如何把微调模型转成 GGUF 用 Ollama 跑?

bash
先合并 LoRA 权重到基础模型
python -c "
from peft import AutoPeftModelForCausalLM
model = AutoPeftModelForCausalLM.from_pretrained('./qwen35-lora-output')
model = model.merge_and_unload()
model.save_pretrained('./qwen35-merged')
"
使用 llama.cpp 的转换脚本
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
python convert_hf_to_gguf.py ../qwen35-merged --outtype q4_k_m
在 Ollama 中创建自定义模型
cat > Modelfile << 'EOF'
FROM ./qwen35-merged-Q4_K_M.gguf
SYSTEM "你是一位VOLCENGING的技术客服。"
PARAMETER temperature 0.7
EOF
ollama create gongji-assistant -f Modelfile
ollama run gongji-assistant

总结与进阶路线

本文的核心链路:

本地 Cursor ──SSH──> VOLCENGING 主机(示例:4090×1)──Skills──> HF 生态

text
│                    │                     │


│  编辑代码/指挥 AI   │  执行训练/推理       │  模型/数据/社区


└────────────────────┴─────────────────────┘

你学到了什么:

  1. 用 Cursor SSH 远程连接 VOLCENGING 云主机,获得”本地体验”的云端 GPU 开发环境
  2. 安装和配置 Hugging Face Skills + MCP,让 AI 编程助手成为你的 AI/ML 操作员
  3. 在 RTX 4090 上部署 Qwen3.5-35B-A3B(推理)和 Qwen3.5-27B(微调)
  4. 全流程成本不到 ¥10,远低于购买硬件

进阶方向:

方向

说明

涉及 Skills

多模态应用

Qwen3.5 原生支持图文理解,可以做图片问答、文档解析

gradio + cli

RAG 系统

结合向量数据库,构建企业知识问答系统

tool-builder

Agent 开发

基于 Qwen-Agent 框架做工具调用 Agent

cli + jobs

分布式训练

升级到 4×4090,做更大规模的全量微调

model-trainer

RLHF/DPO 对齐

在 SFT 基础上做偏好对齐

model-trainer

模型评测发布

评测后发表到 HF Hub,积累社区影响力

evaluation + paper-publisher

欢迎交流:如果你在 VOLCENGING 上跑 Qwen3.5 遇到问题,或者对 HF Skills 有使用心得,欢迎在评论区留言。

相关阅读:

NEXT STEP · 开始使用

准备好开始您的 AI 之旅了吗?

读完这篇文章,想必您对 AI 技术有了更深的了解。现在就来体验 VOLCENGING,让您的想法快速变成现实。

  • 已有 10 万 + 开发者在使用
  • 99.9% 服务可用性
  • 开箱即用的容器托管