README.md 6.05 KB
Newer Older
dcuai's avatar
dcuai committed
1
# LLaMA
xiabo's avatar
xiabo committed
2
3
## 论文
- [https://arxiv.org/pdf/2302.13971.pdf](https://arxiv.org/pdf/2302.13971.pdf)
xiabo's avatar
xiabo committed
4

xiabo's avatar
xiabo committed
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 模型结构
LLAMA网络基于 Transformer 架构。提出了各种改进,并用于不同的模型,例如 PaLM。以下是与原始架构的主要区别:
预归一化。为了提高训练稳定性,对每个transformer 子层的输入进行归一化,而不是对输出进行归一化。使用 RMSNorm 归一化函数。
SwiGLU 激活函数 [PaLM]。使用 SwiGLU 激活函数替换 ReLU 非线性以提高性能。使用 2 /3 4d 的维度而不是 PaLM 中的 4d。
旋转嵌入。移除了绝对位置嵌入,而是添加了旋转位置嵌入 (RoPE),在网络的每一层。

![img](./docs/llama.png)

## 算法原理
LLama是一个基础语言模型的集合,参数范围从7B到65B。在数万亿的tokens上训练出的模型,并表明可以专门使用公开可用的数据集来训练最先进的模型,而不依赖于专有的和不可访问的数据集。

![img](./docs/llama_1.png)

## 环境配置

xiabo's avatar
xiabo committed
20
提供光源拉取推理的docker镜像:
xuxzh1's avatar
xuxzh1 committed
21
22
```bash
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10
xiabo's avatar
xiabo committed
23
24
25
# <Image ID>用上面拉取docker镜像的ID替换
# <Host Path>主机端路径
# <Container Path>容器映射路径
xuxzh1's avatar
xuxzh1 committed
26
27
28
29
docker run -it --network=host --name=llama_lmdeploy --privileged --device=/dev/kfd --device=/dev/dri --ipc=host --shm-size=1024G --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -u root --ulimit stack=-1:-1 --ulimit memlock=-1:-1 -v /opt/hyhal:/opt/hyhal:ro -v <Host Path>:<Container Path> <Image ID> /bin/bash

#起容器之后安装软件依赖
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
xiabo's avatar
xiabo committed
30
31
```
镜像版本依赖:
xuxzh1's avatar
xuxzh1 committed
32
33
34
35

* DTK驱动:dtk24.04.1
* Pytorch: 2.1.0
* python: 3.10
xiabo's avatar
xiabo committed
36
37
38
39

## 数据集


xiabo's avatar
xiabo committed
40
41
## 推理

xiabo's avatar
xiabo committed
42
### 源码编译安装
xuxzh1's avatar
xuxzh1 committed
43
44
```bash
# 若使用光源的镜像,可以跳过源码编译安装,镜像里面安装好了lmdeploy
chenzk's avatar
chenzk committed
45
git clone http://developer.sourcefind.cn/codes/modelzoo/llama_lmdeploy.git
xiabo's avatar
xiabo committed
46
cd llama_lmdeploy
xuxzh1's avatar
xuxzh1 committed
47
git submodule init && git submodule updat
xiabo's avatar
xiabo committed
48
cd lmdeploy
xiabo's avatar
xiabo committed
49
50
51
52
53
54
55
56
57
58
mkdir build && cd build
sh ../generate.sh
make -j 32
make install
cd .. && python3 setup.py install
```
### 模型下载

[LLama](https://huggingface.co/meta-llama)

chenzk's avatar
chenzk committed
59
[LLama-7B](https://huggingface.co/meta-llama/Llama-2-7b-hf)
wanglch's avatar
wanglch committed
60

chenzk's avatar
chenzk committed
61
[LLama-13B](https://huggingface.co/meta-llama/Llama-2-13b-hf)
wanglch's avatar
wanglch committed
62

chenzk's avatar
chenzk committed
63
[LLama-33B](https://huggingface.co/pinkmanlove/llama-33b-hf)
wanglch's avatar
wanglch committed
64

chenzk's avatar
chenzk committed
65
[LLama-65B](https://huggingface.co/Enoch/llama-65b-hf)
wanglch's avatar
wanglch committed
66

chenzk's avatar
chenzk committed
67
[LLama2-7B](https://huggingface.co/meta-llama/Llama-2-7b-hf)
wanglch's avatar
wanglch committed
68

chenzk's avatar
chenzk committed
69
[LLama2-13B](https://huggingface.co/meta-llama/Llama-2-13b)
wanglch's avatar
wanglch committed
70

chenzk's avatar
chenzk committed
71
[LLama2-70B](https://huggingface.co/meta-llama/Llama-2-70b-hf)
wanglch's avatar
wanglch committed
72

xiabo's avatar
xiabo committed
73
74
支持模型包括:LLama-7B、LLama-13B、LLama-30B、LLama-65B、LLama2-7B、LLama2-13B、LLama2-70B

xuxzh1's avatar
xuxzh1 committed
75
76
77
78
> [!CAUTION]
>
> 最新lmdepoly推理llama1:
>
xuxzh1's avatar
xuxzh1 committed
79
> 1.LLama-13B:需要在tokenizer_config.json中添加“unk_token”对应的值为"\<unk\>“
xuxzh1's avatar
xuxzh1 committed
80
>
xuxzh1's avatar
xuxzh1 committed
81
> 2.LLama-65B:config.json文件中“architectures”对应的[LlAmaForCausalLM]改成[LlamaForCausalLM]
xuxzh1's avatar
xuxzh1 committed
82

xiabo's avatar
xiabo committed
83
### 运行 LLama-7b
xuxzh1's avatar
xuxzh1 committed
84
```bash
xiabo's avatar
xiabo committed
85
86
87
# <tp> 用于张量并行的GPU数量应该是2^n

# bash界面运行
shantf's avatar
shantf committed
88
lmdeploy chat turbomind ./path_to_llama7b --tp 1     # 输入问题后执行2次回车进行推理
xiabo's avatar
xiabo committed
89
90
91
92

# 服务器网页端运行

在bash端运行:
xuxzh1's avatar
update  
xuxzh1 committed
93
94
# <server-name> gradio服务器的ip地址
# <server-port> gradio服务器的ip的端口
xiabo's avatar
xiabo committed
95
96
# <tp> 用于张量并行的GPU数量应该是2^n (和模型转换的时候保持一致)

shantf's avatar
shantf committed
97
lmdeploy serve gradio ./path_to_llama7b --server-name {ip} --server-port {port} --tp 1
xiabo's avatar
xiabo committed
98

xuxzh1's avatar
xuxzh1 committed
99
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
100
101
102
```

### 运行 LLama-13b
xuxzh1's avatar
xuxzh1 committed
103
```bash
xiabo's avatar
xiabo committed
104
# bash界面运行
shantf's avatar
shantf committed
105
lmdeploy chat turbomind ./path_to_llama13b --tp 1
xiabo's avatar
xiabo committed
106
107
108
109

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
110
lmdeploy serve gradio  ./path_to_llama13b --server-name {ip} --server-port {port} --tp 1
xiabo's avatar
xiabo committed
111

xuxzh1's avatar
xuxzh1 committed
112
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
113
114
```
### 运行 LLama-33b
xuxzh1's avatar
xuxzh1 committed
115
```bash
xiabo's avatar
xiabo committed
116
# bash界面运行
shantf's avatar
shantf committed
117
lmdeploy chat turbomind  ./path_to_llama33b --tp 4
xiabo's avatar
xiabo committed
118
119
120
121

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
122
lmdeploy serve gradio  ./path_to_llama33b --server-name {ip} --server-port {port} --tp 4
xiabo's avatar
xiabo committed
123

xuxzh1's avatar
xuxzh1 committed
124
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
125
126
127
```

### 运行 LLama-65b
xuxzh1's avatar
xuxzh1 committed
128
```bash
xiabo's avatar
xiabo committed
129
# bash界面运行
shantf's avatar
shantf committed
130
lmdeploy chat turbomind  ./path_to_llama65b --tp 8
xiabo's avatar
xiabo committed
131
132
133
134

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
135
lmdeploy serve gradio  ./path_to_llama65b --server-name {ip} --server-port {port} --tp 8
xuxzh1's avatar
xuxzh1 committed
136
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
137
138
139
```

### 运行 LLama2-7b
xuxzh1's avatar
xuxzh1 committed
140
```bash
xiabo's avatar
xiabo committed
141
# bash界面运行
shantf's avatar
shantf committed
142
lmdeploy chat turbomind  ./path_to_llama2-7b --tp 1
xiabo's avatar
xiabo committed
143
144
145
146

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
147
lmdeploy serve gradio ./path_to_llama2-7b --server-name {ip} --server-port {port} --tp 1
xiabo's avatar
xiabo committed
148

xuxzh1's avatar
xuxzh1 committed
149
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
150
151
152
```

### 运行 LLama2-13b
xuxzh1's avatar
xuxzh1 committed
153
```bash
xiabo's avatar
xiabo committed
154
# bash界面运行
shantf's avatar
shantf committed
155
lmdeploy chat turbomind  ./path_to_llama2-13b --tp 1
xiabo's avatar
xiabo committed
156
157
158
159

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
160
lmdeploy serve gradio  ./path_to_llama2-13b --server-name {ip} --server-port {port} --tp 1
xiabo's avatar
xiabo committed
161

xuxzh1's avatar
xuxzh1 committed
162
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
163
164
165
```

### 运行 LLama2-70b
xuxzh1's avatar
xuxzh1 committed
166
```bash
xiabo's avatar
xiabo committed
167
# bash界面运行
shantf's avatar
shantf committed
168
lmdeploy chat turbomind  ./path_to_llama2-70b --tp 8
xiabo's avatar
xiabo committed
169
170
171
172

# 服务器网页端运行

在bash端运行:
shantf's avatar
shantf committed
173
lmdeploy serve gradio  ./path_to_llama2-70b --server-name {ip} --server-port {port} --tp 8
xiabo's avatar
xiabo committed
174

xuxzh1's avatar
xuxzh1 committed
175
在网页上输入{ip}:{port}即可进行对话
xiabo's avatar
xiabo committed
176
177
178
```

## result
xiabo's avatar
xiabo committed
179
![llama](docs/llama.gif)
xiabo's avatar
xiabo committed
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195

### 精度



## 应用场景

### 算法类别

`对话问答`


### 热点应用行业

`金融,科研,教育`

wanglch's avatar
wanglch committed
196
197
## 预训练权重

chenzk's avatar
chenzk committed
198
[LLama](https://huggingface.co/meta-llama)
wanglch's avatar
wanglch committed
199

chenzk's avatar
chenzk committed
200
[LLama-7B](https://huggingface.co/meta-llama/Llama-2-7b-hf)
wanglch's avatar
wanglch committed
201

chenzk's avatar
chenzk committed
202
[LLama-13B](https://huggingface.co/meta-llama/Llama-2-13b-hf)
wanglch's avatar
wanglch committed
203

chenzk's avatar
chenzk committed
204
[LLama-33B](https://huggingface.co/pinkmanlove/llama-33b-hf)
wanglch's avatar
wanglch committed
205

chenzk's avatar
chenzk committed
206
[LLama-65B](https://huggingface.co/Enoch/llama-65b-hf)
wanglch's avatar
wanglch committed
207

chenzk's avatar
chenzk committed
208
[LLama2-7B](https://huggingface.co/meta-llama/Llama-2-7b-hf)
wanglch's avatar
wanglch committed
209

chenzk's avatar
chenzk committed
210
[LLama2-13B](https://huggingface.co/meta-llama/Llama-2-13b)
wanglch's avatar
wanglch committed
211

chenzk's avatar
chenzk committed
212
[LLama2-70B](https://huggingface.co/meta-llama/Llama-2-70b-hf)
wanglch's avatar
wanglch committed
213

xiabo's avatar
xiabo committed
214
215

## 源码仓库及问题反馈
chenzk's avatar
chenzk committed
216
https://developer.sourcefind.cn/codes/modelzoo/llama_lmdeploy
xiabo's avatar
xiabo committed
217
218
219

## 参考资料
https://github.com/InternLM/LMDeploy
xuxzh1's avatar
xuxzh1 committed
220