Skip to content

Latest commit

 

History

History
156 lines (103 loc) · 4.53 KB

README.md

File metadata and controls

156 lines (103 loc) · 4.53 KB

Basic Demo

Read this in English.

本 demo 中,你将体验到如何使用 GLM-4-9B 开源模型进行基本的任务。

请严格按照文档的步骤进行操作,以避免不必要的错误。

设备和依赖检查

相关推理测试数据

本文档的数据均在以下硬件环境测试,实际运行环境需求和运行占用的显存略有不同,请以实际运行环境为准。

测试硬件信息:

  • OS: Ubuntu 22.04
  • Memory: 512GB
  • Python: 3.10.12 (推荐) / 3.12.3 均已测试
  • CUDA Version: 12.3
  • GPU Driver: 535.104.05
  • GPU: NVIDIA A100-SXM4-80GB * 8

相关推理的压力测试数据如下:

所有测试均在单张GPU上进行测试,所有显存消耗都按照峰值左右进行测算

GLM-4-9B-Chat

精度 显存占用 Prefilling Decode Speed Remarks
BF16 19 GB 0.2s 27.8 tokens/s 输入长度为 1000
BF16 21 GB 0.8s 31.8 tokens/s 输入长度为 8000
BF16 28 GB 4.3s 14.4 tokens/s 输入长度为 32000
BF16 58 GB 38.1s 3.4 tokens/s 输入长度为 128000
精度 显存占用 Prefilling Decode Speed Remarks
INT4 8 GB 0.2s 23.3 tokens/s 输入长度为 1000
INT4 10 GB 0.8s 23.4 tokens/s 输入长度为 8000
INT4 17 GB 4.3s 14.6 tokens/s 输入长度为 32000

GLM-4-9B-Chat-1M

精度 显存占用 Prefilling Decode Speed Remarks
BF16 75 GB 98.4s 2.3 tokens/s 输入长度为 200000

如果您的输入超过200K,我们建议您使用vLLM后端进行多卡推理,以获得更好的性能。

GLM-4V-9B

精度 显存占用 Prefilling Decode Speed Remarks
BF16 28 GB 0.1s 33.4 tokens/s 输入长度为 1000
BF16 33 GB 0.7s 39.2 tokens/s 输入长度为 8000
精度 显存占用 Prefilling Decode Speed Remarks
INT4 10 GB 0.1s 28.7 tokens/s 输入长度为 1000
INT4 15 GB 0.8s 24.2 tokens/s 输入长度为 8000

最低硬件要求

如果您希望运行官方提供的最基础代码 (transformers 后端) 您需要:

  • Python >= 3.10
  • 内存不少于 32 GB

如果您希望运行官方提供的本文件夹的所有代码,您还需要:

  • Linux 操作系统 (Debian 系列最佳)
  • 大于 8GB 显存的,支持 CUDA 或者 ROCM 并且支持 BF16 推理的 GPU 设备。(FP16 精度无法训练,推理有小概率出现问题)

安装依赖

pip install -r requirements.txt

基础功能调用

除非特殊说明,本文件夹所有 demo 并不支持 Function Call 和 All Tools 等进阶用法

使用 transformers 后端代码

  • 使用命令行与 GLM-4-9B 模型进行对话。
python trans_cli_demo.py # GLM-4-9B-Chat
python trans_cli_vision_demo.py # GLM-4V-9B
  • 使用 Gradio 网页端与 GLM-4-9B 模型进行对话。
python trans_web_demo.py  # GLM-4-9B-Chat
python trans_web_vision_demo.py # GLM-4V-9B
  • 使用 Batch 推理。
python trans_batch_demo.py

使用 vLLM 后端代码

  • 使用命令行与 GLM-4-9B-Chat 模型进行对话。
python vllm_cli_demo.py
  • 在 GLM-4-9B-Chat 模型上使用带有 Lora adapter 的 vLLM
# vllm_cli_demo.py
# 添加 LORA_PATH = ''
  • 自行构建服务端,并使用 OpenAI API 的请求格式与 GLM-4-9B-Chat GLM-4v-9B 或者模型进行对话。本 demo 支持 Function Call 和 All Tools功能。
  • 修改 open_api_server.py 中模型路径 MODEL_PATH,可选择构建 GLM-4-9B-Chat 或者 GLM-4v-9B 服务端

启动服务端:

python openai_api_server.py

客户端请求:

python openai_api_request.py

压力测试

用户可以在自己的设备上使用本代码测试模型在 transformers后端的生成速度:

python trans_stress_test.py

使用昇腾卡运行代码

用户可以在昇腾硬件环境下运行以上代码,只需将transformers修改为openmind,将device中的cuda设备修改为npu:

#from transformers import AutoModelForCausalLM, AutoTokenizer
from openmind import AutoModelForCausalLM, AutoTokenizer

#device = 'cuda'
device = 'npu'