赞
踩
Xorbits Inference (Xinference) 是一个开源平台,用于简化各种 AI 模型的运行和集成。借助 Xinference,您可以使用任何开源 LLM、嵌入模型和多模态模型在云端或本地环境中运行推理,并创建强大的 AI 应用。
帮助文档:https://inference.readthedocs.io/zh-cn/latest/models/index.html
# 修改存储目录(模型及日志文件)
export XINFERENCE_HOME=/tmp/xinference
# 可以使用的显卡(使用nvidia-smi查看)
export CUDA_VISIBLE_DEVICES=0,1,2,3,4
# 从modelscopde下载模型
export XINFERENCE_MODEL_SRC=modelscope
# 设置token(部分模型需要授权)
export HUGGING_FACE_HUB_TOKEN=your_token_here
# 模型缓存目录,默认值是~/.cache/modelscope/hub
export MODELSCOPE_CACHE=<model_saved_path>
# 查看支持的某种类型所有模型(LLM/embedding/image/audio/rerank)
xinference registrations -t LLM
# 查看在运行的模型
xinference list
# 终止某个模型
xinference terminate --model-uid "my-llama-2"
# 重启
ps -ef | grep xinference | grep -v grep | awk '{print $2}' | xargs kill -9
ps -ef | grep xinference | grep -v grep | wc -l
LLM 是一个支持高并发的高性能大模型推理引擎。当满足以下条件时,Xinference 会自动选择 vllm 作为引擎来达到更高的吞吐量:
pytorch
, gptq
或者 awq
。pytorch
时,量化选项需为 none
。gptq
或 awq
时,量化选项需为 Int4
。model_family
字段和内置模型的 model_name
字段在 vLLM 的支持列表中。sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 启动docker sudo systemctl start docker # 安装gpu toolkit: https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo sudo yum install -y nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker # 关闭ecc可以提升速度和可用显存,需要重启 nvidia-smi -e 0
# 检查openSSL version>=1.1.1 openssl version # 升级openSSL sudo yum install -y gcc make perl-core zlib-devel curl -L https://www.openssl.org/source/openssl-3.2.1.tar.gz -o openssl-3.2.1.tar.gz tar -zxf openssl-3.2.1.tar.gz cd openssl-3.2.1 ./config --prefix=/usr/local/openssl-3.2.1 make sudo make install # 备份 sudo mv /usr/bin/openssl /usr/bin/openssl_old sudo mv /usr/include/openssl /usr/include/openssl_old # 安装与更新动态链接库缓存 sudo ln -sf /usr/local/openssl-3.2.1/bin/openssl /usr/bin/openssl sudo ln -sf /usr/local/openssl-3.2.1/include/openssl /usr/include/openssl sudo ldconfig /usr/local/openssl-3.2.1/lib64 # 校验 openssl version
sudo yum install bzip2-devel openssl-devel readline-devel sqlite-devel ncurses-devel tk-devel libuuid-devel
curl -L https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tar.xz -o Python-3.12.2.tar.xz
tar -xf Python-3.12.2.tar.xz
cd Python-3.12.2
./configure --prefix=/usr/local/python3
make
make install
# 设置软链
ln -sf /usr/local/python3/bin/python3 /usr/bin/python3
# centos yum不支持python3,不能加这个软链
ln -sf /usr/bin/python3 /usr/bin/python
make clean
wget https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-x86_64.sh
chmod +x Miniconda3-py312_24.1.2-0-Linux-x86_64.sh
./Miniconda3-py312_24.1.2-0-Linux-x86_64.sh -b -f -p /usr/local/conda
ln -s /usr/local/conda/bin/conda /usr/bin/conda
# 初始化
conda init
执行MODELSCOPE_CACHE=/data/modelscope/hub
改变缓存目录,默认值是~/.cache/modelscope/hub
mkdir -p /data/modelscope/hub
cd /data/modelscope/hub
pip install modelscope
python
from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen1.5-32B-Chat-AWQ', cache_dir='/data/modelscope/hub')
# 拉取镜像,速度慢可以使用镜像站:docker.nju.edu.cn/xprobe/xinference:v0.10.1
# 阿里云使用它的容器镜像服务加速
docker pull xprobe/xinference:v0.10.1
# 启动,所有卡可以用 --gpus all
docker run -d -e XINFERENCE_MODEL_SRC=modelscope -e MODELSCOPE_CACHE=/data/modelscope/hub -v /data:/data -p 9997:9997 --shm-size=16g --gpus '"device=0,1"' xprobe/xinference:v0.10.1 xinference-local -H 0.0.0.0 --log-level debug
docker exec -it <containerId> /bin/bash
nvidia-smi
xinference launch -u qwen1.5-chat-32b -n qwen1.5-chat -f awq -s 32 -q Int4 -r 1 --n-gpu 2 --max_model_len 32768 --gpu_memory_utilization 0.9 --enforce_eager True
# 检查
xinference list
# 1. 安装 pip install "xinference[all]" # 2. 启动 # 默认情况下,Xinference 会使用 <HOME>/.xinference 作为主目录来存储一些必要的信息,比如日志文件和模型文件 xinference-local --host 0.0.0.0 --port 9997 # 3. 使用命令行运行模型(不指定-u/--model-uid会随机生成一个) # -u --model-uid 不指定会自动生成一个唯一id(默认跟模型名一样) # -n --model-name 模型名 # -f model format # -s 模型大小(billions) # -e --endpoint xinference地址 # -r --replica 副本数 # --n-gpu 使用多少个gpu # 在使用具体的加速框架时,可以增加对应的参数,如vllm支持的--max_model_len 8192 xinference launch -u my-llama-2 -n llama-2-chat -s 13 -f pytorch -r 1 --n-gpu 2 --gpu-idx 3,4
内置模型以及调用示例:https://inference.readthedocs.io/zh-cn/latest/models/builtin/llm/index.html
curl -X 'POST' \ 'http://127.0.0.1:9997/v1/chat/completions' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "model": "my-llama-2", "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "What is the largest animal?" } ] }'
参考文档:https://inference.readthedocs.io/zh-cn/latest/models/custom.html
vim codeqwen1_5.json
{ "version": 1, "context_length": 65536, "model_name": "codeqwen1.5", "model_lang": [ "en" ], "model_ability": [ "generate" ], "model_family": "llama-2", "model_specs": [ { "model_format": "pytorch", "model_size_in_billions": "7", "quantizations": [ "4-bit", "8-bit", "none" ], "model_uri": "file:///data/modelscope/hub/qwen/CodeQwen1___5-7B" } ] }
启动
xinference register --model-type LLM --file codeqwen1_5.json --persist
xinference launch -u codeqwen1.5 -n codeqwen1.5 -f pytorch -s 7 -q none -r 1 --n-gpu 2 --max_model_len 65536 --gpu_memory_utilization 0.95 --enforce_eager True
# 取消注册模型
xinference unregister -n codeqwen1.5-7b
import os
from xinference.client import Client
client = Client(os.environ.get("XINFERENCE_ENDPOINT","http://localhost:9997"))
model = client.get_model("bge-m3")
input_text = "What is the capital of China?"
model.create_embedding(input_text)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。