一直使用大模型,突发奇想,何不自己部署一个大模型试试?

# 感谢公司的测试服务器让我爽了一把,显卡检测
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。

思考
在这里插入图片描述
回答
在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