PyTorch
Composer
MosaicML
llm-foundry
StreamingDatasets
6 papers
TehVenom commited on
Commit
752ba9a
1 Parent(s): b5dede0

Upload README.md with huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +223 -0
README.md ADDED
@@ -0,0 +1,223 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - Composer
5
+ - MosaicML
6
+ - llm-foundry
7
+ - StreamingDatasets
8
+ datasets:
9
+ - mc4
10
+ - c4
11
+ - togethercomputer/RedPajama-Data-1T
12
+ - bigcode/the-stack
13
+ - allenai/s2orc
14
+ inference: false
15
+ ---
16
+
17
+ # MPT-7B
18
+
19
+ MPT-7B is a decoder-style transformer pretrained from scratch on 1T tokens of English text and code.
20
+ This model was trained by [MosaicML](https://www.mosaicml.com) and is **open-sourced for commercial use** (_Apache-2.0_).
21
+
22
+ MPT-7B is part of the family of MosaicPretrainedTransformer (MPT) models, which use a modified transformer architecture optimized for efficient training and inference.
23
+
24
+ These architectural changes include performance-optimized layer implementations and the elimination of context length limits by replacing
25
+ positional embeddings with Attention with Linear Biases ([ALiBi](https://arxiv.org/abs/2108.12409)).
26
+ Thanks to these modifications, MPT models can be trained with high throughput efficiency and stable convergence.
27
+ MPT models can also be served efficiently with both standard HuggingFace pipelines and NVIDIA's [FasterTransformer](https://github.com/NVIDIA/FasterTransformer).
28
+
29
+ This model uses the MosaicML LLM codebase, which can be found in the [llm-foundry repository](https://github.com/mosaicml/llm-foundry). It was trained by MosaicML’s NLP team on the [MosaicML platform](https://www.mosaicml.com/training) for LLM pretraining, finetuning, and inference.
30
+
31
+ ### How is this model different?
32
+
33
+ MPT-7B is
34
+
35
+ * **Licensed for commercial use** (unlike [LLaMA](https://arxiv.org/abs/2302.13971)).
36
+ * **Trained on a large amount of data** (1T tokens like [LLaMA](https://arxiv.org/abs/2302.13971) vs. 300B for [Pythia](https://github.com/EleutherAI/pythia), 300B for [OpenLLaMA](https://github.com/openlm-research/open_llama), and 800B for [StableLM](https://github.com/Stability-AI/StableLM)).
37
+ * **Prepared to handle extremely long inputs** thanks to [ALiBi](https://arxiv.org/abs/2108.12409) (we finetuned [MPT-7B-StoryWriter-65k+](https://huggingface.co/mosaicml/mpt-7b-storywriter) on up to 65k inputs and can handle up to 84k vs. 2k-4k for other open source models).
38
+ * **Capable of fast training and inference** (via [FlashAttention](https://arxiv.org/pdf/2205.14135.pdf) and [FasterTransformer](https://github.com/NVIDIA/FasterTransformer))
39
+ * **Equipped with highly efficient open-source training code** via the [llm-foundry repository](https://github.com/mosaicml/llm-foundry)
40
+
41
+ ### Models finetuned off MPT-7B:
42
+
43
+ The following models are finetuned on MPT-7B:
44
+
45
+ * [MPT-7B-StoryWriter-65k+](https://huggingface.co/mosaicml/mpt-7b-storywriter): a model designed to read and write fictional stories with super long context lengths.
46
+ Built by finetuning MPT-7B with a context length of 65k tokens on a filtered fiction subset of the [books3 dataset](https://huggingface.co/datasets/the_pile_books3).
47
+ At inference time, thanks to [ALiBi](https://arxiv.org/abs/2108.12409), MPT-7B-StoryWriter-65k+ can extrapolate even beyond 65k tokens.
48
+ We demonstrate generations as long as 80k tokens on a single A100-80GB GPU in our [blogpost](www.mosaicml.com/blog/mpt-7b).
49
+ * License: _Apache-2.0_ (commercial use permitted)
50
+
51
+ * [MPT-7B-Instruct](https://huggingface.co/mosaicml/mpt-7b-instruct): a model for short-form instruction following.
52
+ Built by finetuning MPT-7B on a [dataset](https://huggingface.co/datasets/mosaicml/dolly_hhrlhf) we also release, derived from the [Databricks Dolly-15k](https://huggingface.co/datasets/databricks/databricks-dolly-15k) and the [Anthropic Helpful and Harmless (HH-RLHF)](https://huggingface.co/datasets/Anthropic/hh-rlhf) datasets.
53
+ * License: _CC-By-SA-3.0_ (commercial use permitted)
54
+ * [Demo on Hugging Face Spaces](https://huggingface.co/spaces/mosaicml/mpt-7b-instruct)
55
+
56
+ * [MPT-7B-Chat](https://huggingface.co/mosaicml/mpt-7b-chat): a chatbot-like model for dialogue generation.
57
+ Built by finetuning MPT-7B on the [ShareGPT-Vicuna](https://huggingface.co/datasets/jeffwan/sharegpt_vicuna), [HC3](https://huggingface.co/datasets/Hello-SimpleAI/HC3),
58
+ [Alpaca](https://huggingface.co/datasets/tatsu-lab/alpaca), [HH-RLHF](https://huggingface.co/datasets/Anthropic/hh-rlhf), and [Evol-Instruct](https://huggingface.co/datasets/victor123/evol_instruct_70k) datasets.
59
+ * License: _CC-By-NC-SA-4.0_ (non-commercial use only)
60
+ * [Demo on Hugging Face Spaces](https://huggingface.co/spaces/mosaicml/mpt-7b-chat)
61
+
62
+ ## Model Date
63
+
64
+ May 5, 2023
65
+
66
+ ## Model License
67
+
68
+ Apache-2.0 (commercial use permitted)
69
+
70
+ ## Documentation
71
+
72
+ * [Blog post: Introducing MPT-7B: A New Standard for Open-Source, Commercially Usable LLMs](https://www.mosaicml.com/blog/mpt-7b)
73
+ * [Codebase (mosaicml/llm-foundry repo)](https://github.com/mosaicml/llm-foundry/)
74
+ * Questions: Feel free to contact us via the [MosaicML Community Slack](https://join.slack.com/t/mosaicml-community/shared_invite/zt-1btms90mc-GipE2ufuPkKY0QBrmF3LSA)!
75
+
76
+
77
+ ## How to Use
78
+
79
+ This model is best used with the MosaicML [llm-foundry repository](https://github.com/mosaicml/llm-foundry) for training and finetuning.
80
+
81
+ ```python
82
+ import transformers
83
+ model = transformers.AutoModelForCausalLM.from_pretrained(
84
+ 'mosaicml/mpt-7b',
85
+ trust_remote_code=True
86
+ )
87
+ ```
88
+ Note: This model requires that `trust_remote_code=True` be passed to the `from_pretrained` method.
89
+ This is because we use a custom `MPT` model architecture that is not yet part of the Hugging Face `transformers` package.
90
+ `MPT` includes options for many training efficiency features such as [FlashAttention](https://arxiv.org/pdf/2205.14135.pdf), [ALiBi](https://arxiv.org/abs/2108.12409), [QK LayerNorm](https://arxiv.org/abs/2010.04245), and more.
91
+
92
+ To use the optimized [triton implementation](https://github.com/openai/triton) of FlashAttention, you can load the model with `attn_impl='triton'` and move the model to `bfloat16`:
93
+ ```python
94
+ config = transformers.AutoConfig.from_pretrained(
95
+ 'mosaicml/mpt-7b',
96
+ trust_remote_code=True
97
+ )
98
+ config.attn_config['attn_impl'] = 'triton'
99
+
100
+ model = transformers.AutoModelForCausalLM.from_pretrained(
101
+ 'mosaicml/mpt-7b',
102
+ config=config,
103
+ torch_dtype=torch.bfloat16,
104
+ trust_remote_code=True
105
+ )
106
+ model.to(device='cuda:0')
107
+ ```
108
+
109
+ Although the model was trained with a sequence length of 2048, ALiBi enables users to increase the maximum sequence length during finetuning and/or inference. For example:
110
+
111
+ ```python
112
+ config = transformers.AutoConfig.from_pretrained(
113
+ 'mosaicml/mpt-7b',
114
+ trust_remote_code=True
115
+ )
116
+ config.update({"max_seq_len": 4096})
117
+ model = transformers.AutoModelForCausalLM.from_pretrained(
118
+ 'mosaicml/mpt-7b',
119
+ config=config,
120
+ trust_remote_code=True
121
+ )
122
+ ```
123
+
124
+ This model was trained with the [EleutherAI/gpt-neox-20b](https://huggingface.co/EleutherAI/gpt-neox-20b) tokenizer.
125
+
126
+ ```python
127
+ from transformers import AutoTokenizer
128
+ tokenizer = AutoTokenizer.from_pretrained("EleutherAI/gpt-neox-20b")
129
+ ```
130
+
131
+ ## Model Description
132
+
133
+ The architecture is a modification of a standard decoder-only transformer.
134
+
135
+ The model has been modified from a standard transformer in the following ways:
136
+ * It uses [FlashAttention](https://arxiv.org/pdf/2205.14135.pdf)
137
+ * It uses [ALiBi (Attention with Linear Biases)](https://arxiv.org/abs/2108.12409) and does not use positional embeddings
138
+ * It does not use biases
139
+
140
+
141
+ | Hyperparameter | Value |
142
+ |----------------|-------|
143
+ |n_parameters | 6.7B |
144
+ |n_layers | 32 |
145
+ | n_heads | 32 |
146
+ | d_model | 4096 |
147
+ | vocab size | 50432 |
148
+ | sequence length | 2048 |
149
+
150
+
151
+
152
+ ## Training Data
153
+
154
+ ### Streaming Datasets
155
+
156
+ Data was formatted using the MosaicML [StreamingDataset](https://github.com/mosaicml/streaming) library to host our data in object storage and efficiently stream it to our compute cluster during training.
157
+ StreamingDataset obviates the need to download the whole dataset before starting training, and allows instant resumption of training from any point in the dataset.
158
+
159
+
160
+ ### Data Mix
161
+
162
+ The model was trained for 1T tokens (with batch size 1760 and sequence length 2048). It was trained on the following data mix:
163
+
164
+
165
+ | Data Source | Number of Tokens in Source | Proportion | Effective Number of Tokens | Epochs |
166
+ |-------------|----------------------------|------------|----------------------------|--------|
167
+ | mC4 3.1.0 - English | 417.99 B | 0.33 | 330 B | 0.14 |
168
+ | C4 - English - SemDedup 80% | 100.42 B | 0.299 | 299 B | 2.98 |
169
+ | RedPajama - CommonCrawl | 878.45 B | 0.1 | 100 B | 0.11 |
170
+ | The Stack - Selected Languages | 463.78 B | 0.1 | 100 B | 0.22 |
171
+ | RedPajama - Wikipedia - En | 4.87 B | 0.04 | 40 B | 8.21 |
172
+ | The Stack - Markdown | 107.07 B | 0.035 | 35 B | 0.33 |
173
+ | S2ORC | 48.85 B | 0.033 | 33 B | 0.68 |
174
+ | RedPajama - Books | 26.02 B | 0.03 | 30B | 1.15 |
175
+ | RedPajama - arXiv | 28.10 B | 0.019 | 19 B | 0.68 |
176
+ | RedPajama - StackExchange | 20.54 B | 0.014 | 14 B |0.68 |
177
+
178
+ Samples for each batch were selected from one of the datasets with the probability specified above.
179
+ The examples were shuffled within each dataset, and each example was constructed from as many sequences from that dataset as were necessary to fill the 2048 sequence length.
180
+
181
+ The data was tokenized using the [EleutherAI/gpt-neox-20b](https://huggingface.co/EleutherAI/gpt-neox-20b) tokenizer. This BPE tokenizer has a number of desirable characteristics,
182
+ most of which are relevant for tokenizing code:
183
+ (1) It was trained on a diverse mix of data that includes code (The Pile)
184
+ (2) It applies consistent space delimitation, unlike the GPT2 tokenizer which tokenizes inconsistently depending on the presence of prefix spaces
185
+ (3) It contains tokens for repeated space characters, which allows superior compression of text with large amounts of repeated space characters.
186
+
187
+ The model vocabulary size of 50432 was set to be a multiple of 128 (as in [MEGATRON-LM](https://arxiv.org/abs/1909.08053)), model flop utilization (MFU) increased by up to four percentage points.
188
+
189
+ ### Training Configuration
190
+
191
+ This model was trained on 440 A100-40GBs for about 9.5 days using the [MosaicML Platform](https://www.mosaicml.com/platform).
192
+ The model was trained with sharded data parallelism using [FSDP](https://pytorch.org/docs/stable/fsdp.html) and used the [LION](https://arxiv.org/abs/2302.06675) optimizer.
193
+
194
+ ## Limitations and Biases
195
+
196
+ _The following language is modified from [EleutherAI's GPT-NeoX-20B](https://huggingface.co/EleutherAI/gpt-neox-20b)_
197
+
198
+ MPT-7B (Base) is **not** intended for deployment without finetuning.
199
+ It should not be used for human-facing interactions without further guardrails and user consent.
200
+
201
+ MPT-7B can produce factually incorrect output, and should not be relied on to produce factually accurate information.
202
+ MPT-7B was trained on various public datasets.
203
+ While great efforts have been taken to clean the pretraining data, it is possible that this model could generate lewd, biased or otherwise offensive outputs.
204
+
205
+
206
+ ## MosaicML Platform
207
+
208
+ If you're interested in [training](https://www.mosaicml.com/training) and [deploying](https://www.mosaicml.com/inference) your own MPT or LLMs on the MosaicML Platform, [sign up here](https://forms.mosaicml.com/demo?utm_source=huggingface&utm_medium=referral&utm_campaign=mpt-7b).
209
+
210
+ ## Citation
211
+
212
+ Please cite this model using the following format:
213
+
214
+ ```
215
+ @online{MosaicML2023Introducing,
216
+ author = {MosaicML NLP Team},
217
+ title = {Introducing MPT-7B: A New Standard for Open-Source, Commercially Usable LLMs},
218
+ year = {2023},
219
+ url = {www.mosaicml.com/blog/mpt-7b},
220
+ note = {Accessed: 2023-03-28}, % change this date
221
+ urldate = {2023-03-28} % change this date
222
+ }
223
+ ```