首页 > 其他分享 >本地部署大模型?看这篇就够了,Ollama 部署和实战

本地部署大模型?看这篇就够了,Ollama 部署和实战

时间:2024-07-27 14:57:55浏览次数:9  
标签:部署 Ollama 模型 这篇 -- AI docker ollama

写在前面

前几篇,分享的都是如何白嫖国内外各大厂商的免费大模型服务~

有小伙伴问,如果我想在本地搞个大模型玩玩,有什么解决方案?

Ollama,它来了,专为在本地机器便捷部署和运行大模型而设计。

也许是目前最便捷的大模型部署和运行工具,配合Open WebUI,人人都可以拥有大模型自由。

今天,就带着大家实操一番,从 0 到 1 玩转 Ollama。

1. 部署

1.1 Mac & Windows

相对简单,根据你电脑的不同操作系统,下载对应的客户端软件,并安装:

  • macOS:https://ollama.com/download/Ollama-darwin.zip
  • Windows:https://ollama.com/download/OllamaSetup.exe

1.2 Linux

推荐大家使用 Linux 服务器进行部署,毕竟大模型的对机器配置还是有一定要求。

裸机部署

step 1: 下载 & 安装

命令行一键下载和安装:

curl -fsSL https://ollama.com/install.sh | sh

如果没有报错,它会提示你 ollama 的默认配置文件地址:

Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service.

接下来,我们采用如下命令查看下服务状态, running 就没问题了:

systemctl status ollama

查看是否安装成功,出现版本号说明安装成功:

ollama -v

step 2: 服务启动

浏览器中打开:http://your_ip:11434/,如果出现 Ollama is running,说明服务已经成功运行。

图片

step 3: 修改配置(可选) 如果有个性化需求,需要修改默认配置:

配置文件在:/etc/systemd/system/ollama.service,采用任意编辑器打开,推荐 vim

  1. 默认只能本地访问,如果需要局域网内其他机器也能访问(比如嵌入式设别要访问本地电脑),需要对 HOST 进行配置,开启监听任何来源IP
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
  1. 如果需要更改模型存放位置,方便管理,需要对 OLLAMA_MODELS 进行配置:
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"

不同操作系统,模型默认存放在:

macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:\Users\xxx\.ollama\models
  1. 如果有多张 GPU,可以对 CUDA_VISIBLE_DEVICES 配置,指定运行的 GPU,默认使用多卡。
Environment="CUDA_VISIBLE_DEVICES=0,1"

4.配置修改后,需要重启 ollama

systemctl daemon-reload
systemctl restart ollama

注意:上面两条指令通常需要同时使用:只要你修改了任意服务的配置文件(如 .service 文件),都需要运行systemctl daemon-reload使更改生效。

Docker 部署

我们也介绍下 Docker 部署,无需配置各种环境,相对小白来说,更加友好。

step 1: 一键安装

如果是一台没有 GPU 的轻量级服务器:

docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama --restart always ollama/ollama

简单介绍下这个命令的参数:

  • docker run:用于创建并启动一个新的 Docker 容器。
  • -d:表示以分离模式(后台)运行容器。
  • -v ollama:/root/.ollama:将宿主机上的 ollama 目录挂载到容器内的 /root/.ollama 目录,便于数据持久化。
  • -p 11434:11434:将宿主机的 11434 端口映射到容器的 11434 端口,使外部可以访问容器服务。
  • –name ollama:为新创建的容器指定一个名称为 ollama,便于后续管理。
  • –restart always:容器在退出时自动重启,无论是因为错误还是手动停止。
  • ollama/ollama:指定要使用的 Docker 镜像,这里是 ollama 镜像。

宿主机上的数据卷 volume 通常在 /var/lib/docker/volumes/,可以采用如下命令进行查看:

在这里插入图片描述

如果拥有 Nvidia-GPU:

docker run -d --gpus=all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

安装成功后,注意要给服务器打开 11434 端口的防火墙,然后浏览器打开 http://your_ip:11434/,如果出现 Ollama is running,说明服务已经成功运行。

图片

step 2: 进入容器

如何进入容器中执行指令呢?

docker exec -it ollama /bin/bash

