"vscode:/vscode.git/clone" did not exist on "0610126049e1aa61945aeaabbc55e9aae99d8c77"
README_zh.md 4.18 KB
Newer Older
Rayyyyy's avatar
Rayyyyy committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
# Inference

Read this in [English](README.md)

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

## 设备和依赖检查

### 安装依赖

```shell
pip install -r requirements.txt
```

### 相关推理测试数据

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

测试硬件信息:

+ OS: Ubuntu 22.04
+ Memory: 512GB
+ Python: 3.12.3
+ CUDA Version:  12.4
+ Cmake 3.23.0
+ GPU Driver: 535.104.05
+ GPU: NVIDIA H100 80GB HBM3 * 8

推理的压力测试数据如下,如有多张显卡,则显存占用代表显存占用最大一张显卡的显存消耗。

#### GLM-4-32B-0414

| 精度   | 显卡数量 | 显存占用  | 首 Token 延迟 | Token 输出速度    | 输入token数 |
|------|------|-------|------------|---------------|----------|
| BF16 | 1    | 68 GB | 0.16s      | 24.4 tokens/s | 1000     |
| BF16 | 1    | 72 GB | 1.37s      | 16.9 tokens/s | 8000     |
| BF16 | 2    | 50 GB | 6.75s      | 8.1 tokens/s  | 32000    |
| BF16 | 4    | 55 GB | 37.83s     | 3.0 tokens/s  | 100000   |

#### GLM-4-9B-0414

| 精度   | 显卡数量 | 显存占用  | 首 Token 延迟 | Token 输出速度    | 输入token数 |
|------|------|-------|------------|---------------|---------|
| BF16 | 1    | 19 GB | 0.05s      | 44.4 tokens/s | 1000    |
| BF16 | 1    | 25 GB | 0.39s      | 39.0 tokens/s | 8000    |
| BF16 | 1    | 31 GB | 2.29s      | 18.7 tokens/s | 32000   |
| BF16 | 1    | 55 GB | 6.80s      | 14.1 tokens/s  | 100000  |


#### GLM-4-9B-Chat-1M

| 精度     | 显卡数量 | 显存占用  | 首 Token 延迟 | Token 输出速度    | 输入token数 |
|--------|------|------|------------|--------------|-------------|
| BF16 | 1    | 75 GB | 98.4s      | 2.3 tokens/s | 200000 |

#### GLM-4V-9B

| 精度     | 显卡数量 | 显存占用  | 首 Token 延迟 | Token 输出速度    | 输入token数 |
|--------|------|------|------------|--------------|-------------|
| BF16 | 1    | 28 GB | 0.1s       | 33.4 tokens/s | 1000 |
| BF16 | 1    | 33 GB | 0.7s       | 39.2 tokens/s | 8000 |

| 精度     | 显卡数量  | 显存占用   | 首 Token 延迟 | Token 输出速度    | 输入token数 |
|--------|-------|--------|------------|--------------|-------------|
| INT4 | 1     | 10 GB  | 0.1s       | 28.7 tokens/s |  1000 |
| INT4 | 1     | 15 GB  | 0.8s       | 24.2 tokens/s |  8000 |

## 快速开始

### 使用 transformers 后端代码

+ 使用命令行与 GLM-4-9B 模型进行对话。

```shell
python trans_cli_demo.py # LLM Such as GLM-4-9B-0414
python trans_cli_vision_demo.py # GLM-4V-9B
```

+ 使用 Gradio 网页端与 GLM-4-9B 模型进行对话。

```shell
python trans_web_demo.py  # LLM Such as GLM-4-9B-0414
python trans_web_vision_demo.py # GLM-4V-9B
```

+ 使用 Batch 推理。

```shell
python trans_batch_demo.py
```

### 使用 vLLM 后端代码

+ 使用命令行与 GLM-4-9B-Chat 模型进行对话。

```shell
python vllm_cli_demo.py # LLM Such as GLM-4-9B-0414
```

+ 构建 OpenAI 类 API 服务。
```shell
vllm serve THUDM/GLM-4-9B-0414 --tensor_parallel_size 2
```

### 使用 glm-4v 构建 OpenAI 服务

启动服务端

```shell
python glm4v_server.py THUDM/glm-4v-9b
```

客户端请求:

```shell
python glm4v_api_request.py
```

## 压力测试

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

```shell
python trans_stress_test.py
```

## 压力测试

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

```shell
python trans_stress_test.py
```

压力测试脚本支持开启**SwanLab**来跟踪压力测试过程和记录指标:

```shell
# API Key 可通过登录https://swanlab.cn/获取
python trans_stress_test.py --swanlab_api_key "SwanLab的API Key"

```
使用`--swanlab_api_key local`参数可开启SwanLab本地模式

## 使用昇腾NPU运行代码

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

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

#device = 'cuda'
device = 'npu'
```