部署大模型
一、使用案例
1.1 本地CPU
export OLLAMA_HOST=127.0.0.1:9108
ollama run deepseek-r1:1.5b
ollama run deepseek-dis:1.5b
如果显示未连接:sudo systemctl restart ollama.service


DeepSeek-R1-Distill-Qwen-7B-Q2_K_L

二、部署方案
2.1 本地CPU离线部署方案
采用ollama进行本地大模型部署。 附:【模型选择】DeepSeek-R1本地部署配置
1、iCenter-ollama 中下载ollama amd64版本,解压后执行 mv bin/ollama /usr/local/bin/ 安装。执行 ollama --version 检查是否安装成功。设置环境变量
export OLLAMA_HOST=127.0.0.1:9108
export OLLAMA_ORIGINS=*
在目录/etc/systemd/system下创建文件ollama.service
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=root
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=127.0.0.1:9108"
Environment="OLLAMA_ORIGINS=*"
[Install]
WantedBy=default.target
权限控制
chmod +x ollama.service
启动 ollama
sudo systemctl daemon-reload
sudo systemctl restart ollama.service
观察是否生效(ACTIVE RUNNING)
sudo systemctl status ollama.service
2、下载模型文件,由于无法直接在命令行下载,这里采用hugging face/modelscope下载gguf版本。如果不是gguf格式需要通过 llama.cpp把huggingface模型转换为ollama所需要的gguf格式。
【转换】Qwen官网-ollama运行自己的gguf说明 // GitCode - ollama加载gguf说明
2.0 需要python大于3.8还是3.10 iCenter-3.11云桌面
2.1 Github-llama.cpp下载 下载llama.cpp源码,解压
2.2 进入llama.cpp文件夹下,安装python依赖库
pip install -r /path/to/your/llama.cpp/requirements.txt
2.3 在llama.cpp文件夹下进行转换
python llama.cpp/convert_hf_to_gguf.py 自己模型路径 --outtype f16 --verbose --outfile 自己定义模型gguf文件名
可以选择量化,fp16 和 f32: 不量化,保留原始精度。
【注意】自己的模型路径是包含所有模型文件(包括config.json 和分词器文件)的 目录路径
2.4 在上述下载 gguf 模型的目录中新建一个名为 Modelfile 的文件
FROM ./DeepSeek-R1-Distill-Qwen-1.5B-Q5_K_M.gguf #路径
python convert_hf_to_gguf.py /home/00354771/00354771/deepseek/云端/deepseek/ --outfile /home/00354771/00354771/deepseek/云端/deepseek/model.gguf --outtype f16
2.5 在 gguf 模型的目录下运行 Ollama 加载 gguf 的命令
ollama create deepseek-r1:1.5b -f Modelfile
# deepseek-r1:1.5b自定义
当运行 ollama create 时,Ollama 会将 GGUF 文件的内容复制或链接到其内部的模型存储位置(通常是 /root/.ollama/models/blobs 目录下的以 SHA256 哈希命名的文件,ls models可以看到manifests/blobs)。
2.6 运行指定模型/ ollama ls可以查看当前模型
3、这里有一个直接的1.5b模型文件,将离线模型文件 iCenter-1.5b模型 解压拷贝到 /root/.ollama/models下 ----models --manifests --blobs。启用ollama run deepseek-r1:1.5b。
【可能不是特别通用,huggingface等文件自己下载的话见第二步】
2.2 本地Docker-ollama部署(离线+CPU)
这里主要是docker部署问题,由于是离线部署,只需要把下载的模型(见上文2.1操作 /root/.ollama/models文件夹 复制到docker项目指定文件夹下)
1、ollama-amd64镜像 镜像链接。docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:latest
2、docker run -d -p 9208:9208 --add-host=host.docker.internal:host-gateway -v /home/00354771/00354771/deepseek/Docker/data:/root/.ollama --name ollama --restart always swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:latest
但是这里报错了:runtime/cgo: pthread_create failed: Operation not permitted SIGABRT: abort
可能是权限不够或者是环境问题,加上了priviledge
docker run -d --name ollama --privileged -v /home/00354771/00354771/deepseek/Docker/data:/root/.ollama -p 9208:9208 --restart always swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:latest
3、把本地路径下的/root/.ollama/models复制到 /home/00354771/00354771/deepseek/Docker/data 下(根据映射关系充当docker的/root/.ollama),复制原因是ollama run 无法上网
4、进入docker容器 docker exec -it ollama bash
5、运行模型 ollama run deepseek-r1:1.5b
三、参数设置
ollama参数 通过ollama show可以查看模型固有参数:ollama show deepseek-r1:1.5b
Model
architecture qwen2
parameters 1.8B
context length 131072
embedding length 1536
quantization Q4_K_M
主要参数说明:


