赞
踩
本人仅仅大模型爱好者一枚,非专业人士,对这一块的开发范式不太熟悉,因此每次部署和调试都像是在开荒,会遇到各式各样的问题。在此记录一下,仅供参考。
本来没想过使用xinference, 不过Langchain-Chatchat发布了3.0版本,使用方式和之前有所不同,得按文档示例重新跑一遍,文档示例用了xinference作为例子,所以就开始使用xinference了。
xinference的官方文档还算可以。Langchain-Chatchat项目里面也有关于xinference的简要说明,步骤清晰,可以一步步跟着走,不过跟着走的时候也会因为本地环境的多样性带来一些问题。以下是开荒记录。
本人选择了glm4-9b-chat, 因为Langchain-Chatchat的例子使用了这个模型,xinference的模型列表中也有这个模型。
首先是设置python虚拟环境,防止潜在的各类安装包的版本冲突。本人的虚拟环境使用了python -m的方式,其中vxinfer是xinference的虚拟环境的名称,名字可以随便改。
新建vxinfer路径;
mkdir vxinfer
生成虚拟环境;
python -m venv vxinfer
然后激活虚拟环境;
source vxinfer/bin/activate
然后安装各类依赖
pip install xinference --force
pip install tiktoken
pip install sentence-transformers
安装成功之后,就可以启动xinference服务了,
xinference-local
以下是效果图
执行这个步骤之前,先选择或者一个路径,在那个路径里进行特定的操作。
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" } ] }
执行登记指令
xinference register --model-type LLM --file custom-glm4-chat.json --persist
执行完后,没有报错,可执行下面的指令,确认模型加载情况。
xinference registrations --model-type LLM
这个命令会列出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
没有报错,模型加载成功了。glm4-9b-chat占用了18g多的显存
nvitop界面
运行以下代码即可进行推理
“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.
“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
正常了。
既然可以chat, 那么tools呢?
可能是因为xinference的参数没有tools的选项,所以"xinference tools --model-uid custom-glm4-chat"是无效的。
以上就是通过xinference运行本地部署的custom-glm4-chat的开荒记录。还有很长的路要走。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。