安装 Rust

建议安装 Rust 的最新版本 1.75.0,安装命令如下

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

TEI 的安装

1、下载 TEI 的 github 仓库

git clone https://github.com/huggingface/text-embeddings-inference.git && cd text--embeddings-inference

2、安装cargo install时所用依赖

root@localhost:~/BAAI/text-embeddings-inference-1.5.0# apt install pkg-config libssl-dev

3、gcc g++ 的版本要>=12

ubuntu 20.04中apt的gcc和g++最高版本为9,所以采用下下策,编译安装gcc和g++

# 下载 GCC 源码
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# wget http://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# tar -xzf gcc-12.2.0.tar.gz
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# cd gcc-12.2.0

# 安装依赖
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# sudo apt install build-essential libgmp3-dev libmpfr-dev libmpc-dev

# 配置和编译
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# ./configure --disable-multilib --enable-languages=c,c++
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# make -j$(nproc)
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# sudo make install

#验证是否编译成功
root@localhost:~/BAAI/text-embeddings-inference-1.5.0# /usr/local/bin/gcc --version
gcc (GCC) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

root@localhost:~/BAAI/text-embeddings-inference-1.5.0# /usr/local/bin/g++ --version
g++ (GCC) 12.2.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4、设置环境变量

export CC=/usr/local/bin/gcc
export CXX=/usr/local/bin/g++
export CARGO_TARGET_DIR=/root/BAAI/text-embeddings-inference-1.5.0/target

5、安装TEI 项目相关依赖

ln -sf /root/.cargo/bin/cargo /usr/bin/
cargo install --path router -F candle

6、部署 Rerank 模型

ln -sf /root/.cargo/bin/text-embeddings-router /usr/bin/
nohup text-embeddings-router --model-id BAAI/bge-reranker-v2-m3 --port 38080 > output.log 2>&1 &

部署完成后查看API相关信息

http://10.84.3.243:38080/docs/

测试

curl -X 'POST' \
  'http://localhost:38080/rerank' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{
  "query": "What is Deep Learning?",
  "texts": [
    "Deep Learning is ...",
    "hello"
  ]
}'

7、部署Embedding 模型

nohup text-embeddings-router --model-id BAAI/bge-m3 --port 38081 > output.log 2>&1 &

8、部署chat模型

nohup text-embeddings-router Qwen/Qwen2.5-72B-Instruct --port 38082 > output.log 2>&1 &

使用ollama安装chat模型

1、一键安装ollama

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

2、手动安装ollama

2.1、下载并解压安装包

curl -L https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
sudo tar -C /usr -xzf ollama-linux-amd64.tgz

2.2、创建启动用户

sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama
sudo usermod -a -G ollama $(whoami)

2.3、加入systemd管理

cat > /etc/systemd/system/ollama.service << EOF
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=$PATH"

[Install]
WantedBy=default.target
EOF

3、启动服务

sudo systemctl daemon-reload
sudo systemctl enable ollama

4、部署qwen2.5:72b

ollama run qwen2.5:72b

Xinference

Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。
官方网站:https://inference.readthedocs.io/zh-cn/latest/getting_started/installation.html

Docker

部署CPU版Xinference Server

services:
  xinference:
    image: registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference:v0.16.2-cpu
    ports:
      - "9997:9997"
    environment:
      - XINFERENCE_MODEL_SRC=modelscope  #指定模型仓库,国内的是魔塔库,国外的是huggingface
    command: xinference-local -H 0.0.0.0 --log-level debug

部署GPU版Xinference

准备工作

Xinference 使用 GPU 加速推理,该镜像需要在有 GPU 显卡并且安装 CUDA 的机器上运行。
保证 CUDA 在机器上正确安装。可以使用 nvidia-smi 检查是否正确运行。
镜像中的 CUDA 版本为 12.4 。为了不出现预期之外的问题,请将宿主机的 CUDA 版本和 NVIDIA Driver 版本分别升级到 12.4 和 550 以上。

