与风景对话_交互式旅游推荐系统_研究一下API_11

ChatGLM-6B 本地API调用

简介

本文档介绍如何在本地部署 ChatGLM-6B 模型,并实现类似 GPT3.5 的 API 调用,以便在 Web 端调用本地部署的 ChatGLM-6B ,从给定文本材料中抽取出问答对。

本地大模型: ChatGLM3-6B

任务名称: 用户提问有关旅游的问题,大模型给出具体的旅游信息的推荐。

准备工作

在开始部署之前,请确保满足以下准备工作:

  • 操作系统: Windows 或 Ubuntu
  • Python 版本: 推荐使用 3.10 或以上版本
  • 显卡内存: Nvidia 至少 6GB 可用内存
  • transformers 库版本: 4.30.2 或以上
  • torch 版本: 2.0 或以上 (GPU 版本)

ChatGLM-6B 本地部署步骤

  1. 克隆/下载 ChatGLM3 官方代码仓库以及模型

    Bash

    git clone https://github.com/THUDM/ChatGLM3
    

    ChatGLM Hugging Face 地址:https://huggingface.co/THUDM/chatglm-6b

    下载模型到指定路径,默认下载会自动下载到 C 盘:

    Python

    from modelscope.hub.snapshot_download import snapshot_download
    
    model_dir = snapshot_download('ZhipuAI/chatglm3-6b', cache_dir='F:/pretrained_model/chatglm3-6b/', revision='master')
    
  2. 创建虚拟环境并安装依赖

    Bash

    conda create -n <环境名> python=3.10
    conda activate <环境名>
    pip install -r requirements.txt
    

    注意: 不要下载 requirements.txt 里的 torch,为了保证 torch 的版本正确,请严格按照官方文档的说明安装。

  3. 运行测试代码

    在官方代码库里转到 basic_demo 文件夹。

    运行 cli_demo.py 前请确保替换 path_to_downloaded_model 为模型的实际路径。

    由于我的电脑显存只有 6GB,所以需要进行量化操作,我的只能进行 quantize(4),如果你的显存较高也可以 quantize(8)

    Python

    model = AutoModel.from_pretrained(MODEL_PATH, trust_remote_code=True).quantize(4).cuda()
    model = model.eval()
    

    然后运行 cli_demo.py(里面的代码已经有一些变动),等待模型加载完成,如果可以与模型对话则说明你已经成功一大半了。也可以运行其他如 web_demo_gradio.py,实现网页端对话。

    如果运行成功会出现上述内容。

  4. 实现 OpenAI 格式的流式 API 部署

    先转到 openai_api_demo 文件夹,运行 openai_api.py 文件。

    在运行时会先下载一个 Embedding Model(bge-large-zh-v1.5),等待下载完。

    在运行时我遇到一个小问题,因为我的显存较小,只够加载一个 chatglm6b,所以在加载 Embedding Model 我选择用 CPU 加载。

    运行 openai_api.py 文件(运行前记得更改模型路径)。当出现下面的界面时,则说明你已经成功了。

    接着你就可以通过 API 调用你的模型进行问答了。调用时需要 base_urlapi_keybase_url 为你本机的地址 + v1,api_key 可以为任意值,但不可以为空。

    Python

    from openai import OpenAI
    
    # 创建OpenAI聊天
    client = OpenAI(
        base_url="http://127.0.0.1:8000/v1",
        api_key="xxx"
    )
    
    # 可以通过下面这种方式给LLM传入“上下文”内容
    response = client.chat.completions.create(
        model="chatglm3-6B",
        messages=[
            {"role": "system", "content": "你不是一个人工智能助手,你现在的身份是小丑。后面所有回答的回答全都要基于“小丑”这个身份."},
            {"role": "user", "content": "你能干什么"},
        ],
        stream=False
    )
    
    # 输出模型回答
    print(response.choices[0].message.content)
    

    如果模型可以正常输出,恭喜你,部署完成!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值