浅谈人工智能之Linux:基于ollama进行本地化大模型部署

在之前的文档中,我们已经介绍如何在Windows环境中进行大模型的搭建,具体参考文档如下:
浅谈人工智能之Windows:基于ollama进行本地化大模型部署
今天我们就介绍在离线的环境中如何在Linux操作系统上搭建基于基于ollama进行本地化大模型部署。

准备工作

我的操作系统是:

[root@localhost LLM]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)

ollama下载和上传服务器

第一步:进入GitHub网站:https://github.com/ollama/ollama/releases,下载对应Linux程序包:ollama-linux-amd64.tgz,我们复制链接地址
在这里插入图片描述
第二步:使用之前的加速网址对程序包进行下载。
第三步:我们将下载的程序包进行放到对应的Linux上,比如路径:/ftp/LLM/Ollama(根据自己定义)

[root@localhost Ollama]# pwd
/ftp/LLM/Ollama

Qwen2模型下载和上传服务器

第一步:我们进入对应的模型下载地址:https://modelscope.cn/models/qwen/Qwen2-7B-Instruct-GGUF/files,因为服务器配置好一点,所以我们这次使用了qwen2-7b-instruct-q8_0.gguf
这个模型。
第二步:我们将下载的模型上传到服务器,比如路径:/ftp/LLM(根据自己定义)

[root@localhost LLM]# pwd
/ftp/LLM

至此,我们已经准备好对应的大模型搭建所涉及的程序。

模型部署

ollama程序安装

第一步:我们首先对下载的模型进行解压,使用命令如下:

[root@localhost Ollama]# tar -zxvf ollama-linux-amd64.tgz
./
./lib/
./lib/ollama/
./lib/ollama/libcublas.so.12.4.2.65
./lib/ollama/libcublasLt.so.11
./lib/ollama/libcublas.so.11.5.1.109
./lib/ollama/libcudart.so.11.3.109
./lib/ollama/libcublas.so.12
./lib/ollama/libcublasLt.so
./lib/ollama/libcublas.so.11
./lib/ollama/libcublas.so
./lib/ollama/libcudart.so
./lib/ollama/libcublasLt.so.12
./lib/ollama/libcublasLt.so.11.5.1.109
./lib/ollama/libcudart.so.11.0
./lib/ollama/libcudart.so.12.4.99
./lib/ollama/libcudart.so.12
./lib/ollama/libcublasLt.so.12.4.2.65
./bin/
./bin/ollama

第二步:解压完成以后我们将整个Ollama文件拷贝至/usr/bin下面,命令如下:

[root@localhost Ollama]# mv /ftp/LLM/Ollama /usr/bin

第三步:因为我们想把模型存放到某个特定的路径下面,比如:/ftp/ollama/models,所以我们需要新建对应文件目录

[root@localhost ftp]# mkdir ollama
[root@localhost ftp]# cd ollama/
[root@localhost ollama]# mkdir models
[root@localhost ollama]# cd models/
[root@localhost models]# pwd
/ftp/ollama/models

第四步:对对应的文件路径设置响应权限,命令如下

[root@localhost models]# chown -R root:root /ftp/ollama/models
[root@localhost models]# chmod -R 777 /ftp/ollama/models

第五步:设置ollama变成系统服务,我们使用如下命令新建一个文件并且打开该文件

[root@localhost LLM]# vim /etc/systemd/system/ollama.service

第六步:在打开的文件中输入如下内容,并且进行保存

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/Ollama/bin/ollama serve
User=root
Group=root
Restart=always
RestartSec=3
Environment=“OLLAMA_MODELS=/ftp/ollama/models”

[Install]
WantedBy=default.target

上述内容中Environment="OLLAMA_MODELS=/ftp/ollama/models"的地址内容为你设置的保存模型的内容
第八步:服务启动验证,命令如下

[root@localhost LLM]# systemctl daemon-reload
[root@localhost LLM]# systemctl start ollama

第九步:服务状态确认,当我们看到服务如下状态则说明服务已经启动

