浅谈人工智能之Linux:基于ollama进行本地化大模型部署
今天我们就介绍在离线的环境中如何在Linux操作系统上搭建基于基于ollama进行本地化大模型部署。
浅谈人工智能之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 serveSep 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交互,请关注后续相关文档。
更多推荐
所有评论(0)