大模型部署
·
一直使用大模型,突发奇想,何不自己部署一个大模型试试?
# 感谢公司的测试服务器让我爽了一把,显卡检测
nvidia-smi
Tue Jun 2 11:18:51 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.58.03 Driver Version: 595.58.03 CUDA Version: 13.2 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A800 80GB PCIe Off | 00000000:0A:00.0 Off | 0 |
| N/A 30C P0 61W / 300W | 2239MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A800 80GB PCIe Off | 00000000:AE:00.0 Off | 0 |
| N/A 32C P0 63W / 300W | 4MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 3249812 C /usr/bin/python3 2230MiB |
+-----------------------------------------------------------------------------------------+
部署准备
大模型部署是“把模型权重加载到推理引擎里,然后对外提供一个服务接口。”
这种逻辑下,可以直接用推理引擎部署,也可以直接用 Docker 部署,只是其中的一种方式。
模型权重,指的是开源模型
推理引擎,有 vLLM、SGLang、TGI、llama.cpp、Ollama、TensorRT-LLM.
常见推理引擎:(来源于 AI)
- vLLM:最常用之一,适合学习和生产,支持 OpenAI-compatible API。
- SGLang:性能也很好,适合复杂推理、agent、多轮调用。
- TGI:Hugging Face Text Generation Inference,偏 Hugging Face 生态。
- llama.cpp:适合 CPU、Mac、本地轻量量化模型,常用 GGUF 格式。
- Ollama:最适合入门,安装简单,命令少,但生产可控性弱一些。
- TensorRT-LLM:NVIDIA 高性能部署方案,复杂度高,偏生产优化。
Ollama 部署
Ollama 可以简单理解为大模型的“docker” 容器,使用它可以管理模型,可以在 Ollama 仓库中看他有哪些模型。
Ollama 安装
# linux 一键安装
curl -fsSL https://ollama.com/install.sh | sh
# 安装完确认:
ollama --version
# 然后启动服务:
ollama serve
# 服务验证
curl http://localhost:11434/api/tags
# 有请求结果表示服务安装正常 {"models":[]}
# 注意,默认情况下,Ollama 只监听本地网卡 127.0.0.1,需要修改下网卡监听配置
sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo sh -c 'printf "%s\n" "[Service]" "Environment=\"OLLAMA_HOST=0.0.0.0:11434\"" > /etc/systemd/system/ollama.service.d/override.conf'
# 重启
sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl cat ollama
# 查看配置是否生效
ss -lntp | grep 11434
LISTEN 0 4096 *:11434 *:* users:(("ollama",pid=467881,fd=4))
# 远程机器测试:
curl http://你的服务器IP:11434/api/tags
显卡服务中能看到 ollama 进程
nvidia-smi
Tue Jun 2 09:37:00 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 595.58.03 Driver Version: 595.58.03 CUDA Version: 13.2 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA A800 80GB PCIe Off | 00000000:0A:00.0 Off | 0 |
| N/A 30C P0 61W / 300W | 2239MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA A800 80GB PCIe Off | 00000000:AE:00.0 Off | 0 |
| N/A 31C P0 63W / 300W | 19289MiB / 81920MiB | 0% Default |
| | | Disabled |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| 0 N/A N/A 3249812 C /usr/bin/python3 2230MiB |
| 1 N/A N/A 482308 C /usr/local/bin/ollama 19280MiB |
+-----------------------------------------------------------------------------------------+
安装模型
至此,部署大模型的推理引擎 Ollama已经安装好了,下一步可以下载具体的模型,使用 qwen3.5:9b 模型做记录
# 下载 qwen3.5:9b,6.6g,我大概下载了20分钟
ollama pull qwen3.5:9b
pulling manifest
pulling manifest
pulling dec52a44569a: 100% ▕█████████████████████████████████████████████████████████████████████████████▏ 6.6 GB
pulling 7339fa418c9a: 100% ▕█████████████████████████████████████████████████████████████████████████████▏ 11 KB
pulling 9371364b27a5: 100% ▕█████████████████████████████████████████████████████████████████████████████▏ 65 B
pulling be595b49fe22: 100% ▕█████████████████████████████████████████████████████████████████████████████▏ 475 B
verifying sha256 digest
writing manifest
success
下载到本地文件中
du -s -h /usr/share/ollama/.ollama/models
6.2G /usr/share/ollama/.ollama/models
cat /usr/share/ollama/.ollama/models/manifests/registry.ollama.ai/library/qwen3.5/9b
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"config": {
"mediaType": "application/vnd.docker.container.image.v1+json",
"digest": "sha256:be595b49fe22012bd1f5605ec14c7ffa58331783a88a4fd8c22e5fc8ec42cf9f",
"size": 475
},
"layers": [
{
"mediaType": "application/vnd.ollama.image.model",
"digest": "sha256:dec52a44569a2a25341c4e4d3fee25846eed4f6f0b936278e3a3c900bb99d37c",
"size": 6594462816
},
{
"mediaType": "application/vnd.ollama.image.license",
"digest": "sha256:7339fa418c9ad3e8e12e74ad0fd26a9cc4be8703f9c110728a992b193be85cb2",
"size": 11355
},
{
"mediaType": "application/vnd.ollama.image.params",
"digest": "sha256:9371364b27a52acac9d87f88bd93c9db1174d8d6ec57f6888925cdc1788871ff",
"size": 65
}
]
}
运行大模型
ollama run qwen3.5:9b
# 启动需要几分钟时间,启动后会直接进入到一个会话中,可以直接对话提问。同时,也可以使用 api 的形式对话
curl http://localhost:11434/v1/chat/completions -H "Content-Type: application/json" -d '{
"model": "qwen3.5:9b",
"messages": [
{"role": "user", "content": "你好"}
],
"stream": false
}'
# 对话返回
{"id":"chatcmpl-207","object":"chat.completion","created":1780372064,"model":"qwen3.5:9b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":"你好!很高兴见到你!😊 有什么我可以帮助你的吗?无论是聊天问答、学习工作还是其他需求,我都很乐意为你提供帮助!","reasoning":"用户用中文说“你好”,我应该用中文友好地回应。这是一个简单的问候语句,需要保持礼貌和热情。不需要复杂思考,只需回应问候即可。"},"finish_reason":"stop"}],"usage":{"prompt_tokens":11,"completion_tokens":68,"total_tokens":79}}
Ollama 部署 qwen3.5:9b 已经部署成功了,当前 ollama 仅仅提供的是一个大模型的调用api,像 token消耗,调用记录等等功能还需要在做一些定制开发,比如在大模型前套一层web 服务,服务对外暴露对应的接口,内部做对应的 鉴权、消耗统计等功能,最终web 服务在调用大模型进行推理。我使用 codex 生成了一个简单的 web 页面,实现了简单的对话页面,提示词如下
web 对话生成提示词
请创建一个纯前端 Vite demo,项目名为 model-api,用于接入我自己用 Ollama 部署的大模型。
技术要求:
- 使用 Vite + 原生 HTML/CSS/JavaScript,不使用后端,不使用 React/Vue。
- 通过 npm 启动:
- npm install
- npm run dev
- package.json 中 dev 脚本使用:vite --host 0.0.0.0
- 默认 Ollama 地址:http://{HOST}:11434
- 默认模型名:qwen3.5:9b
- 调用接口:POST {OLLAMA_BASE_URL}/api/chat
- 请求体使用:
- model: 当前配置的模型名
- messages: 对话消息
- stream: true
页面功能:
- 左侧配置栏:
- 模型地址输入框
- 模型名称输入框
- 系统提示词 textarea
- 模式切换:多轮对话 / 单轮问答
- 清空对话按钮
- 状态显示
- HTTP 请求记录面板,显示最近一次请求的时间、方法、URL、模型、状态、详情
- 右侧对话区:
- 顶部显示当前模式标题和说明
- 测试连接按钮
- 中间为消息列表
- 底部为输入框和发送按钮
- 支持 Ctrl + Enter 发送
交互要求:
- 多轮对话模式:保留 user/assistant 历史消息作为上下文。
- 单轮问答模式:每次只发送当前问题和系统提示词,不保留历史。
- 请求 Ollama 必须使用 fetch 流式读取 response.body。
- Ollama 真实流式返回结构为 JSONL,每行类似:
{"message":{"role":"assistant","content":"","thinking":"Thinking"},"done":false}
{"message":{"role":"assistant","content":"连接"},"done":false}
{"message":{"role":"assistant","content":""},"done":true,"done_reason":"stop","eval_count":1013}
- 前端必须按真实字段解析:
- message.thinking 显示为思考过程
- message.content 显示为正式回答
- 顶层 done:true 作为结束标识
- done:true 后显示 done: true 标签
- 请求日志详情显示 done_reason、prompt_eval_count、eval_count、total_duration 等统计信息
- 思考过程和正式回答要视觉区分:
- 思考过程放在独立 details 区块
- 思考过程使用灰色、小字号
- 正式回答使用正常正文样式
- 回答需要打字机效果:流式收到 content 或 thinking 后立即更新页面。
- 发送中时,发送按钮变成“停止”按钮。
- 点击停止时,用 AbortController 取消当前 fetch 请求。
- 停止后:
- 保留已生成内容
- 状态显示已停止
- 请求记录显示已停止和已接收字符数
- 不再继续读取流
布局要求:
- 桌面端为左右两栏:
- 左侧固定宽度 320px
- 右侧为对话工作区
- 页面高度固定为 100vh,body 不滚动。
- 左侧配置栏独立滚动。
- 右侧只有对话列表区域滚动。
- 右侧对话内容变长不能撑高整个页面,也不能影响左侧布局。
- 移动端改为单列布局,允许页面自然滚动。
- 样式简洁、偏工具型,不要做营销落地页。
- 使用 8px 左右圆角,清晰边框,克制配色。
- 不要使用后端代理。
请生成完整项目文件:
- package.json
- index.html
- src/main.js
- src/styles.css
- README.md
README 需要包含:
- 功能说明
- 运行方式
- Ollama 请求体示例
- 真实流式返回结构示例
- 字段解析说明
- 跨域提示:如果浏览器跨域,需要在 Ollama 端配置 OLLAMA_ORIGINS。
思考
回答
更多推荐



所有评论(0)