Upgrades the PyTorch, transformers and sentence transformer requirements.
Elasticsearch has upgraded to PyTorch to 2.3.1 in 8.16 and 8.15.2. For
compatibility reasons Eland will refuse to upload to an Elasticsearch cluster
that has is using an earlier version of PyTorch.
* Mirror pandas' to_csv lineterminator instead of line_terminator
(even though it looks a little weird perhaps)
* Remove squeeze argument
* Revert "Merge branch 'remove-squeeze-argument' into patch-2"
This reverts commit 8b9ab5647e244d78ec3471b80ee7c42e019cf347.
* Don't remove the parameter yet since people might use it
* Add pending deprecation warning
---------
Co-authored-by: David Kyle <david.kyle@elastic.co>
* Ensure the feature logger is using NaN for non matching query feature extractors (consistent with ES).
* Default score is None instead of 0.
* LTR model import API improvements.
* Fix feature logger tests.
* Fix export in eland.ml.ltr
* Apply suggestions from code review
Co-authored-by: Adam Demjen <demjened@gmail.com>
* Fix supported models for LTR
---------
Co-authored-by: Adam Demjen <demjened@gmail.com>
* Add XGBRanker and transformer
* Map XGBoostRegressorTransformer to XGBRanker
* Add unit tests
* Remove unused import
* Revert addition of type
* Update function comment
* Distinguish objective based on model class
* Support for supplying inference_config
* Fix linting errors
* Add unit test
* Add LTR type, throw exception on predict, refine test
* Add search step to LTR test
* Fix linter errors
* Update rescoring assertion in test + type defs
* Fix linting error
* Remove failing assertion
Fixes an error uploading the sentence-transformers/all-distilroberta-v1 model
which failed with "missing 2 required positional arguments: 'token_type_ids'
and 'position_ids'". The cause was that the tokenizer type was not recognised
due to a typo
This PR adds an ability to estimate per deployment and per allocation memory usage of NLP transformer models. It uses torch.profiler and performs logs the peak memory usage during the inference.
This information is then used in Elasticsearch to provision models with sufficient memory (elastic/elasticsearch#98874).
We were attempting to load SentenceTransformers by looking at the model
prefix, however SentenceTransformers can also be loaded from other
orgs in the model hub, as well as from local disk. This prefix checking
failed in those two cases. To simplify the loading logic and deciding
which wrapper to use, we’ve removed support for text_embedding tasks to
load a plain Transformer. We now only support DPR embedding models and
SentenceTransformer embedding models. If you try to load a plain
Transformer model, it will be loaded by SentenceTransformers and a mean
pooling layer will automatically be added by the SentenceTransformer
library. Since we no longer automatically support non-DPR and
non-SentenceTransformers, we should include somewhere example code for
how to load a custom model without DPR or SentenceTransformers.
See: https://github.com/UKPLab/sentence-transformers/blob/v2.2.2/sentence_transformers/SentenceTransformer.py#L801Resolves#531