Commit b1f4e98f authored by yuguo's avatar yuguo
Browse files

update

parent 14711d1f
# GLM(General Language Model Pretraining with Autoregressive Blank Infilling ) # GLM
## 模型介绍
## 论文
`GLM: General Language Model Pretraining with Autoregressive Blank Infilling`
- [https://arxiv.org/abs/2103.10360](https://arxiv.org/abs/2103.10360)
## 模型结构
2017 年, Google 提出了 Transformer 架构, 随后 BERT 、GPT、T5等预训练模型不断涌现, 并在各项任务中都不断刷新 SOTA 纪录。2022年, 清华提出了 GLM 模型(https://github.com/THUDM/GLM), 不同于上述预训练模型架构,它采用了一种自回归的空白填充方法, 在 NLP 领域三种主要的任务(自然语言理解、无条件生成、有条件生成)上都取得了不错的结果。 2017 年, Google 提出了 Transformer 架构, 随后 BERT 、GPT、T5等预训练模型不断涌现, 并在各项任务中都不断刷新 SOTA 纪录。2022年, 清华提出了 GLM 模型(https://github.com/THUDM/GLM), 不同于上述预训练模型架构,它采用了一种自回归的空白填充方法, 在 NLP 领域三种主要的任务(自然语言理解、无条件生成、有条件生成)上都取得了不错的结果。
在LiBai中主要实现了GLM推理部分的工作。 在LiBai中主要实现了GLM推理部分的工作。
## GLM-Inference ## 算法原理
当模型规模过于庞大,单个 GPU 设备无法容纳大规模模型参数时,便捷好用的分布式训练和推理需求就相继出现,业内也随之推出相应的工具。 当模型规模过于庞大,单个 GPU 设备无法容纳大规模模型参数时,便捷好用的分布式训练和推理需求就相继出现,业内也随之推出相应的工具。
基于 OneFlow 构建的 LiBai 模型库让分布式上手难度降到最低,用户不需要关注模型如何分配在不同的显卡设备,只需要修改几个配置数据就可以设置不同的分布式策略。当然,加速性能更是出众。 基于 OneFlow 构建的 LiBai 模型库让分布式上手难度降到最低,用户不需要关注模型如何分配在不同的显卡设备,只需要修改几个配置数据就可以设置不同的分布式策略。当然,加速性能更是出众。
...@@ -48,17 +57,29 @@ class Linear1D(nn.Module): ...@@ -48,17 +57,29 @@ class Linear1D(nn.Module):
所以,根据 LiBai 中各种 layer 的设计原理以及基于 OneFlow 中 tensor 自带的 SBP 和 Placement 属性的天然优势,使得用户搭建的模型能够很简单地就实现数据并行、模型并行以及流水并行操作。 所以,根据 LiBai 中各种 layer 的设计原理以及基于 OneFlow 中 tensor 自带的 SBP 和 Placement 属性的天然优势,使得用户搭建的模型能够很简单地就实现数据并行、模型并行以及流水并行操作。
## GLM-10B-chinese推理 ## 环境配置
### 环境配置
### Docker
提供[光源](https://www.sourcefind.cn/#/service-details)拉取的训练以及推理的docker镜像:image.sourcefind.cn:5000/dcu/admin/base/oneflow:0.9.1-centos7.6-dtk-22.10.1-py39-latest 提供[光源](https://www.sourcefind.cn/#/service-details)拉取的训练以及推理的docker镜像:image.sourcefind.cn:5000/dcu/admin/base/oneflow:0.9.1-centos7.6-dtk-22.10.1-py39-latest
cd libai docker pull image.sourcefind.cn:5000/dcu/admin/base/oneflow:0.9.1-centos7.6-dtk-22.10.1-py39-latest
# <Your Image ID>用上面拉取docker镜像的ID替换
docker run --shm-size 16g --network=host --name=glm_oneflow --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v $PWD/glm_oneflow:/home/glm_oneflow -it <Your Image ID> bash
cd /home/glm_oneflow
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
pip3 install pybind11 -i https://mirrors.aliyun.com/pypi/simple pip3 install pybind11 -i https://mirrors.aliyun.com/pypi/simple
pip3 install -e . -i https://mirrors.aliyun.com/pypi/simple pip3 install -e . -i https://mirrors.aliyun.com/pypi/simple
## 数据集
在下面脚本中生成。
## 权重
需要先准备好模型权重:https://huggingface.co/THUDM/glm-10b-chinese/tree/main 需要先准备好模型权重:https://huggingface.co/THUDM/glm-10b-chinese/tree/main
### Glm-10b-chinese的文件结构 ### Glm-10b-chinese权重的文件结构
```python ```python
$ tree data $ tree data
...@@ -69,11 +90,11 @@ path/to/glm-10b-chinese ...@@ -69,11 +90,11 @@ path/to/glm-10b-chinese
└── pytorch_model.bin └── pytorch_model.bin
``` ```
### 推理 ## GLM-10B-chinese推理
采用1节点,4张DCU-Z100-16G,采用tp=2,pp=2的并行配置。 采用1节点,4张DCU-Z100-16G,采用tp=2,pp=2的并行配置。
运行以下代码: 将模型权重放置与demo.py同一目录下,运行以下代码:
cd projects/GLM cd projects/GLM
# 运行前修改 configs/glm_inference.py 中 `pad_token_id=50000, eos_token_id=50007, bos_token_id=None` # 运行前修改 configs/glm_inference.py 中 `pad_token_id=50000, eos_token_id=50007, bos_token_id=None`
...@@ -151,18 +172,18 @@ demo.py如下: ...@@ -151,18 +172,18 @@ demo.py如下:
if dist.is_main_process(): if dist.is_main_process():
print(res) print(res)
输出 ### 输出
``` ```
>>>Total number of model parameters: 9,879,633,920 >>>Total number of model parameters: 9,879,633,920
[CLS] 冬天,中国哪座城市最适合避寒?问题描述:能推荐一些国内适合冬天避寒的城市吗?回答用户:旅游爱好者 回答: [gMASK] <|endoftext|> <|startofpiece|> 避寒,当然是去海南呀!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾,没有雾霾!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾! [CLS] 冬天,中国哪座城市最适合避寒?问题描述:能推荐一些国内适合冬天避寒的城市吗?回答用户:旅游爱好者 回答: [gMASK] <|endoftext|> <|startofpiece|> 避寒,当然是去海南呀!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾,没有雾霾!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾!<n><n>海南的冬天,阳光明媚,温度适宜,而且空气清新,没有雾霾,没有沙尘暴,没有雾霾!
``` ```
### 问答示例 ## 问答示例
采用1节点,4张DCU-Z100-16G,采用tp=2,pp=2的并行配置。 采用1节点,4张DCU-Z100-16G,采用tp=2,pp=2的并行配置。
运行以下代码: 将模型权重放置与glm-QA.py同一目录下,运行以下代码:
cd projects/GLM` cd projects/GLM`
python3 -m oneflow.distributed.launch --nproc_per_node 4 glm-QA.py python3 -m oneflow.distributed.launch --nproc_per_node 4 glm-QA.py
...@@ -195,6 +216,16 @@ demo.py如下: ...@@ -195,6 +216,16 @@ demo.py如下:
> 再见 > 再见
``` ```
## 应用场景
### 算法类别
`自然语言处理`
### 热点应用行业
`nlp,智能聊天助手,科研,文学创作`
## 源码仓库及问题反馈 ## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/glm_oneflow - https://developer.hpccube.com/codes/modelzoo/glm_oneflow
......
# 模型唯一标识
modelCode=68
# 模型名称 # 模型名称
modelName=GLM_OneFlow modelName=GLM_OneFlow
# 模型描述 # 模型描述
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment