链载Ai

标题: 如何本地部署AI模型? [打印本页]

作者: 链载Ai    时间: 昨天 12:09
标题: 如何本地部署AI模型?

前言

最近在准备毕业论文,想把之前的项目拿出来大改,之前的项目有三个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的模型。

ollamarunqwen2.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-sSLhttps://resource.fit2cloud.com/1panel/package/quick_start.sh-oquick_start.sh&&sudobashquick_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.pipelinesimportpipelinefrom modelscope.utils.constantimportTasksfrom flaskimportFlask, request, jsonify# 初始化Flask应用app = Flask(__name__)
general_recognition = pipeline( Tasks.general_recognition, model='damo/cv_resnest101_general_recognition')
@app.route('/recognize', methods=['OST'])def recognize_image(): try: # 获取JSON格式的请求数据 data = request.get_json()
# 从请求数据中获取图片链接 image_url = data.get('image_url')
ifnotimage_url: returnjsonify({"error":"Image URL is required"}),400
# 使用图片链接进行通用识别 result = general_recognition(image_url)
# 返回识别结果 returnjsonify(result),200
except Exception as e: # 如果发生错误,返回错误信息 returnjsonify({"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

使用Apifox进行接口测试,可以看到接口成功返回识别结果

这便说明我们成功地将AI模型部署在自己本地上,同样我们也可以改造其他模型进行调用。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5