win系统脚本跑起本地 Phi-3 大模型

作者:Hinataiko · 脚本版本 v2.0.0
适用平台:Windows 10(4 核 8 GB 内存及以上)

如果你手里有一台配置一般的 Windows 机器,也想搭一个本地大模型服务,不用折腾。这篇文章讲的是一套自动部署脚本,它把 Phi-3-mini(3.8B 参数)从下载、装环境、起服务到开机自启,全部封装成一条命令。

我在一台实际只有 2 核 2.1GHz8 GB 内存的 Windows 虚拟机上把整套流程跑通过,下面的数据和经验都来自这轮真实部署。


脚本解决什么问题

在 Windows 上部署本地模型,卡人的通常是这么几件事:

  • 下载要翻墙。Hugging Face 在国内基本连不上,而国产模型仓库常常不完整或没人维护。
  • 环境一团乱。装 Python、装依赖、下二进制、配路径,任何一步断网都要从头再来。
  • 服务不听话。命令行里能跑,一关窗口就没了;电脑重启又要手动启。
  • 速度难受。3.8B 模型在 CPU 上本来就不快,如果再配错参数,会更糟。

这套脚本把这些痛点一次性的处理掉了。

脚本怎么帮你

核心逻辑分成 8 段,按顺序执行,每一步失败都不中断脚本,而是记录错误、允许你修好网络后重跑续传

  1. 校验管理员权限
  2. 检测 / 安装 Python3 与 modelscope
  3. ModelScope(阿里国内源) 下载 Phi-3-mini-4k-instruct 的 Q4_K_M 量化版,全程不走 Hugging Face
  4. 下载并解压 llama.cpp 的 Windows 预编译包
  5. llama-server 拉起 OpenAI 兼容的 HTTP 服务
  6. 注册为 Windows 服务,开机自启 + 崩溃自动重启
  7. 开放防火墙,让局域网其他设备也能访问
  8. 打印 curlPython 的调用示例,并生成可直接运行的示例文件

服务监听 8080 端口,自带 API Key,兼容绝大多数 ChatGPT 类前端工具。

快速开始

下载脚本: 点击这里下载 deploy-phi3-2.0.0.ps1(123 云盘)

拿到脚本后,右键 → 用管理员身份打开 PowerShell,然后执行:

powershell -ExecutionPolicy Bypass -File .\deploy-phi3.ps1

脚本会自己判断缺少什么、装什么。全程断点续传、可重复执行,中途断网关机都不怕,重新跑一遍会从断的地方继续。

跑完浏览器打开 http://localhost:8080 就能看到内置聊天界面(API Key 在部署日志里有输出)。

下载方面的取舍

这是我踩过最深的坑,值得单独说。

同一个模型在 ModelScope 上可能有多个同名仓库,有的 api 里根本查不到,白等。我最终固定的仓库是 OllmOne/Phi-3-mini-4k-instruct-gguf,其中的 Phi-3-mini-4k-instruct-q4.gguf 正是 Q4_K_M 量化档,体积 2.16 GB,是 4 核 8G 机器上最均衡的选择——模型够小,推理不至于慢到没法用,中文效果也还过得去。

为了稳,下载做了三级兜底

  • 优先用 modelscope snapshot_download(Python 官方 SDK,支持增量续传)
  • 失败则切换 git lfs clone
  • 再不行就用 curl -C - 直接挑 resolve 直链断点续传

llama.cpp 的预编译包也设计了版本回扫:官方个别版本会缺失 Windows 资产,脚本自动向后探测最近 10 个版本,找不到再落到固定兜底版本。

关于速度,说实话

这部分我讲实在的,不给虚的期望。

脚本默认开启了这套参数组合,是基于 llama-bench 实测选出来的:

参数实测生成速度
默认(无优化)1.78 tokens/s
--flash-attn on2.05 tokens/s(约 +15%)
加了 --threads 21.70 tokens/s(反而更慢,不如 4)
加 KV 量化 q8_01.47 tokens/s(反而降 28%,弃用

结论:打开 Flash Attention、线程用满,是最优解。但这台机器是 2 核 2.1GHz,3.8B 模型的 CPU 物理上限就在 2 tokens/s 左右,参数层面已经榨干了。

所以脚本同时做了另两件事来改善体验:

  1. 修掉了官方新版默认的 --parallel 4 陷阱。新版 llama.cpp 默认开 4 个槽位,会把 KV cache 撑到 16K,在 8 GB 机器上白白多占约 1.5 GB,接近崩溃边缘。脚本强制 --parallel 1,把内存压回健康水平。
  2. 内置聊天界面走流式输出,配合前端边生成边显示,观感接近正常打字速度,比一次性等完整回复舒服得多。

如果你觉得 2 tokens/s 还是太慢,有两个更优解:换更小的模型(比如 1.5B 档,约 5–8 tokens/s),或者加一张显卡。想用哪个,脚本稍作修改即可。

接入其他 AI 工具

服务就绪后,它就是标准的 OpenAI 兼容接口。填入:

  • Base URLhttp://<服务器IP>:8080/v1
  • API Key:部署时你在脚本里配的那个(默认 sk-autodeploy-2026
  • 模型名phi-3-mini-4k-instruct(也可留空,服务端会用默认模型)

随便挑一种语言的示例:

# curl
curl -X POST "http://SERVER-IP:8080/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-autodeploy-2026" \
  -d '{"model":"phi-3-mini-4k-instruct","messages":[{"role":"user","content":"你好"}],"max_tokens":100}'
# Python requests
import requests
r = requests.post(
    "http://SERVER-IP:8080/v1/chat/completions",
    headers={"Authorization": "Bearer sk-autodeploy-2026"},
    json={"model": "phi-3-mini-4k-instruct",
          "messages": [{"role": "user", "content": "你好"}],
          "max_tokens": 100},
    timeout=300,
)
print(r.json()["choices"][0]["message"]["content"])

具体地址、Key、示例文件,脚本跑完都会打印并保存到本地 examples 目录,直接照着用即可。

常见问题

Q:脚本提示需要以管理员身份运行
A:脚本第一步就校验权限,非管理员直接退出。这是为了能注册 Windows 服务和改防火墙,属正常设计。

Q:部署目录只有 C 盘,没有 D 盘
A:脚本本来默认装到 D:\phi-model,检测到 D 盘不存在时,会自动回退到当前用户目录下的 phi3-deploy,不会报错。

Q:启动后进程崩溃,日志里有 ACCESS_VIOLATION
A:多半是系统的 VC++ 运行库版本太老(llama.cpp 新版编译要求 v14.44+)。脚本第三步会自动检测并安装 VC++ Redistributable 2015–2022,装完重启服务即可。

Q:中途断网 / 关机,重新跑会重复下载吗
A:不会。模型文件已存在且体积校验通过就跳过,snapshot_downloadcurl -C - 本身都支持断点续传;服务注册和防火墙规则也是先查再建,全程幂等。

Q:局域网其他电脑访问不了
A:先确认开了防火墙对应端口,再确认对方和服务器在同一网段。若要通过公网访问,需要额外配内网穿透(比如 Cloudflare Tunnel),本脚本不含该功能。

Q:想接入公司/团队的多个成员,怎么管理 Key
A:当前脚本生成一个全局 API Key。若要做多 Key 分发、按人计量用量,可在服务前面加一层网关,把用量写入 SQLite,按 Key 统计、可单独吊销——这是脚本之外的另一套部署,需要的话可单独写。

版本记录

  • v2.0.0(当前)修复 Windows PowerShell 中文解析、D 盘回退、VC++ 运行库、llama.cpp 版本回扫、模型三级兜底下载、断点续传、幂等重装、推理参数实测优化。
  • 初版:ModelScope 源 + llama-server + Windows 服务化。

想用一个命令,在一台闲置的 Windows 机器上拥有自己的本地 AI,直接下载脚本跑一遍即可:

下载 deploy-phi3-2.0.0.ps1 → 123 云盘链接

遇到问题,欢迎在评论区留言(脚本带完整中文注释,也直接改)。脚本仅供个人学习与部署使用,模型版权归原作者 Microsoft 所有。