Skip to content

Commit 3eea52d

Browse files
authored
Merge pull request #130 from xenova/merged
Improved feature extraction, quantization, and testing (merged PR)
2 parents 55d6ef4 + 658fbdc commit 3eea52d

File tree

18 files changed

+756
-284
lines changed

18 files changed

+756
-284
lines changed

docs/source/_toctree.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@
2929
title: Tokenizers
3030
- local: api/processors
3131
title: Processors
32+
- local: api/configs
33+
title: Configs
3234
- local: api/env
3335
title: Environment variables
3436
- sections:

examples/demo-site/src/index.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,16 @@ <h2 class="fw-bolder">Demo</h2>
9090
Translation w/ t5-small (95 MB)
9191
</option>
9292
<option value="text-generation">
93-
Text generation w/ distilgpt2 (250 MB)
93+
Text generation w/ distilgpt2 (122 MB)
9494
</option>
9595
<option value="masked-language-modelling">
9696
Masked language modelling w/ bert-base-cased (132 MB)
9797
</option>
9898
<option value="sequence-classification">
99-
Text classification w/ bert-base-multilingual-uncased-sentiment (170 MB)
99+
Text classification w/ bert-base-multilingual-uncased-sentiment (168 MB)
100100
</option>
101101
<option value="token-classification">
102-
Token classification w/ Davlan/bert-base-multilingual-cased-ner-hrl (135 MB)
102+
Token classification w/ Davlan/bert-base-multilingual-cased-ner-hrl (178 MB)
103103
</option>
104104
<option value="zero-shot-classification">
105105
Zero-shot classification w/ typeform/distilbert-base-uncased-mnli (68 MB)
@@ -108,22 +108,22 @@ <h2 class="fw-bolder">Demo</h2>
108108
Question answering w/ distilbert-base-uncased-distilled-squad (66 MB)
109109
</option>
110110
<option value="summarization">
111-
Summarization w/ distilbart-cnn-6-6 (336 MB)
111+
Summarization w/ distilbart-cnn-6-6 (335 MB)
112112
</option>
113113
<option value="code-completion">
114-
Code completion w/ Salesforce/codegen-350M-mono (365 MB)
114+
Code completion w/ Salesforce/codegen-350M-mono (369 MB)
115115
</option>
116116
<option value="automatic-speech-recognition">
117117
Speech to text w/ whisper-tiny.en (61 MB)
118118
</option>
119119
<option value="image-to-text">
120-
Image to text w/ vit-gpt2-image-captioning (622 MB)
120+
Image to text w/ vit-gpt2-image-captioning (283 MB)
121121
</option>
122122
<option value="image-classification">
123-
Image classification w/ google/vit-base-patch16-224 (91 MB)
123+
Image classification w/ google/vit-base-patch16-224 (88 MB)
124124
</option>
125125
<option value="zero-shot-image-classification">
126-
Zero-shot image classification w/ openai/clip-vit-base-patch16 (152 MB)
126+
Zero-shot image classification w/ openai/clip-vit-base-patch16 (151 MB)
127127
</option>
128128
<!-- TODO: add image-segmentation demo -->
129129
<option value="object-detection">

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"typegen": "tsc ./src/transformers.js --allowJs --declaration --emitDeclarationOnly --declarationMap --outDir types",
1010
"dev": "webpack serve --no-client-overlay",
1111
"build": "webpack && npm run typegen",
12-
"generate-tests": "python tests/generate_tests.py",
12+
"generate-tests": "python -m tests.generate_tests",
1313
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --verbose",
1414
"readme": "python ./docs/scripts/build_readme.py",
1515
"docs-api": "node ./docs/scripts/generate.js",

scripts/convert.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,10 @@ class ConversionArguments:
7070
"help": 'The device to use to do the export.'
7171
}
7272
)
73-
merge_decoders: bool = field(
74-
default=True,
75-
metadata={
76-
"help": "Whether to fuse decoder ONNX model and decoder with past ONNX model into one ONNX model with if logic"
77-
}
78-
)
79-
overwrite: bool = field(
73+
skip_validation: bool = field(
8074
default=False,
8175
metadata={
82-
"help": "Whether to overwriting existing models"
76+
"help": "Whether to skip validation of the converted model"
8377
}
8478
)
8579

@@ -118,8 +112,10 @@ def quantize(model_names_or_paths):
118112
model_input=model,
119113
model_output=os.path.join(
120114
directory_path, f'{file_name_without_extension}_quantized.onnx'),
121-
per_channel=False,
122-
reduce_range=False,
115+
116+
# TODO allow user to specify these or choose based on hardware
117+
per_channel=True,
118+
reduce_range=True,
123119

124120
weight_type=weight_type,
125121
optimize_model=False,
@@ -185,6 +181,9 @@ def main():
185181
model_name_or_path=model_id,
186182
output=output_model_folder,
187183
task=conv_args.task,
184+
opset=conv_args.opset,
185+
device=conv_args.device,
186+
do_validation=not conv_args.skip_validation,
188187
)
189188

