微信扫码
与创始人交个朋友
我要投稿
前言
最近在准备毕业论文,想把之前的项目拿出来大改,之前的项目有三个AI功能:AI宠物医生(可以给用户提供宠物治疗的建议),图像风格转换(将猫咪的图片转化为别的风格的图片),猫咪品种识别(识别不同的猫咪),但是之前的功能是调用第三方服务商提供的接口,需要支付一定的费用,于是,我想在本地上部署这些服务,节省费用的同时探索一下部署的方法。
✦
•
✦
✦
左右滑动,查看更多
✦
本文主要介绍三个内容:
一、本地环境部署LLM 以通义千问为例
二、使用可视化界面进行优化,方便人机交互
三、魔搭社区AI模型探索,解锁更多模型
一、本地部署LLM模型
在Windows环境部署大模型之后,可以在离线环境下运行,并且也不会消耗token,不需要支付费用。
效果如下动态图:
这一过程需要借助Ollama来实现,它可以很方便地下载到各个参数的大语言模型,并且提供一些接口进行调用。
需要注意的是,ollama下载可能需要魔法,文档在GitHub上有。
此处以Windows系统为例(不需要借助虚拟机即可快速部署,后面会介绍在虚拟机上如何借助Docker安装),在ollama官网下载Windows版本后,需要修改一下环境变量(因为模型默认会安装在C盘,模型文件非常占用空间)
(https://ollama.com/download/windows)
修改系统环境变量,改变模型的存放地址和方便接口调用(否则就只能通过localhost或127.0.0.1调用,不能通过本机ip地址调用)
在官网上可以查看到支持的模型,并且相应的模型参数和配置要求,参数越大对电脑的配置就越高,这里选择qwen2.5b作为部署的模型。
当安装完ollama之后,在cmd命令行中输入下面的指令,即可安装qwen2.5:0.5b的模型。
ollama run qwen2.5:0.5b
安装完成后即可输入ollama run qwen2.5:0.5b启动模型,这样就可以跟它进行对话。
对于开发者来说,如果要进行接口的调用则要遵循一定的格式,携带模型名称和messages,可直接发起网络请求,也可以通过SpringAI进行对接(支持OpenAI和Ollama等接口)
二、可视化界面
目前使用的是Windows平台的ollama,如果要实现可视化界面,可以借助ollama Web UI或者MaxKB等应用来实现(这里使用MaxKB来实现,因为它除了可以提供可视化界面,还可以构建知识库,并且前端代码可以内嵌到别的页面中)
这些应用使用docker部署更方便,但是docker在Windows系统下使用需要有虚拟化环境,说白了还是需要有虚拟机,这里有两种方案,第一种是使用Vmware装一个虚拟机,在上面部署MaxKB等应用,然后调用主机的ollama上的模型(因为主机有显卡内存,模型响应更快,虚拟机则会慢一点,笔者一开始在虚拟机上部署ollama,但模型响应速度很慢)。第二种方法则是借助Windows的wsl功能,通过它可以直接在 Windows 上运行 Linux 文件系统以及 Linux 命令行工具和 GUI 应用。(这种方式下模型响应速度快,并且也方便我们后续调用魔搭社区的模型,毕竟可以使用显卡训练模型)
参考前三个步骤开启虚拟机功能:
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
接着在微软商店可以下载ubuntu,这里选择的是22.04.5LTS版本
这样我们便完成了在Windows系统上运行Linux系统
这里需要注意的是,Ubuntu系统默认会装在C盘系统盘,随着系统的使用,文件会越来越大,这里建议将Linux系统导出为tar包,在别的磁盘上使用Linux系统。这里可以看B站的视频进行操作
Linux系统装好了,接着需要安装docker,B站上大多数视频推荐是使用Docker Desktop,这样可以在windows系统上操作,但是我个人是推荐使用面板工具来操作(毕竟我们已经有了Linux系统了嘛,不如直接在上面操作方便,这里推荐1Panel,它和MaxKB都是飞致云公司的开源项目,真的很不错!docker容器和镜像都可以在1Panel上看到)
Ubuntu系统执行下面的指令即可下载并安装面板,面板下载完之后会提供内外网的访问地址,账号和密码。(要保存好自己的内网地址和账号密码)
curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o quick_start.sh && sudo bash quick_start.sh
在应用商店里安装Ollama和MaxKB(这里ollama不装也可以,可以调用主机的ollama服务,记得对外暴露端口)
在容器中进入ollama的终端,按前面的步骤下载模型
这样便可在终端上进行交互,在Linux系统上输入ifconfig,可以查看到本机的IP地址(前面安装1Panel的时候也会告知内网的ip),第一次输入可能会提示需要下载网络服务相关的文件,按照提示下载即可。
在浏览器上输入http://IP地址:8080 即可访问MaxKB,其中账号和密码在1Panel上可以看到。
在系统管理中添加模型,其中模型名称要与ollama中的名称一致,API接口是http://ip地址:11434(11434是ollama的默认端口号),key可以随便写。
下一步创建应用,填写相应的模型信息,引导大模型的聊天方向。
保存并发布之后便可以进行演示,进行可视化的对话。
效果演示:
MaxKB支持关联知识库,知识库可以是文档内容,也可以是网站,这样AI回答问题时会根据知识库进行回答,比如我在知识库中介绍了公众号,这样它在回答时便根据我的要求进行回答。
对于开发者来说,它还有一个更强大的功能,那便是可以将代码嵌入到第三方中。开发者只要复制前端代码,便可把功能用在自己的应用上。
三、魔搭社区模型探索
魔搭社区 -ModelScope旨在打造下一代开源的模型即服务共享平台,为泛AI开发者提供灵活、易用、低成本的一站式模型服务产品,让模型应用更简单。
回到本文的目的,一开始我想的就是本地部署各种AI模型,经过一番探索之后,我选择了魔搭社区,上面有大量的模型可以使用,并且覆盖各个方向,NLP、CV应有尽有。将模型与后端框架(如flask)结合,就可以将模型应用在自己的项目上。
使用魔搭社区上的模型最快捷的方式应该就是网站自带的notebook,但是有个问题便是无法在本地调用,而我们也很难直接装Python环境然后安装第三方库解决(会有一堆版本和缺库的问题)
所以较好的方法我是参考了B站一位up主的方案,用docker拉取镜像配置相应的环境,具体过程自行观看。(提示:vscode中要装wsl、remote development、docker这几个插件,才能复现up主的操作)
复现up主的操作之后便可在本地环境运行魔搭上的模型,再引入web服务的框架,比如flask或者django等框架,就可以将模型改造成web应用对外提供服务。
这里以万物识别的模型为例:
https://modelscope.cn/models/iic/cv_resnest101_general_recognition/summary
将图片的链接作为入参交给模型,模型识别后会返回物体标签和score得分。
我们通过flask框架改造后Python代码如下
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
from flask import Flask, request, jsonify
# 初始化Flask应用
app = Flask(__name__)
general_recognition = pipeline(
Tasks.general_recognition,
model='damo/cv_resnest101_general_recognition')
@app.route('/recognize', methods=['POST'])
def recognize_image():
try:
# 获取JSON格式的请求数据
data = request.get_json()
# 从请求数据中获取图片链接
image_url = data.get('image_url')
if not image_url:
return jsonify({"error": "Image URL is required"}), 400
# 使用图片链接进行通用识别
result = general_recognition(image_url)
# 返回识别结果
return jsonify(result), 200
except Exception as e:
# 如果发生错误,返回错误信息
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
# 启动Flask应用
app.run(host='0.0.0.0',debug=True)
启动项目后它便将5000端口暴露给外部使用
我们拿一张小狗的图片进行测试,链接如下:
https://pailitao-image-recog.oss-cn-zhangjiakou.aliyuncs.com/mufan/img_data/maas_test_data/dog.png
这便说明我们成功地将AI模型部署在自己本地上,同样我们也可以改造其他模型进行调用。
多余的话
上次更新公众号已经是四年前啦,现在回头看以前的内容很多地方都写得有点粗糙,甚至在Python代码里面用“//”作为注释,实在是不应该。秀米之前写的文章都被冻结了,我想要的图标也找不到了55555。以后就在公众号上记录自己的学习之路吧哈哈哈哈
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-01-14
Ray 在 Bilibili 的场景探索与落地实践
2025-01-13
老婆饼里没有老婆,RLHF里也没有真正的RL
2025-01-12
一文搞懂:大模型为什么要设计成预训练和微调两个阶段?
2025-01-12
Agentic AI 系统设计:第三部分 Agent 之间的交互
2025-01-12
Agentic AI 系统设计:第二部分 模块化
2025-01-09
解码通用 AI Agent:七步构建你的智能系统
2025-01-08
dify案例分享-基于文本模型实现Fine-tune 语料构造工作流
2025-01-08
架构师必备LLM推理优化全解析:Nvidia分享的实用技巧,简单易懂!
2024-09-18
2024-07-11
2024-07-11
2024-07-26
2024-07-09
2024-06-11
2024-10-20
2024-07-20
2024-07-23
2024-07-12