Ollama部署、运行大型语言模型
概述
Ollama是一个专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计的工具。
官方网站:https://ollama.com/
Github:https://github.com/ollama/ollama
安装
Ollama支持macOS、Linux和Windows多个平台运行
macOS:下载Ollama
Windows:下载Ollama
Docker:可在Docker Hub上找到Ollama Docker镜像
Linux:因为使用服务器,这里便以Linux操作系统使用为例记录说明
其中Linux通过命令直接安装如下:
pythonroot@master:~/work# curl -fsSL https://ollama.com/install.sh | sh
>>> Downloading ollama...
######################################################################## 100.0%##O#-#
>>> Installing ollama to /usr/local/bin...
>>> Creating ollama user...
>>> Adding ollama user to render group...
>>> Adding ollama user to video group...
>>> Adding current user to ollama group...
>>> Creating ollama systemd service...
>>> Enabling and starting ollama service...
Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.
>>> NVIDIA GPU installed.
查看ollama的状态
pythonroot@master:~/work# systemctl status ollama
● ollama.service - Ollama ServiceLoaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: enabled)Active: active (running) since Thu 2024-05-16 07:48:52 UTC; 19s agoMain PID: 1463063 (ollama)Tasks: 19 (limit: 120679)Memory: 488.7MCPU: 6.848sCGroup: /system.slice/ollama.service└─1463063 /usr/local/bin/ollama serveMay 16 07:48:52 master ollama[1463063]: Couldn't find '/usr/share/ollama/.ollama/id_ed25519'. Generating new private key.
May 16 07:48:52 master ollama[1463063]: Your new public key is:
May 16 07:48:52 master ollama[1463063]: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKkP+MSQgroycM4iPUhDAUW02qwhEIB4vtANecwzN3En
安装成功后执行ollama -v
命令,查看版本信息,如果可以显示则代表已经安装好
pythonroot@master:~# ollama -v
ollama version is 0.1.38
配置
编辑
vim /etc/systemd/system/ollama.service
文件来对ollama进行配置
1.更改HOST
由于Ollama的默认参数配置,启动时设置了仅本地访问,因此需要对HOST进行配置,开启监听任何来源IP
python[Service]
# 配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"
2.更改模型存储路径
默认情况下,不同操作系统大模型存储的路径如下:
pythonmacOS: ~/.ollama/modelsLinux: /usr/share/ollama/.ollama/modelsWindows: C:\Users.ollama\models
官方提供设置环境变量OLLAMA_MODELS
来更改模型文件的存储路径
python[Service]
# 配置OLLAMA的模型存放路径
Environment="OLLAMA_MODELS=/data/ollama/models"
注意:
由于当时使用root账号,同时目录权限也属于root,配置好后导致服务无法正常启动
此时,可以查看Ollama的运行日志,特别是在遇到问题需要调试时,可以使用以下命令:
pythonjournalctl -u ollama
解决问题:
因为指定的目录ollama用户及用户组没有相应权限,导致服务不能启动。通过授权给相应的目录权限解决问题。
pythonchown ollama:ollama ollama/models
3.更改运行GPU
配置环境变量CUDA_VISIBLE_DEVICES
来指定运行Ollama的GPU,默认不需要改动,适用于多卡环境。
pythonEnvironment="CUDA_VISIBLE_DEVICES=0,1"
4.应用配置 重载systemd并重启Ollama
pythonsystemctl daemon-reloadsystemctl restart ollama
5.访问测试
浏览器访问http://IP:11434/
,出现Ollama is running
代表成功。
Ollama命令
Shell窗口输入ollama
,打印ollama相关命令说明
pythonroot@master:~/work# ollama
Usage:ollama [flags]ollama [command]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 modelsps List running modelscp Copy a modelrm Remove a modelhelp Help about any commandFlags:-h, --help help for ollama-v, --version Show version informationUse "ollama [command] --help" for more information about a command.
ollama的操作命令跟docker操作命令非常相似
pythonollama serve # 启动ollama
ollama create # 从模型文件创建模型
ollama show # 显示模型信息
ollama run # 运行模型
ollama pull # 从注册仓库中拉取模型
ollama push # 将模型推送到注册仓库
ollama list # 列出已下载模型
ollama cp # 复制模型
ollama rm # 删除模型
ollama help # 获取有关任何命令的帮助信息
模型库
Ollama的Library,类似Docker的Docker Hub,在这里可以查找受Ollama支持的大模型。 以下是一些可以下载的示例模型:
注意:Ollama支持8 GB的RAM可用于运行7B型号,16 GB可用于运行13B型号,32 GB可用于运行33B型号。当然这些模型是经过量化过的。
使用示例
下载llama3-8b模型
pythonroot@master:~# ollama pull llama3:8b
pulling manifest
pulling 00e1317cbf74... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.7 GB
pulling 4fa551d4f938... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 12 KB
pulling 8ab4849b038c... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 254 B
pulling 577073ffcc6c... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 110 B
pulling ad1518640c43... 100% ▕██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 483 B
verifying sha256 digest
writing manifest
removing any unused layers
success
下载成功查看模型
pythonroot@master:~# ollama list
NAME ID SIZE MODIFIED
llama3:8b a6990ed6be41 4.7 GB 3 minutes ago
运行模型并进行对话
pythonroot@master:~# ollama run llama3:8b
>>> hi
Hi! How's your day going so far? I'm here to chat and help with any questions or topics you'd like to discuss. What's on your mind?>>> Send a message (/? for help)
自定义模型
所谓自定义模型就是不适用Ollama官方模型库中的模型,理论可以使用其他各类经过转换处理的模型
从GGUF导入
Ollama支持在Modelfile文件中导入GGUF模型
创建一个名为 Modelfile的文件,其中包含一条FROM指令,其中包含要导入的模型的本地文件路径。
pythonFROM ./Llama3-FP16.gguf
在Ollama中创建模型
pythonollama create llama3 -f Modelfile
运行模型
pythonollama run llama3
完整执行日志如下:
pythonroot@master:~/work# touch Modelfile
root@master:~/work# mv /root/work/jupyterlab/models/Llama3-FP16.gguf ./
root@master:~/work# ollama create llama3 -f Modelfile
transferring model data
using existing layer sha256:547c95542e3fa5cc232295ea3cbd49fc14b4f4489ca9b465617076c1f55d4526
creating new layer sha256:81834e074ec2a24086bdbf16c3ba70eb185f5883cde6495e95f5141e4d325456
writing manifest
success
root@master:~/work# ollama run llama3
>>> Send a message (/? for help)
自定义提示
Ollama库中的模型可以通过提示进行自定义。
pythonFROM llama3# 设置温度参数
PARAMETER temperature 1# 设置SYSTEM 消息
SYSTEM """
作为AI智能助手,你将竭尽所能为员工提供严谨和有帮助的答复。
"""
更多参数说明参考:Modelfile文档
从PyTorch或Safetensors导入
所谓从从PyTorch或Safetensors导入Ollama,其实就是使用
llama.cpp
项目,对PyTorch或Safetensors类型的模型进 行转换、量化处理成GGUF格式的模型,然后再用Ollama加载使用 。
上述从GGUF导入
使用的模型:Llama3-FP16.gguf
便是经过llama.cpp
项目处理得到的。
llama.cpp的使用参考:使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署
官方文档参考:导入模型指南
开启服务
运行模型后,执行
ollama serve
命令启动Ollama服务,然后就可以通过API形式进行模型调用
ollama serve
会自动启动一个http服务,可以通过http请求模型服务
首次启动会自动生成ssh私钥文件,同时打印公钥内容。
pythonroot@master:/usr/local/docker# ollama serve
Couldn't find '/root/.ollama/id_ed25519'. Generating new private key.
Your new public key is: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5ssssssxxxxxxxxxxjx3diFB3a5deoGLnT7gHXxjA6R2024/05/16 09:27:27 routes.go:1008: INFO server config env="map[OLLAMA_DEBUG:false OLLAMA_LLM_LIBRARY: OLLAMA_MAX_LOADED_MODELS:1 OLLAMA_MAX_QUEUE:512 OLLAMA_MAX_VRAM:0 OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:1 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:*] OLLAMA_RUNNERS_DIR: OLLAMA_TMPDIR:]"
time=2024-05-16T09:27:27.635Z level=INFO source=images.go:704 msg="total blobs: 0"
time=2024-05-16T09:27:27.635Z level=INFO source=images.go:711 msg="total unused blobs removed: 0"
time=2024-05-16T09:27:27.635Z level=INFO source=routes.go:1054 msg="Listening on 127.0.0.1:11434 (version 0.1.38)"
time=2024-05-16T09:27:27.635Z level=INFO source=payload.go:30 msg="extracting embedded files" dir=/tmp/ollama4098813456/runners
time=2024-05-16T09:27:31.242Z level=INFO source=payload.go:44 msg="Dynamic LLM libraries [cpu cpu_avx cpu_avx2 cuda_v11 rocm_v60002]"
time=2024-05-16T09:27:31.401Z level=INFO source=types.go:71 msg="inference compute" id=GPU-4c974b93-cf0c-486e-9e6c-8f91bc02743c library=cuda compute=7.0 driver=12.2 name="Tesla V100S-PCIE-32GB" total="31.7 GiB" available="16.5 GiB"
REST API
更多、具体API,请参阅 API文档
1.生成回复
pythoncurl http://IP:11434/api/chat -d '{"model": "llama3:8b","messages": [{ "role": "user", "content": "你好啊" }]
}'
请求参数示例:
python{"model": "llama3","prompt": "你好啊","stream": false
}
2.与模型聊天
pythoncurl http://IP:11434/api/chat -d '{"model": "llama3","messages": [{ "role": "user", "content": "你好啊" }]
}'
请求参数示例:
python{"model": "llama3","messages": [{"role": "system","content": "你是一个乐于助人的AI助手。"},{"role": "user","content": "你好啊"}],"stream": false
}
卸载Ollama
停止并禁用服务
pythonsystemctl stop ollamasystemctl disable ollama
删除服务文件和Ollama二进制文件
pythonrm /etc/systemd/system/ollama.service rm $(which ollama)
清理Ollama用户和组
pythonrm -r /usr/share/ollamauserdel ollamagroupdel ollama
One-API
概述
One-API
是一个OpenAI接口管理 & 分发系统,支持各类大模型。这里使用Docker快速进行部署。
GitHub:https://github.com/songquanpeng/one-api
拉取镜像
bashdocker pull justsong/one-api
创建挂载目录
bashmkdir -p /usr/local/docker/oneapi
启动容器
bashdocker run --name one-api -d --restart always -p 3001:3000 -e TZ=Asia/Shanghai -v /usr/local/docker/oneapi:/data justsong/one-api
访问IP:3001
初始账号用户名为 root,密码为 123456
One-API管理本地模型
在创建渠道时选择Ollama,然后手工填上自己要使用的模型,密钥任意,最重要的是后面在代理中写上自己ollama服务的地址即可 测试成功后,在各类OpenAI套壳软件中,通过配置类似于OpenAI的密钥、API地址等参数,就可以象使用OpenAI一样。
Open WebUI
概述
Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线操作。它支持各种 LLM 运行程序,包括 Ollama 和 OpenAI 兼容的 API。
GitHub:https://github.com/open-webui/open-webui
Open WebUI:https://docs.openwebui.com/
Open WebUI社区: https://openwebui.com/
Docker部署
使用Docker快速安装部署Open WebUI,需要注意:确保在Docker命令中包含
-v open-webui:/app/backend/data
。因为它确保数据库正确安装并防止任何数据丢失。
使用Docker进行Open WebUI安装部署,根据场景不同,可分为以下几类:
1.默认配置安装,如果计算机上有Ollama,请使用以下命令:
pythondocker 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:maindocker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
2.Ollama位于不同的服务器上,连接到另一台服务器上的 Ollama,请将OLLAMA_BASE_URL
更改为服务器的URL:
pythondocker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
3.要运行支持Nvidia GPU的Open WebUI,请使用以下命令:
pythondocker run -d -p 3000:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda
4.安装带有捆绑Ollama支持的Open WebUI
使用GPU支持:通过运行以下命令来利用GPU资源:
pythondocker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
仅适用于CPU:如果不使用GPU,请改用以下命令:
pythondocker run -d -p 3000:8080 -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama
Open WebUI配置
访问http://IP:3000
,创建一个账号(管理员) 进入Open WebUI后,界面如下。在Settings中进行相关设置。 设置语言 设置Ollama的访问地址 选择模型,开始聊天。
如何系统的去学习AI大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
阶段1:AI大模型时代的基础理解
- 目标:了解AI大模型的基本概念、发展历程和核心原理。
- 内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践 - L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
- 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
- 内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架应用现状
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架与Thought
- L2.2.5 Prompt框架与提示词 - L2.3 流水线工程
- L2.3.1 流水线工程的概念
- L2.3.2 流水线工程的优点
- L2.3.3 流水线工程的应用 - L2.4 总结与展望
- L2.1 API接口
阶段3:AI大模型应用架构实践
- 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
- 内容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的设计理念
- L3.1.2 Agent模型框架的核心组件
- L3.1.3 Agent模型框架的实现细节 - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的应用场景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特点
- L3.3.2 ChatGLM的开发环境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特点
- L3.4.2 LLAMA的开发环境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介绍
- L3.1 Agent模型框架
阶段4:AI大模型私有化部署
- 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
- 内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
学习计划:
- 阶段1:1-2个月,建立AI大模型的基础知识体系。
- 阶段2:2-3个月,专注于API应用开发能力的提升。
- 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
- 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
全套 《LLM大模型入门+进阶学习资源包》↓↓↓ 获取~
👉CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)👈