metascroy commited on
Commit
eb70f62
·
verified ·
1 Parent(s): 964b79a

Updates to model card

Browse files
Files changed (1) hide show
  1. README.md +109 -194
README.md CHANGED
@@ -3,197 +3,112 @@ library_name: transformers
3
  tags: []
4
  ---
5
 
6
- # Model Card for Model ID
7
-
8
- <!-- Provide a quick summary of what the model is/does. -->
9
-
10
-
11
-
12
- ## Model Details
13
-
14
- ### Model Description
15
-
16
- <!-- Provide a longer summary of what this model is. -->
17
-
18
- This is the model card of a 🤗 transformers model that has been pushed on the Hub. This model card has been automatically generated.
19
-
20
- - **Developed by:** [More Information Needed]
21
- - **Funded by [optional]:** [More Information Needed]
22
- - **Shared by [optional]:** [More Information Needed]
23
- - **Model type:** [More Information Needed]
24
- - **Language(s) (NLP):** [More Information Needed]
25
- - **License:** [More Information Needed]
26
- - **Finetuned from model [optional]:** [More Information Needed]
27
-
28
- ### Model Sources [optional]
29
-
30
- <!-- Provide the basic links for the model. -->
31
-
32
- - **Repository:** [More Information Needed]
33
- - **Paper [optional]:** [More Information Needed]
34
- - **Demo [optional]:** [More Information Needed]
35
-
36
- ## Uses
37
-
38
- <!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
39
-
40
- ### Direct Use
41
-
42
- <!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
43
-
44
- [More Information Needed]
45
-
46
- ### Downstream Use [optional]
47
-
48
- <!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
49
-
50
- [More Information Needed]
51
-
52
- ### Out-of-Scope Use
53
-
54
- <!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
55
-
56
- [More Information Needed]
57
-
58
- ## Bias, Risks, and Limitations
59
-
60
- <!-- This section is meant to convey both technical and sociotechnical limitations. -->
61
-
62
- [More Information Needed]
63
-
64
- ### Recommendations
65
-
66
- <!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
67
-
68
- Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
69
-
70
- ## How to Get Started with the Model
71
-
72
- Use the code below to get started with the model.
73
-
74
- [More Information Needed]
75
-
76
- ## Training Details
77
-
78
- ### Training Data
79
-
80
- <!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
81
-
82
- [More Information Needed]
83
-
84
- ### Training Procedure
85
-
86
- <!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
87
-
88
- #### Preprocessing [optional]
89
-
90
- [More Information Needed]
91
-
92
-
93
- #### Training Hyperparameters
94
-
95
- - **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
96
-
97
- #### Speeds, Sizes, Times [optional]
98
-
99
- <!-- This section provides information about throughput, start/end time, checkpoint size if relevant, etc. -->
100
-
101
- [More Information Needed]
102
-
103
- ## Evaluation
104
-
105
- <!-- This section describes the evaluation protocols and provides the results. -->
106
-
107
- ### Testing Data, Factors & Metrics
108
-
109
- #### Testing Data
110
-
111
- <!-- This should link to a Dataset Card if possible. -->
112
-
113
- [More Information Needed]
114
-
115
- #### Factors
116
-
117
- <!-- These are the things the evaluation is disaggregating by, e.g., subpopulations or domains. -->
118
-
119
- [More Information Needed]
120
-
121
- #### Metrics
122
-
123
- <!-- These are the evaluation metrics being used, ideally with a description of why. -->
124
-
125
- [More Information Needed]
126
-
127
- ### Results
128
-
129
- [More Information Needed]
130
-
131
- #### Summary
132
-
133
-
134
-
135
- ## Model Examination [optional]
136
-
137
- <!-- Relevant interpretability work for the model goes here -->
138
-
139
- [More Information Needed]
140
-
141
- ## Environmental Impact
142
-
143
- <!-- Total emissions (in grams of CO2eq) and additional considerations, such as electricity usage, go here. Edit the suggested text below accordingly -->
144
-
145
- Carbon emissions can be estimated using the [Machine Learning Impact calculator](https://mlco2.github.io/impact#compute) presented in [Lacoste et al. (2019)](https://arxiv.org/abs/1910.09700).
146
-
147
- - **Hardware Type:** [More Information Needed]
148
- - **Hours used:** [More Information Needed]
149
- - **Cloud Provider:** [More Information Needed]
150
- - **Compute Region:** [More Information Needed]
151
- - **Carbon Emitted:** [More Information Needed]
152
-
153
- ## Technical Specifications [optional]
154
-
155
- ### Model Architecture and Objective
156
-
157
- [More Information Needed]
158
-
159
- ### Compute Infrastructure
160
-
161
- [More Information Needed]
162
-
163
- #### Hardware
164
-
165
- [More Information Needed]
166
-
167
- #### Software
168
-
169
- [More Information Needed]
170
-
171
- ## Citation [optional]
172
-
173
- <!-- If there is a paper or blog post introducing the model, the APA and Bibtex information for that should go in this section. -->
174
-
175
- **BibTeX:**
176
-
177
- [More Information Needed]
178
-
179
- **APA:**
180
-
181
- [More Information Needed]
182
-
183
- ## Glossary [optional]
184
-
185
- <!-- If relevant, include terms and calculations in this section that can help readers understand the model or model card. -->
186
-
187
- [More Information Needed]
188
-
189
- ## More Information [optional]
190
-
191
- [More Information Needed]
192
-
193
- ## Model Card Authors [optional]
194
-
195
- [More Information Needed]
196
-
197
- ## Model Card Contact
198
-
199
- [More Information Needed]
 
3
  tags: []
4
  ---
5
 
6
+ # Quantization Recipe
7
+
8
+ We used following code to get the quantized model:
9
+
10
+ ```
11
+ model_id = "microsoft/Phi-4-mini-instruct"
12
+ from transformers import (
13
+ AutoModelForCausalLM,
14
+ AutoProcessor,
15
+ AutoTokenizer,
16
+ )
17
+ from torchao.quantization.quant_api import (
18
+ Int8DynamicActivationIntxWeightConfig,
19
+ MappingType,
20
+ quantize_,
21
+ )
22
+ from torchao.quantization.granularity import PerGroup
23
+ import torch
24
+
25
+ model = AutoModelForCausalLM.from_pretrained(
26
+ model_id, torch_dtype="auto", device_map="auto"
27
+ )
28
+ linear_config = Int8DynamicActivationIntxWeightConfig(
29
+ weight_dtype=torch.int4,
30
+ weight_granularity=PerGroup(32),
31
+ weight_mapping_type=MappingType.SYMMETRIC,
32
+ )
33
+ quantize_(
34
+ model,
35
+ linear_config,
36
+ )
37
+ state_dict = model.state_dict()
38
+ torch.save(state_dict, "phi4-mini-8dq4w.pt")
39
+ ```
40
+
41
+ # Model Quality
42
+
43
+ We rely on [lm-evaluation-harness](https://github.com/EleutherAI/lm-evaluation-harness) to evaluate the quality of the quantized model.
44
+
45
+ # baseline
46
+ ```
47
+ lm_eval --model hf --model_args pretrained=microsoft/Phi-4-mini-instruct --tasks hellaswag --device cuda:0 --batch_size 8
48
+ ```
49
+
50
+ # 8dq4w
51
+ ```
52
+ import lm_eval
53
+ from lm_eval import evaluator
54
+ from lm_eval.utils import (
55
+ make_table,
56
+ )
57
+
58
+ # model is after calling quantize_ as we do in the recipe
59
+ # quantize_(
60
+ # model,
61
+ # linear_config,
62
+ #)
63
+ lm_eval_model = lm_eval.models.huggingface.HFLM(pretrained=model, batch_size=8)
64
+ results = evaluator.simple_evaluate(
65
+ lm_eval_model, tasks=["hellaswag"], device="cuda:0", batch_size="auto"
66
+ )
67
+ print(make_table(results))
68
+ ```
69
+
70
+ | Benchmark | | |
71
+ |----------------------------------|-------------|-------------------|
72
+ | | Phi-4 mini-Ins | phi4-mini-8dq4w |
73
+ | **Popular aggregated benchmark** | | |
74
+ | **Reasoning** | | |
75
+ | HellaSwag | 54.57 | 53.19 |
76
+ | **Multilingual** | | |
77
+ | **Math** | | |
78
+ | **Overall** | **TODO** | **TODO** |
79
+
80
+
81
+ # Exporting to ExecuTorch
82
+
83
+ Exporting to ExecuTorch requires you clone and install [ExecuTorch](https://github.com/pytorch/executorch).
84
+
85
+
86
+ ## Convert quantized checkpoint to ExecuTorch's format
87
+ python -m executorch.examples.models.phi_4_mini.convert_weights phi4-mini-8dq4w.pt phi4-mini-8dq4w-converted.pt
88
+
89
+ ## Export to an ExecuTorch *.pte with XNNPACK
90
+ PARAMS="executorch/examples/models/phi_4_mini/config.json"
91
+ python -m executorch.examples.models.llama.export_llama \
92
+ --model "phi_4_mini" \
93
+ --checkpoint "phi4-mini-8dq4w-converted.pt" \
94
+ --params "$PARAMS" \
95
+ -kv \
96
+ --use_sdpa_with_kv_cache \
97
+ -X \
98
+ --metadata '{"get_bos_id":128000, "get_eos_ids":[128009, 128001]}' \
99
+ --output_name="phi4-mini-8dq4w.pte"
100
+
101
+ ## Run model with pybindings
102
+ export TOKENIZER="/path/to/tokenizer.json"
103
+ export TOKENIZER_CONFIG="/path/to/tokenizer_config.json"
104
+ export PROMPT="<|system|><|end|><|user|>What is in a california roll?<|end|><|assistant|>"
105
+ python -m executorch.examples.models.llama.runner.native \
106
+ --model phi_4_mini \
107
+ --pte phi4-mini-8dq4w.pte \
108
+ -kv \
109
+ --tokenizer ${TOKENIZER} \
110
+ --tokenizer_config ${TOKENIZER_CONFIG} \
111
+ --prompt "${PROMPT}" \
112
+ --params "${PARAMS}" \
113
+ --max_len 128 \
114
+ --temperature 0