SpringAI+Ollama三部曲之一:极速体验

news/2024/6/16 17:13:45/文章来源:https://blog.csdn.net/boling_cavalry/article/details/138761438

欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

Spring AI实战全系列链接

  1. Spring AI实战之一:快速体验(OpenAI)
  2. SpringAI+Ollama三部曲之一:极速体验

关于ollama

  • ollama和LLM(大型语言模型)的关系,类似于docker和镜像,可以在ollama服务中管理和运行各种LLM,下面是ollama命令的参数,与docker管理镜像很类似,可以下载、删除、运行各种LLM
Available Commands:serve       Start ollamacreate      Create a model from a Modelfileshow        Show information for a modelrun         Run a modelpull        Pull a model from a registrypush        Push a model to a registrylist        List modelscp          Copy a modelrm          Remove a modelhelp        Help about any command
  • 官网:https://ollama.com/
    在这里插入图片描述
  • 简单的说,有了ollama,咱们就可以在本地使用各种大模型了,ollama支持的全量模型在这里:https://ollama.com/library
  • 官方给出的部分模型
ModelParametersSize下载命令
Llama 38B4.7GBollama run llama3
Llama 370B40GBollama run llama3:70b
Phi-33.8B2.3GBollama run phi3
Mistral7B4.1GBollama run mistral
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Gemma2B1.4GBollama run gemma:2b
Gemma7B4.8GBollama run gemma:7b
Solar10.7B6.1GBollama run solar
  • 另外需要注意的是本地内存是否充足,7B参数的模型需要8G内存,13B需要16G内存,33B需要32G内存

关于《SpringAI+Ollama三部曲》系列

  • 《SpringAI+Ollama三部曲》是《Spring AI实战》的子系列,特点是专注于使用SpringAI来发挥Ollama的功能,由以下三篇文章构成
  1. 极速体验:用最简单的操作,在最短时间内体验Java调用Ollama的效果
  2. 细说开发:说明《极速体验》的功能对应的整个开发过程,把代码的每一步都说得清清楚楚(含前端)
  3. 延伸扩展:SpringAI为Ollama定制了丰富的功能,以进一步释放Ollama的能力,文章会聚焦这些扩展能力

本篇概览

  • 本篇聚焦操作和体验,不涉及开发(后面的文章会有详细的开发过程),力求用最短时间完成本地部署和体验,感受Java版本大模型应用的效果

  • 今天要体验的服务,整体部署架构如下
    在这里插入图片描述

  • 最终效果如下

ollama

  • 今天要做的所有事情汇总如下,嗯,好像挺简单的
    在这里插入图片描述

  • 接下来咱们开始行动呗,正宗的Java程序员开始参与大模型(应用)相关开发工作了,此刻的我内心是激动的

环境要求

  • 完成本篇的实战需要一台Linux操作系统的电脑(虚拟机、WSL2也行),电脑上部署了docker+docker-compose,电脑需要8G内存

确定本篇要用的模型

  • Ollama支持的模型有很多,这里打算使用通义千问,官方网页
    在这里插入图片描述
  • 本次实战选择了较小的1.8b版本,您可以根据自己的实际情况在官网选择其他版本
  • 稍后会将选好的模型写在配置文件中

准备工作(操作系统和docker)

  • 本次实战的两个重要前提条件:
  1. 操作系统是Linux,我这里用的是Ubuntu 24.04 LTS服务器版
  2. docker和docker-compose已经部署好,我这里docker版本是26.1.2
  • 由于docker镜像较大,所以请提前准备好docker镜像加速,方法很多,我这里用的是阿里云的,如下图
    在这里插入图片描述

  • 前面介绍Ollama时提到过官方对内存的要求,所以这里请确保本次实战的电脑配置不要过低,我这边运行的模型是通义千问的1.8b,总消耗如下

free -gtotal        used        free      shared  buff/cache   available
Mem:              31           3          21           0           6          27
Swap:              7           0           7

