kaiko-eva 0.3.3__py3-none-any.whl → 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kaiko-eva might be problematic. Click here for more details.
- eva/core/callbacks/config.py +4 -0
- eva/core/cli/setup.py +1 -1
- eva/core/data/dataloaders/__init__.py +1 -2
- eva/core/data/samplers/random.py +17 -10
- eva/core/interface/interface.py +21 -0
- eva/core/models/modules/module.py +2 -2
- eva/core/models/wrappers/base.py +2 -2
- eva/core/models/wrappers/from_function.py +3 -3
- eva/core/models/wrappers/from_torchhub.py +9 -7
- eva/core/models/wrappers/huggingface.py +4 -5
- eva/core/models/wrappers/onnx.py +5 -5
- eva/core/trainers/trainer.py +2 -0
- eva/language/__init__.py +2 -1
- eva/language/callbacks/__init__.py +5 -0
- eva/language/callbacks/writers/__init__.py +5 -0
- eva/language/callbacks/writers/prediction.py +176 -0
- eva/language/data/dataloaders/__init__.py +5 -0
- eva/language/data/dataloaders/collate_fn/__init__.py +5 -0
- eva/language/data/dataloaders/collate_fn/text.py +57 -0
- eva/language/data/datasets/__init__.py +3 -1
- eva/language/data/datasets/{language.py → base.py} +1 -1
- eva/language/data/datasets/classification/base.py +3 -43
- eva/language/data/datasets/classification/pubmedqa.py +36 -4
- eva/language/data/datasets/prediction.py +151 -0
- eva/language/data/datasets/schemas.py +18 -0
- eva/language/data/datasets/text.py +92 -0
- eva/language/data/datasets/typings.py +39 -0
- eva/language/data/messages.py +60 -0
- eva/language/models/__init__.py +15 -11
- eva/language/models/modules/__init__.py +2 -2
- eva/language/models/modules/language.py +93 -0
- eva/language/models/networks/__init__.py +12 -0
- eva/language/models/networks/alibaba.py +26 -0
- eva/language/models/networks/api/__init__.py +11 -0
- eva/language/models/networks/api/anthropic.py +34 -0
- eva/language/models/networks/registry.py +5 -0
- eva/language/models/typings.py +39 -0
- eva/language/models/wrappers/__init__.py +13 -5
- eva/language/models/wrappers/base.py +47 -0
- eva/language/models/wrappers/from_registry.py +54 -0
- eva/language/models/wrappers/huggingface.py +44 -8
- eva/language/models/wrappers/litellm.py +81 -46
- eva/language/models/wrappers/vllm.py +37 -13
- eva/language/utils/__init__.py +2 -1
- eva/language/utils/str_to_int_tensor.py +20 -12
- eva/language/utils/text/__init__.py +5 -0
- eva/language/utils/text/messages.py +113 -0
- eva/multimodal/__init__.py +6 -0
- eva/multimodal/callbacks/__init__.py +5 -0
- eva/multimodal/callbacks/writers/__init__.py +5 -0
- eva/multimodal/callbacks/writers/prediction.py +39 -0
- eva/multimodal/data/__init__.py +5 -0
- eva/multimodal/data/dataloaders/__init__.py +5 -0
- eva/multimodal/data/dataloaders/collate_fn/__init__.py +5 -0
- eva/multimodal/data/dataloaders/collate_fn/text_image.py +28 -0
- eva/multimodal/data/datasets/__init__.py +6 -0
- eva/multimodal/data/datasets/base.py +13 -0
- eva/multimodal/data/datasets/multiple_choice/__init__.py +5 -0
- eva/multimodal/data/datasets/multiple_choice/patch_camelyon.py +80 -0
- eva/multimodal/data/datasets/schemas.py +14 -0
- eva/multimodal/data/datasets/text_image.py +77 -0
- eva/multimodal/data/datasets/typings.py +27 -0
- eva/multimodal/models/__init__.py +8 -0
- eva/multimodal/models/modules/__init__.py +5 -0
- eva/multimodal/models/modules/vision_language.py +55 -0
- eva/multimodal/models/networks/__init__.py +14 -0
- eva/multimodal/models/networks/alibaba.py +39 -0
- eva/multimodal/models/networks/api/__init__.py +11 -0
- eva/multimodal/models/networks/api/anthropic.py +34 -0
- eva/multimodal/models/networks/others.py +47 -0
- eva/multimodal/models/networks/registry.py +5 -0
- eva/multimodal/models/typings.py +27 -0
- eva/multimodal/models/wrappers/__init__.py +13 -0
- eva/multimodal/models/wrappers/base.py +47 -0
- eva/multimodal/models/wrappers/from_registry.py +54 -0
- eva/multimodal/models/wrappers/huggingface.py +180 -0
- eva/multimodal/models/wrappers/litellm.py +56 -0
- eva/multimodal/utils/__init__.py +1 -0
- eva/multimodal/utils/image/__init__.py +5 -0
- eva/multimodal/utils/image/encode.py +28 -0
- eva/multimodal/utils/text/__init__.py +1 -0
- eva/multimodal/utils/text/messages.py +79 -0
- eva/vision/data/datasets/classification/patch_camelyon.py +8 -6
- eva/vision/data/transforms/__init__.py +2 -1
- eva/vision/data/transforms/spatial/__init__.py +2 -1
- eva/vision/data/transforms/spatial/functional/__init__.py +5 -0
- eva/vision/data/transforms/spatial/functional/resize.py +26 -0
- eva/vision/data/transforms/spatial/resize.py +62 -0
- eva/vision/models/wrappers/from_registry.py +6 -5
- eva/vision/models/wrappers/from_timm.py +6 -4
- {kaiko_eva-0.3.3.dist-info → kaiko_eva-0.4.0.dist-info}/METADATA +10 -2
- {kaiko_eva-0.3.3.dist-info → kaiko_eva-0.4.0.dist-info}/RECORD +95 -38
- eva/core/data/dataloaders/collate_fn/__init__.py +0 -5
- eva/core/data/dataloaders/collate_fn/collate.py +0 -24
- eva/language/models/modules/text.py +0 -85
- {kaiko_eva-0.3.3.dist-info → kaiko_eva-0.4.0.dist-info}/WHEEL +0 -0
- {kaiko_eva-0.3.3.dist-info → kaiko_eva-0.4.0.dist-info}/entry_points.txt +0 -0
- {kaiko_eva-0.3.3.dist-info → kaiko_eva-0.4.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Image resize transforms."""
|
|
2
|
+
|
|
3
|
+
import functools
|
|
4
|
+
from typing import Any, Dict
|
|
5
|
+
|
|
6
|
+
from torchvision import tv_tensors
|
|
7
|
+
from torchvision.transforms import v2
|
|
8
|
+
from typing_extensions import override
|
|
9
|
+
|
|
10
|
+
from eva.vision.data.transforms.spatial import functional
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Resize(v2.Transform):
|
|
14
|
+
"""Resize transform for images with spatial or byte-based constraints.
|
|
15
|
+
|
|
16
|
+
This transform provides two mutually exclusive modes of resizing:
|
|
17
|
+
1. Spatial resizing: Resize to a specific (height, width) dimension
|
|
18
|
+
2. Byte-based resizing: Resize to fit within a maximum byte size
|
|
19
|
+
|
|
20
|
+
The latter is particularly useful for API models (e.g. Claude 3.7) that
|
|
21
|
+
have strict byte size limits for image inputs.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
def __init__(self, size: tuple[int, int] | None = None, max_bytes: int | None = None) -> None:
|
|
25
|
+
"""Initializes the transform.
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
size: Target size as (height, width) tuple for spatial resizing.
|
|
29
|
+
If provided, max_bytes must be None.
|
|
30
|
+
max_bytes: Maximum allowed byte size for the image.
|
|
31
|
+
If provided, size must be None. Must be a positive integer.
|
|
32
|
+
|
|
33
|
+
Raises:
|
|
34
|
+
ValueError: If both size and max_bytes are provided, or if max_bytes
|
|
35
|
+
is not a positive integer.
|
|
36
|
+
"""
|
|
37
|
+
if size is not None and max_bytes is not None:
|
|
38
|
+
raise ValueError("Cannot provide both 'size' and 'max_bytes' parameters.")
|
|
39
|
+
if max_bytes is not None and max_bytes <= 0:
|
|
40
|
+
raise ValueError("'max_bytes' must be a positive integer.")
|
|
41
|
+
|
|
42
|
+
super().__init__()
|
|
43
|
+
|
|
44
|
+
self.size = size
|
|
45
|
+
self.max_bytes = max_bytes
|
|
46
|
+
self.resize_fn = None
|
|
47
|
+
|
|
48
|
+
if size is not None:
|
|
49
|
+
self.resize_fn = v2.Resize(size=size)
|
|
50
|
+
elif max_bytes is not None:
|
|
51
|
+
self.resize_fn = functools.partial(functional.resize_to_max_bytes, max_bytes=max_bytes)
|
|
52
|
+
|
|
53
|
+
@functools.singledispatchmethod
|
|
54
|
+
@override
|
|
55
|
+
def _transform(self, inpt: Any, params: Dict[str, Any]) -> Any:
|
|
56
|
+
return inpt
|
|
57
|
+
|
|
58
|
+
@_transform.register(tv_tensors.Image)
|
|
59
|
+
@_transform.register(tv_tensors.Mask)
|
|
60
|
+
def _(self, inpt: Any, params: Dict[str, Any]) -> Any:
|
|
61
|
+
inpt_resized = self.resize_fn(inpt) if self.resize_fn is not None else inpt
|
|
62
|
+
return tv_tensors.wrap(inpt_resized, like=inpt)
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from typing import Any, Callable, Dict
|
|
4
4
|
|
|
5
5
|
import torch
|
|
6
|
+
from torch import nn
|
|
6
7
|
from typing_extensions import override
|
|
7
8
|
|
|
8
9
|
from eva.core.models.wrappers import base
|
|
@@ -40,14 +41,14 @@ class ModelFromRegistry(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
40
41
|
self._model_kwargs = model_kwargs or {}
|
|
41
42
|
self._model_extra_kwargs = model_extra_kwargs or {}
|
|
42
43
|
|
|
43
|
-
self.load_model()
|
|
44
|
+
self.model = self.load_model()
|
|
44
45
|
|
|
45
46
|
@override
|
|
46
|
-
def load_model(self) ->
|
|
47
|
-
|
|
47
|
+
def load_model(self) -> nn.Module:
|
|
48
|
+
ModelFromRegistry.__name__ = self._model_name
|
|
49
|
+
|
|
50
|
+
return factory.ModuleFactory(
|
|
48
51
|
registry=backbone_registry,
|
|
49
52
|
name=self._model_name,
|
|
50
53
|
init_args=self._model_kwargs | self._model_extra_kwargs,
|
|
51
54
|
)
|
|
52
|
-
|
|
53
|
-
ModelFromRegistry.__name__ = self._model_name
|
|
@@ -5,6 +5,7 @@ from urllib import parse
|
|
|
5
5
|
|
|
6
6
|
import timm
|
|
7
7
|
import torch
|
|
8
|
+
from torch import nn
|
|
8
9
|
from typing_extensions import override
|
|
9
10
|
|
|
10
11
|
from eva.core.models.wrappers import base
|
|
@@ -46,12 +47,14 @@ class TimmModel(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
46
47
|
self._out_indices = out_indices
|
|
47
48
|
self._model_kwargs = model_kwargs or {}
|
|
48
49
|
|
|
49
|
-
self.load_model()
|
|
50
|
+
self.model = self.load_model()
|
|
50
51
|
|
|
51
52
|
@override
|
|
52
|
-
def load_model(self) ->
|
|
53
|
+
def load_model(self) -> nn.Module:
|
|
53
54
|
"""Builds and loads the timm model as feature extractor."""
|
|
54
|
-
|
|
55
|
+
TimmModel.__name__ = self._model_name
|
|
56
|
+
|
|
57
|
+
return timm.create_model(
|
|
55
58
|
model_name=self._model_name,
|
|
56
59
|
pretrained=True if self._checkpoint_path else self._pretrained,
|
|
57
60
|
pretrained_cfg=self._pretrained_cfg,
|
|
@@ -59,7 +62,6 @@ class TimmModel(base.BaseModel[torch.Tensor, torch.Tensor]):
|
|
|
59
62
|
features_only=self._out_indices is not None,
|
|
60
63
|
**self._model_kwargs,
|
|
61
64
|
)
|
|
62
|
-
TimmModel.__name__ = self._model_name
|
|
63
65
|
|
|
64
66
|
@property
|
|
65
67
|
def _pretrained_cfg(self) -> Dict[str, Any]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kaiko-eva
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Evaluation Framework for oncology foundation models.
|
|
5
5
|
Keywords: machine-learning,evaluation-framework,oncology,foundation-models
|
|
6
6
|
Author-Email: Ioannis Gatopoulos <ioannis@kaiko.ai>, =?utf-8?q?Nicolas_K=C3=A4nzig?= <nicolas@kaiko.ai>, Roman Moser <roman@kaiko.ai>
|
|
@@ -245,6 +245,10 @@ Requires-Dist: einops>=0.8.1; extra == "vision"
|
|
|
245
245
|
Provides-Extra: language
|
|
246
246
|
Requires-Dist: datasets<4.0.0,>=2.19.0; extra == "language"
|
|
247
247
|
Requires-Dist: litellm>=1.61.8; extra == "language"
|
|
248
|
+
Requires-Dist: backoff>=2.2.1; extra == "language"
|
|
249
|
+
Provides-Extra: multimodal
|
|
250
|
+
Requires-Dist: litellm>=1.61.8; extra == "multimodal"
|
|
251
|
+
Requires-Dist: backoff>=2.2.1; extra == "multimodal"
|
|
248
252
|
Provides-Extra: all
|
|
249
253
|
Requires-Dist: h5py>=3.10.0; extra == "all"
|
|
250
254
|
Requires-Dist: nibabel>=4.0.1; extra == "all"
|
|
@@ -260,6 +264,7 @@ Requires-Dist: monai>=1.3.2; extra == "all"
|
|
|
260
264
|
Requires-Dist: einops>=0.8.1; extra == "all"
|
|
261
265
|
Requires-Dist: datasets<4.0.0,>=2.19.0; extra == "all"
|
|
262
266
|
Requires-Dist: litellm>=1.61.8; extra == "all"
|
|
267
|
+
Requires-Dist: backoff>=2.2.1; extra == "all"
|
|
263
268
|
Description-Content-Type: text/markdown
|
|
264
269
|
|
|
265
270
|
<div align="center">
|
|
@@ -298,7 +303,7 @@ Check out the [documentation](https://kaiko-ai.github.io/eva/) for more informat
|
|
|
298
303
|
|
|
299
304
|
### Highlights:
|
|
300
305
|
- Easy and reliable benchmark of Oncology FMs
|
|
301
|
-
- Supports patch-level classification, slide-level classification, semantic segmentation, and
|
|
306
|
+
- Supports patch-level classification, slide-level classification, semantic segmentation, and (visual) question answering tasks.
|
|
302
307
|
- Automatic embedding inference and evaluation of a downstream task
|
|
303
308
|
- Native support of popular medical [datasets](https://kaiko-ai.github.io/eva/dev/datasets/) and models
|
|
304
309
|
- Produce statistics over multiple evaluation fits and multiple metrics
|
|
@@ -316,6 +321,9 @@ pip install 'kaiko-eva[vision]'
|
|
|
316
321
|
# to install the expanded `language` version
|
|
317
322
|
pip install 'kaiko-eva[language]'
|
|
318
323
|
|
|
324
|
+
# to install the expanded `multimodal` version
|
|
325
|
+
pip install 'kaiko-eva[multimodal]'
|
|
326
|
+
|
|
319
327
|
# to install everything
|
|
320
328
|
pip install 'kaiko-eva[all]'
|
|
321
329
|
```
|
|
@@ -3,7 +3,7 @@ eva/__main__.py,sha256=kM5tQ0egTuBWixNLLx9QU-PpS2Bbs3zE3nYE6b2vWa0,282
|
|
|
3
3
|
eva/__version__.py,sha256=YFR4oOlvPg0sS4Ni7GJ_vU42VTs5WiWp6odK7yH4TBY,611
|
|
4
4
|
eva/core/__init__.py,sha256=AYlMZcH76B7I1lOa-E67u2o9DxsCwI4JMLCYXLk9oDQ,451
|
|
5
5
|
eva/core/callbacks/__init__.py,sha256=_XsS4QGf4r9frzFwEx-krmzJm3kbLmXQFtwYCfRyjrM,281
|
|
6
|
-
eva/core/callbacks/config.py,sha256
|
|
6
|
+
eva/core/callbacks/config.py,sha256=X5d-Ex_1irOLtyzSbB4t3BjfctqtJXsIdHEbJUISmDE,4337
|
|
7
7
|
eva/core/callbacks/writers/__init__.py,sha256=z8cNVJOanj-yYyIiX-mOkhur1NExuCOKzPjp4mmm3AE,232
|
|
8
8
|
eva/core/callbacks/writers/embeddings/__init__.py,sha256=zMxP4POf1yFFUVSjGcsQgyPYNY6JsZO_F66ngKJZaG8,301
|
|
9
9
|
eva/core/callbacks/writers/embeddings/_manifest.py,sha256=pB9nGv9ofVbnI4HHPrHY4p7jeFiFQTRc09zszto_DTk,2424
|
|
@@ -14,11 +14,9 @@ eva/core/callbacks/writers/embeddings/typings.py,sha256=qXZSlasaSKHad6HyJeRTeUv-
|
|
|
14
14
|
eva/core/cli/__init__.py,sha256=1lGiomn4JINI0DKy41_D4cEyyH-hN6cfTZfMPxLxTCA,68
|
|
15
15
|
eva/core/cli/cli.py,sha256=AZ4B4OP3D2af9H2RYBd5nxoy5I9DlaClZaadSWpPEPI,422
|
|
16
16
|
eva/core/cli/logo.py,sha256=x6-vGWI0s9gza-xxQrBDi2wneb2wFU_mQGHgpAiq2MQ,786
|
|
17
|
-
eva/core/cli/setup.py,sha256=
|
|
17
|
+
eva/core/cli/setup.py,sha256=q5bLSqlHvR0bgF-uh4tL1JOv2aCn5hoRP-XqCaBKTvo,2690
|
|
18
18
|
eva/core/data/__init__.py,sha256=yG3BeOWhp1EjVYMFqx8M_TBWFDyfIwwksQGQmMdSPaI,340
|
|
19
|
-
eva/core/data/dataloaders/__init__.py,sha256=
|
|
20
|
-
eva/core/data/dataloaders/collate_fn/__init__.py,sha256=CfSAVrPD36shpyYAkob2ny05VWymb95MutawQcZkbuo,134
|
|
21
|
-
eva/core/data/dataloaders/collate_fn/collate.py,sha256=oBdxaDCIaXBB6H8LB90Qsi2Inw1tyHGF4kAFBINPOeQ,689
|
|
19
|
+
eva/core/data/dataloaders/__init__.py,sha256=fbNClVZ8J3QoGi4qiPq635ig1j9GdI7six3RhfwDbjY,110
|
|
22
20
|
eva/core/data/dataloaders/dataloader.py,sha256=v_UL5p78EiyLqXUhWsS0EbfW0iO-DAWOMv7-WTclOvA,2750
|
|
23
21
|
eva/core/data/datamodules/__init__.py,sha256=qZchYbgxo9lxYnGoqdk0C6MfS2IbF0WItO0kCdP9Mqc,229
|
|
24
22
|
eva/core/data/datamodules/call.py,sha256=jjj9w3UXYuQB-qyCcw1EZpRJW10OC1I3dvgvsuQWLck,940
|
|
@@ -35,7 +33,7 @@ eva/core/data/datasets/typings.py,sha256=KSmckjsU64pGV-8uSLkD1HmvPKYlyypngiRx9yy
|
|
|
35
33
|
eva/core/data/samplers/__init__.py,sha256=rRrKtg4l6YoziD3M0MkctQvX1NdRxaQa5sm6RHH_jXc,315
|
|
36
34
|
eva/core/data/samplers/classification/__init__.py,sha256=gvv7BH4lG9JlkMaTOnaL0f4k1ghiVBgrH64bh1-rreQ,147
|
|
37
35
|
eva/core/data/samplers/classification/balanced.py,sha256=MGTHt-WQaQKiJ5A1D_P6HJ6YzPTD-ERhc0R7rNMFqfg,3788
|
|
38
|
-
eva/core/data/samplers/random.py,sha256=
|
|
36
|
+
eva/core/data/samplers/random.py,sha256=fAlPmlTiXO7QqTh2hLVjgmELsX4P7DrS-9vV2qMAcOQ,1409
|
|
39
37
|
eva/core/data/samplers/sampler.py,sha256=0DOLUzFoweqEubuO1A4bZBRU0AWFoWGWrO3pawRT-eI,877
|
|
40
38
|
eva/core/data/splitting/__init__.py,sha256=VQJ8lfakbv6y2kAk3VDtITAvh7kcZo3H1JwJBc5jT08,198
|
|
41
39
|
eva/core/data/splitting/random.py,sha256=r6iy7j34seRTlyB79_Xy7m6lsKRi8ZM9X5Ln1b-SBjg,1453
|
|
@@ -48,7 +46,7 @@ eva/core/data/transforms/padding/pad_2d_tensor.py,sha256=J4maGFmeQf9IHRxt5kU-6eI
|
|
|
48
46
|
eva/core/data/transforms/sampling/__init__.py,sha256=BFKbvRjlZrwS0GcNrM54ZSWt6PrQARfFlXM1jJ-wpvo,149
|
|
49
47
|
eva/core/data/transforms/sampling/sample_from_axis.py,sha256=Zbhp94lVa70WQKmSOKMTsOMe2c7wLqNZto7JqWhSdtI,1229
|
|
50
48
|
eva/core/interface/__init__.py,sha256=chdpKXipxe1NP-Fgr_d9r6X1gMna0XiEa38waJ6FzTM,98
|
|
51
|
-
eva/core/interface/interface.py,sha256=
|
|
49
|
+
eva/core/interface/interface.py,sha256=pni92cLb4KQMSvOoYMWP2qIn8rtzqxj84hEhjsdCgis,5364
|
|
52
50
|
eva/core/loggers/__init__.py,sha256=4YMLNlN9LnuKqhBI1R1keh69dmMD-2lcH3HKwwyn380,266
|
|
53
51
|
eva/core/loggers/dummy.py,sha256=Y7ypH0ecSAIkkZ5LzTmNNEzlKkqeaHfUNMCDKVOg6D4,1204
|
|
54
52
|
eva/core/loggers/experimental_loggers.py,sha256=p5uCK_9QCYufRhE-LZQUJWbhGElyobX_zRM78yX4p2o,230
|
|
@@ -78,7 +76,7 @@ eva/core/models/__init__.py,sha256=T6Fo886LxMj-Y58_ylzkPkFSnFR2aISiMIbuO_weC4s,4
|
|
|
78
76
|
eva/core/models/modules/__init__.py,sha256=_4VjN9Qs4_mftEVgt0KqVxCRAtDcKYbUnBA3Ox1Pzis,350
|
|
79
77
|
eva/core/models/modules/head.py,sha256=bZ45RBPi3N8sjvKyt2_TeKWI1eB6GyBeGzV6J11ERO8,5225
|
|
80
78
|
eva/core/models/modules/inference.py,sha256=ih-0Rr2oNf2N6maiXPOW7XH5KVwUT1_MOxnJKOhJ1uQ,978
|
|
81
|
-
eva/core/models/modules/module.py,sha256=
|
|
79
|
+
eva/core/models/modules/module.py,sha256=8BHc_NdIXAyA7oUP7LFLYvMjIJSsuR5lvFiHS_wycU4,6695
|
|
82
80
|
eva/core/models/modules/scheduler.py,sha256=orv5TDq9vEItxE7rTj0sQlzdChpx5jHx-3ypnHjUyr4,1650
|
|
83
81
|
eva/core/models/modules/typings.py,sha256=LPR8JdIid2gJZpjMG1FcH5OZ60JlFOj_LupIh__2k_8,803
|
|
84
82
|
eva/core/models/modules/utils/__init__.py,sha256=ScLCHwQfzlg_UsHVi5sf_SavUkh9secwtRn_umC_qA8,325
|
|
@@ -93,17 +91,17 @@ eva/core/models/transforms/extract_cls_features.py,sha256=A-oNNiGYBkMLK_E9DrzJUJ
|
|
|
93
91
|
eva/core/models/transforms/extract_patch_features.py,sha256=5UsHjZnh3Uk2jAfi3GLtxoJ14ALTrfVoWUy8nTspRDY,2218
|
|
94
92
|
eva/core/models/wrappers/__init__.py,sha256=jaiANQdbO-IPgH8U-Y0ftFsuuCAM5i5KuYRHauKw5k8,450
|
|
95
93
|
eva/core/models/wrappers/_utils.py,sha256=ZWe9Ih_0kH5Wg_AQAtAn77LZ_CODAve5u3G12ifLNsc,4902
|
|
96
|
-
eva/core/models/wrappers/base.py,sha256=
|
|
97
|
-
eva/core/models/wrappers/from_function.py,sha256=
|
|
98
|
-
eva/core/models/wrappers/from_torchhub.py,sha256
|
|
99
|
-
eva/core/models/wrappers/huggingface.py,sha256
|
|
100
|
-
eva/core/models/wrappers/onnx.py,sha256=
|
|
94
|
+
eva/core/models/wrappers/base.py,sha256=MvFZcwXvWsgvi9LqJUcUKjqimyFXvJ7P5ftOaNQpecc,1450
|
|
95
|
+
eva/core/models/wrappers/from_function.py,sha256=ccjCMwkdmyKqCxUbNaUDB1V6KvBgKuoXxIb8gH7Giyo,1855
|
|
96
|
+
eva/core/models/wrappers/from_torchhub.py,sha256=VHOigAIkYJfMfaq8WJwYzbex-1ny_ZjszxGSfaDeVbw,3291
|
|
97
|
+
eva/core/models/wrappers/huggingface.py,sha256=rP0DmdZnJ0Zqjy3o7BqwBa8uG3C24Epgb4h1sRPZOJ0,1459
|
|
98
|
+
eva/core/models/wrappers/onnx.py,sha256=BhXlXE0mF3pZ2R8SZtDUF51ooFwdsAjJ47CiJg-wjNY,1837
|
|
101
99
|
eva/core/trainers/__init__.py,sha256=jhsKJF7HAae7EOiG3gKIAHH_h3dZlTE2JRcCHJmOzJc,208
|
|
102
100
|
eva/core/trainers/_logging.py,sha256=gi4FqPy2GuVmh0WZY6mYwF7zMPvnoFA050B0XdCP6PU,2571
|
|
103
101
|
eva/core/trainers/_recorder.py,sha256=M-BJHLgqGxR_MSV6f_WC7GN2JHYEEinV1-hNLpH667A,8062
|
|
104
102
|
eva/core/trainers/_utils.py,sha256=M3h8lVhUmkeSiEXpX9hRdMvThGFCnTP15gv-hd1CZkc,321
|
|
105
103
|
eva/core/trainers/functional.py,sha256=_Mw-NIPU2tPffxpK5t3sHBmVI6u163phCpoJFiauH7E,4583
|
|
106
|
-
eva/core/trainers/trainer.py,sha256=
|
|
104
|
+
eva/core/trainers/trainer.py,sha256=i_Qj76h6BfwK-5Y3UsiLcWrSnUKumg0XLxBdAR2WRHU,4908
|
|
107
105
|
eva/core/utils/__init__.py,sha256=cndVBvtYxEW7hykH39GCNVI86zkXNn8Lw2A0sUJHS04,237
|
|
108
106
|
eva/core/utils/clone.py,sha256=qcThZOuAs1cs0uV3BL5eKeM2VIBjuRPBe1t-NiUFM5Y,569
|
|
109
107
|
eva/core/utils/factory.py,sha256=upWPWkWW7p3_ZoePAzbkkZvEPiAY4OaOQkwNvh0oa-E,2397
|
|
@@ -119,23 +117,79 @@ eva/core/utils/registry.py,sha256=iEDVsQ7DdPXhzfW32z3lWNgwjagR_jh_g4VkvajjRK4,13
|
|
|
119
117
|
eva/core/utils/requirements.py,sha256=u01QPnBDu0YApncxgvg7xEANubyGSptqja12cycg3k0,909
|
|
120
118
|
eva/core/utils/suppress_logs.py,sha256=pOk1076J0mKWn2lgDqEVC1g65FXhA_2IkC4LBEWhnwQ,902
|
|
121
119
|
eva/core/utils/workers.py,sha256=hfx63M82qNg0Dwhre2tl53MnhtRsV7APaDONM9nhVB8,634
|
|
122
|
-
eva/language/__init__.py,sha256=
|
|
120
|
+
eva/language/__init__.py,sha256=W_u2wedmQvEOWVEw8dmkie7c6ATeVuTVn9_Yw7uc3cU,406
|
|
121
|
+
eva/language/callbacks/__init__.py,sha256=gVTSGjKYvovTgERVJmQLssW6Fz7aJwjYpe6gqUtq0_8,131
|
|
122
|
+
eva/language/callbacks/writers/__init__.py,sha256=FV02MK218j3pxCgmTvMPtgNL8-4d2NbUcnyvsZI0CNs,150
|
|
123
|
+
eva/language/callbacks/writers/prediction.py,sha256=MzU8Jc17fwL2SV0tjLl-ravxN9GPDAWARZdT2cr86FY,6894
|
|
123
124
|
eva/language/data/__init__.py,sha256=ONF-CLBK2HO2p1bMCAbdvaHfSsYjdSE9-O3lWgwQQGk,89
|
|
124
|
-
eva/language/data/
|
|
125
|
+
eva/language/data/dataloaders/__init__.py,sha256=6pGDiohDxfNepOyE76XhgQMOYzgL1LYNaR9Qu7xb8fQ,169
|
|
126
|
+
eva/language/data/dataloaders/collate_fn/__init__.py,sha256=QZ22JjL4t8VldudGXTaEPv3rH8XKta_nlip1TszWn9g,171
|
|
127
|
+
eva/language/data/dataloaders/collate_fn/text.py,sha256=BrgbgUOFyaitymVAp2lZNaS2kqU7KzmeMOKfNzGaiYY,1944
|
|
128
|
+
eva/language/data/datasets/__init__.py,sha256=FE5tpQ18z2yRE_q60r2xu7WapLT3oGt5d_iZ6_uJ_DI,308
|
|
129
|
+
eva/language/data/datasets/base.py,sha256=BDpyT_mnYuP5qMlGP_vfRejO-gp-bsQYNMBqM0EmXyY,309
|
|
125
130
|
eva/language/data/datasets/classification/__init__.py,sha256=HXtgJpMt9CgqvdeWc147bOn-9YeUMcL8v-0UHHkY_A4,144
|
|
126
|
-
eva/language/data/datasets/classification/base.py,sha256=
|
|
127
|
-
eva/language/data/datasets/classification/pubmedqa.py,sha256=
|
|
128
|
-
eva/language/data/datasets/
|
|
129
|
-
eva/language/
|
|
130
|
-
eva/language/
|
|
131
|
-
eva/language/
|
|
131
|
+
eva/language/data/datasets/classification/base.py,sha256=Xdy8quqx4lSZtS04yJ1WubXREMEnaB7BiCnn-Ao8wIQ,589
|
|
132
|
+
eva/language/data/datasets/classification/pubmedqa.py,sha256=n3CSwVbQAPU7NJ3m8WeYF1coNRLOiolVyvqVZIFfLg4,6510
|
|
133
|
+
eva/language/data/datasets/prediction.py,sha256=4ZyDFK5IWPuVShKy8z2Bn6Uq0dYgolFhf94EUnzYiC8,5880
|
|
134
|
+
eva/language/data/datasets/schemas.py,sha256=x0IBinezADXzQr71SDFSSeRYXW7uuINmzdPQLemWF-Y,405
|
|
135
|
+
eva/language/data/datasets/text.py,sha256=MpVJa5h7Al572UdU-WtfKwbF7nEAt_jd11rJF3ZIuQk,2778
|
|
136
|
+
eva/language/data/datasets/typings.py,sha256=_JZUD6ZlaCQhvWBD851zQZy3czgCxpsAnbnifSvSRCk,904
|
|
137
|
+
eva/language/data/messages.py,sha256=2x7k-rzZkM8Ow-fIm6cBrsJB6W_vlsjExs6IaQkdDa4,1306
|
|
138
|
+
eva/language/models/__init__.py,sha256=QZHt1uz9bB33Ko5mznlLjY0uGCVmnS7SOLb8Z0Bzgm4,725
|
|
139
|
+
eva/language/models/modules/__init__.py,sha256=Dk2pdjkerDA_Omrue38ia0rYmW84jRvyc9pPKziZH9c,172
|
|
140
|
+
eva/language/models/modules/language.py,sha256=ybDHNDtJ_YCKq_zoXHZorF0rOM1l4jz_URZ2cfdSSok,3097
|
|
132
141
|
eva/language/models/modules/typings.py,sha256=dWq3FTbvGZGoIMTEIX1yWBk_VFKIHsvxaTvBXlbJfCA,379
|
|
133
|
-
eva/language/models/
|
|
134
|
-
eva/language/models/
|
|
135
|
-
eva/language/models/
|
|
136
|
-
eva/language/models/
|
|
137
|
-
eva/language/
|
|
138
|
-
eva/language/
|
|
142
|
+
eva/language/models/networks/__init__.py,sha256=zrRaiFqcIeFsLm6-yJWUeEgh_1xvBY-5QAdRGjEOysg,374
|
|
143
|
+
eva/language/models/networks/alibaba.py,sha256=kSGPdZWnn0q71Dm03HKmoXWACeEyc8V3HVLuk_fIhno,798
|
|
144
|
+
eva/language/models/networks/api/__init__.py,sha256=NrLiFExfplzbiFqOTgQqSUxeXzlAwCoDcbuBH9hbi58,222
|
|
145
|
+
eva/language/models/networks/api/anthropic.py,sha256=EdIKcFS7RCX_vpiOYMh-tS6rM74orOcNRmhw9pETen8,1194
|
|
146
|
+
eva/language/models/networks/registry.py,sha256=yFA1AhIbgoDLRvn9MUU2FPH25H7BODpN49CN_ya7wrY,106
|
|
147
|
+
eva/language/models/typings.py,sha256=SclZPkxg9T3ADl5SVWXzV4ymJyJ5Wf0VxDrWRRlBLIU,906
|
|
148
|
+
eva/language/models/wrappers/__init__.py,sha256=N5DrkKZs_zE7WHY76bnhViO1hpoO88Sm1BOj12tgwJU,626
|
|
149
|
+
eva/language/models/wrappers/base.py,sha256=0MLM-Ds20hftbO3JUUWd7wuXXRn2axz1ITUplw0u_LI,1682
|
|
150
|
+
eva/language/models/wrappers/from_registry.py,sha256=hdGzLfkgjZLrEb9GyqjF1mNlFMTErQ6sY900_tBJHH8,1793
|
|
151
|
+
eva/language/models/wrappers/huggingface.py,sha256=Qz_GAcIwJWt0Ao4gRSII7FEDUBMqYU5u5lVBejI3j_Y,4025
|
|
152
|
+
eva/language/models/wrappers/litellm.py,sha256=sGyaQHaFEjgEHxTcnlMHa2b7L5eln27Tv8g821eXd_U,3442
|
|
153
|
+
eva/language/models/wrappers/vllm.py,sha256=puJVOFeyFrqBplvkjvH5dGALlZD4gduaX3lY5fScbQU,6514
|
|
154
|
+
eva/language/utils/__init__.py,sha256=Bvw7Z5Z-mBQp7rTycycrgrxxrbItD5IqNU4uHRAnD9s,238
|
|
155
|
+
eva/language/utils/str_to_int_tensor.py,sha256=_D2FH_5S1Sc4ywsJ6EWrTwuaw-NJVHygwAaRSRs-NPs,3471
|
|
156
|
+
eva/language/utils/text/__init__.py,sha256=fxMel4GvRx-SKrxGcwXDNG77yj_deEOWc6mkePS2aWo,143
|
|
157
|
+
eva/language/utils/text/messages.py,sha256=9i4AUNjAo8XOF0_gB_MaoQy4SHI2zohz65qtMoTYtWE,3989
|
|
158
|
+
eva/multimodal/__init__.py,sha256=aRq8KCWg4h7XHS68EWSHDepu9VeACxVOU3B4DiQhphE,132
|
|
159
|
+
eva/multimodal/callbacks/__init__.py,sha256=tIwSH9Z1YJfebSU3-rSCGJgaX3Io6rptLX13gmI6Hck,135
|
|
160
|
+
eva/multimodal/callbacks/writers/__init__.py,sha256=6UYVvH3Hbya0haKQh9Dci_lRji9kz1RO4Z_vnTnY24U,154
|
|
161
|
+
eva/multimodal/callbacks/writers/prediction.py,sha256=OSfInVpz2qUDTkzM3MzwWZiJoa3N4y8amMLV5TEK-k0,1316
|
|
162
|
+
eva/multimodal/data/__init__.py,sha256=wL6XCRfIuDp-7YWaHsWZ90CdII-reSW1jQ2dn8_OC0Q,113
|
|
163
|
+
eva/multimodal/data/dataloaders/__init__.py,sha256=OZ4KnLxwfs1ccA6FItyoFBtgUL_vd5JnOycCOhk8H5M,143
|
|
164
|
+
eva/multimodal/data/dataloaders/collate_fn/__init__.py,sha256=1CHJ7cL9ELlo92LakB5ib0YD-kbTjzBrMBZ5j5kYu74,160
|
|
165
|
+
eva/multimodal/data/dataloaders/collate_fn/text_image.py,sha256=Hwf4GOmYtYcJYMTiZSVrSppo_SQqcAmvvahe_4xoVb0,883
|
|
166
|
+
eva/multimodal/data/datasets/__init__.py,sha256=XisAN7MOBncOucelkVOch_rX7KSHPIL7W6lmKUQVQuQ,236
|
|
167
|
+
eva/multimodal/data/datasets/base.py,sha256=mRkxiVpZJ3Rn_YRHvqGGJiAr-I1qY1A2H53vhn59d2g,315
|
|
168
|
+
eva/multimodal/data/datasets/multiple_choice/__init__.py,sha256=tmMLCUQWBAGvDPaUVL4qNoXTabkagoZTgbiAJ9Sci-E,148
|
|
169
|
+
eva/multimodal/data/datasets/multiple_choice/patch_camelyon.py,sha256=r2ZgjStennqHDK4H2Q980sDObvZDjTA6XWSLeBmbWaQ,3100
|
|
170
|
+
eva/multimodal/data/datasets/schemas.py,sha256=44ll-3B8V8ctkmUJ1EuoUSow38EmrRTx9K1nfLw3AgE,366
|
|
171
|
+
eva/multimodal/data/datasets/text_image.py,sha256=CxT8ej6lmcWDdCeimgBcujfgMrdCMEm5LhYnzW0RbL0,2608
|
|
172
|
+
eva/multimodal/data/datasets/typings.py,sha256=dkxszTFljKf8CUlIxblsIlNR0Ckjrl2_NTBq7cAY-fk,641
|
|
173
|
+
eva/multimodal/models/__init__.py,sha256=AILD2D1zLnPW6nelWTjwIBA4jS0kx2iSw3HEQ1wMJTo,130
|
|
174
|
+
eva/multimodal/models/modules/__init__.py,sha256=E6bhjdMGPBEUNI_Lq8foLQjRTbv26B7vgxOB8q3jeSQ,147
|
|
175
|
+
eva/multimodal/models/modules/vision_language.py,sha256=DaBv3_uzNllUeZcixWiDg1Mf5c0vZnALhwS1oC8uSfw,1844
|
|
176
|
+
eva/multimodal/models/networks/__init__.py,sha256=RjW6MZ4lCAAIbstTqIq_rkaZd-fm1_4XwLMetIry9gw,463
|
|
177
|
+
eva/multimodal/models/networks/alibaba.py,sha256=dsGG7QVFxLeMKSWMPOzJRPtWTyuIwFWQZYbf-5ibpGg,1241
|
|
178
|
+
eva/multimodal/models/networks/api/__init__.py,sha256=eE0nB7XjhuSH1itEyyMtJKxHwHg1IfsHU8S69AvfDo8,224
|
|
179
|
+
eva/multimodal/models/networks/api/anthropic.py,sha256=zlPiML2JL0q-l528x29dez-FofO5ktmOjPLFRh1PwTk,1198
|
|
180
|
+
eva/multimodal/models/networks/others.py,sha256=TMBR1cjzLa4azs2mHamdi1tzeRzE8wPtt8lLdYgp9IM,1535
|
|
181
|
+
eva/multimodal/models/networks/registry.py,sha256=beZsRZUrKdUhMPq7UYFOEF7z50FgxGT1OCwE64xBf9A,108
|
|
182
|
+
eva/multimodal/models/typings.py,sha256=bwQbUFIsXhAxk7YTXqRdBYw0RqPA0a6RGNLEt4mBrxk,693
|
|
183
|
+
eva/multimodal/models/wrappers/__init__.py,sha256=RvLw74VGP3mh1CMYPj4Ij09TNkBml4ohvdirXeVBm3I,421
|
|
184
|
+
eva/multimodal/models/wrappers/base.py,sha256=FXRjAekVIovc3kbd8Q6lkwpWTSML8a8XRFAgOCl2Gsk,1719
|
|
185
|
+
eva/multimodal/models/wrappers/from_registry.py,sha256=JBCck-ecIOC9_jSaEVMbU8R2MOgjHQRxzb0SzO4whIQ,1807
|
|
186
|
+
eva/multimodal/models/wrappers/huggingface.py,sha256=qyyhl1C90JKoOD9-p4TeK-hWWLo8T1iJgx8-yBa13O4,6714
|
|
187
|
+
eva/multimodal/models/wrappers/litellm.py,sha256=EyN180LbyfkkHXNMVdEcgKjv-7COqTvall3YOcvmZ_I,2063
|
|
188
|
+
eva/multimodal/utils/__init__.py,sha256=pRJUXvuJtcKOJc1yqKHdQv9dDAn8fOoP0d6Q_9cR7ek,32
|
|
189
|
+
eva/multimodal/utils/image/__init__.py,sha256=7DCx0FgFC0CwcR40872P6w1bQWgP8HXuwyy47ZQiv-Q,126
|
|
190
|
+
eva/multimodal/utils/image/encode.py,sha256=q_tq6MJtsy6yWu6Fei1j0mMmyKGBIf1CmvJcK4ev3eU,898
|
|
191
|
+
eva/multimodal/utils/text/__init__.py,sha256=Uk1vnstlU7hLa2Pn4cacVhdhQwe2vsBoPsB0_ZWjOdc,37
|
|
192
|
+
eva/multimodal/utils/text/messages.py,sha256=IIYKXE-6FwoKM3zNt3edKFqiJdEpNLnZXR4yhSZdjkM,2541
|
|
139
193
|
eva/vision/__init__.py,sha256=oUZXFYjwtkWzi8An0uS5Xc84pLKintlXe2iti8zW6BQ,480
|
|
140
194
|
eva/vision/callbacks/__init__.py,sha256=su1V73L0dDVYWSyvV_lnWbszDi2KikRraF7OsgeaKl4,139
|
|
141
195
|
eva/vision/callbacks/loggers/__init__.py,sha256=td1JRJbE08nsGIZdO64_yLC3FUuMDp0kma0HjpUdXT4,161
|
|
@@ -159,7 +213,7 @@ eva/vision/data/datasets/classification/crc.py,sha256=sv18Lw4iUqGkYXEQN-kyZV_Foc
|
|
|
159
213
|
eva/vision/data/datasets/classification/gleason_arvaniti.py,sha256=z1OQlxZYx-n3S2wcfu-GuchySRw0E70PURJDsvejFjE,5871
|
|
160
214
|
eva/vision/data/datasets/classification/mhist.py,sha256=I-guWIucQZBHdSx-TWP24NXHf9IA9lU4hyfPZbJop0g,3033
|
|
161
215
|
eva/vision/data/datasets/classification/panda.py,sha256=HVfCvByyajdo5o_waqTpzZWCbQXQqPjvvyS5I0NAvns,7277
|
|
162
|
-
eva/vision/data/datasets/classification/patch_camelyon.py,sha256=
|
|
216
|
+
eva/vision/data/datasets/classification/patch_camelyon.py,sha256=mzgbVGQtaoer9yBXV8pXZx3DjbCy1w6aHNDJfC6CAOI,7187
|
|
163
217
|
eva/vision/data/datasets/classification/unitopatho.py,sha256=IO3msEsuOnmdcYZxF-eBpo0K97y54rWFmCb_KxuF4bk,5129
|
|
164
218
|
eva/vision/data/datasets/classification/wsi.py,sha256=YMGxU8ECjudizt_uXUevuPS8k66HxtEQ7M2IZJmL6kE,4079
|
|
165
219
|
eva/vision/data/datasets/segmentation/__init__.py,sha256=f0q9tzk4ahaZfrw_SgIE_puk_D7qmkSCKX1FP9aJITU,668
|
|
@@ -176,7 +230,7 @@ eva/vision/data/datasets/segmentation/msd_task7_pancreas.py,sha256=dTsPD73PAP15V
|
|
|
176
230
|
eva/vision/data/datasets/structs.py,sha256=RaTDW-B36PumcR5gymhCiX-r8GiKqIFcjqoEEjjFyUE,389
|
|
177
231
|
eva/vision/data/datasets/vision.py,sha256=-_WRiyICMgqABR6Ay_RKBMfsPGwgx9MQfCA7WChHo24,3219
|
|
178
232
|
eva/vision/data/datasets/wsi.py,sha256=dEAT_Si_Qb3qdSovUPeoiWeoPb7m-NGYqq44e3UXHk8,8384
|
|
179
|
-
eva/vision/data/transforms/__init__.py,sha256=
|
|
233
|
+
eva/vision/data/transforms/__init__.py,sha256=7CpXeo-oSjft1VpzjK-dmozC0Ds-HeBzBU_KYLTnfIo,885
|
|
180
234
|
eva/vision/data/transforms/base/__init__.py,sha256=d3gAnEHx8WZHuUpKLr0YAC1JR60qhRY02yeoADrx1Yw,143
|
|
181
235
|
eva/vision/data/transforms/base/monai.py,sha256=g2U4eNxKiPm6TXjHjKZ4L8-1zxa1tEf-c73kKI_7WwQ,1081
|
|
182
236
|
eva/vision/data/transforms/common/__init__.py,sha256=LWA5u0VsWzEEugdKpjpePr7fgV_XIGdASGwoaOU29Ac,211
|
|
@@ -192,8 +246,11 @@ eva/vision/data/transforms/intensity/__init__.py,sha256=mNp6pi0pnHcA24kQuiGHzMb4
|
|
|
192
246
|
eva/vision/data/transforms/intensity/rand_scale_intensity.py,sha256=x3gYRRAFbZXFWgqvoUjT0sDFWT6zbhja3PJLXbOBtTg,2184
|
|
193
247
|
eva/vision/data/transforms/intensity/rand_shift_intensity.py,sha256=5ngSHfHgJOR9KQykNKJhQMWhQYj781Mj_JKJ_ADchbM,2117
|
|
194
248
|
eva/vision/data/transforms/intensity/scale_intensity_ranged.py,sha256=VLvYZYG6jQCuR5poJsAlhIFjw6VjPEpcDPKBlJTjYBM,1873
|
|
195
|
-
eva/vision/data/transforms/spatial/__init__.py,sha256=
|
|
249
|
+
eva/vision/data/transforms/spatial/__init__.py,sha256=S2JwmBm98oPWLN497aYM-h1kyPU15Yfg9xPVTvzq6lg,355
|
|
196
250
|
eva/vision/data/transforms/spatial/flip.py,sha256=jfRc-wPBvG58OtCNU3GrOkb57kcRddRqpwcAdCB0_No,2553
|
|
251
|
+
eva/vision/data/transforms/spatial/functional/__init__.py,sha256=OzJ_Hv3CJAvvTQsk6mo_IQS0MqPW2WQ6fwtWE3UQ_Xk,166
|
|
252
|
+
eva/vision/data/transforms/spatial/functional/resize.py,sha256=NBswLluIRs1cJP-dx5Kd3Z01gF57NjPXbtPGKNa0td0,949
|
|
253
|
+
eva/vision/data/transforms/spatial/resize.py,sha256=O7igA-x7jCutw5BE_5MXOEfCeLsZPUz9K2VEIekMCi4,2305
|
|
197
254
|
eva/vision/data/transforms/spatial/rotate.py,sha256=FpMTAPWtgrG10yQ3R1_Ii6obPcn3boNWOuLhsblxUbQ,1793
|
|
198
255
|
eva/vision/data/transforms/spatial/spacing.py,sha256=T1UhqK-OhhbLQxzejMyI8BQzYRF44PNc02Qap4nk1hY,2695
|
|
199
256
|
eva/vision/data/transforms/utility/__init__.py,sha256=TjncS2aOgRJwjjRuIvmr4eRz2nKVg6b76tThp4UlzII,163
|
|
@@ -265,8 +322,8 @@ eva/vision/models/networks/decoders/segmentation/semantic/swin_unetr.py,sha256=e
|
|
|
265
322
|
eva/vision/models/networks/decoders/segmentation/semantic/with_image.py,sha256=I5PyGKKo8DcXYcw4xlCFzuavRJNRrzGT-szpDidMPXI,3516
|
|
266
323
|
eva/vision/models/networks/decoders/segmentation/typings.py,sha256=rY4CXp0MNF16SHnx9TgGjXI_r8bVGSqAWdR835hXndg,537
|
|
267
324
|
eva/vision/models/wrappers/__init__.py,sha256=ogmr-eeVuGaOCcsuxSp6PGyauP2QqWTb8dGTtbC7lRU,210
|
|
268
|
-
eva/vision/models/wrappers/from_registry.py,sha256=
|
|
269
|
-
eva/vision/models/wrappers/from_timm.py,sha256=
|
|
325
|
+
eva/vision/models/wrappers/from_registry.py,sha256=aZTbPqlfbxvx5vmh2aUym9njTlEaFwmTL5fU2zPW0To,1761
|
|
326
|
+
eva/vision/models/wrappers/from_timm.py,sha256=vf5ZoEdh-QJW-wGD6PgpqkkgQzXgQ4lT1YIaI_kwnfU,2367
|
|
270
327
|
eva/vision/utils/__init__.py,sha256=vaUovprE743SmyFH8l6uk4pYSWpI4zxn7lN0EwePTJI,96
|
|
271
328
|
eva/vision/utils/colormap.py,sha256=sP1F0JCX3abZfFgdxEjLJO-LhNYKjXZvXxs03ZgrEvI,2876
|
|
272
329
|
eva/vision/utils/convert.py,sha256=fqGmKrg5-JJLrTkTXB4YDcWTudXPrO1gGjsckVRUesU,1881
|
|
@@ -276,8 +333,8 @@ eva/vision/utils/io/image.py,sha256=IdOkr5MYqhYHz8U9drZ7wULTM3YHwCWSjZlu_Qdl4GQ,
|
|
|
276
333
|
eva/vision/utils/io/mat.py,sha256=qpGifyjmpE0Xhv567Si7-zxKrgkgE0sywP70cHiLFGU,808
|
|
277
334
|
eva/vision/utils/io/nifti.py,sha256=TFMgNhLqIK3sl3RjIRXEABM7FmSQjqVOwk1vXkuvX2w,4983
|
|
278
335
|
eva/vision/utils/io/text.py,sha256=qYgfo_ZaDZWfG02NkVVYzo5QFySqdCCz5uLA9d-zXtI,701
|
|
279
|
-
kaiko_eva-0.
|
|
280
|
-
kaiko_eva-0.
|
|
281
|
-
kaiko_eva-0.
|
|
282
|
-
kaiko_eva-0.
|
|
283
|
-
kaiko_eva-0.
|
|
336
|
+
kaiko_eva-0.4.0.dist-info/METADATA,sha256=tw3KrpA3CqmTlDJ28SxkI_4t32IHcDE0YluzC3-xbq4,26017
|
|
337
|
+
kaiko_eva-0.4.0.dist-info/WHEEL,sha256=9P2ygRxDrTJz3gsagc0Z96ukrxjr-LFBGOgv3AuKlCA,90
|
|
338
|
+
kaiko_eva-0.4.0.dist-info/entry_points.txt,sha256=6CSLu9bmQYJSXEg8gbOzRhxH0AGs75BB-vPm3VvfcNE,88
|
|
339
|
+
kaiko_eva-0.4.0.dist-info/licenses/LICENSE,sha256=e6AEzr7j_R-PYr2qLO-JwLn8y70jbVD3U2mxbRmwcI4,11338
|
|
340
|
+
kaiko_eva-0.4.0.dist-info/RECORD,,
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"""Collate functions for text data."""
|
|
2
|
-
|
|
3
|
-
from typing import Dict, List, Tuple
|
|
4
|
-
|
|
5
|
-
import torch
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def text_collate_fn(
|
|
9
|
-
batch: List[Tuple[str, torch.Tensor, Dict]],
|
|
10
|
-
) -> Tuple[List[str], torch.Tensor, List[Dict]]:
|
|
11
|
-
"""Collate function for text data that keeps texts as separate strings.
|
|
12
|
-
|
|
13
|
-
Args:
|
|
14
|
-
batch: List of tuples containing (text, target, metadata) from the dataset
|
|
15
|
-
|
|
16
|
-
Returns:
|
|
17
|
-
Tuple containing:
|
|
18
|
-
- List of text strings
|
|
19
|
-
- Batched tensor of targets
|
|
20
|
-
- List of metadata dictionaries
|
|
21
|
-
"""
|
|
22
|
-
texts, targets, metadata = zip(*batch, strict=False)
|
|
23
|
-
targets = torch.stack(targets)
|
|
24
|
-
return list(texts), targets, list(metadata)
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
"""LLM Text Module for Inference."""
|
|
2
|
-
|
|
3
|
-
from typing import Any, List
|
|
4
|
-
|
|
5
|
-
from lightning.pytorch.utilities.types import STEP_OUTPUT
|
|
6
|
-
from loguru import logger
|
|
7
|
-
from torch import nn
|
|
8
|
-
from typing_extensions import override
|
|
9
|
-
|
|
10
|
-
from eva.core.metrics import structs as metrics_lib
|
|
11
|
-
from eva.core.models.modules import module
|
|
12
|
-
from eva.core.models.modules.utils import batch_postprocess
|
|
13
|
-
from eva.language.models.modules.typings import TEXT_BATCH
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
class TextModule(module.ModelModule):
|
|
17
|
-
"""Text-based LLM module for inference.
|
|
18
|
-
|
|
19
|
-
Uses LLM wrappers for text generation and supports evaluation using
|
|
20
|
-
configurable metrics and post-processing transforms.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
def __init__(
|
|
24
|
-
self,
|
|
25
|
-
model: nn.Module,
|
|
26
|
-
prompt: str,
|
|
27
|
-
metrics: metrics_lib.MetricsSchema | None = None,
|
|
28
|
-
postprocess: batch_postprocess.BatchPostProcess | None = None,
|
|
29
|
-
) -> None:
|
|
30
|
-
"""Initializes the text inference module.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
model: An LLM wrapper (PyTorch-compatible) for text generation.
|
|
34
|
-
prompt: The prompt to use for generating text.
|
|
35
|
-
metrics: Metrics schema for evaluation.
|
|
36
|
-
postprocess: A helper function to post-process model outputs before evaluation.
|
|
37
|
-
"""
|
|
38
|
-
super().__init__(metrics=metrics, postprocess=postprocess)
|
|
39
|
-
|
|
40
|
-
self.model = model
|
|
41
|
-
self.prompt = prompt
|
|
42
|
-
|
|
43
|
-
@override
|
|
44
|
-
def forward(self, prompts: List[str], *args: Any, **kwargs: Any) -> List[str]:
|
|
45
|
-
"""Generates text responses for a batch of prompts.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
prompts: List of input texts to generate responses.
|
|
49
|
-
args: Additional arguments.
|
|
50
|
-
kwargs: Additional keyword arguments.
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
List of generated responses.
|
|
54
|
-
"""
|
|
55
|
-
return self.model(prompts)
|
|
56
|
-
|
|
57
|
-
@override
|
|
58
|
-
def validation_step(self, batch: TEXT_BATCH, *args: Any, **kwargs: Any) -> STEP_OUTPUT:
|
|
59
|
-
"""Validation step that runs batch inference and evaluates metrics.
|
|
60
|
-
|
|
61
|
-
Args:
|
|
62
|
-
batch: An input batch.
|
|
63
|
-
args: Additional arguments.
|
|
64
|
-
kwargs: Additional keyword arguments.
|
|
65
|
-
|
|
66
|
-
Returns:
|
|
67
|
-
Dictionary with predictions, ground truth, and evaluation metrics.
|
|
68
|
-
"""
|
|
69
|
-
return self._batch_step(batch)
|
|
70
|
-
|
|
71
|
-
def _batch_step(self, batch: TEXT_BATCH) -> STEP_OUTPUT:
|
|
72
|
-
"""Runs inference on a batch and evaluates model predictions.
|
|
73
|
-
|
|
74
|
-
Args:
|
|
75
|
-
batch: Input batch containing data, targets, and metadata.
|
|
76
|
-
|
|
77
|
-
Returns:
|
|
78
|
-
Dictionary with predictions, ground truth, and evaluation metrics.
|
|
79
|
-
"""
|
|
80
|
-
data, targets, metadata = batch
|
|
81
|
-
messages = [str(d) + "\n" + self.prompt for d in data]
|
|
82
|
-
predictions = self(messages)
|
|
83
|
-
logger.debug(f"Predictions: {predictions}")
|
|
84
|
-
logger.debug(f"Targets: {targets}")
|
|
85
|
-
return {"predictions": predictions, "targets": targets, "metadata": metadata}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|