Justin Law commited on
Commit
b5dbfe2
1 Parent(s): 07e70bb

Build(Release): v0.1.0 Opera Bullet Interpreter Model

Browse files
README.md CHANGED
@@ -1,3 +1,238 @@
1
- ---
2
- license: apache-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Model Card for Opera Bullet Interpreter
2
+
3
+ An unofficial United States Air Force and Space Force performance statement "translation" model. Takes a properly formatted performance statement, also known as a "bullet," as an input and outputs a long-form sentence, using plain english, describing the accomplishments captured within the bullet.
4
+
5
+ This checkpoint is a fine-tuned version of the LaMini-Flan-T5-783M, using the justinthelaw/opera-bullet-completions (private) dataset.
6
+
7
+ To learn more about this project, please visit the [Opera GitHub Repository](https://github.com/justinthelaw/opera).
8
+
9
+ # Table of Contents
10
+
11
+ - [Model Card for Opera Bullet Interpreter](#model-card-for--model_id-)
12
+ - [Table of Contents](#table-of-contents)
13
+ - [Model Details](#model-details)
14
+ - [Uses](#uses)
15
+ - [Bias, Risks, and Limitations](#bias-risks-and-limitations)
16
+ - [Training Details](#training-details)
17
+ - [Evaluation](#evaluation)
18
+ - [Model Examination](#model-examination)
19
+ - [Environmental Impact](#environmental-impact)
20
+ - [Technical Specifications [optional]](#technical-specifications-optional)
21
+ - [Citation](#citation)
22
+ - [Model Card Authors](#model-card-authors-optional)
23
+ - [Model Card Contact](#model-card-contact)
24
+ - [How to Get Started with the Model](#how-to-get-started-with-the-model)
25
+
26
+ # Model Details
27
+
28
+ ## Model Description
29
+
30
+ An unofficial United States Air Force and Space Force performance statement "translation" model. Takes a properly formatted performance statement, also known as a "bullet," as an input and outputs a long-form sentence, using plain english, describing the accomplishments captured within the bullet.
31
+
32
+ This is a fine-tuned version of the LaMini-Flan-T5-783M, using the justinthelaw/opera-bullet-completions (private) dataset.
33
+
34
+ - **Developed by:** Justin Law, Alden Davidson, Christopher Kodama, My Tran
35
+ - **Model type:** Language Model
36
+ - **Language(s) (NLP):** en
37
+ - **License:** apache-2.0
38
+ - **Parent Model:** [LaMini-Flan-T5-783M](https://huggingface.co/MBZUAI/LaMini-Flan-T5-783M)
39
+ - **Resources for more information:** More information needed
40
+ - [GitHub Repo](https://github.com/justinthelaw/opera)
41
+ - [Associated Paper](https://huggingface.co/MBZUAI/LaMini-Flan-T5-783M)
42
+
43
+ # Uses
44
+
45
+ ## Direct Use
46
+
47
+ Used to programmatically produce training data for Opera's Bullet Forge (see GitHub repository for details).
48
+
49
+ ## Downstream Use [Optional]
50
+
51
+ Used to quickly interpret bullets written by Airman (Air Force) or Guardians (Space Force), into long-form, plain English sentences.
52
+
53
+ ## Out-of-Scope Use
54
+
55
+ Generating bullets from long-form, plain English sentences. General NLP functionality.
56
+
57
+ # Bias, Risks, and Limitations
58
+
59
+ Specialized acronyms or abbreviations specific to small units may not be transformed properly. Bullets in highly non-standard formats may result in lower quality results.
60
+
61
+ ## Recommendations
62
+
63
+ Look-up acronyms to ensure the correct narrative is being formed. Double-check (spot check) bullets with slightly more complex acronyms and abbreviations for narrative precision.
64
+
65
+ # Training Details
66
+
67
+ ## Training Data
68
+
69
+ pre-processing or additional filtering. -->
70
+
71
+ The model was fine-tuned on the justinthelaw/opera-bullet-completions dataset, which can be partially found at the GitHub repository.
72
+
73
+ ## Training Procedure
74
+
75
+ ### Preprocessing
76
+
77
+ The justinthelaw/opera-bullet-completions dataset was created using a custom Python web-scraper, along with some custom cleaning functions, all of which can be found at the GitHub repository.
78
+
79
+ ### Speeds, Sizes, Times
80
+
81
+ It takes approximately 3-5 seconds per inference when using any standard-sized Air and Space Force bullet statement.
82
+
83
+ # Evaluation
84
+
85
+ ## Testing Data, Factors & Metrics
86
+
87
+ ### Testing Data
88
+
89
+ 20% of the justinthelaw/opera-bullet-completions dataset was used to validate the model's performance.
90
+
91
+ ### Factors
92
+
93
+ Repitition, contextual loss, and bullet format are all loss factors tied into the backward propogation calculations and validation steps.
94
+
95
+ ### Metrics
96
+
97
+ ROGUE scores were computed and averaged. These may be provided in future iterations of this model's development.
98
+
99
+ ## Results
100
+
101
+ # Model Examination
102
+
103
+ More information needed
104
+
105
+ # Environmental Impact
106
+
107
+ - **Hardware Type:** 2.6 GHz 6-Core Intel Core i7, 16 GB 2667 MHz DDR4, AMD Radeon Pro 5300M 4 GB
108
+ - **Hours used:** 18
109
+ - **Cloud Provider:** N/A
110
+ - **Compute Region:** N/A
111
+ - **Carbon Emitted:** N/A
112
+
113
+ # Technical Specifications
114
+
115
+ ### Hardware
116
+
117
+ 2.6 GHz 6-Core Intel Core i7, 16 GB 2667 MHz DDR4, AMD Radeon Pro 5300M 4 GB
118
+
119
+ ### Software
120
+
121
+ VSCode, Jupyter Notebook, Python3, PyTorch, Transformers, Pandas, Asyncio, Loguru, Rich
122
+
123
+ # Citation
124
+
125
+ **BibTeX:**
126
+
127
+ @article{lamini-lm,
128
+ author = {Minghao Wu and
129
+ Abdul Waheed and
130
+ Chiyu Zhang and
131
+ Muhammad Abdul-Mageed and
132
+ Alham Fikri Aji
133
+ },
134
+ title = {LaMini-LM: A Diverse Herd of Distilled Models from Large-Scale Instructions},
135
+ journal = {CoRR},
136
+ volume = {abs/2304.14402},
137
+ year = {2023},
138
+ url = {https://arxiv.org/abs/2304.14402},
139
+ eprinttype = {arXiv},
140
+ eprint = {2304.14402}
141
+ }
142
+
143
+ # Model Card Authors
144
+
145
+ construction? Etc. -->
146
+
147
+ Justin Law, Alden Davidson, Christopher Kodama, My Tran
148
+
149
+ # Model Card Contact
150
+
151
+ Email: justinthelaw@gmail.com
152
+
153
+ # How to Get Started with the Model
154
+
155
+ Use the code below to get started with the model.
156
+
157
+ <details>
158
+ <summary> Click to expand </summary>
159
+
160
+ ```python
161
+ import torch
162
+ from transformers import T5ForConditionalGeneration, T5Tokenizer
163
+
164
+ bullet_data_creation_prefix = (
165
+ "Using upwards of 3 sentences, expand upon the following Air and Space Force bullet statement by "
166
+ + "spelling-out acronyms and adding additional context that is not already included in the Air and Space Force bullet statement: "
167
+ )
168
+
169
+ # Path of the pre-trained model that will be used
170
+ model_path = "justinthelaw/opera-bullet-interpreter"
171
+ # Path of the pre-trained model tokenizer that will be used
172
+ # Must match the model checkpoint's signature
173
+ tokenizer_path = "justinthelaw/opera-bullet-interpreter"
174
+ # Max length of tokens a user may enter for summarization
175
+ # Increasing this beyond 512 may increase compute time significantly
176
+ max_input_token_length = 512
177
+ # Max length of tokens the model should output for the summary
178
+ # Approximately the number of tokens it may take to generate a bullet
179
+ max_output_token_length = 512
180
+ # Beams to use for beam search algorithm
181
+ # Increased beams means increased quality, but increased compute time
182
+ number_of_beams = 6
183
+ # Scales logits before soft-max to control randomness
184
+ # Lower values (~0) make output more deterministic
185
+ temperature = 0.5
186
+ # Limits generated tokens to top K probabilities
187
+ # Reduces chances of rare word predictions
188
+ top_k = 50
189
+ # Applies nucleus sampling, limiting token selection to a cumulative probability
190
+ # Creates a balance between randomness and determinism
191
+ top_p = 0.90
192
+
193
+ try:
194
+ tokenizer = T5Tokenizer.from_pretrained(
195
+ f"{model_path}",
196
+ model_max_length=max_input_token_length,
197
+ add_special_tokens=False,
198
+ )
199
+ input_model = T5ForConditionalGeneration.from_pretrained(f"{model_path}")
200
+ logger.info(f"Loading {model_path}...")
201
+ # Set device to be used based on GPU availability
202
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
203
+ # Model is sent to device for use
204
+ model = input_model.to(device) # type: ignore
205
+
206
+ input_text = bullet_data_creation_prefix + input("Input a US Air or Space Force bullet: ")
207
+
208
+ encoded_input_text = tokenizer.encode_plus(
209
+ input_text,
210
+ return_tensors="pt",
211
+ truncation=True,
212
+ max_length=max_input_token_length,
213
+ )
214
+
215
+ # Generate summary
216
+ summary_ids = model.generate(
217
+ encoded_input_text["input_ids"],
218
+ attention_mask=encoded_input_text["attention_mask"],
219
+ max_length=max_output_token_length,
220
+ num_beams=number_of_beams,
221
+ temperature=temperature,
222
+ top_k=top_k,
223
+ top_p=top_p,
224
+ early_stopping=True,
225
+ )
226
+
227
+ output_text = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
228
+
229
+ # input_text and output_text insert into data sets
230
+ print(input_line["output"] + "\n\t" + output_text)
231
+
232
+ except KeyboardInterrupt:
233
+ print("Received interrupt, stopping script...")
234
+ except Exception as e:
235
+ print(f"An error occurred during generation: {e}")
236
+ ```
237
+
238
+ </details>
config.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "_name_or_path": "justinthelaw/opera-bullet-interpreter",
3
+ "architectures": [
4
+ "T5ForConditionalGeneration"
5
+ ],
6
+ "d_ff": 2816,
7
+ "d_kv": 64,
8
+ "d_model": 1024,
9
+ "decoder_start_token_id": 0,
10
+ "dense_act_fn": "gelu_new",
11
+ "dropout_rate": 0.1,
12
+ "eos_token_id": 1,
13
+ "feed_forward_proj": "gated-gelu",
14
+ "initializer_factor": 1.0,
15
+ "is_encoder_decoder": true,
16
+ "is_gated_act": true,
17
+ "layer_norm_epsilon": 1e-06,
18
+ "model_type": "t5",
19
+ "n_positions": 512,
20
+ "num_decoder_layers": 24,
21
+ "num_heads": 16,
22
+ "num_layers": 24,
23
+ "output_past": true,
24
+ "pad_token_id": 0,
25
+ "relative_attention_max_distance": 128,
26
+ "relative_attention_num_buckets": 32,
27
+ "tie_word_embeddings": false,
28
+ "torch_dtype": "float32",
29
+ "transformers_version": "4.31.0",
30
+ "use_cache": true,
31
+ "vocab_size": 32128
32
+ }
generation_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "_from_model_config": true,
3
+ "decoder_start_token_id": 0,
4
+ "eos_token_id": 1,
5
+ "pad_token_id": 0,
6
+ "transformers_version": "4.31.0"
7
+ }
pytorch_model.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ebd0339b927e3c64245694e8916fc13f919008f48a61f9a942bbcbd47d1c08e7
3
+ size 3132785797
special_tokens_map.json ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "additional_special_tokens": [
3
+ "<extra_id_0>",
4
+ "<extra_id_1>",
5
+ "<extra_id_2>",
6
+ "<extra_id_3>",
7
+ "<extra_id_4>",
8
+ "<extra_id_5>",
9
+ "<extra_id_6>",
10
+ "<extra_id_7>",
11
+ "<extra_id_8>",
12
+ "<extra_id_9>",
13
+ "<extra_id_10>",
14
+ "<extra_id_11>",
15
+ "<extra_id_12>",
16
+ "<extra_id_13>",
17
+ "<extra_id_14>",
18
+ "<extra_id_15>",
19
+ "<extra_id_16>",
20
+ "<extra_id_17>",
21
+ "<extra_id_18>",
22
+ "<extra_id_19>",
23
+ "<extra_id_20>",
24
+ "<extra_id_21>",
25
+ "<extra_id_22>",
26
+ "<extra_id_23>",
27
+ "<extra_id_24>",
28
+ "<extra_id_25>",
29
+ "<extra_id_26>",
30
+ "<extra_id_27>",
31
+ "<extra_id_28>",
32
+ "<extra_id_29>",
33
+ "<extra_id_30>",
34
+ "<extra_id_31>",
35
+ "<extra_id_32>",
36
+ "<extra_id_33>",
37
+ "<extra_id_34>",
38
+ "<extra_id_35>",
39
+ "<extra_id_36>",
40
+ "<extra_id_37>",
41
+ "<extra_id_38>",
42
+ "<extra_id_39>",
43
+ "<extra_id_40>",
44
+ "<extra_id_41>",
45
+ "<extra_id_42>",
46
+ "<extra_id_43>",
47
+ "<extra_id_44>",
48
+ "<extra_id_45>",
49
+ "<extra_id_46>",
50
+ "<extra_id_47>",
51
+ "<extra_id_48>",
52
+ "<extra_id_49>",
53
+ "<extra_id_50>",
54
+ "<extra_id_51>",
55
+ "<extra_id_52>",
56
+ "<extra_id_53>",
57
+ "<extra_id_54>",
58
+ "<extra_id_55>",
59
+ "<extra_id_56>",
60
+ "<extra_id_57>",
61
+ "<extra_id_58>",
62
+ "<extra_id_59>",
63
+ "<extra_id_60>",
64
+ "<extra_id_61>",
65
+ "<extra_id_62>",
66
+ "<extra_id_63>",
67
+ "<extra_id_64>",
68
+ "<extra_id_65>",
69
+ "<extra_id_66>",
70
+ "<extra_id_67>",
71
+ "<extra_id_68>",
72
+ "<extra_id_69>",
73
+ "<extra_id_70>",
74
+ "<extra_id_71>",
75
+ "<extra_id_72>",
76
+ "<extra_id_73>",
77
+ "<extra_id_74>",
78
+ "<extra_id_75>",
79
+ "<extra_id_76>",
80
+ "<extra_id_77>",
81
+ "<extra_id_78>",
82
+ "<extra_id_79>",
83
+ "<extra_id_80>",
84
+ "<extra_id_81>",
85
+ "<extra_id_82>",
86
+ "<extra_id_83>",
87
+ "<extra_id_84>",
88
+ "<extra_id_85>",
89
+ "<extra_id_86>",
90
+ "<extra_id_87>",
91
+ "<extra_id_88>",
92
+ "<extra_id_89>",
93
+ "<extra_id_90>",
94
+ "<extra_id_91>",
95
+ "<extra_id_92>",
96
+ "<extra_id_93>",
97
+ "<extra_id_94>",
98
+ "<extra_id_95>",
99
+ "<extra_id_96>",
100
+ "<extra_id_97>",
101
+ "<extra_id_98>",
102
+ "<extra_id_99>"
103
+ ],
104
+ "eos_token": "</s>",
105
+ "pad_token": "<pad>",
106
+ "unk_token": "<unk>"
107
+ }
spiece.model ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d60acb128cf7b7f2536e8f38a5b18a05535c9e14c7a355904270e15b0945ea86
3
+ size 791656
tokenizer_config.json ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "add_special_tokens": false,
3
+ "additional_special_tokens": [
4
+ "<extra_id_0>",
5
+ "<extra_id_1>",
6
+ "<extra_id_2>",
7
+ "<extra_id_3>",
8
+ "<extra_id_4>",
9
+ "<extra_id_5>",
10
+ "<extra_id_6>",
11
+ "<extra_id_7>",
12
+ "<extra_id_8>",
13
+ "<extra_id_9>",
14
+ "<extra_id_10>",
15
+ "<extra_id_11>",
16
+ "<extra_id_12>",
17
+ "<extra_id_13>",
18
+ "<extra_id_14>",
19
+ "<extra_id_15>",
20
+ "<extra_id_16>",
21
+ "<extra_id_17>",
22
+ "<extra_id_18>",
23
+ "<extra_id_19>",
24
+ "<extra_id_20>",
25
+ "<extra_id_21>",
26
+ "<extra_id_22>",
27
+ "<extra_id_23>",
28
+ "<extra_id_24>",
29
+ "<extra_id_25>",
30
+ "<extra_id_26>",
31
+ "<extra_id_27>",
32
+ "<extra_id_28>",
33
+ "<extra_id_29>",
34
+ "<extra_id_30>",
35
+ "<extra_id_31>",
36
+ "<extra_id_32>",
37
+ "<extra_id_33>",
38
+ "<extra_id_34>",
39
+ "<extra_id_35>",
40
+ "<extra_id_36>",
41
+ "<extra_id_37>",
42
+ "<extra_id_38>",
43
+ "<extra_id_39>",
44
+ "<extra_id_40>",
45
+ "<extra_id_41>",
46
+ "<extra_id_42>",
47
+ "<extra_id_43>",
48
+ "<extra_id_44>",
49
+ "<extra_id_45>",
50
+ "<extra_id_46>",
51
+ "<extra_id_47>",
52
+ "<extra_id_48>",
53
+ "<extra_id_49>",
54
+ "<extra_id_50>",
55
+ "<extra_id_51>",
56
+ "<extra_id_52>",
57
+ "<extra_id_53>",
58
+ "<extra_id_54>",
59
+ "<extra_id_55>",
60
+ "<extra_id_56>",
61
+ "<extra_id_57>",
62
+ "<extra_id_58>",
63
+ "<extra_id_59>",
64
+ "<extra_id_60>",
65
+ "<extra_id_61>",
66
+ "<extra_id_62>",
67
+ "<extra_id_63>",
68
+ "<extra_id_64>",
69
+ "<extra_id_65>",
70
+ "<extra_id_66>",
71
+ "<extra_id_67>",
72
+ "<extra_id_68>",
73
+ "<extra_id_69>",
74
+ "<extra_id_70>",
75
+ "<extra_id_71>",
76
+ "<extra_id_72>",
77
+ "<extra_id_73>",
78
+ "<extra_id_74>",
79
+ "<extra_id_75>",
80
+ "<extra_id_76>",
81
+ "<extra_id_77>",
82
+ "<extra_id_78>",
83
+ "<extra_id_79>",
84
+ "<extra_id_80>",
85
+ "<extra_id_81>",
86
+ "<extra_id_82>",
87
+ "<extra_id_83>",
88
+ "<extra_id_84>",
89
+ "<extra_id_85>",
90
+ "<extra_id_86>",
91
+ "<extra_id_87>",
92
+ "<extra_id_88>",
93
+ "<extra_id_89>",
94
+ "<extra_id_90>",
95
+ "<extra_id_91>",
96
+ "<extra_id_92>",
97
+ "<extra_id_93>",
98
+ "<extra_id_94>",
99
+ "<extra_id_95>",
100
+ "<extra_id_96>",
101
+ "<extra_id_97>",
102
+ "<extra_id_98>",
103
+ "<extra_id_99>"
104
+ ],
105
+ "clean_up_tokenization_spaces": true,
106
+ "eos_token": "</s>",
107
+ "extra_ids": 100,
108
+ "legacy": true,
109
+ "model_max_length": 512,
110
+ "pad_token": "<pad>",
111
+ "sp_model_kwargs": {},
112
+ "tokenizer_class": "T5Tokenizer",
113
+ "unk_token": "<unk>"
114
+ }