准备工作(保存文件的目录)

  • 在电脑上准备两个干净目录,用来保存docker容器中的数据,这样即便是容器被销毁了数据也会被保留(例如模型文件),等到再次启动容器时这些文件可以继续使用
  • 第一个是用来保存ollama的文件,我这里是/home/will/data/ollama
  • 第二个是用来保存ollama webui的文件,我这里是/home/will/data/webui
  • 这两个目录会配置到稍后的docker-compose.yml文件中,您要注意同步修改

准备工作(SpringBoot应用的配置文件application.properties)

  • 准备好SpringBoot应用的配置文件application.properties,这样便于各种个性化设置
  • 我这边在/home/will/temp/202405/15目录准备好配置文件,内容如下
spring.ai.ollama.base-url=http://ollama:11434
spring.ai.ollama.chat.options.model=qwen:1.8b
spring.ai.ollama.chat.options.temperature=0.7
spring.main.web-application-type=reactive
  • 注意:本篇使用的模型是qwen:1.8b,如果您要用其他模型,请在这里修改好
  • 至此,准备完毕,进入部署阶段

部署工作(编写docker-compose文件)

  • 新增名为docker-compose.yml的文件,内容如下
version: '3.8'
services:ollama:image: ollama/ollama:latestports:- 11434:11434volumes:- /home/will/data/ollama:/root/.ollamacontainer_name: ollamapull_policy: if_not_presenttty: truerestart: alwaysnetworks:- ollama-dockeropen-webui:image: ghcr.io/open-webui/open-webui:maincontainer_name: open-webuipull_policy: if_not_presentvolumes:- /home/will/data/webui:/app/backend/datadepends_on:- ollamaports:- 13000:8080environment:- 'OLLAMA_BASE_URL=http://ollama:11434'- 'WEBUI_SECRET_KEY=123456'- 'HF_ENDPOINT=https://hf-mirror.com'extra_hosts:- host.docker.internal:host-gatewayrestart: unless-stoppednetworks:- ollama-dockerjava-app:image: bolingcavalry/ollam-tutorial:0.0.1-SNAPSHOTvolumes:- /home/will/temp/202405/15/application.properties:/app/application.propertiescontainer_name: java-apppull_policy: if_not_presentdepends_on:- ollamaports:- 18080:8080restart: alwaysnetworks:- ollama-dockernetworks:ollama-docker:external: false
  • 上面的内容中,前两个volumes的配置对应的是准备工作中新建的两个目录,第三个volumes对应的是刚才新建的application.properties,请按照您的实际情况进行修改

部署(运行docker-compose)

  • 进入docker-compose.yml文件所在目录,执行以下命令就完成了部署和启动
docker-compose up -d
  • 本次启动会用到电脑的这三个端口:11434、13000、18080,如果这些端口有的已被使用就会导致启动失败,请在docker-compose.yml上就行修改,改为没有占用就行,然后执行以下命令(先停掉再启动)
docker-compose down
docker-compose up -d
  • 启动期间,下载docker镜像时因为文件较大,需耐心等待(再次提醒,请配置好docker镜像加速)
    在这里插入图片描述
  • 启动成功后,控制台显示如下
[+] Building 0.0s (0/0)                                                                                                                                                                        
[+] Running 4/4✔ Network files_ollama-docker  Created                                                                                                                                                   0.1s ✔ Container ollama             Started                                                                                                                                                   0.2s ✔ Container java-app           Started                                                                                                                                                   0.4s ✔ Container open-webui         Started 
  • 现在服务都启动起来了,但是还不能用,咱们还要把大模型下载下来

部署(指定大模型)

  • 登录webui服务,地址是http://192.168.50.134:13000,192.168.50.134是运行docker-compose的电脑IP

  • 打开地址,会提示注册或者登录,这里要注册一下
    在这里插入图片描述

  • 注册成功后显示登录成功的页面,如下图
    在这里插入图片描述

  • 现在来下载模型,操作如下
    在这里插入图片描述

  • 输入模型名称然后开始下载
    在这里插入图片描述

  • 模型下载完成后会有如下提示
    在这里插入图片描述

  • 可以直接在webui上体验刚下载的模型,尝试了基本的问答,没有问题
    在这里插入图片描述

  • 至此,部署和启动都完成了,可以体验Java应用了

体验

  • 浏览器打开地址http://192.168.50.134:18080,如下
    在这里插入图片描述
  • 效果如下

