Update README.md
#17
by
Qianguo
- opened
README.md
CHANGED
@@ -20,8 +20,14 @@ language:
|
|
20 |
|
21 |
姜子牙通用大模型V1是基于LLaMa的130亿参数的大规模预训练模型,具备翻译,编程,文本分类,信息抽取,摘要,文案生成,常识问答和数学计算等能力。目前姜子牙通用大模型已完成大规模预训练、多任务有监督微调和人类反馈学习三阶段的训练过程。
|
22 |
|
|
|
23 |
The Ziya-LLaMA-13B-v1 is a large-scale pre-trained model based on LLaMA with 13 billion parameters. It has the ability to perform tasks such as translation, programming, text classification, information extraction, summarization, copywriting, common sense Q&A, and mathematical calculation. The Ziya-LLaMA-13B-v1 has undergone three stages of training: large-scale continual pre-training (PT), multi-task supervised fine-tuning (SFT), and human feedback learning (RM, PPO).
|
24 |
|
|
|
|
|
|
|
|
|
|
|
25 |
## 模型分类 Model Taxonomy
|
26 |
|
27 |
| 需求 Demand | 任务 Task | 系列 Series | 模型 Model | 参数 Parameter | 额外 Extra |
|
@@ -81,17 +87,31 @@ We implemented the HFT training process on an internally developed framework, wh
|
|
81 |
|
82 |
## 使用 Usage
|
83 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
```python3
|
85 |
from transformers import AutoTokenizer
|
86 |
from transformers import LlamaForCausalLM
|
87 |
import torch
|
88 |
|
89 |
-
|
90 |
device = torch.device("cuda")
|
|
|
91 |
|
92 |
query="帮我写一份去西安的旅游计划"
|
93 |
-
model = LlamaForCausalLM.from_pretrained(
|
94 |
-
tokenizer = AutoTokenizer.from_pretrained(
|
95 |
inputs = '<human>:' + query.strip() + '\n<bot>:'
|
96 |
|
97 |
input_ids = tokenizer(inputs, return_tensors="pt").input_ids.to(device)
|
@@ -108,6 +128,47 @@ generate_ids = model.generate(
|
|
108 |
output = tokenizer.batch_decode(generate_ids)[0]
|
109 |
print(output)
|
110 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
```
|
113 |
|
@@ -137,4 +198,4 @@ You can also cite our [website](https://github.com/IDEA-CCNL/Fengshenbang-LM/):
|
|
137 |
year={2021},
|
138 |
howpublished={\url{https://github.com/IDEA-CCNL/Fengshenbang-LM}},
|
139 |
}
|
140 |
-
```
|
|
|
20 |
|
21 |
姜子牙通用大模型V1是基于LLaMa的130亿参数的大规模预训练模型,具备翻译,编程,文本分类,信息抽取,摘要,文案生成,常识问答和数学计算等能力。目前姜子牙通用大模型已完成大规模预训练、多任务有监督微调和人类反馈学习三阶段的训练过程。
|
22 |
|
23 |
+
|
24 |
The Ziya-LLaMA-13B-v1 is a large-scale pre-trained model based on LLaMA with 13 billion parameters. It has the ability to perform tasks such as translation, programming, text classification, information extraction, summarization, copywriting, common sense Q&A, and mathematical calculation. The Ziya-LLaMA-13B-v1 has undergone three stages of training: large-scale continual pre-training (PT), multi-task supervised fine-tuning (SFT), and human feedback learning (RM, PPO).
|
25 |
|
26 |
+
## 软件依赖
|
27 |
+
```
|
28 |
+
pip install torch==1.12.1 tokenizers==0.13.3 git+https://github.com/huggingface/transformers
|
29 |
+
```
|
30 |
+
|
31 |
## 模型分类 Model Taxonomy
|
32 |
|
33 |
| 需求 Demand | 任务 Task | 系列 Series | 模型 Model | 参数 Parameter | 额外 Extra |
|
|
|
87 |
|
88 |
## 使用 Usage
|
89 |
|
90 |
+
由于LLaMA权重的许可限制,该模型不能用于商业用途,请严格遵守LLaMA的使用政策。考虑到LLaMA权重的许可证限制,我们无法直接发布完整的模型权重。因此,我们使用了[FastChat开源工具](https://github.com/lm-sys/FastChat/blob/main/fastchat/model/apply_delta.py)作为基础,并对其进行了进一步的优化。我们计算并发布了Ziya-LLaMA-13B-v1权重与原始LLaMA权重之间的差值。用户可以按照以下步骤操作以获得Ziya-LLaMA-13B-v1完整权重,具体步骤如下:
|
91 |
+
|
92 |
+
Step 1:获取[LLaMA](https://docs.google.com/forms/d/e/1FAIpQLSfqNECQnMkycAp2jP4Z9TFX0cGR4uf7b_fBxjY_OjhJILlKGA/viewform)权重并转成Hugging Face Transformers模型格式,可参考转换[脚本](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py)(若已经有huggingface权重则跳过)
|
93 |
+
```
|
94 |
+
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
|
95 |
+
--input_dir /path/to/downloaded/llama/weights --model_size 13B --output_dir /output/path
|
96 |
+
```
|
97 |
+
|
98 |
+
Step 2:下载Ziya-LLaMA-13B-v1的delta权重以及step 1中转换好的原始LLaMA权重,使用如下脚本转换:https://github.com/IDEA-CCNL/Fengshenbang-LM/blob/main/fengshen/utils/apply_delta.py
|
99 |
+
```
|
100 |
+
python3 -m apply_delta --base ~/model_weights/llama-13b --target ~/model_weights/Ziya-LLaMA-13B --delta ~/model_weights/Ziya-LLaMA-13B-v1
|
101 |
+
```
|
102 |
+
|
103 |
+
Step 3: 加载step 2得到的模型推理
|
104 |
```python3
|
105 |
from transformers import AutoTokenizer
|
106 |
from transformers import LlamaForCausalLM
|
107 |
import torch
|
108 |
|
|
|
109 |
device = torch.device("cuda")
|
110 |
+
ckpt = '基于delta参数合并后的完整模型权重'
|
111 |
|
112 |
query="帮我写一份去西安的旅游计划"
|
113 |
+
model = LlamaForCausalLM.from_pretrained(ckpt, torch_dtype=torch.float16, device_map="auto")
|
114 |
+
tokenizer = AutoTokenizer.from_pretrained(ckpt, use_fast=False)
|
115 |
inputs = '<human>:' + query.strip() + '\n<bot>:'
|
116 |
|
117 |
input_ids = tokenizer(inputs, return_tensors="pt").input_ids.to(device)
|
|
|
128 |
output = tokenizer.batch_decode(generate_ids)[0]
|
129 |
print(output)
|
130 |
|
131 |
+
```
|
132 |
+
NOTE: Due to the licensing restrictions of LLaMA weights, the utilization of the model for commercial purposes is precluded. Please strictly respect LLaMA's usage policy. Considering the licensing limitations on LLaMA weights, we are unable to directly release the complete model weights. Therefore, we utilized [the open-source FastChat tool](https://github.com/lm-sys/FastChat/blob/main/fastchat/model/apply_delta.py) and further optimized it to calculate the differences between Ziya-LLaMA-13B-v1 weights and the original LLaMA weights. Users can follow the steps to obtain the complete weights of Ziya-LLaMA-13B-v1. The steps are as follows:
|
133 |
+
|
134 |
+
Step 1: Obtain the [LLaMA](https://huggingface.co/docs/transformers/main/en/model_doc/llama#overview) weights and convert them into the Hugging Face Transformers format. You can refer to the [script](https://github.com/huggingface/transformers/blob/main/src/transformers/models/llama/convert_llama_weights_to_hf.py) (skip this step if you already have the Hugging Face weights).
|
135 |
+
```
|
136 |
+
python src/transformers/models/llama/convert_llama_weights_to_hf.py \
|
137 |
+
--input_dir /path/to/downloaded/llama/weights --model_size 13B --output_dir /output/path
|
138 |
+
```
|
139 |
+
|
140 |
+
Step 2: Download the delta weights for Ziya-LLaMA-13B-v1 and the pre-converted original LLaMA weights from step 1. Use the following script for conversion: https://github.com/IDEA-CCNL/Fengshenbang-LM/blob/main/fengshen/utils/apply_delta.py
|
141 |
+
```
|
142 |
+
python3 -m apply_delta --base ~/model_weights/llama-13b --target ~/model_weights/Ziya-LLaMA-13B --delta ~/model_weights/Ziya-LLaMA-13B-v1(huggingface下载)
|
143 |
+
```
|
144 |
+
Step 3: Load the model obtained in Step 2 for inference.
|
145 |
+
```python3
|
146 |
+
from transformers import AutoTokenizer
|
147 |
+
from transformers import LlamaForCausalLM
|
148 |
+
import torch
|
149 |
+
|
150 |
+
|
151 |
+
device = torch.device("cuda")
|
152 |
+
ckpt = '基于delta合并后完整模型权重'
|
153 |
+
|
154 |
+
query="帮我写一份去西安的旅游计划"
|
155 |
+
model = LlamaForCausalLM.from_pretrained(ckpt, torch_dtype=torch.float16, device_map="auto")
|
156 |
+
tokenizer = AutoTokenizer.from_pretrained(ckpt, use_fast=False)
|
157 |
+
inputs = '<human>:' + query.strip() + '\n<bot>:'
|
158 |
+
|
159 |
+
input_ids = tokenizer(inputs, return_tensors="pt").input_ids.to(device)
|
160 |
+
generate_ids = model.generate(
|
161 |
+
input_ids,
|
162 |
+
max_new_tokens=1024,
|
163 |
+
do_sample = True,
|
164 |
+
top_p = 0.85,
|
165 |
+
temperature = 1.0,
|
166 |
+
repetition_penalty=1.,
|
167 |
+
eos_token_id=2,
|
168 |
+
bos_token_id=1,
|
169 |
+
pad_token_id=0)
|
170 |
+
output = tokenizer.batch_decode(generate_ids)[0]
|
171 |
+
print(output)
|
172 |
|
173 |
```
|
174 |
|
|
|
198 |
year={2021},
|
199 |
howpublished={\url{https://github.com/IDEA-CCNL/Fengshenbang-LM}},
|
200 |
}
|
201 |
+
```
|