Xinference模型部署和调用

Xinference安装

新建一个环境

conda create -n xinference python=3.8
conda activate xinference

安装xinference的依赖

pip install "xinference[all]"

启动xinference

xinference-local # 我使用这个命令启动不了
# 设置使用modelscope下载模型
XINFERENCE_MODEL_SRC=modelscope xinference-local -H 0.0.0.0 # 使用这个命令可以启动Xinference安装和模型部署

Xinference使用

在这里插入图片描述
在这里插入图片描述

在部署 LLM 模型时,我们有以下参数可以进行选择:

  • Model Format: 模型格式,可以选择量化和非量化的格式,非量化的格式是pytorch,量化格式有ggmlgptq
  • Model Size:模型的参数量大小,如果是 ChatGLM3 的话就只有 6B 这个选项,而如果是 Llama2 的话,则有 7B、13B、70B 等选项
  • Quantization:量化精度,有 4bit、8bit 等量化精度选择
  • N-GPU:选择使用几个GPU
  • Model UID(可选): 模型自定义名称,不填的话就默认用原始模型名称
    在这里插入图片描述
    可以指定在哪些GPU上运行
    下载的模型默认在.cache/modelscope/hub目录下
    在这里插入图片描述

完成部署后就可以和LLM对话
在这里插入图片描述

对话效果:

使用openai调用

import openai
BASE_URL = 'http://127.0.0.1:9997/v1' # xinference服务地址
# 与LLM对话
LLM_params = {
        "base_url": BASE_URL,
        "api_key": 'EMPTY',
    }
llm = openai.Client(**LLM_params)

QUERY = "北京"
# 使用chatglm3模型
llm_params = {'messages': [{'content': QUERY, 'role': 'user'}], 'model': 'chatglm3', 'max_tokens': 4096}
result =  llm.chat.completions.create(**llm_params)
print(result.choices[0].message.content)


# Embedding模型
embedding_params = {
        "base_url": BASE_URL,
        "api_key": 'EMPTY',
    }
embedding_model = openai.Client(**embedding_params)
# 使用m3e-base模型
em_params = {'model': 'm3e-base', "input": ["What is the capital of China?"]}
print(embedding_model.embeddings.create(**em_params))

测试LLM对话和embedding模型

参考

安装 — Xinference

使用 Xinference 进行模型部署 - Hacker and Geeker’s Way (zhaozhiming.github.io)

240713-Xinference模型下载、管理及测试_xinference下载模型-CSDN博客

出现报错

安装pip install "xinference[all]"时出现报错

llama-cpp-python, pynini无法安装
在这里插入图片描述note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pynini
Failed to build pynini
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (pynini)

解决方案:
解决了pynini没有安装的问题

conda install -c conda-forge pynini=2.1.5

ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (pynini) · Issue #2057 · xorbitsai/inference (github.com)

llama-cpp-python为安装的问题没有解决

后续可以参考如下方案:

ERROR: Failed building wheel for llama-cpp-python · Issue #1629 · abetlen/llama-cpp-python (github.com)

[Windows] [Windows] "Failed building wheel for llama-cpp-python · Issue #54 · abetlen/llama-cpp-python (github.com)

运行模型时发生报错:‘GenerationConfig’ object has no attribute ‘_eos_token_tensor’

将 transformers 版本降级至 4.39.2 可解决此问题。

pip install transformers==4.39.2

https://github.com/huggingface/transformers/issues/32207

https://blog.csdn.net/qq_33039859/article/details/140396941

### 如何配置 Xinference 模型缓存 #### 配置模型缓存路径 Xinference 默认会使用 `<HOME>/.xinference` 作为主目录来存储必要的信息,包括日志文件模型文件[^2]。为了更改模型缓存的位置,可以在启动 Xinference 的时候通过命令行参数 `--cache-dir` 来指定新的缓存位置。 ```bash xinference start --cache-dir /path/to/new/cache/directory ``` 这允许用户自定义模型其他资源保存的具体位置,从而更好地管理磁盘空间以及提高读取速度。 #### 设置其他相关参数 除了改变缓存路径外,还可以调整更多关于性能优化方面的选项: - **内存映射 (Memory Mapping)**: 对于非常大的模型来说,在加载时启用内存映射可以减少实际占用的 RAM 数量并加快访问速度。可以通过环境变量 `XINFERENCE_ENABLE_MEMORY_MAP=true` 开启此功能。 - **最大缓存大小**: 如果希望限制整个应用程序所使用的总内存量,则可利用 `XINFERENCE_MAX_CACHE_SIZE=SIZE_IN_GB` 设定一个合理的上限值(单位为 GB)。当达到这个阈值之后,较早之前未被频繁使用的数据将会被淘汰掉以腾出空间给新加入的内容。 这些高级设置有助于更精细地控制系统的运行状况,并针对特定硬件条件做出适当调整。 #### 加载已缓存模型 一旦设置了合适的缓存策略后,在后续调用中再次请求相同版本号下的同一型号时就会自动尝试从本地缓存加载而不是重新下载完整的权重文件。这样不仅节省了网络带宽也缩短了初始化时间。 对于具体操作而言,只需按照常规流程执行如下 Python 代码即可完成模型实例化过程中的缓存检测与应用: ```python from xinference import load_model model = load_model('my-model-name', version='v0.1') ``` 如果一切正常的话,上述指令会在存在有效副本的情况下优先考虑使用现有的缓存版本;反之则会触发一次全新的获取动作并将结果妥善保存下来供未来重复利用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值