当前位置: 首页 > article >正文

Ollama+OpenWebUI+llama3本地部署

引言
llama3在4月19日刚刚发布,官方的对比结果中在开源模型中堪称世界第一,整好周六日有时间,在魔搭社区上测试一下

2 安装Ollama

2.1 下载Ollama

登录Ollama官网下载Ollama安装包
GitHub:https://github.com/ollama/ollama?tab=readme-ov-file
在这里插入图片描述
下载后双击安装
在这里插入图片描述

2.2 安装Ollama

Windows下安装Ollama很简单,双击运行安装文件即可,此处不赘述。

打开终端,输入ollama,出现下图所示代表安装成功

在这里插入图片描述

注意:
windows 的安装默认不支持修改程序安装目录,
默认安装后的目录:C:\Users\username\AppData\Local\Programs\Ollama
默认安装的模型目录:C:\Users\username\ .ollama
默认的配置文件目录:C:\Users\username\AppData\Local\Ollama

2.3 配置Ollama的模型路径

由于Ollama的模型默认会在C盘用户文件夹下的.ollama/models文件夹中,可以配置环境变量OLLAMA_MODELS,设置为指定的路径:
在这里插入图片描述
在这里插入图片描述

2.4 下载llama3模型

llama3目前主要有8B和70B两个模型,分别代表80亿和700亿个训练参数。
在这里插入图片描述

8B模型一般16GB内存就可以跑的很流畅,70B模型则至少需要64GB内存,有CPU就可以跑,当然有GPU更好。
这里我安装的是8B的模型。
打开终端,输入命令:ollama run llama3默认安装8B模型,也可以使用ollama run llama3:8b来指定相应的模型,安装成功会有如下提示:
在这里插入图片描述

提问题,发现该模型给了不太靠谱的回复。
在这里插入图片描述

当然也可以写代码
在这里插入图片描述

至此,llama3本地部署已完成。
注意1:
在没有互联网的环境下部署,可以将下载好的Ollama安装包复制到此环境安装,然后将下载好的模型复制到相应路径就可以在无互联网的环境下使用。
注意2:
由于llama3对中文的支持并不是很好,需要中文的可以使用GitHub上开源的这个llama3中文微调模型https://github.com/LlamaFamily/Llama-Chinese

3 Ollama+OpenWebUI

前面部署的llama3是在命令行里面进行交互,体验感并不好,安装OpenWebUI可以使用web界面进行交互。这里我使用docker的方式部署OpenWebUI。

3.1 安装Docker

3.1.1 下载Docker
Docker下载
在这里插入图片描述
安装启动, 提示如下, 需要启动微软Hyper-V选项
在这里插入图片描述

3.1.2 启动微软Hyper-V

打开“控制面板->程序->启用或关闭Windows功能”
在这里插入图片描述

在这里插入图片描述

勾选Hyper-V选项

在这里插入图片描述

重启电脑后安装成功
Windows工具中可以看到Hyper-V已安装成功。
在这里插入图片描述

注意:
若没有Hyper-V选项,可以使用如下命令安装:

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hv.txt

for /f %%i in ('findstr /i . hv.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hv.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL

Pause

将上述命令复制到Hyper-V.bat批处理文件中,然后以管理员身份运行。
在这里插入图片描述

3.1.3 安装Docker

打开之后是这个样子,一般不需要使用,用命令行操作即可。

在这里插入图片描述

在这里插入图片描述

3.1.4 切换国内镜像源
在这里插入图片描述

{
  "registry-mirrors": [
    "https://82m9ar63.mirror.aliyuncs.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  }
}

Docker中国区官方镜像地址
网易地址
中国科技大学地址
阿里巴巴

3.2 安装OpenWebUI

GitHub地址
在这里插入图片描述
在这里插入图片描述

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

浏览器输入http://localhost:3000/
在这里插入图片描述

注意:
注册时邮箱可以随便填写,例如:admin@111.com

3.3 web访问llama3

注册登录后可以看到直接可以选择之前部署好的llama3:8b模型,通过对话测试下它的能力。
在这里插入图片描述

写代码:
在这里插入图片描述

注意:
后台一定要运行着llama3,ollama run llama3:8b

3.4 离线部署

先安装Docker
将在线下载的docker images保存
在这里插入图片描述

在离线的机器上装载该镜像

docker load -i open-webui.tar

使用3.2章节的命令启动容器即可

常用指令

开启ollam服务

ollama serve

然后,再打开一个窗口,执行下面的命令安装和在命令行中调用llama3大模型:

ollama run llama3

启动后,可以在命令行调用:

另外,回到代码环境,可以使用openai风格代码调用

!pip install openai
1
from openai import OpenAI
client =0penAI(
base url='http://localhost:11434/v1/',
api key='ollama', # required but ignored
)
chat_completion=client.chat.completions.create(
messages=[{'role':'user''content':'你好,请介绍下你自己’}],
model='llama3',
)

chat_completion.choices[0]

写一个多轮对话脚本

lef run chat session():
	# 初始化客户端
	client = 0penAI(base_url='http://localhost:11434/v1/',
	api_key='ollama', # API key is required but ig
	#初始化对话历史
	chat_history =[]
	#启动对话循环
	while True:
		# 获取用户输入
		user_input = input("你:")
		# 检查是否退出对话
		if user_input.lower()=='exit':
			print("退出对话。”)
			break
		#更新对话历史
		chat_history.append({'role': 'user','content':user_input}) 
		# 调用模型获取回答
		try:
			chat completion=client.chat.completions.create(
				messages=chat_history,
				model='llama3'
				)
			# 获取最新回答,适当修改以适应对象属性
			model_response=chat_completion.choices[0]
			print("AI:"model response)
			# 更新对话历史
			chat_history.append({'role':'assistant', 'content':model_response)
		except Exception as e:
			print("发生错误:",e)
			break
			
			
run_chat_session()

总结
至此,完成了LLAMA3的模型部署,从测试的结果可以看到, llama3的基础模型对于中文的支持并不好,我们的问题是中文,它却返回了英文的结果,原因可能是因为它的训练集有15个T但是其中95%是英文,想要它支持中文更好,还需要使用中文的训练集进行微调,可喜的是,微调llma系列的中文训练集并不少(可能是因为llama系列都有这个问题),后续我会接着对llama3进行微调, 待续。。。


http://www.kler.cn/a/458405.html

相关文章:

  • 跟着问题学3.1——R-CNN模型详解
  • Spring创建异步线程,使用@Async注解时不指定value可以吗?
  • IT6622: HDMI 1.4 Tx with eARC RX and Embedded MCU
  • 【视觉SLAM:一、初识SLAM】
  • Pytorch知识框架梳理
  • C# 语法糖集锦
  • 【每日学点鸿蒙知识】子窗口方向、RichEdit不居中、本地资源缓存给web、Json转对象丢失方法、监听状态变量数组中内容改变
  • dede-cms关于shell漏洞
  • Unity3D Huatuo技术原理剖析详解
  • 修改RuoYi框架,并添加新项目
  • 实现一个iOS晃动动画
  • KaiOS 4.0 | DataCall and setupData implemention
  • GAMES101:现代计算机图形学入门-笔记-12
  • 如何强制关闭mac卡死的进程
  • 前端(htmlcss)
  • python爬取网站
  • vue最新源码探索分析
  • git分支与部署环境的关系以及开发规范
  • 【HENU】河南大学计院2024 计算机网络 期末复习知识点
  • MySQL 中存储金额数据一般使用什么数据类型