ollama

  • 至此,本篇的任务已经完成,一个本地化部署的大模型应用已经就绪,也完成了最基本的体验,过程十分简单(好像也就输入了几行命令,打开浏览器点了几下)
  • 简单的背后,其实现是否也简单呢?先剧透一下吧,得益于Spring团队的一致性风格,调用Ollama的过程和操作数据库消息队列这些中间件差不多,几行代码几行配置就够了
  • 至于完整的开发过程,就留到下一篇吧,那里会给出所有源码和说明

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1046373.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GMSL图像采集卡,适用于无人车、自动驾驶、自主机器、数据采集等场景,支持定制

基于各种 系列二代 G MS L 图像采集卡(以下简称 二代图像采集卡)是一款自主研发的一款基于 F P G A 的高速图像产品,二代图像采集卡相比一代卡,由于采用PCIe G en 3 技术,速度和带宽都相应的有了成 倍的提高。该图像…

HDR 视频相关标准-HDR vivid (一)

一、HDR vivid 概况 高动态范围(High-DynamicRange,HDR)作为超高清音视频产业的关键技术之一,比传统的标准动态范围(StandardDynamicRange,SDR)拥有更广的色彩容积和更高的动态范围,…

农业信息|基于SSM+vue的农业信息管理系统的设计与实现(源码+数据库+文档)

农业信息管理系统 目录 基于SSM+vue的农业信息管理系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3种植户功能模块 4用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 …

【华为】BFD与静态路由和RIP联用

【华为】BFD与静态路由和RIP联用 实验需求配置AR1AR2AR3AR4效果抓包查看 实验需求 如上图组网所示,在R1上配置到达R4的Loopback0。 4.4.4.4/32网段的浮动静态路由,正常情况下通过R3访问R4。 当R3故障时,自动选路通过R2访问R4的Loopback0;在R…

免费,Python蓝桥杯等级考试真题--第6级(含答案解析和代码)

Python蓝桥杯等级考试真题–第6级 一、 选择题 答案&#xff1a;D 解析&#xff1a;4411*4&#xff0c;超出范围&#xff0c;故答案为D。 答案&#xff1a;B 解析&#xff1a;5<8<10&#xff0c;故答案为B。 答案&#xff1a;A 解析&#xff1a;先比较a&#xff0c;然后…

caffe在ARM鲲鹏920-openEuler2309上的环境搭建

caffe 配置环境 caffe cpu-only openblas protobuf 编译caffe需要3.6~3.10版本&#xff0c;否则会报错 dnf install只能安装3.19版本 需要从源码编译&#xff0c;这里选择了3.9版本 protobuf的github仓 从源码编译安装 caffe-gpu mode caffe的gpu模式需要用到cuda make…

表面简单实则暗藏玄机的面试题:Java数组适合做队列吗?

Java数组本身是一种线性数据结构&#xff0c;它可以用来存储一系列固定大小的元素。尽管数组可以用于实现队列的一些基本操作&#xff0c;比如入队&#xff08;enqueue&#xff09;和出队&#xff08;dequeue&#xff09;&#xff0c;但由于其固定的大小&#xff0c;它并不适合…

什么是安全左移如何实现安全左移

文章目录 一、传统软件开发面临的安全挑战二、什么是安全左移四、安全左移与安全开发生命周期&#xff08;SDL&#xff09;三、安全左移对开发的挑战五、从DevOps到DevSecOps六、SDL与DevSecOps 一、传统软件开发面临的安全挑战 传统软件开发面临的安全挑战主要包括以下几个方…

线缆产线中测径仪的安装位置和选型

关键字:激光测径仪,测径仪安装位置,测径仪选型,测径仪的种类,测径仪测头,线缆产线安装位置, 激光测径仪的安装位置和选型&#xff0c;确实需要根据具体的使用环境和需求来决定。 首先&#xff0c;关于安装位置&#xff0c;激光测径仪可以安装在冷却水槽之前或之后。 安装在…

防火墙技术基础篇:解析防火墙的网络隔离机制

