ChatGLM-4-9b-chat本地化|天翼云GPU上vLLM本地部署开源模型完整攻略

 拥有一个私有化的领先国产开源大模型?本文详细介绍了如何在天翼云GPU上使用vLLM部署ChatGLM-4-9b-chat本地化模型的完整攻略,助您快速上手。

9e029b29b6f88e1c783b481f79692f89.png

01

vLLM

本来打算用ollama在GPU服务器上部署开源模型GLM4,在之前文章有部署教程:《普通电脑也能跑大模型,三步搞定私人AI助手 | LLaMA-3本地部署小白攻略》。后来朋友推荐使用vLLM部署服务来运行GLM4。

vLLM是一个高效大语言模型(LLM)推理部署服务框架:‍‍

  • 高效内存管理:通过 PagedAttention 算法,vLLM 减少了内存浪费,优化了模型的运行效率。

  • 高吞吐量:支持异步处理和连续批处理请求,显著提高了模型推理的吞吐量,加速了文本生成和处理速度。

  • 易用性:与 HuggingFace 模型无缝集成,支持多种流行的大型语言模型,简化了模型部署和推理的过程。

  • 提供兼容ChatGPT接口服务。

  • 分布式推理:支持在多 GPU 环境中进行分布式推理,通过模型并行策略和高效的数据通信,提升了处理大型模型的能力。

  • 开源:开源社区支持,能不断改进,适配新模型。

02

安装准备

服务器配置:pi7.4xlarge.4 | 16核 | 64G,GPU: NVIDIA A10*1 (24GB)。

鉴于直接装(“pip install vllm”,还会附带安装 CUDA 12.1 版本。)可能会遇到一些意想不到的坑,毕竟安装步骤看着就几行,实际在服务器上操作可能会遇到一坑又一坑,考虑采用 Docker 方式部署。‍‍‍‍‍‍‍‍‍‍‍

开始选择的镜像: nvcr.io/nvidia/tritonserver:24.07-vllm-python-py3,试了很久,无法正常拉取。

经过不懈的寻找,找到一个国内阿里云的镜像:egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.4.0.post1-pytorch2.1.2-cuda12.1.1-cudnn8-ubuntu22.04。来源《使用vLLM容器镜像快速构建大语言模型的推理环境》:https://help.aliyun.com/zh/egs/use-cases/use-a-vllm-container-image-to-run-inference-tasks-on-a-gpu-accelerated-instance。‍‍‍‍‍‍‍

下载完成后,启动镜像。

docker run -d -t --rm --net=host --gpus all \
 --privileged \
 --ipc=host \
 --name vllm \
 egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.4.0.post1-pytorch2.1.2-cuda12.1.1-cudnn8-ubuntu22.04

更新vLLM版本。-i 参数指定国内镜像主机。‍‍‍

pip install torch==2.3.0 torchvision==0.18.0 torchaudio==2.3.0 --index-url https://download.pytorch.org/whl/cu121 -U
pip install vllm -U -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install jsonschema==3.1000 -U -i https://pypi.tuna.tsinghua.edu.cn/simple

从魔搭社区下载GLM4模型。‍‍‍‍‍‍‍‍‍

pip install modelscope
modelscope download --model ZhipuAI/glm-4-9b-chat

c523a573698ad69ab08f3044992e5c42.png

vLLM在容器内拉起模型时,默认会去huggingface拉取模型文件,有参数可以指定去modelscope魔搭社区下载。因为现在使用容器方式启动,拉取的模型文件会在容器重启后丢失,导致每次启动都会拉取模型文件。所以咱们采用映射方式,将提前下载好的模型映射到容器内。

03‍

启动‍

映射模型文件方式启动容器,模型文件存放位置: /home/GLM-4 。‍‍‍‍‍‍‍

docker run -d -t --rm --net=host --gpus all \
 --privileged \
 --ipc=host \
 --name vllm \
 -v /home/GLM-4:/home/GLM-4 \
 egs-registry.cn-hangzhou.cr.aliyuncs.com/egs/vllm:0.4.0.post1-pytorch2.1.2-cuda12.1.1-cudnn8-ubuntu22.04

进入容器。

docker exec -it vllm /bin/bash


‍‍

