本地 35B 大模型部署实战:Ollama 跑 Ornith-35B 全流程

本地 35B 大模型部署实战:Ollama 跑 Ornith-35B 全流程

桌面级 AI 扩展坞 · 实战案例 #001

日期:2026-09-13

环境:Windows 11 / i5-13600KF / 32 GB DDR5 / RTX 3060 Ti 8 GB

模型:Ornith-1.0 35B MoE(Q4_K_M,21 GB)

一、为什么要在本地跑 35B 模型

云端 API 调用每百万 token 要 3-30 美元,按一个 RTL 工程师每天跟模型对话 50 次、每次 2000 token 计算,月均 API 成本约 90-900 美元。把模型下到本地后:

0 元 / token(电费忽略)

0 网络延迟

0 数据外泄(公司代码、专利设计不离开本机)

代价是硬件投入和 8-15 tok/s 的本地生成速度。

为什么选 Ornith-35B 而不是 Qwen3-32B / DeepSeek-V3:

Ornith-1.0 35B 是基于 Qwen 3.5 35B-A3B 的 RL 微调版本,主打 agentic coding。在 SWE-bench 上 75.6 分,比 Qwen3.8-27B 的 61.7 还高。再加上 MoE 架构实际只激活 ~3B 参数,在我们这种 8 GB VRAM 的"穷人配置"上速度比 dense 27B 还快一倍。

二、硬件环境实测

textCPU: 13th Gen Intel® Core™ i5-13600KF (14 核 20 线程)

RAM: 32 GB DDR5

GPU: NVIDIA GeForce RTX 3060 Ti (GA104, 4864 CUDA, 8 GB GDDR6)

OS: Microsoft Windows 11 Pro 10.0.26200

驱动: 577.00

关键约束:

资源现状跑 21 GB 模型所需缺多少VRAM8 GB~21 GB(理想全装)13 GBRAM32 GB~17 GB紧内存带宽~50 GB/s(双通道 DDR5)200+ GB/s4×

结论:8 GB VRAM 注定装不下全模型,必须GPU + CPU 混合卸载。这正是本文要解决的核心问题。

三、软件准备

3.1 装 Ollama

Ollama 是目前最省事的本地 LLM 运行时,一条命令搞定下载、量化、推理、API 服务。

下载地址:https://ollama.com/download

装完后验证:

powershellollama --version

ollama version 0.34.0

Windows 版默认开机自启 ollama serve,11434 端口监听 0.0.0.0。

3.2 装 Node.js(如果要用 Pi Coding Agent)

Pi 是个 Node.js 写的终端 coding agent。Windows 上从 https://nodejs.org 下载 LTS 版即可。

powershellnode --version

v24.15.0

npm --version

11.12.1

3.3 装 Git for Windows(推荐)

Pi 在 Windows 上默认找 Git Bash 来跑 shell 工具。

powershell# 验证 git 装好

git --version

四、启动 Ollama 并拉模型

4.1 启动服务

一般装完自动跑。如果没跑:

powershellollama serve

看到 "Listening on 127.0.0.1:11434" 说明成功

后台开窗口跑,不要关。后续所有命令都靠这个进程。

4.2 拉模型

powershell# Ornith-35B 21 GB Q4_K_M(默认标签就是它)

ollama pull ornith-35b:latest

21 GB 模型按你网速要 10-40 分钟。第一次冷启动时还要再读盘到 VRAM/RAM,30-90 秒。

4.3 验证模型可调用

最简单的 REPL 跑一下:

powershellollama run ornith-35b:latest "用 50 字解释什么是 metastability"

Ornith 的特点:默认开启 thinking block,会先内部推理再给答案。所以你会看到"思考过程 → 最终回答"两段。

也可以直接打 ollama run ornith-35b:latest 进入交互 REPL,输入 /bye 退出。

4.4 验证 API 端点

Ollama 提供 OpenAI 兼容 API,端口 11434:

powershell# 健康检查

curl http://localhost:11434/api/version

{"version":"0.34.0"}

OpenAI 兼容路径

curl http://localhost:11434/v1/models

五、关键验证:OpenAI 兼容端点

这是接入任何外部工具(Pi、Continue、Cursor、Claude Code 等)的入口,必须确认它能正常返回结果。

powershell$body = @{

model = 'ornith-35b:latest'

messages = @( @{ role = 'user'; content = 'reply with the single word: pong' } )

stream = $false

keep_alive = '5m'

} | ConvertTo-Json -Depth 5