参数说明:

  • exec:在运行中的容器中执行命令。
  • -it:表示以交互模式运行,并分配一个伪终端。
  • ollama:容器的名称。
  • /bin/bash:要执行的命令,这里是打开一个 Bash shell。

执行后,你将进入容器的命令行,和你本地机器上使用没有任何区别。

如果不想进入容器,当然也可以参考如下指令,一键运行容器中的模型:

docker exec -it ollama ollama run qwen2:0.5b

如果一段时间内没有请求,模型会自动下线。

2. 使用

2.1 Ollama 常用命令

Ollama 都有哪些指令?

终端输入 ollama
在这里插入图片描述

我们翻译过来,和 docker 命令非常类似:

在这里插入图片描述

2.2 Ollama 模型库

类似 Docker 托管镜像的 Docker Hub,Ollama 也有个 Library 托管支持的大模型。

传送门:https://ollama.com/library

从0.5B 到 236B,各种模型应有尽有,大家可以根据自己的机器配置,选用合适的模型。

图片

同时,官方也贴心地给出了不同 RAM 推荐的模型大小,以及命令:

图片

注:至少确保,8GB的 RAM 用于运行 7B 模型,16GB 用于运行 13B 模型,32GB 用于运行 33B 模型。这些模型需经过量化。

因为我的是一台没有 GPU 的轻量级服务器,所以跑一个 0.5B 的 qwen 模型,给大家做下演示:
在这里插入图片描述

2.3 自定义模型

如果要使用的模型不在 Ollama 模型库怎么办?

GGUF (GPT-Generated Unified Format)模型

GGUF 是由 llama.cpp 定义的一种高效存储和交换大模型预训练结果的二进制格式。

Ollama 支持采用 Modelfile 文件中导入 GGUF 模型。

下面我们以本地的 llama3 举例,详细介绍下实操流程:

step 1: 新建一个文件名为 Modelfile 的文件,然后在其中指定 llama3 模型路径:

FROM /root/models/xxx/Llama3-FP16.gguf

step 2: 创建模型

ollama create llama3 -f Modelfile

step 3: 运行模型

ollama run llama3

终端出现 >>,开启和 Ollama 的对话旅程吧~

