instruction-pretrain
commited on
Commit
•
1920856
1
Parent(s):
e750163
Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,70 @@
|
|
1 |
-
---
|
2 |
-
license: llama3
|
3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
---
|
2 |
+
license: llama3
|
3 |
+
language:
|
4 |
+
- en
|
5 |
+
---
|
6 |
+
# Instruction Pre-Training: Language Models are Supervised Multitask Learners
|
7 |
+
This repo contains the **finance model developed from Llama3-8B** in our paper **Instruction Pre-Training: Language Models are Supervised Multitask Learners**.
|
8 |
+
|
9 |
+
We explore supervised multitask pre-training by proposing ***Instruction Pre-Training***, a framework that scalably augments massive raw corpora with instruction-response pairs to pre-train language models. The instruction-response pairs are generated by an efficient instruction synthesizer built on open-source models. ***Instruction Pre-Training* outperforms *Vanilla Pre-training* in both general pre-training from scratch and domain-adaptive continual pre-training.** In pre-training from scratch, *Instruction Pre-Training* not only improves pre-trained base models but also benefits more from further instruction tuning. **In continual pre-training, *Instruction Pre-Training* enables Llama3-8B to be comparable to or even outperform Llama3-70B.**
|
10 |
+
|
11 |
+
<p align='center'>
|
12 |
+
<img src="https://cdn-uploads.huggingface.co/production/uploads/66711d2ee12fa6cc5f5dfc89/vRdsFIVQptbNaGiZ18Lih.png" width="400">
|
13 |
+
</p>
|
14 |
+
|
15 |
+
## Resources
|
16 |
+
**🤗 We share our data and models with example usages, feel free to open any issues or discussions! 🤗**
|
17 |
+
|
18 |
+
- Context-Based Instruction Synthesizer: [instruction-synthesizer](https://huggingface.co/instruction-pretrain/instruction-synthesizer)
|
19 |
+
- Fine-Tuning Data for the Synthesizer: [ft-instruction-synthesizer-collection](https://huggingface.co/datasets/instruction-pretrain/ft-instruction-synthesizer-collection)
|
20 |
+
- General Models Pre-Trained from Scratch:
|
21 |
+
- [InstructLM-500M](https://huggingface.co/instruction-pretrain/InstructLM-500M)
|
22 |
+
- [InstructLLM-1.3B](https://huggingface.co/instruction-pretrain/InstructLLM-1.3B)
|
23 |
+
- Domain-Specific Models Pre-Trained from Llama3-8B:
|
24 |
+
- [Finance-Llama3-8B](https://huggingface.co/instruction-pretrain/finance-Llama3-8B)
|
25 |
+
- [Biomedicine-Llama3-8B](https://huggingface.co/instruction-pretrain/medicine-Llama3-8B)
|
26 |
+
|
27 |
+
|
28 |
+
## Domain-Adaptive Continued Pre-Training
|
29 |
+
Following [AdaptLLM](https://huggingface.co/AdaptLLM/finance-chat), we augment the domain-specific raw corpora with instruction-response pairs generated by our [context-based instruction synthesizer](https://huggingface.co/instruction-pretrain/instruction-synthesizer).
|
30 |
+
|
31 |
+
For example, to chat with the finance-Llama3-8B model:
|
32 |
+
```python
|
33 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer
|
34 |
+
|
35 |
+
model = AutoModelForCausalLM.from_pretrained("instruction-pretrain/finance-Llama3-8B")
|
36 |
+
tokenizer = AutoTokenizer.from_pretrained("instruction-pretrain/finance-Llama3-8B")
|
37 |
+
|
38 |
+
# Put your input here, NO prompt template is required
|
39 |
+
user_input = '''Use this fact to answer the question: Title of each class Trading Symbol(s) Name of each exchange on which registered
|
40 |
+
Common Stock, Par Value $.01 Per Share MMM New York Stock Exchange
|
41 |
+
MMM Chicago Stock Exchange, Inc.
|
42 |
+
1.500% Notes due 2026 MMM26 New York Stock Exchange
|
43 |
+
1.750% Notes due 2030 MMM30 New York Stock Exchange
|
44 |
+
1.500% Notes due 2031 MMM31 New York Stock Exchange
|
45 |
+
|
46 |
+
Which debt securities are registered to trade on a national securities exchange under 3M's name as of Q2 of 2023?'''
|
47 |
+
|
48 |
+
inputs = tokenizer(user_input, return_tensors="pt", add_special_tokens=True).input_ids.to(model.device)
|
49 |
+
outputs = model.generate(input_ids=inputs, max_new_tokens=400)[0]
|
50 |
+
|
51 |
+
answer_start = int(inputs.shape[-1])
|
52 |
+
pred = tokenizer.decode(outputs[answer_start:], skip_special_tokens=True)
|
53 |
+
|
54 |
+
print(pred)
|
55 |
+
```
|
56 |
+
|
57 |
+
## Citation
|
58 |
+
If you find our work helpful, please cite us:
|
59 |
+
|
60 |
+
[AdaptLLM](https://huggingface.co/papers/2309.09530)
|
61 |
+
```bibtex
|
62 |
+
@inproceedings{
|
63 |
+
cheng2024adapting,
|
64 |
+
title={Adapting Large Language Models via Reading Comprehension},
|
65 |
+
author={Daixuan Cheng and Shaohan Huang and Furu Wei},
|
66 |
+
booktitle={The Twelfth International Conference on Learning Representations},
|
67 |
+
year={2024},
|
68 |
+
url={https://openreview.net/forum?id=y886UXPEZ0}
|
69 |
+
}
|
70 |
+
```
|