Invoke-WebRequest -Uri 'http://localhost:11434/v1/chat/completions' `

-Method Post -ContentType 'application/json' -Body $body -UseBasicParsing

期望响应(实测 4.6 s 返回):

json{

"id": "chatcmpl-987",

"model": "ornith-35b:latest",

"choices": [{

"message": {

"role": "assistant",

"content": "pong",

"reasoning": "The user is asking me to reply with a single word..."

},

"finish_reason": "stop"

}],

"usage": { "prompt_tokens": 17, "completion_tokens": 35, "total_tokens": 52 }

}

关键字段:

id 是 OpenAI 标准 chatcmpl- 前缀

reasoning 字段是 Ornith 自己的 thinking block

usage 给出 token 计数,可以做成本/性能核算

六、装并配置 Pi Coding Agent

6.1 安装

powershellnpm install -g --ignore-scripts @earendil-works/pi-coding-agent

--ignore-scripts 官方推荐,禁用依赖包的 lifecycle scripts,Pi 正常安装不需要它们。

验证:

powershellpi --version

0.85.1

6.2 配置 models.json

Pi 在 ~/.pi/agent/models.json 注册自定义 provider:

powershell# 编辑文件

notepad $env:USERPROFILE.pi\agent\models.json

写入:

json{

"providers": {

"ollama": {

"baseUrl": "http://localhost:11434/v1",

"api": "openai-completions",

"apiKey": "ollama",

"compat": {

"supportsDeveloperRole": false,

"supportsReasoningEffort": false

},

"models": [

{

"id": "ornith-35b:latest",

"name": "Ornith 1.0 35B (本地 Ollama)",

"reasoning": true,

"input": "text",

"contextWindow": 32768,

"maxTokens": 4096,

"cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }

}

]

}

}

}

两个关键坑:

1.cost 字段必须 4 个键全有(input/output/cacheRead/cacheWrite),缺一个 Pi 启动报错2.Ollama 不认 developer role 和 reasoning_effort,必须 compat.supportsDeveloperRole: false + compat.supportsReasoningEffort: false

6.3 配置 settings.json(默认 provider)

powershellnotepad $env:USERPROFILE.pi\agent\settings.json

json{

"lastChangelogVersion": "0.85.1",

"defaultProvider": "ollama",

"defaultModel": "ornith-35b:latest",

"defaultThinkingLevel": "high"

}

6.4 验证 Pi 看到模型

powershellpi --list-models ollama

期望输出:

textprovider model context max-out thinking images

ollama ornith-35b:latest 32K 4K yes no

如果看到这行,说明配置 OK,可以进 Pi 了。

6.5 启动 Pi

powershellcd D:\你的项目目录

pi

按 Ctrl+L 选 Ornith 1.0 35B (本地 Ollama)。已经设了默认 provider,直接就是它,不用选。

七、实测性能基准

8 GB VRAM + 32 GB RAM + i5-13600KF 环境,Ollama 自动分配 29% GPU / 71% CPU 卸载。

测试 prompt:写一个 200 词左右的 2 级同步器技术解释

textWall time : 49.84 s

Prompt tokens : 44

Output tokens : 745

Total tokens : 789

Gen tok/s : 14.95 (纯生成)

Wall tok/s : 15.83 (端到端)

结论:~15 tok/s 纯生成速度,跟 ChatGPT 早期 3.5 版本相当。

实际体验:

冷启动:30-90 s(21 GB 从磁盘读进 VRAM+RAM)

单轮问答:30-50 s

长上下文(>8K):速度跌到 8-10 tok/s

够不够用:

✅ 单文件 RTL 阅读、改写、注释、lint 修复

✅ 单元级设计(计数器、状态机、FIFO、CDC 同步器)

⚠️ 多文件中等设计(要拆分喂)

❌ 大型 SoC 顶层 review(上下文爆)

❌ 长波形 log 分析(每轮等 30-50 s 劝退)

八、常见问题与优化

8.1 避免冷启动:keep_alive 拉长

Ollama 默认空闲 5 分钟卸载模型(释放 VRAM)。白天连续用会反复冷启动。

永久方案(设环境变量):

powershellSystem.Environment::SetEnvironmentVariable('OLLAMA_KEEP_ALIVE', '24h', 'User')

单次方案(API 调用里加):

json{ "model": "ornith-35b:latest", "keep_alive": "60m", ... }

8.2 上下文别开太大

21 GB 模型 + 长 KV cache 会被压到 RAM,速度腰斩。models.json 里把 contextWindow 限制在 32768(不要写 262144)。

启动时也可以加 num_ctx 显式控制:

powershell# 在 OpenAI 调用里

{ "options": { "num_ctx": 8192 } }

8.3 加速:换 IQ3_M 量化

powershellollama pull maxwell1500/ornith-35b:IQ3_M

14 GB 的 IQ3_M 量化能把更多层塞进 8 GB VRAM,速度预计 +30-50%(22-28 tok/s),Verilog 代码质量影响极小。

8.4 Windows bash 路径

如果 Pi 启动后报错 "找不到 bash",在 settings.json 里加:

json{ "shellPath": "C:/Program Files/Git/bin/bash.exe" }

8.5 显存监控

powershell# 看模型 GPU 卸载情况

nvidia-smi

跑 35B 时应该看到 7-7.7 GB 占用

看模型驻留状态

ollama ps

NAME SIZE PROCESSOR CONTEXT UNTIL

ornith-35b:latest 21 GB 71%/29% CPU/GPU 8192 4 minutes from now

8.6 手动释放显存

powershellollama stop ornith-35b:latest

立即卸载,VRAM 释放

九、跟其他模型对比

维度Ornith-35BQwen3.8 27BQwen3-30B-A3B架构MoE(激活 ~3B)Dense(27B 激活)MoE(激活 ~3B)大小 (Q4_K_M)21 GB18 GB18 GB视觉❌✅❌Terminal-Bench 2.164.273.0---SWE-bench75.661.7---LiveCodeBench v6---90.3---8 GB VRAM 实测速度15 tok/s8-12 tok/s15-20 tok/s适合 ASIC 工作流✅ 强✅ 通用✅ 强

结论:对纯 coding / agent 任务,Ornith SWE-bench 反而最高(75.6 vs 61.7),但 Qwen3.8 的视觉能力对波形分析有用。理想是双模型并行(3060 8GB 不够,3090 24GB 才能同时跑)。

十、给桌面 AI 扩展坞项目的启示

这套流程暴露了 8 GB VRAM 跑 35B 模型的几个硬约束:

1.数据搬运是主要瓶颈 --- 不是 GPU 算力,而是 PCIe / 内存带宽2.冷启动不能避免 --- 21 GB 模型不可能常驻 VRAM3.多模型并行无解 --- 20 GB+ VRAM 是入门线

这正好对应"桌面 AI 扩展坞"项目里的几个专利方向:

压缩键值缓存硬件加速 --- 解决长上下文 KV cache 吃 VRAM 的问题

多通道存储负载均衡 --- 解决 21 GB 模型在 SSD/RAM/VRAM 三层之间的调度

多精度脉动阵列 --- 解决 INT4/INT8/FP16 混合精度的推理流水线

把这些做成外接卡 / 加速卡,配合 RTX 3060 Ti 8GB 这类"穷人配置",理论上能实现 3090 24GB 80% 的体验,成本只要 1/4。

附录 A:完整命令速查

powershell# 一次性安装

winget install Ollama.Ollama # 或去 ollama.com 下载

winget install OpenJS.NodeJS.LTS

ollama pull ornith-35b:latest

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

System.Environment::SetEnvironmentVariable('OLLAMA_KEEP_ALIVE', '24h', 'User')

写配置(参见第六节)

notepad $env:USERPROFILE.pi\agent\models.json

notepad $env:USERPROFILE.pi\agent\settings.json

验证

ollama --version

pi --list-models ollama

curl http://localhost:11434/api/version

启动用

ollama serve # 后台跑

ollama run ornith-35b:latest # 交互 REPL

pi # 启动 Pi Coding Agent

监控

ollama ps

nvidia-smi

释放

ollama stop ornith-35b:latest

附录 B:常见报错

Error: models.json error: Invalid models.json schema: ... must have required properties cacheRead, cacheWrite

→ cost 字段必须 4 个键全有:input / output / cacheRead / cacheWrite

Error: models.json error: ... supportsDeveloperRole

→ Ollama 不认 developer role 和 reasoning_effort,加 compat 字段

Stream ended without finish_reason

→ 模型冷启动超时 / Ollama 端 stream 中断。设 keep_alive 拉长,避免长 thinking + 长输出。

bash: command not found

→ Pi 在 Windows 上找不到 bash。装 Git for Windows,或 settings.json 里指定 shellPath

本文所有命令、配置、性能数据均经过实测验证。如果你按这套流程跑出问题,欢迎对照附录 B 排查。

相关推荐
Είναι η κοπέλα1 小时前
本地大模型部署完全指南:Ollama / vLLM / llama.cpp / MLX 四大引擎横评与选型实战
macos·llama·vllm
AIFQuant1 小时前
Python股票实时价格告警系统:WebSocket订阅与REST快照实战
开发语言·python·websocket·a股行情
名字还没想好☜2 小时前
Java Collectors.groupingBy 进阶:多级分组、下游收集器与统计聚合一次搞定
java·windows·后端·python·spring
2601_962078232 小时前
Python接口自动化流程(pytest)
python·pytest·接口自动化·测试框架·断言
杨女士YRJ2 小时前
python+pytest+01
python·pytest
鸽芷咕3 小时前
Mu Editor 鸿蒙 PC 适配全记录:用 Qt 与嵌入式 CPython 重建教学型 Python IDE
python·qt·harmonyos
微软技术分享3 小时前
基于 HuggingFace Tokenizers 训练自定义分词器
python·ubuntu·大模型·huggingface
gf13211113 小时前
python_调用远程服务器上的openclaw
服务器·python·php
lbb 小魔仙3 小时前
Jupyter Notebook / Lab 深度配置指南:插件 + 内核 + 远程访问 + 容器化部署
ide·python·jupyter