一、Ollama 大模型部署
Ollama 简介:
Ollama 是一个开源的大型语言模型服务工具,它帮助用户快速在本地运行大模型。通过简单的安装指令,用户可以执行一条命令就在本地运行开源大型语言模型。极大地简化了在 Docker 容器内部署和管理 LLM 的过程,使得用户能够快速地在本地运行大型语言模型。
Ollama 安装部署:
官方网站:https://ollama.com/
下载地址:https://ollama.com/download,以 Mac OS 为例,下载后解压即用,支持多平台一键安装。
官方模型:https://ollama.com/library,我们以 70 亿参数的大模型部署到本地来进行演示。
模型启动:下载完成后打开终端,即可操作 Ollama 相关的命令
- 查看当前模型列表
# 查看当前模型列表
ollama list
- 拉取模型:
# 拉取模型
ollama pull
- 启动模型:
# 启动模型
ollama run llama3:70b
- 其它命令:
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
cp Copy a model
rm Remove a model
help Help about any command
- 大模型交互演示:
- ⚠️ 注意:大模型的运行对 GPU 的要求比较高,请根据自己的电脑配置选择合适的模型,以我目前这台 Macbook 30核 GPU 为例,在模型运行期间的 GPU 使用情况如图所示,存在轻微卡顿现象:
二、SpringAI 整合大模型实践
SpringAI 简介:
Spring AI 是 AI 工程的应用框架,其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI 领域,并将 Java 类作为应用程序的构建块推广到 AI 领域。
SpringAI 生态链:
目前 SpringAI 涵盖了广泛的功能,包括聊天机器人、嵌入式、图像生成、矢量数据库、高等数学运算等多领域 API。
SpringBoot 整合 SpringAI:
- 创建 SpringBoot 工程,整合 SpringAI:以 SpringBoot 3 与 JDK 17 为例
- 选择 AI 中我们前文部署好的 Ollama 模型:我们熟悉的 OpenAI 也可以通过同样的方式部署与访问,具体请参考官方文档
- 项目依赖:工程创建完成后会自动引入依赖,pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency>
- 配置文件:application.yml
spring:application:name: SpringAI
ai:ollama:chat:enabled:trueoptions:model: llama3:70b
- 主启动类:
@SpringBootApplicationpublicclassSpringAiApplication{publicstaticvoidmain(String[] args){SpringApplication.run(SpringAiApplication.class, args);}}
SpringAI 交互 Ollama 大模型:
- 官方参考代码:
@RestController@RequestMapping("/ai")publicclassChatController{// 客户端privatefinalOllamaChatClient chatClient;// 构造器注入@AutowiredpublicChatController(OllamaChatClient chatClient){this.chatClient = chatClient;}/**
* 批处理
*
* @param message 提示信息
* @return 交互结果
*/@GetMapping("/generate")publicMap<String,Object>generate(@RequestParam(value ="message", defaultValue ="Tell me a joke")String message){returnMap.of("generation", chatClient.call(message));}/**
* 流处理
*
* @param message 提示信息
* @return 交互结果
*/@GetMapping("/stream")publicFlux<ChatResponse>generateStream(@RequestParam(value ="message", defaultValue ="Tell me a joke")String message){Prompt prompt =newPrompt(newUserMessage(message));return chatClient.stream(prompt);}}
- 交互演示:
写在最后:
我并不擅长前端,所以并没有专门设计一个交互页面,只是希望大家能够理解 SpringAI 可以实现怎样的功能,通过这个案例大家可以举一反三,实现自己想要的功能,暂不建议应用于生产环境
版权归原作者 郁希 所有, 如有侵权,请联系我们删除。