190189
# Step 2. (optional, recommended) quantize the converted model for fast inference and to reduce model size.

scripts/tasks.py renamed to scripts/supported_models.py

Lines changed: 61 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,19 @@
1-
from .extra.marian import SUPPORTED_HELSINKI_NLP_MODELS
2-
3-
SUPPORTED_TASKS = {
4-
# map tasks to automodels
5-
'default': 'AutoModel',
6-
'masked-lm': 'AutoModelForMaskedLM',
7-
'causal-lm': 'AutoModelForCausalLM',
8-
'seq2seq-lm': 'AutoModelForSeq2SeqLM',
9-
'sequence-classification': 'AutoModelForSequenceClassification',
10-
'token-classification': 'AutoModelForTokenClassification',
11-
# 'multiple-choice': 'AutoModelForMultipleChoice',
12-
'object-detection': 'AutoModelForObjectDetection',
13-
'question-answering': 'AutoModelForQuestionAnswering',
14-
'image-classification': 'AutoModelForImageClassification',
15-
'image-segmentation': 'AutoModelForImageSegmentation',
16-
# 'masked-im': 'AutoModelForMaskedImageModeling',
17-
# 'semantic-segmentation': 'AutoModelForSemanticSegmentation',
18-
'speech2seq-lm': 'AutoModelForSpeechSeq2Seq',
19-
# 'audio-classification': 'AutoModelForAudioClassification',
20-
# 'audio-frame-classification': 'AutoModelForAudioFrameClassification',
21-
# 'audio-ctc': 'AutoModelForCTC',
22-
# 'audio-xvector': 'AutoModelForAudioXVector',
23-
'vision2seq-lm': 'AutoModelForVision2Seq',
24-
# 'stable-diffusion': 'StableDiffusionPipeline',
25-
'zero-shot-image-classification': 'AutoModelForZeroShotImageClassification',
26-
'zero-shot-object-detection': 'AutoModelForZeroShotObjectDetection',
27-
}
1+
# from .extra.marian import SUPPORTED_HELSINKI_NLP_MODELS
282