下面是几个常用案例:

  • 多行输入:用"""包裹
    在这里插入图片描述

  • 多模态模型:文本 + 图片地址

在这里插入图片描述

  • 将提示作为参数传递
$ ollama run llama3 "Summarize this file: $(cat README.md)" 
Ollama is a lightweight, extensible framework for building and running language models on the local machine. 

PyTorch or Safetensors 模型

Ollama 本身不支持 PyTorch or Safetensors 类型,不过可以通过 llama.cpp 进行转换、量化处理成 GGUF 格式,然后再给 Ollama 使用。

关于 llama.cpp 的使用,小伙伴可以前往官方仓库:https://github.com/ggerganov/llama.cpp。下载后需要编译使用,成功后会在目录下生成三个可执行文件:

在这里插入图片描述

不过我们只能需要用到它的模型转换功能,还是以 llama3 举例:首先安装项目依赖,然后调用 convert.py 实现模型转换:

pip install -r requirements.txt
python convert.py  /root/xxx/Llama3-Chinese-8B-Instruct/ --outtype f16 --vocab-type bpe --outfile ./models/Llama3-FP16.gguf

提示词实现模型定制

刚才我们介绍了 Modelfile,其中我们还可以自定义提示词,实现更个性化的智能体。

假设现在你从模型库下载了一个 llama3:

ollama pull llama3

然后我们新建一个 Modelfile,其中输入:

在这里插入图片描述

Ollama 实现模型量化

Ollama 原生支持 FP16 or FP32 模型的进一步量化,支持的量化方法包括:

在这里插入图片描述

在编写好 Modelfile 文件后,创建模型时加入 -q 标志:

FROM /path/to/my/gemma/f16/model
ollama create -q Q4_K_M mymodel -f Modelfile

2.3 API 服务

除了本地运行模型以外,还可以把模型部署成 API 服务。

执行下述指令,可以一键启动 REST API 服务:

ollama serve

下面介绍两个常用示例:

1、生成回复

在这里插入图片描述

2、模型对话

在这里插入图片描述

更多参数和使用,可参考 API 文档:https://github.com/ollama/ollama/blob/main/docs/api.md

2.4 OneAPI 集成

OneAPI 也支持 Ollama 模型,我们只需在 OneAPI 中为 Ollama 添加一个渠道。

图片

创建好之后,点击 测试 一下,右上角出现提示,说明已经配置成功,接下来就可以采用 OpenAI 的方式调用了。

图片

2.5 Open WebUI 界面搭建

Open WebUI 是一个可扩展的自托管 WebUI,前身就是 Ollama WebUI,为 Ollama 提供一个可视化界面,可以完全离线运行,支持 Ollama 和兼容 OpenAI 的 API。

标签:部署,Ollama,模型,这篇,--,AI,docker,ollama
From: https://blog.csdn.net/python1234567_/article/details/140734966

相关文章

  • Dockers 部署Nodejs环境的ts 项目遇到的问题
    Dockers部署Nodejs环境的ts项目遇到的问题由于不熟悉TS和nodejs所以过程比较曲折。webpack.config\tsconfig.json\package.json\是几个比较关键的文件。细节可以去看详细文档,这里不展开讲;主要是缺失了start.sh文件和执行npmrunbuild的时候报错问题;遇到报错时,请用最新的AI,......
  • ollama llama3.1 8b openbuddy 模型
    openbuddy对于llama3.18b模型进行了少量的中文训练实现了不错的中文理解处理,以下是使用社区提供的gguf格式,制作一个ollama新模型模型制作下载模型下载gguf文件,推荐使用加速工具Modelfile参考了llama3.1的FROM/home/models/openbuddy-llama3.1-8b-v22.1-......
  • 云服务器安装linux系统及部署宝塔面板教程(以雨云为例)
    雨云云服务器最近活动提示:        ①2核2G香港50M大带宽每月200G流量,月付价格原价33元可享首月5折优惠,年付价格原价396元可享全年7折优惠,约23元/月        ②购买后可享积分12%返利,相当于再打88折        ③还可以通过宝塔面板自动签到的方式获取积......
  • 02.系统部署的注意事项
    在做后面的靶场攻击之前,我们首先要做的是:在安装攻防环境系统环境时,要先①设置好系统的网络环境②需要实现虚拟主机系统和宿主机系统中间数据互传方式一:安装vmtools工具,可以实现数据互传方式二:开启系统远程功能,可以实现数据互传③确认系统安全功能是否都关闭/以及更新......
  • Ubuntu 使用nginx部署thinkphp8配置
    server{listen80;server_nameemall.alliky.cn;root/var/www/html/EMALL_EVTP8_SERVER/public;indexindex.phpindex.htmlindex.htm;#防止文件缓存location~*\.(css|js|jpg|jpeg|png|gif|ico|woff|woff2|css.map|js.map|txt)${expires14d;add_headerC......
  • Ansible—通过role角色部署lnmp架构
    目录一、部署nginx2.部署MySQL3.部署php4.编写测试文件二、Roles模块roles内各目录含义解释一、部署nginxcd/optmkdirnginxcdnginx/上传nginx.repo、nginx.conf,并且修改nginx.conf为nginx.conf.j2vimnginx.conf.j237、38行listen{{nginx_addr}}:......
  • k8s集群部署prometheus
    目录一、Prometheus简介1.1、前言1.2、prometheus架构1.3、prometheus时间序列数据1.3.1、什么是序列数据?1.3.2、时间序列数据特点1.3.3、Promethues适合场景二、部署配置2.1、Prometheus部署2.1.1、创建命名空间2.1.2、创建RBAC规则2.1.3、创建ConfigMap类型的Prometheus配置文件......
  • springboot《学生手册》 线上考试系统设计与实现(源码+lw+部署文档+讲解等)
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代码的......
  • springboot《毛泽东诗词赏析》课程网站实现(源码+lw+部署文档+讲解等)
    具体实现截图技术栈后端框架SpringBoot采用springboot作为后台的框架,java框架具有简化配置和开发的效率。Spring框架目前是很多java开发者的首选框架,Spring主要有两大功能,控制反转和面向切面的编程。控制反转(IOC)可以实现代码的依赖注入,减少代码的......
  • 【日常运维】mongodb学习之安装部署--使用
     本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》: python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》暂未更新《docker学习》暂未更新《ceph学习......