在CTL里面,可以设置参数(一次性)
[00354771@LIN-264C23D1EF4 ~]$ ollama run deepseek-r1:1.5b
>>> /set parameter num_predict 500
Set parameter 'num_predict' to '500'
通过Modelfile固定模型参数
FROM llama2
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER max_tokens 1024
PARAMETER repeat_penalty 1.2
然后使用ollama create重新构建模型
ollama create my_custom_model -f Modelfile
四、问题记录
=== 本地CPU部署 ===
1、知乎-llama.cpp本地部署 最开始使用的llama.cpp 编译的时候出现了较多问题。【解决方案】采用ollama部署 CSDN-Ollama和llama.cpp选型指南。
2、在ollama官网ollama中给定linux系统下载方式为 curl -fsSL https://ollama.com/install.sh | sh,由于内网问题无法下载。【解决方案】iCenter-OLLAMA 中下载ollama amd64版本。
3、无法通过 模型下载 命令行下载模型,如 ollama run/pull deepseek-r1:1.5b
- ollama pull 命令的主要作用是从 Ollama 的在线模型库中下载指定的模型到本地机器上
- ollama run命令的主要作用是启动一个已经下载到本地的模型,如果未下载会自动先执行pull

【解决方案】 需要自行下载GGUF 模型或者 通过llama.cpp进行gguf转换。
4、如果按照iCenter-ollama设置环境变量 export OLLAMA_HOST=0.0.0.0:11434 会报错:Error: Head "http://0.0.0.0:11434/": EOF。【解决方案】将环境变量改为 127.0.0.1:9108,改动地方1:vim /etc/systemd/system/ollama.service;改动地方2:export OLLAMA_HOST=127.0.0.1:9108。
=== 本地llama.cpp和docker部署 ===
5、docker run -d -p 9208:9208 --add-host=host.docker.internal:host-gateway -v /home/00354771/00354771/deepseek/Docker/data:/root/.ollama --name ollama --restart always swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:latest 查看日志报错(docker ps无效如果不加restart always,如果加上的话也无法ollama pull,会提示镜像不在running):runtime/cgo: pthread_create failed: Operation not permitted SIGABRT: abort 【解决方案】加上priviledge:docker run -d --name ollama --privileged -v /home/00354771/00354771/deepseek/Docker/data:/root/.ollama -p 9208:9208 --restart always swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/ollama/ollama:latest
6、【docker构建问题】采用docker-compose出现错误。(6.1)原本在Docker文件夹下建立了docker-compose.yml
version: '3.8'
services:
ollama-service:
image: ollama/ollama:latest
container_name: ollama-server
ports:
- "9208:9208" # 将 9208 端口映射到容器 9208 端口
volumes:
# **将宿主机的 ollama-models 目录挂载到 Ollama 容器的模型存储路径**
- ./data:/root/.ollama
restart: always
然后构建的时候显示没有docker-compose,按照docker-compose安装 链接 docker-compose下载链接 下载 docker-compose。(6.2)运行 docker-compose的时候没有权限:unable to get image 'ollama/ollama:latest': permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.51/images/ollama/ollama:latest/json": dial unix /var/run/docker.sock: connect: permission denied 【解决方案】将00354771添加到docker用户组。sudo usermod -aG docker 00354771,然后exit 完全退出,groups 00354771 出现了docker。这个方法还是报错,然后运行 newgrp docker,执行docker info 没有权限错误。(6.3)docker-compose up -d执行,内网原因?error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/02/029391db139caf88be3125d86633fde6e713ae8865580df93ff56a5dd49da490/data?expires=1752478744&signature=SL1UzNrri7zuP5oTRkSSt6iiLUg%3D&version=2: Moved Temporarily 【没找到原因,最后直接docker pull通过docker run构建】
7、【llama.cpp构建问题】在已经通过本地ollama部署成功的基础上重新尝试了llama.cpp。(7.1)按照llama.cpp部署 下载llama-cpp-python但是 失败,只用cpu编译:pip install llama-cpp-python --force-reinstall --no-cache-dir 失败;(7.2)采用make进行编译,缺少libcurl-devel,继续安装后编译
[00354771@LIN-264C23D1EF4 llama.cpp]$ cmake -B build_cpu
fatal: 不是一个 git 仓库(或者直至挂载点 / 的任何父目录)
停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。
fatal: 不是一个 git 仓库(或者直至挂载点 / 的任何父目录)
停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。
-- Warning: ccache not found - consider installing it for faster compilation or disable this warning with GGML_CCACHE=OFF
-- CMAKE_SYSTEM_PROCESSOR: x86_64
-- GGML_SYSTEM_ARCH: x86
-- Including CPU backend
-- x86 detected
-- Adding CPU backend variant ggml-cpu: -march=native
CMake Warning at common/CMakeLists.txt:32 (message):
Git repository not found; to enable automatic generation of build info,
make sure Git is installed and the project is a Git repository.
-- Found CURL: /usr/lib64/libcurl.so (found version "7.61.1")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/00354771/00354771/deepseek/llama.cpp/build_cpu
(7.3)然后执行cmake --build build_cpu --config Release :报错:../bin/libggml.so:对‘std::filesystem::__cxx11::directory_iterator::operator*() const’未定义的引用 ... collect2: 错误:ld 返回 1 gmake[2]: *** [tests/CMakeFiles/test-c.dir/build.make:107:bin/test-c] 错误 1 和cpp-python一样的问题;(7.4)关于 std::filesystem 的未定义引用。 先删除rm -rf build_cpu
再cmake -B build_cpu -DCMAKE_EXE_LINKER_FLAGS="-lstdc++fs",再执行cmake --build build_cpu --config Release,报错。(可能是GCC版本太低)【没找到解决方法,暂时放弃】
五、不同模型性能测试
更多推荐


所有评论(0)