当前位置: 首页 > article >正文

Linux系统docker部署Ollama本地大模型及部署Hugging Face开源模型,ollama相关注意点,非ollama模型创建,模型量化,显存建议

本文主要描述在Linux系统使用docker部署ollama自有模型以及Hugging Face开源模型,也涉及到一些相关注意点,欢迎沟通讨论~

拉取镜像

拉取ollama最新镜像:docker pull ollama/ollama:latest

运行ollama

执行:docker run -d --restart=always --gpus=all -v ollama:/root/.ollama -e OLLAMA_ORIGINS="*" -e OLLAMA_HOST="0.0.0.0" -p 31434:11434 --name ollama ollama/ollama
参数解释:

  1. -d后台运行
  2. --restart=always自启动
  3. --gpus=all指定GPU运行
  4. -v ollama:/root/.ollama挂载磁盘
  5. -e OLLAMA_ORIGINS="*"跨域
  6. -e OLLAMA_HOST="0.0.0.0"监听所有可用的网络接口,从而允许外部网络访问
  7. -p 31434:11434端口映射
  8. --name ollama容器名称

注意有坑
docker -v ollama:/root/.ollama此处由于挂载目录使用了相对路径,所以本地文件夹位于 /var/lib/docker/volumes/ollama而非运行命令的相对路径

从宿主机进入ollama容器:
docker exec -it ollama /bin/bash

常用命令:

拉取大模型:ollama pull qwq:32b

查看本地大模型列表:ollama list

运行大模型:ollama run qwq:32b

运行大模型--查看推理速度:ollama rm qwq:32b --verbose

查看运行中的大模型(模型以及GPU占用百分比):ollama ps

删除本地指定大模型:ollama rm qwq:32b

查看模型modelfile配置:ollama show --modelfile qwq:32b

根据Modelfile文件创建ollama模型(例):ollama create qwq-32b-q5 -f qwq.Modelfile

选取模型

ollama自有模型是通过量化的,默认Q4_K_M量化,对显存要求不高,如果显存未拉满,可以考虑去Hugging Face上下载未量化或者更高精度的量化模型,然后构建成ollama模型运行。

GPU显存与模型选择:

  • 显存16G,ollama官方32B以下模型流畅运行,运行32B模型大概需要25G左右显存,会爆显存,推理很慢,但是也能推理。如果想提高32B以下模型推理精度,尽量压榨显存,比如32B以下量化后低于16G的,可以参考下面在ollama中创建并运行Hugging Face的高精度开源模型。
  • 显存32G,ollama官方32B模型能流畅运行,不会爆显存。想提高精度,也同样可以参考下面,运行Q5_K_M等更高精度开源量化模型,比如GGUF等模型。模型大小应小于显存大小,最好预留几个G,比如32G显存,可以下载20G出头大小的模型,当然如果构建ollama模型时上下文参数num_ctx设置过大,占用显存会更高,对应的模型文件也必须更小才行,不然会爆显存。

如果是两张16G显卡跑ollama,显存会叠加成32G,但不支持张量并行(VLLM支持张量并行),推理速度相比同算力单张32G不会叠加。


ollama自有模型使用:

ollama模型列表:https://ollama.com/search
在这里插入图片描述
进入ollama官网,进入对应模型详情页,选择对应参数的模型,复制对应ollama run命令,在ollama容器中执行。
ollama run qwq:32b

此时ollama会自动先拉取模型,再运行。
也可以只拉取模型到本地,后续通过ai集成平台,通过ollama调用,可以执行ollama pull qwq:32b拉取。


非ollama自有模型构建(Hugging Face):

大概流程:

  • 下载huggingface开源模型
  • 构建ollama模型
  • 像ollama自有模型一样使用
下载huggingface模型
注册Hugging Face的Access Tokens并保存(后续下载脚本需要):

在这里插入图片描述

ollama模型列表:https://huggingface.co/?activityType=update-model&feedType=following
这里以QwQ-32B为例,查看对应GGUF量化模型库,选择好自己需要的量化版本,我这里选择的是Q5_K_M的GGUF量化版qwq-32b-q5_k_m.gguf进行下载,相比ollama官方Q4_K_M的量化版精度更高。
模型选择

修改下载脚本

不一定非要用这个python脚本下载,也可以通过其他方式下载GGUF量化模型文件后放到服务器上

