Abstract

本地部署大模型可以让开发者更为完全地控制数据流,具有更高地隐私保障以及操作上线;并具有及底的网路延迟。如果你无法使用云部署的现成大模型,可以进行本地部署。或者,你可能想为你的萝莉提供一个更智能的大脑,或者提供更低的延迟来保证对话的连续性。

本文章提供了一种本地部署大模型的方法,这适用于所有已开源的大模型的部署。
部署使用的开源软件是 Ollama ,因为它支持 huggingface 的模型部署;同时上手很简单,只有几个命令,而且有 UI 界面。

Ollama 下载与配置

在 Ollama 下载好之后,安装即可。启动,打开配置:

建议先将 Context Length 拉到最低,因为过高的 Context Length 会称为一个部署失败的因素。比如我在部署 deepseek-r1:8b 时因为这个参数拉太高导致了部署错误:
500 Internal Server Error: llama runner process has terminated: exit status 2

其中 Model Location 是存放模型文件的地方,不建议使用 NAS 进行存储;因为在实践过程中,发现了几个问题都是由 NAS 存储 导致的,因为很多软件似乎并不支持 NAS 的识别:

在上图中,很多软件在设定安装位置时并不能正常识别上图中的 磁盘符 Z;包括最近的 战地6  。
虽然在界面上,Ollama 可以识别到 Z 盘,但是在下载大模型文件时,可能加重 下载速度越来越慢的问题,以及不能断点续传(当你打断下载后,重新下载时会直接从 0 开始)。

Ollama 运行

当你正确配置好环境变量后,可以直接在终端输入

ollama

出现

代表配置成功。

接下来在 Ollama Search 找一个合适的模型,然后运行以下命令:

ollama run <model-name>

这里使用了占位符  <model-name> ,请将这个占位符替换为实际的模型名称;比如

ollama run deepseek-r1:8b

或者你也可以在 GGUF Hugging Face Models 中拉取并部署模型:

ollama pull hf.co/<username>/<model-repository>

pull 是拉取模型到本地,run 是先拉取模型到本地(如果没有),然后启动服务器。

等下载完就行,如果越下越慢,则可以 CTRL+C 取消然后按 继续下载即可。部署成功界面如下:

Spring-AI 调用(可选)

首先创建 SpringBoot 项目,然后在 pom 中引入依赖:
 

        <!-- https://mvnrepository.com/artifact/org.springframework.ai/spring-ai-ollama-spring-boot-starter -->
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
            <version>1.0.0-M6</version>
        </dependency>

`application.properties`配置:
 

spring.ai.model.chat=ollama
spring.ai.ollama.base-url=http://localhost:11434
spring.ai.ollama.chat.options.model=deepseek-r1:8b

默认开放端口是 11434,你可以在浏览器上访问一下是否部署成功,成功部署的访问结果如下:

测试代码大致如下:

@Component
public class OllamaTest implements CommandLineRunner {
    @Resource

    private ChatModel ollamaChatModel;

    @Override
    public void run(String... args) throws Exception {
        ollamaChatModel.stream(new Prompt("你好,我想了解一下 东方Project,不要使用 markdown 格式回复"))
                .filter(chatResponse -> StringUtils.hasText(chatResponse.getResult().getOutput().getText()))
                .subscribe(chatResponse -> {
                    final String text = chatResponse.getResult().getOutput().getText();
                    System.out.println(text);
                });
    }
}

这里在注入 ChatModel 时将其命名为了ollamaChatModel,原因是 ollama-starter 定义提供了以ollamaChatModel 命名的 ChatModel 实现;如果你使用了多个 spring-ai-xxxx-starter ,那么这可以用于区分不同的 ChatModel 实现。

spring-ai-xxx-starter 已经包含了 spring-ai 的依赖;所以不支持再兼容 `spring-ai-alibaba-starter-dashscope`,因为这将导致有两个不同的 `spring-ai` ,使得代码因为相同的多个配置类定义而无法运行


