Langchain-Chatchat适配昇腾开源验证任务心得

举报
goldthreewater 发表于 2024/11/23 10:23:01 2024/11/23
【摘要】 一、任务需求首先了解熟悉任务计划书(https://bbs.huaweicloud.com/blogs/440073),目的需求是将 Langchain-Chatchat 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保模型能在这些硬件平台上的高效运行,需要注意系统架构是aarch64。二、过程明确需求后开始熟悉模型,了解其需要的配置和环境要求。0. 软硬件要求软...

一、任务需求

首先了解熟悉任务计划书(https://bbs.huaweicloud.com/blogs/440073),目的需求是将 Langchain-Chatchat 项目适配至华为的 Ascend(昇腾)和 Kunpeng(鲲鹏)处理器,确保模型能在这些硬件平台上的高效运行,需要注意系统架构是aarch64。

二、过程

明确需求后开始熟悉模型,了解其需要的配置和环境要求。

0. 软硬件要求

软件方面,支持在 Python 3.8-3.11 环境中进行使用,并已在 Windows、macOS、Linux 操作系统中进行测试。

硬件方面,可在 CPU、GPU、NPU、MPS 等不同硬件条件下使用。

1. 安装 Langchain-Chatchat

原本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 和昇腾扩展

以 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` 中修改对应模型平台信息


4.  启动项目

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 对话。传入 modelmessages 参数即可,可选参数: temperaturemax_tokensstream 等





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。