创建脚本文件:mkdir download.py
复制编辑以下脚本到download.py中:
vim download.py

from huggingface_hub import hf_hub_download, list_repo_files
import os
from tqdm import tqdm

# 设置 Hugging Face 仓库路径
repo_id = "Qwen/QwQ-32B-GGUF"
# 设置本地保存路径
local_dir = "/usr/local/"

# 创建本地文件夹(如果不存在)
os.makedirs(local_dir, exist_ok=True)

# 获取仓库中的所有文件
file_list = list_repo_files(repo_id=repo_id, repo_type="model",token="替换Access Tokens")

# 指定要下载的前缀,或者文件名
required_prefixes = ['qwq-32b-q5_k_m.gguf]

# 过滤出以指定前缀开头的文件--已屏蔽
#filtered_file_list = [file for file in file_list if any(file.startswith(prefix) for prefix in required_prefixes)]

# 匹配required_prefixes的文件进行下载
filtered_file_list = [
    file
    for file in file_list
    if any(prefix in file for prefix in required_prefixes)
]

# 初始化 tqdm 进度条
pbar = tqdm(filtered_file_list, desc="下载进度", unit="file", colour="green")

# 逐个下载文件
for file in pbar:
    pbar.set_description(f"正在下载: {file}")
    hf_hub_download(
        repo_id=repo_id,
        filename=file,
        repo_type="model",
        local_dir=local_dir,
        local_dir_use_symlinks=False,
        resume_download=True,
        token="替换Access Tokens"
    )

# 关闭进度条
pbar.close()

print(f"模型文件已下载到: {local_dir}")

参数解释:

  • repo_id 模型对应Hugging Face仓库路径
  • local_dir 本地保存路径
  • token Hugging Face的Access Tokens
  • required_prefixes 需要下载的文件名
执行python脚本,进行下载

先执行:export HF_ENDPOINT=https://hf-mirror.com
再执行:python3 download.py

构建ollama模型

创建Modelfile文件:
参考文档:https://github.com/ollama/ollama/blob/main/docs/modelfile.md?login=from_csdn

To use this:

  • Save it as a file (e.g. Modelfile)
  • ollama create choose-a-model-name -f <location of the file e.g. ./Modelfile>
  • ollama run choose-a-model-name
  • Start using the model!

个人建议:可以参考ollama官方同名模型的Modelfile文件,在其基础之上,根据需求修改一些参数,比如num_ctx等,然后创建模型

查询ollama自有模型Modelfile配置:ollama show --modelfile qwq:32b
在这里插入图片描述

新建一个qwq.Modelfile文件,复制Modelfile配置到qwq.Modelfile文件下,更改第一行FROM的路径为本地下载好的GGUF文件路径,如果有其他需要调整的模型构建参数,可以参考上面的官方配置链接,在其基础之上修改。
在这里插入图片描述
执行创建命令:ollama create qwq-32b-q5 -f qwq.Modelfile

查看创建的模型:ollama list
在这里插入图片描述



http://www.kler.cn/a/593574.html

相关文章:

  • 服务器相关的硬件知识
  • git推送代码相关学习——(一)
  • llama源码学习·model.py[3]ROPE旋转位置编码(2)旋转角度生成代码
  • pytest基础学习
  • 【北京迅为】iTOP-RK3568开发板OpenHarmony系统南向驱动开发UART接口运作机制
  • Python IP解析器 ip2region使用
  • P1540 [NOIP 2010 提高组] 机器翻译
  • cmake 之 CMakeLists.txt 中的函数是从哪里来的
  • 再学:ERC20-Permit2、SafeERC20方法 详解ERC721,如何铸造一个NFT以及IPFS的作用
  • Linux Vim 寄存器 | 从基础分类到高级应用
  • python学智能算法(八)|决策树
  • Deepseek结合企业数据挖掘平台能够给企业提升哪些效益?
  • 深入理解Python闭包与递归:原理、应用与实践
  • 【工具】huggingface 模型下载过程
  • 网络空间安全(37)获取webshell方法总结
  • RabbitMQ 集群降配
  • mysql-DELETE、DROP 和 TRUNCATE区别
  • Java protected 关键字详解及探究过程(详细、准确)
  • FastGPT 社区版快速部署指南
  • 计算机网络:(一)详细讲解互联网概述与组成 (附带图谱更好对比理解)