输出如下(<think> 标签内的文字展示了大模型的思考过程):

2025-08-16T20:33:05.023+08:00  INFO 22592 --- [game-agent] [  restartedMain] w.s.gameagent.GameAgentApplication       : Started GameAgentApplication in 1.844 seconds (process running for 2.224)
<think>
嗯
,
用户
想要
了解
东方
Project
,
但
特别
说明
不需要
用
markdown
格式
回复
。
这
可能
是个
注重
阅读
体验
的
玩家
或
研究
者
,
希望
获得
自然
流畅
的文字
介绍
。


考虑到
东方
Project
的文化
属性
和
深度
,
直接
抛
定义
可能会
让
新
玩家
困惑
。
应该
先
从
最
本质
的东西
入手
——
弹
幕
射击
游戏
这个
核心
玩法
特色
,
再
延伸
到
世界观
设定
。
这样
既有
技术
门槛
解释
,
又能
带
入
幻想
乡
的文化
背景
。


用户
没
说明
了解
程度
,
所以
需要
兼顾
新手
友好
性和
老
玩家
的信息
量
。
用
“
弹
幕
”
这个词
比
直接
说
“
密集
子弹
雨
”
更
准确
专业
,
但
得
补充
这是
东方
独有的
美学
特征
。“
面
元
”
这种
术语
要
谨慎
使用
,
可能
需要用
“
角色
设计
风格
化
”的
表述
替代
。


六
周年
这个
时间
点
值得
强调
,
因为
很多
核心
设定
都是
那时候
奠定
的
。
提到
《
妖
精
大
戦
争
》
能
引
出
群
发
式
弹
幕
机制
,
但
不用
展开
具体
游戏
内容
以免
信息
过
载
。“
东方
同
人
界
”
这种
说法
可能
让
没
接触
过的
用户
更
困惑
,
应该
补充
说明
是
玩家
自发
创作
的内容
。


最后
用
“
欢迎
提问
”的
开放式
结尾
比较
合适
,
既
不过
于
简
略
也不
显得
自
满
。
整体
保持
轻
小说
的
叙事
节奏
会
更容易
让用户
接受
大量
设定
细节
。

</think>
你好
!
东方
Project
(
T
ou
hou
 Project
)
是由
日本
同
人
社团
「
上海
爱
丽
丝
幻
境
」
开发
的一
系列
弹
幕
射击
类
同
人
游戏
作品
及其
衍生
内容
的
集合
体
。


它
不仅仅是
几
部
游戏
,
更
是一个
围绕
着
特定
虚构
世界观
构建
起来
的文化
、
艺术
和
社区
。
这个
系列
的核心
是
**
博
丽
灵
梦
**
这位
角色
以及
她
所在的
舞台
——
**
雾
之
湖
上的
幻想
乡
**
(
通常
简
称为
幻想
乡
)
。


以下是
关于
东方
Project
的一些
核心
要点
:


1
.
 **
弹
幕
射击
游戏
:
**

 *
 这
是最
显著
的
特征
。
玩家
操控
角色
躲避
从
屏幕
上方
不断
涌现
、
密集
如
雨
般的
“
子弹
”,
同时
寻找
机会
反击
强大的
妖怪
敌人
。

 *
 游
戏
难度
极高
,
对
操作
要求
严格
,
尤其是
需要
精确
控制
移动
来
应对
复杂
弹
幕
模式
。


2
.
 **
核心
世界观
:
**

 *
 故
事
发生
在一个
名为
「
幻想
乡
」
的
虚构
村庄
。
这个
村庄
被
结
界
保护
,
与
外界
隔
绝
,
内部
充满了
各种
奇
奇怪
怪
的人
、
妖怪
和
魔法
道具
。

 *
 核
心
角色
是
博
丽
神
社
的大
巫
女
**
灵
梦
**
,
她的
职责
就是
守护
这个
结
界
不
被
破坏
,并
处理
幻想
乡
内
发生的
“
异
变
”
——
通常是
强大的
妖怪
打破
结
界
闯
入
造成的
混乱
。