[root@localhost LLM]# systemctl status ollama
● ollama.service - Ollama Service
Loaded: loaded (/etc/systemd/system/ollama.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2024-09-05 09:47:41 CST; 13s ago
Main PID: 9898 (ollama)
CGroup: /system.slice/ollama.service
└─9898 /usr/bin/Ollama/bin/ollama serve

Sep 05 09:47:41 localhost.localdomain ollama[9898]: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHGtMBDq1DazMV4zNv4zA2IKzRUBerftUOLJvtYkBU9x
Sep 05 09:47:41 localhost.localdomain ollama[9898]: 2024/09/05 09:47:41 routes.go:1125: INFO server config env=“map[CUDA_VISIBLE_DEVICES: GPU_DEVICE_ORDINAL: HIP_VISIBLE_DEVICES: HSA_OVERRIDE_G…s OLLAMA_LLM_
Sep 05 09:47:41 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:41.189+08:00 level=INFO source=images.go:753 msg=“total blobs: 0”
Sep 05 09:47:41 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:41.189+08:00 level=INFO source=images.go:760 msg=“total unused blobs removed: 0”
Sep 05 09:47:41 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:41.189+08:00 level=INFO source=routes.go:1172 msg=“Listening on 127.0.0.1:11434 (version 0.3.9)”
Sep 05 09:47:41 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:41.190+08:00 level=INFO source=payload.go:30 msg=“extracting embedded files” dir=/tmp/ollama2111441544/runners
Sep 05 09:47:52 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:52.999+08:00 level=INFO source=payload.go:44 msg=“Dynamic LLM libraries [cpu_avx cpu_avx2 cuda_v11 cuda_v12 rocm_v60102 cpu]”
Sep 05 09:47:53 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:52.999+08:00 level=INFO source=gpu.go:200 msg=“looking for compatible GPUs”
Sep 05 09:47:53 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:53.002+08:00 level=INFO source=gpu.go:347 msg=“no compatible GPUs were discovered”
Sep 05 09:47:53 localhost.localdomain ollama[9898]: time=2024-09-05T09:47:53.002+08:00 level=INFO source=types.go:107 msg=“inference compute” id=0 library=cpu variant=avx2 compute=”" driver=0.0…le=“45.9 GiB”
Hint: Some lines were ellipsized, use -l to show in full.

第十步:服务状态确认,当我们看到服务如下状态则说明服务已经启动

Qwen2模型加载

第一步:我们进入存放qwen2-7b-instruct-q8_0.gguf的路径下,在同一个目录下,我们使用命令创建Modelfile

[root@localhost LLM]# ls
qwen2-7b-instruct-q8_0.gguf
[root@localhost LLM]# vim Modelfile

第二步:在Modelfile文件中输入如下内容,保存退出

FROM qwen2-7b-instruct-q8_0.gguf

第三步:使用ollama进行模型创建,命令如下

[root@localhost LLM]# /usr/bin/Ollama/bin/ollama create Qwen2-7b -f /ftp/LLM/Modelfile

第四步:当我们看到如下内容说明模型已经在本地创建完成

[root@localhost LLM]# /usr/bin/Ollama/bin/ollama create Qwen2-7b -f /ftp/LLM/Modelfile
transferring model data 100%
using existing layer sha256:945823750c8eb6aa685692753ae90cd9551a56618d03051241268f53cdbd8352
using autodetected template chatml
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
creating new layer sha256:05a9f88cc7450123cfedaff18fa822695ae157593d0e264c9ce74ae1abe24cd7
writing manifest
success

第五步:模型创建查看

[root@localhost LLM]# /usr/bin/Ollama/bin/ollama list
NAME ID SIZE MODIFIED
Qwen2-7b:latest caf81e96085d 8.1 GB 22 minutes ago

第六步:模型启动和交互

[root@localhost LLM]# /usr/bin/Ollama/bin/ollama run Qwen2-7b

启动以后我们就可以跟我们的大模型进行交互

[root@localhost LLM]# /usr/bin/Ollama/bin/ollama run Qwen2-7b
->>> 你好啊,请你介绍下自己
你好!我是一个大型语言模型,能够生成与各种主题相关的文本。我的设计目的是为了帮助人们获得信息、解答问题和进行交流。无论是提供知识解释、创意灵感还是简单对话,我都尽力以友好和高效的方式提供帮助。请告诉我你需要什么方面的帮助,我会尽我所能来协助你。

至此,我们就完成了基于ollama在Linux操作系统上的大模型部署,但是这里还未涉及ollama全局命令、外部调用以及跟AutoGen Studio交互,请关注后续相关文档。

Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