informers 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +3 -9
- data/lib/informers/models.rb +58 -1
- data/lib/informers/pipelines.rb +2 -1
- data/lib/informers/utils/hub.rb +2 -2
- data/lib/informers/version.rb +1 -1
- metadata +3 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfeaf81a8a597d5c25d340e38d0f0be665d3737a1cc271ece883e5b83472da31
|
4
|
+
data.tar.gz: 36943e4c472c864e5951a02ea336c47192e77bcc51161113e022675cce552b82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6f9a35abcdcb57ddd24c3d81498fa517df554a48b722d7fcee0776e950762ef6412f90916688ca273b95bac79b2441a92a26bcecdc27e2e3c504eafc2b39793
|
7
|
+
data.tar.gz: b85b9a12439001996c4a1580bfdca650ae920791867a3245531b8b13de0b082ebca5ee76be70e8581947e38cf7ebd8c6474d537234ccef4cddb04cc2c6b3dfa5
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -53,12 +53,6 @@ model = Informers.pipeline("embedding", "sentence-transformers/all-MiniLM-L6-v2"
|
|
53
53
|
embeddings = model.(sentences)
|
54
54
|
```
|
55
55
|
|
56
|
-
For a quantized version, use:
|
57
|
-
|
58
|
-
```ruby
|
59
|
-
model = Informers.pipeline("embedding", "Xenova/all-MiniLM-L6-v2", quantized: true)
|
60
|
-
```
|
61
|
-
|
62
56
|
### sentence-transformers/multi-qa-MiniLM-L6-cos-v1
|
63
57
|
|
64
58
|
[Docs](https://huggingface.co/Xenova/multi-qa-MiniLM-L6-cos-v1)
|
@@ -254,7 +248,7 @@ result = model.(query, docs)
|
|
254
248
|
|
255
249
|
### Other
|
256
250
|
|
257
|
-
The model must include a `.onnx` file ([example](https://huggingface.co/Xenova/all-MiniLM-L6-v2/tree/main/onnx)). If the file is not at `onnx/model.onnx
|
251
|
+
The model must include a `.onnx` file ([example](https://huggingface.co/Xenova/all-MiniLM-L6-v2/tree/main/onnx)). If the file is not at `onnx/model.onnx`, use the `model_file_name` option to specify the location.
|
258
252
|
|
259
253
|
## Pipelines
|
260
254
|
|
@@ -438,13 +432,13 @@ qa.("image.jpg", "What is the invoice number?")
|
|
438
432
|
|
439
433
|
## Reference
|
440
434
|
|
441
|
-
Specify a variant of the model
|
435
|
+
Specify a variant of the model if available (`fp32`, `fp16`, `int8`, `uint8`, `q8`, `q4`, `q4f16`, or `bnb4`)
|
442
436
|
|
443
437
|
```ruby
|
444
438
|
Informers.pipeline("embedding", "Xenova/all-MiniLM-L6-v2", dtype: "fp16")
|
445
439
|
```
|
446
440
|
|
447
|
-
Specify a device (
|
441
|
+
Specify a device (`cpu`, `cuda`, or `coreml`)
|
448
442
|
|
449
443
|
```ruby
|
450
444
|
Informers.pipeline("embedding", device: "cuda")
|
data/lib/informers/models.rb
CHANGED
@@ -809,12 +809,49 @@ module Informers
|
|
809
809
|
end
|
810
810
|
end
|
811
811
|
|
812
|
+
class ModernBertPreTrainedModel < PreTrainedModel
|
813
|
+
end
|
814
|
+
|
815
|
+
class ModernBertModel < ModernBertPreTrainedModel
|
816
|
+
end
|
817
|
+
|
818
|
+
class ModernBertForMaskedLM < ModernBertPreTrainedModel
|
819
|
+
def call(model_inputs)
|
820
|
+
MaskedLMOutput.new(*super(model_inputs))
|
821
|
+
end
|
822
|
+
end
|
823
|
+
|
824
|
+
class ModernBertForSequenceClassification < ModernBertPreTrainedModel
|
825
|
+
def call(model_inputs)
|
826
|
+
SequenceClassifierOutput.new(*super(model_inputs))
|
827
|
+
end
|
828
|
+
end
|
829
|
+
|
830
|
+
class ModernBertForTokenClassification < ModernBertPreTrainedModel
|
831
|
+
def call(model_inputs)
|
832
|
+
TokenClassifierOutput.new(*super(model_inputs))
|
833
|
+
end
|
834
|
+
end
|
835
|
+
|
812
836
|
class NomicBertPreTrainedModel < PreTrainedModel
|
813
837
|
end
|
814
838
|
|
815
839
|
class NomicBertModel < NomicBertPreTrainedModel
|
816
840
|
end
|
817
841
|
|
842
|
+
class ConvBertPreTrainedModel < PreTrainedModel
|
843
|
+
end
|
844
|
+
|
845
|
+
class ConvBertModel < ConvBertPreTrainedModel
|
846
|
+
end
|
847
|
+
|
848
|
+
class ElectraPreTrainedModel < PreTrainedModel
|
849
|
+
end
|
850
|
+
|
851
|
+
# TODO add ElectraForPreTraining
|
852
|
+
class ElectraModel < ElectraPreTrainedModel
|
853
|
+
end
|
854
|
+
|
818
855
|
class DebertaV2PreTrainedModel < PreTrainedModel
|
819
856
|
end
|
820
857
|
|
@@ -965,6 +1002,18 @@ module Informers
|
|
965
1002
|
end
|
966
1003
|
end
|
967
1004
|
|
1005
|
+
class RobertaForTokenClassification < RobertaPreTrainedModel
|
1006
|
+
def call(model_inputs)
|
1007
|
+
TokenClassifierOutput.new(*super(model_inputs))
|
1008
|
+
end
|
1009
|
+
end
|
1010
|
+
|
1011
|
+
class RobertaForSequenceClassification < RobertaPreTrainedModel
|
1012
|
+
def call(model_inputs)
|
1013
|
+
SequenceClassifierOutput.new(*super(model_inputs))
|
1014
|
+
end
|
1015
|
+
end
|
1016
|
+
|
968
1017
|
class XLMRobertaPreTrainedModel < PreTrainedModel
|
969
1018
|
end
|
970
1019
|
|
@@ -1173,7 +1222,10 @@ module Informers
|
|
1173
1222
|
|
1174
1223
|
MODEL_MAPPING_NAMES_ENCODER_ONLY = {
|
1175
1224
|
"bert" => ["BertModel", BertModel],
|
1225
|
+
"modernbert" => ["ModernBertModel", ModernBertModel],
|
1176
1226
|
"nomic_bert" => ["NomicBertModel", NomicBertModel],
|
1227
|
+
"electra" => ["ElectraModel", ElectraModel],
|
1228
|
+
"convbert" => ["ConvBertModel", ConvBertModel],
|
1177
1229
|
"deberta-v2" => ["DebertaV2Model", DebertaV2Model],
|
1178
1230
|
"mpnet" => ["MPNetModel", MPNetModel],
|
1179
1231
|
"distilbert" => ["DistilBertModel", DistilBertModel],
|
@@ -1208,13 +1260,17 @@ module Informers
|
|
1208
1260
|
|
1209
1261
|
MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES = {
|
1210
1262
|
"bert" => ["BertForSequenceClassification", BertForSequenceClassification],
|
1263
|
+
"modernbert" => ["ModernBertForSequenceClassification", ModernBertForSequenceClassification],
|
1211
1264
|
"distilbert" => ["DistilBertForSequenceClassification", DistilBertForSequenceClassification],
|
1265
|
+
"roberta" => ["RobertaForSequenceClassification", RobertaForSequenceClassification],
|
1212
1266
|
"xlm-roberta" => ["XLMRobertaForSequenceClassification", XLMRobertaForSequenceClassification],
|
1213
1267
|
"bart" => ["BartForSequenceClassification", BartForSequenceClassification]
|
1214
1268
|
}
|
1215
1269
|
|
1216
1270
|
MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES = {
|
1217
|
-
"bert" => ["BertForTokenClassification", BertForTokenClassification]
|
1271
|
+
"bert" => ["BertForTokenClassification", BertForTokenClassification],
|
1272
|
+
"modernbert" => ["ModernBertForTokenClassification", ModernBertForTokenClassification],
|
1273
|
+
"roberta" => ["RobertaForTokenClassification", RobertaForTokenClassification]
|
1218
1274
|
}
|
1219
1275
|
|
1220
1276
|
MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES = {
|
@@ -1230,6 +1286,7 @@ module Informers
|
|
1230
1286
|
|
1231
1287
|
MODEL_FOR_MASKED_LM_MAPPING_NAMES = {
|
1232
1288
|
"bert" => ["BertForMaskedLM", BertForMaskedLM],
|
1289
|
+
"modernbert" => ["ModernBertForMaskedLM", ModernBertForMaskedLM],
|
1233
1290
|
"roberta" => ["RobertaForMaskedLM", RobertaForMaskedLM]
|
1234
1291
|
}
|
1235
1292
|
|
data/lib/informers/pipelines.rb
CHANGED
@@ -1336,6 +1336,7 @@ module Informers
|
|
1336
1336
|
stream = $stderr
|
1337
1337
|
tty = stream.tty?
|
1338
1338
|
width = tty ? stream.winsize[1] : 80
|
1339
|
+
width = 80 if width == 0
|
1339
1340
|
|
1340
1341
|
if msg[:status] == "progress" && tty
|
1341
1342
|
stream.print "\r#{Utils::Hub.display_progress(msg[:file], width, msg[:size], msg[:total_size])}"
|
@@ -1369,7 +1370,7 @@ module Informers
|
|
1369
1370
|
task = TASK_ALIASES[task] || task
|
1370
1371
|
|
1371
1372
|
if quantized == NO_DEFAULT
|
1372
|
-
# TODO
|
1373
|
+
# TODO no quantization by default in 2.0
|
1373
1374
|
quantized = ["text-classification", "token-classification", "question-answering", "feature-extraction"].include?(task)
|
1374
1375
|
end
|
1375
1376
|
|
data/lib/informers/utils/hub.rb
CHANGED
@@ -233,8 +233,8 @@ module Informers
|
|
233
233
|
end
|
234
234
|
|
235
235
|
def self.display_progress(filename, width, size, expected_size)
|
236
|
-
bar_width = width - (filename.length + 3)
|
237
|
-
progress = size / expected_size.to_f
|
236
|
+
bar_width = [width - (filename.length + 3), 1].max
|
237
|
+
progress = expected_size && expected_size > 0 ? size / expected_size.to_f : 0
|
238
238
|
done = (progress * bar_width).round
|
239
239
|
not_done = bar_width - done
|
240
240
|
"#{filename} |#{"█" * done}#{" " * not_done}|"
|
data/lib/informers/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: informers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-01 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: onnxruntime
|
@@ -38,7 +37,6 @@ dependencies:
|
|
38
37
|
- - ">="
|
39
38
|
- !ruby/object:Gem::Version
|
40
39
|
version: 0.5.3
|
41
|
-
description:
|
42
40
|
email: andrew@ankane.org
|
43
41
|
executables: []
|
44
42
|
extensions: []
|
@@ -70,7 +68,6 @@ homepage: https://github.com/ankane/informers
|
|
70
68
|
licenses:
|
71
69
|
- Apache-2.0
|
72
70
|
metadata: {}
|
73
|
-
post_install_message:
|
74
71
|
rdoc_options: []
|
75
72
|
require_paths:
|
76
73
|
- lib
|
@@ -85,8 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
82
|
- !ruby/object:Gem::Version
|
86
83
|
version: '0'
|
87
84
|
requirements: []
|
88
|
-
rubygems_version: 3.
|
89
|
-
signing_key:
|
85
|
+
rubygems_version: 3.6.2
|
90
86
|
specification_version: 4
|
91
87
|
summary: Fast transformer inference for Ruby
|
92
88
|
test_files: []
|