本文内容

在Linux中完成大模型部署。
本文主要使用Ollama、TEI(Text-Embeddings-Inference)进行部署,后续补充其他方法。

使用Ollama部署LLM

Ollama 简介

Ollama 是一个开源工具,专注于在本地计算机上高效运行和部署大型语言模型(LLM)。它简化了模型下载、管理和运行的过程,支持多种主流开源模型(如 Qwen、DeepSeek、Gemma 等),并通过命令行提供直观的交互方式。用户无需复杂的配置即可在本地进行文本生成、代码补全等任务,同时支持自定义模型微调。Ollama 兼顾性能与隐私,适合开发者、研究人员或任何希望离线探索 AI 能力的用户。

特点:

  • 一键部署,跨平台(macOS/Linux/Windows)
  • 丰富的预训练模型库
  • 本地运行,保障数据隐私
  • 支持模型量化(降低硬件需求)

网站:ollama.ai

安装Ollama

在线安装

如果主机能够访问ollama网络,直接执行下面的命令即可完成ollama的安装。

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

离线安装

如果Linux主机不能访问ollama网络,可以在有网络的电脑上准备好安装包,再上传至服务器,完成离线安装。

  1. 通过Git命令下载安装脚本
git clone https://github.com/yangkx111/deploy_llm.git

或者直接在浏览器中下载

https://github.com/yangkx111/deploy_llm/archive/refs/heads/main.zip
  1. 下载ollama安装包,放到deploy_llm下的ollama目录中
https://ollama.com/download/ollama-linux-amd64.tgz
  1. 如果有必要,可以修改deploy_llm/ollama目录下的deploy_ollama.sh脚本,设置ollama用户的Home目录,因为后续注册到ollama的大模型都会存储到这个目录中,所以改目录需要保证有足够的磁盘空间,所以需要依据服务器实际磁盘空间情况进行修改。
    修改deploy_ollama.sh中ollama用户的Home目录

  2. 如果有必要,可以修改deploy_llm/ollama目录下ollama.service,这是ollama服务的配置文件。可以依据实际情况修改里面相应的配置,比如端口。
    ollama.service配置

  3. 将deploy_llm上传至服务器

  4. cd到deploy_llm/ollama目录,执行deploy_ollama.sh

./deploy_ollama.sh

测试Ollama

  1. 测试ollama状况
# 如果更改了ollma的端口,这里需要做相应的修改
curl localhost:11434; echo

测试ollama状态

  1. ollama服务状态
# 查看服务状态
systemctl status ollama

# 启动服务
systemctl start ollama

# 停止服务
systemctl stop ollama

查看ollama服务状态

  1. 查看ollama日志
journalctl -u ollama

ollama日志

部署大模型

部署gte-Qwen2-7B-instruct

搜索模型
  1. 在ollama官网搜索模型,选择量化版本Q8_0,拷贝出运行指令:ollama run since2006/gte-Qwen2-7B-instruct:Q8_0
    搜索模型
    选择量化版本,得到运行指令

  2. 如果在ollma中搜索不到合适的模型,可以在huggingface搜索模型,找到量化版本Q8_0,拷贝出运行指令:ollama run hf.co/tensorblock/gte-Qwen2-7B-instruct-GGUF:Q8_0



在线安装

直接运行上面取到的指令

# from ollama
ollama run since2006/gte-Qwen2-7B-instruct:Q8_0

# from huggingface
ollama run hf.co/tensorblock/gte-Qwen2-7B-instruct-GGUF:Q8_0
离线安装

离线安装需要手动从huggingface下载量化文件,然后注册到ollama中,再运行。

  1. 从huggingface下载对应版本的gguf文件

  2. 编写对应的模型配置文件Modelfile.gte-Qwen2-7B-instruct

FROM ./gte-Qwen2-7B-instruct-Q8_0.gguf

TEMPLATE """{{ .Prompt }}"""

PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
  1. 将下载的模型文件以及配置文件放在同一个目录上传到服务器中
  2. 注册模型到ollama。在服务器中运行如下命令
ollama create gte-Qwen2-7B-instruct:Q8 -f  Modelfile.gte-Qwen2-7B-instruct

测试模型

