Langchain-Chatchat适配昇腾开源验证任务心得
一、任务需求
首先了解熟悉任务计划书(https://bbs.huaweicloud.com/blogs/440073),目的需求是将 Langchain-Chatchat 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保模型能在这些硬件平台上的高效运行,需要注意系统架构是aarch64。
二、过程
明确需求后开始熟悉模型,了解其需要的配置和环境要求。
软件方面,支持在 Python 3.8-3.11 环境中进行使用,并已在 Windows、macOS、Linux 操作系统中进行测试。
硬件方面,可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。
原本Langchain-Chatchat 提供以 Python 库形式的安装方式,执行:
pip install langchain-chatchat -U
但因模型部署框架 Xinference 接入 Langchain-Chatchat 时需要额外安装对应的 Python 依赖库,需搭配 Xinference 框架使用,所以使用如下安装方式:
pip install "langchain-chatchat[xinference]" -U
2. 模型推理框架并加载模型
从 0.3.0 版本起,Langchain-Chatchat 不再根据用户输入的本地模型路径直接进行模型加载,因此,请确认在启动 Langchain-Chatchat 项目前,首先进行模型推理框架的运行,并加载所需使用的模型。我们采用 Xinference 框架。
2.1 安装模型推理框架
以 PyTorch v2.1.0 为例。安装 PyTorch CPU 版本和相应的昇腾扩展。
pip3 install torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cpu
接着安装 昇腾 PyTorch 扩展.
pip3 install 'numpy<2.0'
pip3 install decorator
pip3 install torch-npu==2.1.0.post3
运行如下命令查看,如果正常运行,会打印昇腾 NPU 的个数。
python -c "import torch; import torch_npu; print(torch.npu.device_count())"
安装 Xinference
pip3 install xinference
Transformers 是开源唯一支持的昇腾 NPU 的引擎。
2.2 使用 qwen-1.5 测试模型推理框架
运行qwen-1.5-chat
模型,第一次运行是要从 HuggingFace 下载模型参数,服务器无法访问。但Xinference 也允许从其他模型托管平台下载模型。可以通过在拉起 Xinference 时指定环境变量,比如,如果想要从 ModelScope 中下载模型,可以使用如下命令:
XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 9997
然后运行qwen-1.5-chat
模型
xinference launch --model-engine transformers -n qwen1.5-chat -s 0.5 -f pytorch
加载Embedding模型,
xinference launch --model-name bge-small-zh-v1.5 --model-type embedding
等待模型下载:然后就成功通过 Xinference 将 qwen1.5-chat 运行起来了。
2.3 交互测试
python
from xinference.client import RESTfulClient
client = RESTfulClient("http://127.0.0.1:9997")
model = client.get_model("qwen1.5-chat")
model.chat(
messages=[
{"role": "user", "content": "你是哪个版本?"}
]
)
输出:
3. 初始化项目配置与数据目录
执行初始化:
chatchat init
结果如下:
修改配置文件
-
配置模型(model_settings.yaml)
需要根据上一步中选用的模型推理框架与加载的模型进行模型接入配置,主要修改以下内容:# 默认选用的 LLM 名称 DEFAULT_LLM_MODEL: qwen1.5-chat # 默认选用的 Embedding 名称 DEFAULT_EMBEDDING_MODEL: bge-smalle-zh-v1.5 # 将 `LLM_MODEL_CONFIG` 中 `llm_model, action_model` 的键改成对应的 LLM 模型 # 在 `MODEL_PLATFORMS` 中修改对应模型平台信息
chatchat start -a
结果如下:
至此,启动成功。
三、结果
运行测试代码:
base_url = "http://127.0.0.1:7861/chat"
data = {
"model": "qwen1.5-chat",
"messages": [
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好,我是人工智能大模型"},
{"role": "user", "content": "请用100字左右的文字介绍自己"},
],
"stream": True,
"temperature": 0.7,
}
# 方式一:使用 requests
import requests
response = requests.post(f"{base_url}/chat/completions", json=data, stream=True)
for line in response.iter_content(None, decode_unicode=True):
print(line, end="", flush=True)
# 方式二:使用 openai sdk
import openai
client = openai.Client(base_url=base_url, api_key="EMPTY")
resp = client.chat.completions.create(**data)
for r in resp:
print(r)
方式一输出:
方式二输出:
运行前后进程对比:
四、心得及其注意事项
- HuggingFace无法访问,更换为国内ModelScope模型托管平台下载模型
- 模型部署框架 Xinference 接入 Langchain-Chatchat 时需要额外安装对应的 Python 依赖库
- 为避免依赖冲突,最好将 Langchain-Chatchat 和模型部署框架 Xinference 放在不同的 Python 虚拟环境
- 纯 LLM 对话。传入
model
,messages
参数即可,可选参数:temperature
,max_tokens
,stream
等
- 点赞
- 收藏
- 关注作者
评论(0)