293
SUPPORTED_MODELS = {
30-
'albert': {
4+
'albert': [
315
'albert-base-v2',
326
'albert-large-v2',
337
'sentence-transformers/paraphrase-albert-small-v2',
348
'sentence-transformers/paraphrase-albert-base-v2',
35-
},
9+
],
3610

37-
'bart': {
11+
'bart': [
3812
'sshleifer/distilbart-cnn-6-6',
3913
'facebook/bart-large-cnn',
4014
'facebook/bart-large-mnli',
41-
},
42-
'bert': {
15+
],
16+
'bert': [
4317
'bert-base-uncased',
4418
'bert-base-cased',
4519
'bert-base-multilingual-uncased',
@@ -63,26 +37,32 @@
6337
'ckiplab/bert-base-chinese-pos',
6438
'dslim/bert-base-NER',
6539
'dslim/bert-base-NER-uncased',
66-
},
40+
41+
'allenai/scibert_scivocab_uncased',
42+
'ProsusAI/finbert',
43+
'emilyalsentzer/Bio_ClinicalBERT',
44+
'SpanBERT/spanbert-large-cased',
45+
'SpanBERT/spanbert-base-cased',
46+
],
6747
# TODO:
68-
# 'blenderbot-small': {
48+
# 'blenderbot-small': [
6949
# 'facebook/blenderbot_small-90M',
70-
# },
71-
'clip': {
50+
# ],
51+
'clip': [
7252
'openai/clip-vit-base-patch16',
7353
'openai/clip-vit-base-patch32',
74-
},
75-
'codegen': {
54+
],
55+
'codegen': [
7656
'Salesforce/codegen-350M-mono',
7757
'Salesforce/codegen-350M-multi',
7858
'Salesforce/codegen-350M-nl',
79-
},
80-
'detr': {
59+
],
60+
'detr': [
8161
'facebook/detr-resnet-50',
8262
'facebook/detr-resnet-101',
8363
'facebook/detr-resnet-50-panoptic',
84-
},
85-
'distilbert': {
64+
],
65+
'distilbert': [
8666
'distilbert-base-uncased',
8767
'distilbert-base-cased',
8868
'distilbert-base-uncased-distilled-squad',
@@ -96,60 +76,64 @@
9676
'sentence-transformers/distilbert-base-nli-mean-tokens',
9777
'sentence-transformers/distilbert-base-nli-stsb-mean-tokens',
9878
'sentence-transformers/msmarco-distilbert-base-v4',
99-
},
100-
'gpt-neo': {
79+
],
80+
'gpt-neo': [
10181
'EleutherAI/gpt-neo-125M',
10282
'MBZUAI/LaMini-Neo-125M',
103-
},
104-
'gpt2': {
83+
],
84+
'gpt2': [
10585
'gpt2',
10686
'distilgpt2',
10787
'MBZUAI/LaMini-Cerebras-256M',
10888
'MBZUAI/LaMini-Cerebras-590M',
109-
},
89+
'MBZUAI/LaMini-GPT-124M',
90+
],
91+
'm2m_100': [
92+
'facebook/nllb-200-distilled-600M',
93+
],
11094
# TODO:
111-
# 'marian': {
95+
# 'marian': [
11296
# f'Helsinki-NLP/opus-mt-{x}'
11397
# for x in SUPPORTED_HELSINKI_NLP_MODELS
114-
# },
115-
'mobilebert': {
98+
# ],
99+
'mobilebert': [
116100
'typeform/mobilebert-uncased-mnli',
117101

118102
# TODO:
119103
# https://github.com/huggingface/optimum/issues/1027
120104
# 'google/mobilebert-uncased',
121-
},
122-
'mpnet': {
105+
],
106+
'mpnet': [
123107
'sentence-transformers/all-mpnet-base-v2',
124108
'sentence-transformers/nli-mpnet-base-v2',
125109
'sentence-transformers/paraphrase-mpnet-base-v2',
126110
'sentence-transformers/paraphrase-multilingual-mpnet-base-v2',
127111
'sentence-transformers/multi-qa-mpnet-base-cos-v1',
128112
'sentence-transformers/multi-qa-mpnet-base-dot-v1',
129-
},
130-
'mt5': {
113+
],
114+
'mt5': [
131115
'google/mt5-small',
132116
'google/mt5-base',
133-
},
134-
'roberta': {
117+
],
118+
'roberta': [
135119
'xlm-roberta-base',
136120
'roberta-base',
137121
'distilroberta-base',
138122
'roberta-large-mnli',
139123

140124
'sentence-transformers/all-distilroberta-v1',
141125
'sentence-transformers/all-roberta-large-v1',
142-
},
143-
'sam': {
126+
],
127+
'sam': [
144128
'facebook/sam-vit-base',
145129
'facebook/sam-vit-large',
146130
'facebook/sam-vit-huge',
147-
},
148-
'squeezebert': {
131+
],
132+
'squeezebert': [
149133
'squeezebert/squeezebert-uncased',
150134
'squeezebert/squeezebert-mnli',
151-
},
152-
't5': {
135+
],
136+
't5': [
153137
't5-small',
154138
't5-base',
155139
'google/t5-v1_1-small',
@@ -164,22 +148,30 @@
164148
'MBZUAI/LaMini-T5-61M',
165149
'MBZUAI/LaMini-T5-223M',
166150
'MBZUAI/LaMini-T5-738M',
167-
},
168-
'vision-encoder-decoder': {
151+
],
152+
'vision-encoder-decoder': [
169153
'nlpconnect/vit-gpt2-image-captioning',
170-
},
171-
'vit': {
154+
],
155+
'vit': [
172156
'google/vit-base-patch16-224-in21k',
173157
'google/vit-base-patch16-224',
174-
},
175-
'whisper': {
158+
'facebook/dino-vitb16',
159+
'facebook/dino-vits8',
160+
'facebook/dino-vitb8',
161+
'facebook/dino-vits16',
162+
],
163+
'whisper': [
176164
'openai/whisper-tiny',
177165
'openai/whisper-tiny.en',
178166
'openai/whisper-base',
179167
'openai/whisper-base.en',
180168
'openai/whisper-small',
181169
'openai/whisper-small.en',
182-
},
170+
'openai/whisper-medium',
171+
'openai/whisper-medium.en',
172+
'openai/whisper-large',
173+
'openai/whisper-large-v2',
174+
],
183175
}
184176

185177

0 commit comments

Comments
 (0)