创建兼容 OpenAI API 接口的推理模型服务。‍‍‍‍‍‍‍‍

python -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 8005  \
    --block-size 16 \
    --model /home/GLM-4 \
    --dtype float16 \
    --trust-remote-code \
    --served-model-name chatglm4-9b \
    --api-key 1234567 \
    --disable-log-requests \
    --enable-prefix-caching \
    --max_model_len 8192 \
    --enforce-eager

默认 http://localhost:8000 启动服务器。一次托管一个模型,实现了列表模型、completions 和 chat completions 端口。

创建服务器时,参数含义:

  • –host 和 --port 参数指定地址。

  • –model 参数指定模型名称。

  • –served-model-name 指定服务模型的名称。

  • –max-model-len 指定模型的最大长度。

block-size 大小和模型吞吐相关,保持默认16即可。

glm4最大支持1M上下文,实际一般服务器没有足够内存支持。

实践中指定长度为8192,消耗了大约18G内存。‍‍‍‍‍‍‍‍‍‍

882fc5bed4255aac641ca53261027afa.png

测试服务文本生成接口。‍‍‍

curl --location 'http://localhost:8005/v1/chat/completions' \
                --header 'Authorization: Bearer 1234567'                        \
                --header 'Content-Type: application/json'                      \
                --data '{
                    "model" : "chatglm4-9b",
                    "messages" : [
                        {"role": "system", "content": "You are a helpful assistant."}, 
                        {"role": "user", "content": "Hello!"}
                    ]
                }'

得到返回如下:‍

{"id":"chat-736aa029f23b495782b832df6359feb1","object":"chat.completion","created":1723716800,"model":"chatglm4-9b","choices":[{"index":0,"message":{"role":"assistant","content":"\nHello! How can I assist you today?","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":151336}],"usage":{"prompt_tokens":15,"total_tokens":26,"completion_tokens":11}}

至此,我们得到了一个本地部署国内领先的开源大模型GLM4。后续可以基于这个大模型,继续搭建我们上层的应用,各种对话应用、助手、智能体等等。‍‍‍‍‍‍

例如,采用吴恩达公布的三次模型翻译法,实现了可媲美专业翻译的水平。


相关文章推荐:

在 RAGFlow 中实践 GraphRAG

普通电脑也能跑大模型,三步搞定私人AI助手 | LLaMA-3本地部署小白攻略

Llama 3.1论文精读:为什么模型参数是4050亿?

Agent Hospital | 对话数据合成:清华利用多Agent合成大量医疗对话数据显著提升LLM在医疗场景效果

Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读

拥抱未来,学习 AI !‍

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGLM-6B 模型部署可以分为以下几个步骤: 1. 下载模型:您可以从 EleutherAI 的 GitHub 仓库下载 ChatGLM-6B 模型。 2. 安装依赖:为了运行 ChatGLM-6B,您需要安装 PyTorch、Transformers 和 Flask 等必要的依赖。 3. 编写代码:您需要编写代码来加载模型并将其包装在 Flask 应用程序中。一个简单的示例代码如下: ```python from transformers import AutoTokenizer, AutoModelForCausalLM import torch from flask import Flask, request, jsonify app = Flask(__name__) # 加载模型和tokenizer tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neo-2.7B") model = AutoModelForCausalLM.from_pretrained("EleutherAI/gpt-neo-2.7B") # 设置模型为eval模式并移动到GPU上(如果有的话) device = torch.device("cuda" if torch.cuda.is_available() else "cpu") model.eval() model.to(device) # 定义API路由 @app.route('/chat', methods=['POST']) def chat(): # 解析请求的数据 data = request.json message = data['message'] # 对输入进行编码 inputs = tokenizer.encode(message, return_tensors='pt').to(device) # 生成回复 outputs = model.generate(inputs, max_length=50, do_sample=True) # 对输出进行解码 reply = tokenizer.decode(outputs[0], skip_special_tokens=True) # 返回回复 return jsonify({'reply': reply}) if __name__ == '__main__': app.run(debug=True, port=5000) ``` 4. 运行应用程序:运行 Flask 应用程序,并通过 API 调用与 ChatGLM-6B 进行交互。 以上是 ChatGLM-6B 模型部署的简单示例,您可以根据实际情况进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值