|
7 | 7 | # pyre-unsafe |
8 | 8 |
|
9 | 9 | from dataclasses import dataclass |
| 10 | +from enum import Enum |
| 11 | + |
| 12 | + |
| 13 | +class QuantType(Enum): |
| 14 | + NONE = 1 |
| 15 | + # Used for Operations that don't have weights |
| 16 | + STATIC_PER_TENSOR = 2 |
| 17 | + # Used best for CNN/RNN Models with Conv layers |
| 18 | + STATIC_PER_CHANNEL = 3 |
| 19 | + # Used for Linear Layers and Transformer Based Models |
| 20 | + DYNAMIC_PER_CHANNEL = 4 |
10 | 21 |
|
11 | 22 |
|
12 | 23 | @dataclass |
13 | 24 | class XNNPACKOptions(object): |
14 | | - quantization: bool |
| 25 | + quantization: QuantType |
15 | 26 | delegation: bool |
16 | 27 |
|
17 | 28 |
|
18 | 29 | MODEL_NAME_TO_OPTIONS = { |
19 | | - "linear": XNNPACKOptions(True, True), |
20 | | - "add": XNNPACKOptions(True, True), |
21 | | - "add_mul": XNNPACKOptions(True, True), |
22 | | - "dl3": XNNPACKOptions(True, True), |
23 | | - "ic3": XNNPACKOptions(True, True), |
24 | | - "ic4": XNNPACKOptions(True, True), |
25 | | - "mv2": XNNPACKOptions(True, True), |
26 | | - "mv3": XNNPACKOptions(True, True), |
27 | | - "resnet18": XNNPACKOptions(True, True), |
28 | | - "resnet50": XNNPACKOptions(True, True), |
29 | | - "vit": XNNPACKOptions(True, True), |
30 | | - "w2l": XNNPACKOptions(True, True), |
31 | | - "edsr": XNNPACKOptions(True, True), |
32 | | - "mobilebert": XNNPACKOptions(True, True), |
33 | | - "llama2": XNNPACKOptions(False, True), |
34 | | - "emformer_join": XNNPACKOptions(True, True), |
35 | | - "emformer_predict": XNNPACKOptions(True, True), |
36 | | - "emformer_transcribe": XNNPACKOptions(True, True), |
| 30 | + "linear": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 31 | + "add": XNNPACKOptions(QuantType.STATIC_PER_TENSOR, True), |
| 32 | + "add_mul": XNNPACKOptions(QuantType.STATIC_PER_TENSOR, True), |
| 33 | + "dl3": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 34 | + "ic3": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 35 | + "ic4": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 36 | + "mv2": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 37 | + "mv3": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 38 | + "resnet18": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 39 | + "resnet50": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 40 | + "vit": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 41 | + "w2l": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 42 | + "edsr": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
| 43 | + "mobilebert": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 44 | + "llama2": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 45 | + "emformer_join": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 46 | + "emformer_predict": XNNPACKOptions(QuantType.DYNAMIC_PER_CHANNEL, True), |
| 47 | + "emformer_transcribe": XNNPACKOptions(QuantType.STATIC_PER_CHANNEL, True), |
37 | 48 | } |
38 | 49 |
|
39 | 50 |
|
|
0 commit comments