|
## 低成本部署 |
|
|
|
### 模型量化 |
|
|
|
默认情况下,模型以 FP16 精度加载,运行上述代码需要大概 13GB 显存。如果你的 GPU 显存有限,可以尝试以量化方式加载模型,使用方法如下: |
|
|
|
```python |
|
model = AutoModel.from_pretrained("THUDM/chatglm3-6b",trust_remote_code=True).quantize(4).cuda() |
|
``` |
|
|
|
模型量化会带来一定的性能损失,经过测试,ChatGLM3-6B 在 4-bit 量化下仍然能够进行自然流畅的生成。 |
|
|
|
### CPU 部署 |
|
|
|
如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。使用方法如下(需要大概 32GB 内存) |
|
```python |
|
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True).float() |
|
``` |
|
|
|
### Mac 部署 |
|
|
|
对于搭载了 Apple Silicon 或者 AMD GPU 的 Mac,可以使用 MPS 后端来在 GPU 上运行 ChatGLM3-6B。需要参考 Apple 的 [官方说明](https://developer.apple.com/metal/pytorch) 安装 PyTorch-Nightly(正确的版本号应该是2.x.x.dev2023xxxx,而不是 2.x.x)。 |
|
|
|
目前在 MacOS 上只支持[从本地加载模型](README.md#从本地加载模型)。将代码中的模型加载改为从本地加载,并使用 mps 后端: |
|
```python |
|
model = AutoModel.from_pretrained("your local path", trust_remote_code=True).to('mps') |
|
``` |
|
|
|
加载半精度的 ChatGLM3-6B 模型需要大概 13GB 内存。内存较小的机器(比如 16GB 内存的 MacBook Pro),在空余内存不足的情况下会使用硬盘上的虚拟内存,导致推理速度严重变慢。 |
|
|
|
### 多卡部署 |
|
如果你有多张 GPU,但是每张 GPU 的显存大小都不足以容纳完整的模型,那么可以将模型切分在多张GPU上。首先安装 accelerate: `pip install accelerate`,然后通过如下方法加载模型: |
|
```python |
|
from utils import load_model_on_gpus |
|
model = load_model_on_gpus("THUDM/chatglm3-6b", num_gpus=2) |
|
``` |
|
即可将模型部署到两张 GPU 上进行推理。你可以将 `num_gpus` 改为你希望使用的 GPU 数。默认是均匀切分的,你也可以传入 `device_map` 参数来自己指定。 |