curl 127.0.0.1:11434/api/embeddings \
    -X POST \
    -d '{"model": "gte-Qwen2-7B-instruct:Q8", "prompt": "hello"}' \
    -H 'Content-Type: application/json'

使用Text-Embeddings-Inference部署LLM

TEI 简介

Text Embeddings Inference,简称TEI,是一个用于部署开源文本嵌入及序列分类模型的工具集。TEI为当前最流行的模型(包括FlagEmbedding、Ember、GTE和E5等)提供高性能的向量提取能力。

特点

  • 无需模型图编译步骤
  • 支持Mac本地运行的Metal加速
  • 轻量化Docker镜像与极速启动——真正实现无服务器化部署
  • 基于令牌的动态批处理技术
  • 采用Flash Attention、Candle及cuBLASLt优化的Transformer推理代码
  • 支持Safetensors权重加载
  • 兼容ONNX权重加载
  • 生产级就绪(集成Open Telemetry分布式追踪和Prometheus指标监控)

网站:TEI

安装 TEI

这里采用Docker的方式来安装TEI,这种方式比较快捷。
Docker镜像列表如下:

Architecture Image
CPU ghcr.io/huggingface/text-embeddings-inference:cpu-1.7
Volta NOT SUPPORTED
Turing (T4, RTX 2000 series, …) ghcr.io/huggingface/text-embeddings-inference:turing-1.7 (experimental)
Ampere 80 (A100, A30) ghcr.io/huggingface/text-embeddings-inference:1.7
Ampere 86 (A10, A40, …) ghcr.io/huggingface/text-embeddings-inference:86-1.7
Ada Lovelace (RTX 4000 series, …) ghcr.io/huggingface/text-embeddings-inference:89-1.7
Hopper (H100) ghcr.io/huggingface/text-embeddings-inference:hopper-1.7 (experimental)

依据服务器的配置选择相应的镜像进行安装。

在线安装

直接使用docker命令拉取相应的镜像,比如CPU版本的

docker pull ghcr.io/huggingface/text-embeddings-inference:cpu-1.7

离线安装

如果服务器不能拉取镜像,可以采用手动上传镜像的方式来完成离线安装。

  1. 在能拉取镜像的机器上先拉取镜像
docker pull ghcr.io/huggingface/text-embeddings-inference:cpu-1.7
  1. 导出镜像,并上传到服务器
docker save -o text-embeddings-inference.tar text-embeddings-inference:cpu-1.7

# 压缩
gzip text-embeddings-inference.tar
  1. 在服务器上导入镜像
gzip -d text-embeddings-inference.tar.gz
docker load -i text-embeddings-inference.tar

部署大模型

部署BAAI/bge-reranker-large

搜索模型

在huggingface上搜索模型

在线安装
  1. 在服务器上编写一个shell脚本,比如 run_bge-reranker-large.sh
model=BAAI/bge-reranker-large
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run

docker run -d --gpus all -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-embeddings-inference:1.7 --model-id $model
  1. 直接运行 run_bge-reranker-large.sh
sh ./run_bge-reranker-large.sh
离线安装
  1. 在能够联网的机器上下载模型,下载后模型的所有文件都保存在目录bge-reranker-large中
# 因为有大文件,所以这里需用到gitlfs
git lfs install
git clone https://huggingface.co/BAAI/bge-reranker-large
  1. 编写启动脚本 run-bge-reranker-large.sh
volume=$PWD # share a volume with the Docker container to avoid downloading weights every run

sudo docker run -d -p 8080:80 -v $volume:/data --name bge-rerank-large ghcr.io/huggingface/text-embeddings-inference:cpu-1.7 --model-id /data/bge-reranker-large
  1. 上传文件夹bge-reranker-large和脚本run-bge-reranker-large.sh到服务器,放在相同目录下
  2. 直接运行 run_bge-reranker-large.sh
sh ./run_bge-reranker-large.sh
测试模型
curl 127.0.0.1:8080/rerank \
    -X POST \
    -d '{"query": "中国国庆节是哪一天?", "texts": ["国庆节是10月1日", "端午节是5月1日",  "美国国庆节是3月1日"]}' \
    -H 'Content-Type: application/json'
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