当前位置:   article > 正文

【开荒日志】xinference + 本地glm4-9b-chat部署_xinference glm4

xinference glm4

本人仅仅大模型爱好者一枚,非专业人士,对这一块的开发范式不太熟悉,因此每次部署和调试都像是在开荒,会遇到各式各样的问题。在此记录一下,仅供参考。
本来没想过使用xinference, 不过Langchain-Chatchat发布了3.0版本,使用方式和之前有所不同,得按文档示例重新跑一遍,文档示例用了xinference作为例子,所以就开始使用xinference了。
xinference的官方文档还算可以。Langchain-Chatchat项目里面也有关于xinference的简要说明,步骤清晰,可以一步步跟着走,不过跟着走的时候也会因为本地环境的多样性带来一些问题。以下是开荒记录。

模型选择:

本人选择了glm4-9b-chat, 因为Langchain-Chatchat的例子使用了这个模型,xinference的模型列表中也有这个模型。

部署流程

1.生成虚拟环境,安装各类依赖

首先是设置python虚拟环境,防止潜在的各类安装包的版本冲突。本人的虚拟环境使用了python -m的方式,其中vxinfer是xinference的虚拟环境的名称,名字可以随便改。
新建vxinfer路径;

mkdir vxinfer
  • 1

生成虚拟环境;

python -m venv vxinfer
  • 1

然后激活虚拟环境;

source vxinfer/bin/activate
  • 1

然后安装各类依赖

pip install xinference --force
pip install tiktoken
pip install sentence-transformers
  • 1
  • 2
  • 3

安装成功之后,就可以启动xinference服务了,

xinference-local
  • 1

以下是效果图
启动xinference

2. 模型的登记

执行这个步骤之前,先选择或者一个路径,在那个路径里进行特定的操作。
xinference支持glm4-9b-chat模型,可以按照官方文档的方法加载。
“xinference launch --model-engine ${engine} --model-name glm4-chat --size-in-billions 9 --model-format pytorch --quantization ${quantization}”
不过本人事先已经下载了这个模型,所以没有按照上面这条指令加载模型,也许那条指令会再次下载模型到某个路径。
本人走了“使用自定义模型”这条路。使用自定义模型的话,需要准备json格式的模型配置。以下是配置信息,在“官方文档”的示例的基础上修改的。根据glm4-9b-chat的详细资料调整了参数, 模型名称改写成custom-glm4-chat. model_uri是模型的路径,cd到模型的路径,然后pwd获取这个路径即可填入。最后这个配置文件命名为custom-glm4-chat.json。

{
  "version": 1,
  "context_length": 131072,
  "model_name": "custom-glm4-chat",
  "model_lang": [
    "en",
    "zh"
  ],
  "model_ability": [
    "chat",
    "tools"
  ],
  "model_family": "glm4-chat",
  "model_specs": [
    {
      "model_format": "pytorch",
      "model_size_in_billions": 9,
      "quantizations": [
        "4-bit",
        "8-bit",
        "none"
      ],
      "model_id": "THUDM/glm-4-9b-chat",
      "model_uri": "/home/my_name/PlayGround/GLM-4/glm-4-9b-chat"
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

执行登记指令

xinference register --model-type LLM --file custom-glm4-chat.json --persist
  • 1

执行完后,没有报错,可执行下面的指令,确认模型加载情况。

3. 模型的加载
xinference registrations --model-type LLM
  • 1

这个命令会列出xinference支持的模型。确认custom-glm4-chat登记完毕后,即可加载模型。
“xinference launch --model-name custom-glm4-chat --model-format pytorch”
然而这条指令不完善,因为没有指定model engine
在这里插入图片描述
model-engine的信息在glm4-9b-chat的详细资料中有简略提到过。
在这里插入图片描述
我们试试transformers

xinference launch --model-name custom-glm4-chat --model-format pytorch --model-engine Transformers
  • 1

没有报错,模型加载成功了。glm4-9b-chat占用了18g多的显存
在这里插入图片描述
nvitop界面
在这里插入图片描述

4. 对话

运行以下代码即可进行推理
“xinference generate --model-uid custom-glm4-chat”
然而推理还是会遇到问题,这个模型在做无效输出。
在这里插入图片描述
问题分析:通过xinference --help, 我们可以看到很多xinference相关的参数

Usage: xinference [OPTIONS] COMMAND [ARGS]...

  Xinference command-line interface for serving and deploying models.

Options:
  -v, --version       Show the current version of the Xinference tool.
  --log-level TEXT    Set the logger level. Options listed from most log to
                      least log are: DEBUG > INFO > WARNING > ERROR > CRITICAL
                      (Default level is INFO)
  -H, --host TEXT     Specify the host address for the Xinference server.
  -p, --port INTEGER  Specify the port number for the Xinference server.
  --help              Show this message and exit.

Commands:
  cached         List all cached models in Xinference.
  cal-model-mem  calculate gpu mem usage with specified model size and...
  chat           Chat with a running LLM.
  engine         Query the applicable inference engine by model name.
  generate       Generate text using a running LLM.
  launch         Launch a model with the Xinference framework with the...
  list           List all running models in Xinference.
  login          Login when the cluster is authenticated.
  register       Register a new model with Xinference for deployment.
  registrations  List all registered models in Xinference.
  remove-cache   Remove selected cached models in Xinference.
  terminate      Terminate a deployed model through unique identifier...
  unregister     Unregister a model from Xinference, removing it from...
  vllm-models    Query and display models compatible with vLLM.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

“xinference generate --model-uid custom-glm4-chat” 这条指令其实使用了xinference generate命令,但是根据custom-glm4-chat.json,对于custom-glm4-chat这个模型而言,它的能力是chat和tools,也许custom-glm4-chat不擅长做generate文本生成。
在这里插入图片描述
所以可以将xinference generate --model-uid custom-glm4-chat,改成

xinference chat --model-uid custom-glm4-chat
  • 1

正常了。
在这里插入图片描述
既然可以chat, 那么tools呢?
在这里插入图片描述

可能是因为xinference的参数没有tools的选项,所以"xinference tools --model-uid custom-glm4-chat"是无效的。

以上就是通过xinference运行本地部署的custom-glm4-chat的开荒记录。还有很长的路要走。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/973544
推荐阅读
相关标签
  

闽ICP备14008679号