防火墙技术基础篇&#xff1a;解析防火墙的网络隔离机制 网络安全在现代社会中扮演着重要的角色&#xff0c;保护网络系统、用户和数据免受未经授权的访问、破坏和窃取。个人、企业和国家都需要加强网络安全意识&#xff0c;采取有效措施保护自身的网络安全。随着网络攻击手段…

FSC认证是什么?森林认证的好处是什么?

FSC认证&#xff08;Forest Stewardship Council&#xff0c;森林管理委员会认证&#xff09;是一种运用市场机制来促进森林可持续经营&#xff0c;实现生态、社会和经济目标的工具。以下是关于FSC认证的详细介绍&#xff1a; 一、FSC认证包括两个方面&#xff1a; 森林经营认…

单向无头链表实现

目录 1. 为什么要有链表&#xff1f; 2. 链表的种类 3. 具体功能实现 &#xff08;1&#xff09;节点结构体定义 &#xff08;2&#xff09;申请节点 &#xff08;3&#xff09;尾插 &#xff08;4&#xff09;尾删 &#xff08;5&#xff09;头插 &#xff08;6&#…

2024042701-disjoint-set

并查集 Disjoint-Set 一、前言 并查集的历史 1964年&#xff0c; Bernard A. Galler 和 Michael J. Fischer 首次描述了不相交的并查集&#xff0c;1975 年&#xff0c;Robert Tarjan 是第一个证明O(ma(n))&#xff08;逆阿克曼函数&#xff09;算法时间复杂度的上限&#x…

免费,scratch蓝桥杯等级考试真题--第18级(含答案解析和代码)

scratch蓝桥杯等级考试真题–第18级 一、 选择题 答案&#xff1a;C 解析&#xff1a;角色隐藏后&#xff0c;图章效果还是正常显示的&#xff0c;所以C选项错误&#xff0c;故答案为C。 答案&#xff1a;D 解析&#xff1a;根据运算可知&#xff0c;2045,3065,408*5&#xff…

生成式AI蔚然成风 店匠科技引领跨境电商新范式

大家知道吗&#xff0c;曾经火遍全网的被喻为中老年服饰一姐的梁晓晴&#xff0c;其实是一位90后。在一个综艺节目中&#xff0c;她在30秒之内变换了116个Pose&#xff0c;让不少观众惊叹不已。对于一个电商平台来说&#xff0c;模特照片的好坏可能直接影响到产品的销量。实际上…

使用Python生成一束玫瑰花

520到了&#xff0c;没时间买花&#xff1f;我们来生成一个电子的。 Python不仅是一种强大的编程语言&#xff0c;用于开发应用程序和分析数据&#xff0c;它也可以用来创造美丽的艺术作品。在这篇博客中&#xff0c;我们将探索如何使用Python生成一束玫瑰花的图像。 准备工作…

深度学习之基于Django+Tensorflow卷积神经网络实时口罩检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着全球疫情的持续&#xff0c;佩戴口罩成为了公众日常生活中不可或缺的一部分。特别是在人员密集的…

SDL系列(三)—— SDL2.0 扩展库:SDL_image与SDL_mixer

SDL_image SDL 默认支持的&#xff0c;只能打开 BMP 格式的图片 。 然而我们常见的是 Png jpg 格式的图片&#xff0c;于是我们这节完成 SDL 借用 自带的三方库 &#xff0c;来 完成加载渲染 png 等其他图片格式。 SDL_image 简介 使用 SDL_image &#xff0c;您…

vmware 17pro17.5 bug 严重,建议升级17.52

近日vmware发布17.52 更新&#xff0c;修复了一个重大BUG. 也就是莫名其妙的CPU跟GPU占用问题。 我的系统是WIN11 跟VMWARE17.5..近日莫名其妙的发现即使什么都没运行&#xff0c;GPU占用也高达20%。开始以为中毒了被拿去挖矿了&#xff0c;后面看到VMWARE的这个更新&#xf…

数学建模——建立数学模型(1)

目录 前言 建立数学模型 从现实对象到数学模型 原型和模型 模型分类 直观模型 物理模型 思维模型 符号模型 数学模型&#xff08;重点&#xff09; 数学建模的重要意义 分析与设计 预报与决策 控制与优化 规划与管理 数学建模的基本方法和步骤 数学建模的基本…