services:
  xinference:
    image: registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference:v0.16.2
    environment:
      - XINFERENCE_MODEL_SRC=modelscope
    ports:
      - "9998:9997"
    runtime: nvidia
    command: xinference-local -H 0.0.0.0 --log-level debug
    deploy:
      resources:
        limits:
          devices:
            - driver: nvidia
              count: all
    restart: always

Kubernetes Server

Xinference 提供基于原生 Helm 在 Kubernetes 集群中安装的方式。

准备条件

  • 一个可用的 Kubernetes 集群。
  • 在 Kubernetes 中开启 GPU 支持
  • 正确安装 Helm

具体步骤

1、新增 Xinference Helm 仓库

root@master1:~# helm repo add xinference https://xorbitsai.github.io/xinference-helm-charts
"xinference" has been added to your repositories

2、更新仓库索引,查询可安装版本

root@master1:~# helm repo update xinference
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "xinference" chart repository
Update Complete. ⎈Happy Helming!⎈
root@master1:~# helm search repo xinference/xinference --devel --versions
NAME                     CHART VERSION          APP VERSION      DESCRIPTION                             
xinference/xinference    0.0.2-v0.14.4          v0.14.4          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.2-v0.13.3          v0.13.3          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.16.2          v0.16.2          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.16.1          v0.16.1          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.16.0          v0.16.0          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.15.4          v0.15.4          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.15.3          v0.15.3          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.15.2          v0.15.2          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.15.1          v0.15.1          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.15.0          v0.15.0          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.4          v0.14.4          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.3          v0.14.3          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.2          v0.14.2          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.1          v0.14.1          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.0.post1    v0.14.0.post1    Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.14.0          v0.14.0          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.13.3          v0.13.3          Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.0.4           v0.0.4           Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.0.3           v0.0.3           Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.0.2           v0.0.2           Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-v0.0.1           v0.0.1           Helm charts for Xinference on Kubernetes
xinference/xinference    0.0.1-main             main             Helm charts for Xinference on Kubernetes

3、安装

helm install xinference xinference/xinference -n xinference --version 0.0.2-v0.14.4

部署模型

安装xinference客户端

pip install xinference

部署模型

Rerank

xinference launch --model-name bge-reranker-v2-m3 --model-type rerank -e http://10.84.3.40:30018

embedding

xinference launch --model-name bge-large-zh-v1.5 --model-type embedding -e http://10.84.3.40:30018

Chat

xinference launch --model-engine ${engine} --model-name qwen2.5-instruct --size-in-billions 0_5 --model-format pytorch --quantization ${quantization} -e http://10.84.3.40:30018
  • Model Format: pytorch
  • Model Size (in billions): 0_5
  • Quantizations: 4-bit, 8-bit, none
  • Engines: vLLM, Transformers, SGLang (vLLM and SGLang only available for quantization none)
  • Model ID: Qwen/Qwen2.5-0.5B-Instruct
  • Model Hubs: Hugging Face, ModelScope
  • --model-name: 指定部署的模型名称,上方例子的模型名称是bge-reranker-v2-m3
  • --model-type:指定部署的模型类型,上方例子的模型类型是rerank
  • -e:指定Server地址,上方例子的Server地址是http://10.84.3.40:30018
    注意:执行完上方任意一条部署模型指令后都会去ModelScope或Hugging Face下载大模型文件,具体是ModelScope还是Hugging Face需要在环境环境变量中指定XINFERENCE_MODEL_SRC,必须确保网络畅通

自定义模型

xinference launch --model_path <model_file_path> --model-engine <engine> -n qwen1.5-chat -e http://10.84.3.40:30018

部署自定义模型与上方部署方式大部分都一样,唯一区别是需要指定模型文件路径,将下载下来的模型文件存放至Server某个目录下,然后通过--model_path指定绝对路径

  • --model_path:模型文件路径
  • --model-engine:选择加载模型的引擎
  • -n:模型名称
最后修改:2024 年 11 月 12 日
如果觉得我的文章对你有用,请随意赞赏