3
.
 **
主要
游戏
:
**

 *
 按
照
惯例
,
东方
Project
的游戏
通常
按照
周年
纪念
发布
,
例如
「
东方
风
神
录
」
对应
六
周年
、「
东方
非
想
天
外
」
对应
七
周年
。

 *
 常
见
的
代表
作
包括
《
东方
妖
妖
梦
》
、
《
东方
星
雨
幻想
》
、
《
东方
地
灵
殿
》,
以及
后来
的
《
东方
Project
~
 Undefined
 Fantastic
 Space
》
和
《
东方
茨
歌
仙
人
》
等
。
玩家
通常
会在
这些
游戏中
体验
剧情
模式
,并
在
“
面
元
”
中
挑战
各种
强大的
敌
弹
(
头
目
)
。


4
.
 **
丰富的
角色
与
背景
:
**

 *
 每
部
作品
都会
引入
新的
主要
角色
、
次要
角色
以及
事件
,
构成
丰富多彩
的
幻想
乡
故事
。

 *
 角
色
设计
独特
且
充满
魅力
,
从
人类
巫
女
到
妖怪
、
魔法
使
等
都有
代表
作
。


5
.
 **
弹
幕
美学
:
**

 *
 “
弹
幕
”
是
东方
游戏
的核心
元素
之一
。
它
指的是
游戏中
敌人
发射
出
的大
密度
、
高
精度
的
子弹
雨
。

 *
 这
种
形式
不仅是
技术
上的
挑战
,
也
成为了
独特的
艺术
风格
和
粉丝
喜爱
的文化
符号
(
有时
被
戏
称为
“
头
目
癌
”,
因为
头
目
太
强
了
)
。


6
.
 **
同
人
文化
:
**

 *
东方
Project
最初
是
作为
PC
-
9
8
平台
的
同
人
游戏
开始
发展的
,
虽然
现在
发布了
对应
现代
操作系统
的作品
,
但
其
根源
仍在
同
人
圈
。

 *
 它
拥有
非常
庞大
和
活跃
的
粉丝
群体
,
以及
高度
发达
的
同
人
创作
生态
。


7
.
 **
音乐
与
视觉
:
**

 *
 虽
然
不是
所有
作品
都
原创
音乐
,
但
很多
东方
游戏
的
B
GM
都非常
受欢迎
,并
被
广泛
分享
。
作
曲
家
如
z
un
(
系列
总监
)、
神
溜
子
、
H
ak
ure
i
 Re
apers
等
的名字
在玩家
圈
子里
非常
熟悉
。

 *
 角
色
的
立
绘
也
极具
辨
识
度
。


总的来说
,
东方
Project
是一个
融合
了
弹
幕
射击
玩法
与
独特
幻想
乡
世界观
的文化
现象
。
它
吸引了
大量
同
好
,
形成了
自己的
社区
规范
和
文化
氛围
(
例如
强调
“
不
卖
肉
”的
游戏
风格
)。
如果你
对
弹
幕
射击
感兴趣
或者
喜欢
奇幻
、
二次
元
的角色
设定
,
那么
探索
东方
Project
的世界
会
非常
有趣
。


你
有什么
具体
想
了解
的
吗
?
比如
某
部
作品
、
某个
角色
、
弹
幕
机制
,
或者其他
方面
?
我很
乐意
提供
更
详细
的信息
!
2025-08-16T20:35:12.756+08:00  INFO 22592 --- [game-agent] [ionShutdownHook] o.s.b.w.e.tomcat.GracefulShutdown        : Commencing graceful shutdown. Waiting for active requests to complete
2025-08-16T20:35:12.766+08:00  INFO 22592 --- [game-agent] [tomcat-shutdown] o.s.b.w.e.tomcat.GracefulShutdown        : Graceful shutdown complete

Process finished with exit code 130

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