clarifai 11.2.3rc1__py3-none-any.whl → 11.2.3rc2__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.
- clarifai/__init__.py +1 -1
- clarifai/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/__pycache__/errors.cpython-310.pyc +0 -0
- clarifai/__pycache__/versions.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/base.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/compute_cluster.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/deployment.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/model.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
- clarifai/cli/__pycache__/nodepool.cpython-310.pyc +0 -0
- clarifai/cli/base.py +81 -228
- clarifai/cli/compute_cluster.py +17 -25
- clarifai/cli/deployment.py +41 -67
- clarifai/cli/model.py +39 -26
- clarifai/cli/nodepool.py +40 -59
- clarifai/client/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/client/__pycache__/app.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/app.cpython-39.pyc +0 -0
- clarifai/client/__pycache__/base.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/compute_cluster.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/dataset.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/deployment.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/input.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/lister.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/model.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/module.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/nodepool.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/search.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/user.cpython-310.pyc +0 -0
- clarifai/client/__pycache__/workflow.cpython-310.pyc +0 -0
- clarifai/client/app.py +1 -1
- clarifai/client/auth/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/client/auth/__pycache__/helper.cpython-310.pyc +0 -0
- clarifai/client/auth/__pycache__/register.cpython-310.pyc +0 -0
- clarifai/client/auth/__pycache__/stub.cpython-310.pyc +0 -0
- clarifai/client/cli/__init__.py +0 -0
- clarifai/client/cli/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/client/cli/__pycache__/base_cli.cpython-310.pyc +0 -0
- clarifai/client/cli/__pycache__/model_cli.cpython-310.pyc +0 -0
- clarifai/client/cli/base_cli.py +88 -0
- clarifai/client/cli/model_cli.py +29 -0
- clarifai/client/model.py +159 -393
- clarifai/client/model_client.py +502 -0
- clarifai/constants/__pycache__/base.cpython-310.pyc +0 -0
- clarifai/constants/__pycache__/dataset.cpython-310.pyc +0 -0
- clarifai/constants/__pycache__/input.cpython-310.pyc +0 -0
- clarifai/constants/__pycache__/{model.cpython-312.pyc → model.cpython-310.pyc} +0 -0
- clarifai/constants/__pycache__/rag.cpython-310.pyc +0 -0
- clarifai/constants/__pycache__/search.cpython-310.pyc +0 -0
- clarifai/constants/__pycache__/workflow.cpython-310.pyc +0 -0
- clarifai/datasets/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/datasets/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/datasets/export/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/datasets/export/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/datasets/export/__pycache__/inputs_annotations.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/datasets/upload/__pycache__/base.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/features.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/image.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/multimodal.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/text.cpython-310.pyc +0 -0
- clarifai/datasets/upload/__pycache__/utils.cpython-310.pyc +0 -0
- clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/models/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/modules/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/rag/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/rag/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/rag/__pycache__/rag.cpython-310.pyc +0 -0
- clarifai/rag/__pycache__/rag.cpython-39.pyc +0 -0
- clarifai/rag/__pycache__/utils.cpython-310.pyc +0 -0
- clarifai/runners/__init__.py +2 -7
- clarifai/runners/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/runners/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/runners/dockerfile_template/Dockerfile.cpu.template +31 -0
- clarifai/runners/dockerfile_template/Dockerfile.cuda.template +42 -0
- clarifai/runners/dockerfile_template/Dockerfile.nim +71 -0
- clarifai/runners/models/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/runners/models/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/runners/models/__pycache__/base_typed_model.cpython-310.pyc +0 -0
- clarifai/runners/models/__pycache__/base_typed_model.cpython-39.pyc +0 -0
- clarifai/runners/models/__pycache__/model_class.cpython-310.pyc +0 -0
- clarifai/runners/models/__pycache__/model_run_locally.cpython-310-pytest-7.1.2.pyc +0 -0
- clarifai/runners/models/__pycache__/model_run_locally.cpython-310.pyc +0 -0
- clarifai/runners/models/__pycache__/model_runner.cpython-310.pyc +0 -0
- clarifai/runners/models/__pycache__/model_upload.cpython-310.pyc +0 -0
- clarifai/runners/models/model_builder.py +138 -51
- clarifai/runners/models/model_class.py +441 -28
- clarifai/runners/models/model_class_refract.py +80 -0
- clarifai/runners/models/model_run_locally.py +25 -89
- clarifai/runners/models/model_runner.py +8 -0
- clarifai/runners/models/model_servicer.py +11 -2
- clarifai/runners/models/model_upload.py +607 -0
- clarifai/runners/models/temp.py +25 -0
- clarifai/runners/utils/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/__init__.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/buffered_stream.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/buffered_stream.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/buffered_stream.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/const.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/constants.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/constants.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/constants.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_handler.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_handler.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_handler.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_utils.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_utils.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_utils.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/grpc_server.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/grpc_server.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/grpc_server.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/health.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/health.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/health.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/loader.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/logging.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/logging.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/logging.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/stream_source.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/stream_source.cpython-39.pyc +0 -0
- clarifai/runners/utils/__pycache__/url_fetcher.cpython-310.pyc +0 -0
- clarifai/runners/utils/__pycache__/url_fetcher.cpython-38.pyc +0 -0
- clarifai/runners/utils/__pycache__/url_fetcher.cpython-39.pyc +0 -0
- clarifai/runners/utils/code_script.py +217 -0
- clarifai/runners/utils/const.py +8 -9
- clarifai/runners/utils/data_handler.py +271 -210
- clarifai/runners/utils/data_handler_refract.py +213 -0
- clarifai/runners/utils/data_types.py +473 -0
- clarifai/runners/utils/data_utils.py +165 -0
- clarifai/runners/utils/loader.py +6 -36
- clarifai/runners/utils/logger.py +0 -0
- clarifai/runners/utils/method_signatures.py +518 -0
- clarifai/runners/utils/serializers.py +222 -0
- clarifai/schema/__pycache__/search.cpython-310.pyc +0 -0
- clarifai/urls/__pycache__/helper.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/utils/__pycache__/cli.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/constants.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/logging.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/misc.cpython-310.pyc +0 -0
- clarifai/utils/__pycache__/model_train.cpython-310.pyc +0 -0
- clarifai/utils/cli.py +33 -132
- clarifai/utils/constants.py +0 -4
- clarifai/utils/evaluation/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/utils/evaluation/__pycache__/main.cpython-39.pyc +0 -0
- clarifai/utils/misc.py +0 -2
- clarifai/workflows/__pycache__/__init__.cpython-310.pyc +0 -0
- clarifai/workflows/__pycache__/__init__.cpython-39.pyc +0 -0
- clarifai/workflows/__pycache__/export.cpython-310.pyc +0 -0
- clarifai/workflows/__pycache__/utils.cpython-310.pyc +0 -0
- clarifai/workflows/__pycache__/validate.cpython-310.pyc +0 -0
- {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/METADATA +14 -3
- clarifai-11.2.3rc2.dist-info/RECORD +238 -0
- {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/WHEEL +1 -1
- clarifai/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/__pycache__/errors.cpython-312.pyc +0 -0
- clarifai/__pycache__/versions.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/base.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/compute_cluster.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/deployment.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/model.cpython-312.pyc +0 -0
- clarifai/cli/__pycache__/nodepool.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/app.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/base.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/compute_cluster.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/dataset.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/deployment.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/input.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/lister.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/model.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/model_client.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/module.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/nodepool.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/search.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/user.cpython-312.pyc +0 -0
- clarifai/client/__pycache__/workflow.cpython-312.pyc +0 -0
- clarifai/client/auth/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/client/auth/__pycache__/helper.cpython-312.pyc +0 -0
- clarifai/client/auth/__pycache__/register.cpython-312.pyc +0 -0
- clarifai/client/auth/__pycache__/stub.cpython-312.pyc +0 -0
- clarifai/constants/__pycache__/base.cpython-312.pyc +0 -0
- clarifai/constants/__pycache__/dataset.cpython-312.pyc +0 -0
- clarifai/constants/__pycache__/input.cpython-312.pyc +0 -0
- clarifai/constants/__pycache__/search.cpython-312.pyc +0 -0
- clarifai/constants/__pycache__/workflow.cpython-312.pyc +0 -0
- clarifai/datasets/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/datasets/export/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/datasets/export/__pycache__/inputs_annotations.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/base.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/features.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/image.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/multimodal.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/text.cpython-312.pyc +0 -0
- clarifai/datasets/upload/__pycache__/utils.cpython-312.pyc +0 -0
- clarifai/datasets/upload/loaders/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/datasets/upload/loaders/__pycache__/coco_detection.cpython-312.pyc +0 -0
- clarifai/modules/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/modules/__pycache__/css.cpython-312.pyc +0 -0
- clarifai/runners/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/runners/__pycache__/server.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/base_typed_model.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/model_builder.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/model_class.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/model_run_locally.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/model_runner.cpython-312.pyc +0 -0
- clarifai/runners/models/__pycache__/model_servicer.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/const.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_handler.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_types.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/data_utils.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/loader.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/method_signatures.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/serializers.cpython-312.pyc +0 -0
- clarifai/runners/utils/__pycache__/url_fetcher.cpython-312.pyc +0 -0
- clarifai/schema/__pycache__/search.cpython-312.pyc +0 -0
- clarifai/urls/__pycache__/helper.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/cli.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/config.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/constants.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/logging.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/misc.cpython-312.pyc +0 -0
- clarifai/utils/__pycache__/model_train.cpython-312.pyc +0 -0
- clarifai/utils/config.py +0 -105
- clarifai/utils/config.py~ +0 -145
- clarifai/utils/evaluation/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/utils/evaluation/__pycache__/helpers.cpython-312.pyc +0 -0
- clarifai/utils/evaluation/__pycache__/main.cpython-312.pyc +0 -0
- clarifai/workflows/__pycache__/__init__.cpython-312.pyc +0 -0
- clarifai/workflows/__pycache__/export.cpython-312.pyc +0 -0
- clarifai/workflows/__pycache__/utils.cpython-312.pyc +0 -0
- clarifai/workflows/__pycache__/validate.cpython-312.pyc +0 -0
- clarifai-11.2.3rc1.dist-info/RECORD +0 -185
- {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/LICENSE +0 -0
- {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/entry_points.txt +0 -0
- {clarifai-11.2.3rc1.dist-info → clarifai-11.2.3rc2.dist-info}/top_level.txt +0 -0
@@ -1,7 +1,12 @@
|
|
1
1
|
from io import BytesIO
|
2
2
|
|
3
|
+
from clarifai_grpc.grpc.api.resources_pb2 import ModelTypeEnumOption
|
4
|
+
from clarifai_grpc.grpc.api.resources_pb2 import ModelTypeField as InputFieldProto
|
5
|
+
from clarifai_grpc.grpc.api.resources_pb2 import ModelTypeRangeInfo
|
3
6
|
from PIL import Image
|
4
7
|
|
8
|
+
from clarifai.runners.utils.data_types import MessageData
|
9
|
+
|
5
10
|
|
6
11
|
def image_to_bytes(img: Image.Image, format="JPEG") -> bytes:
|
7
12
|
buffered = BytesIO()
|
@@ -13,3 +18,163 @@ def image_to_bytes(img: Image.Image, format="JPEG") -> bytes:
|
|
13
18
|
def bytes_to_image(bytes_img) -> Image.Image:
|
14
19
|
img = Image.open(BytesIO(bytes_img))
|
15
20
|
return img
|
21
|
+
|
22
|
+
|
23
|
+
def is_openai_chat_format(messages):
|
24
|
+
"""
|
25
|
+
Verify if the given argument follows the OpenAI chat messages format.
|
26
|
+
|
27
|
+
Args:
|
28
|
+
messages (list): A list of dictionaries representing chat messages.
|
29
|
+
|
30
|
+
Returns:
|
31
|
+
bool: True if valid, False otherwise.
|
32
|
+
"""
|
33
|
+
if not isinstance(messages, list):
|
34
|
+
return False
|
35
|
+
|
36
|
+
valid_roles = {"system", "user", "assistant", "function"}
|
37
|
+
|
38
|
+
for msg in messages:
|
39
|
+
if not isinstance(msg, dict):
|
40
|
+
return False
|
41
|
+
if "role" not in msg or "content" not in msg:
|
42
|
+
return False
|
43
|
+
if msg["role"] not in valid_roles:
|
44
|
+
return False
|
45
|
+
|
46
|
+
content = msg["content"]
|
47
|
+
|
48
|
+
# Content should be either a string (text message) or a multimodal list
|
49
|
+
if isinstance(content, str):
|
50
|
+
continue # Valid text message
|
51
|
+
|
52
|
+
elif isinstance(content, list):
|
53
|
+
for item in content:
|
54
|
+
if not isinstance(item, dict):
|
55
|
+
return False
|
56
|
+
return True
|
57
|
+
|
58
|
+
|
59
|
+
class InputField(MessageData):
|
60
|
+
"""A field that can be used to store input data."""
|
61
|
+
|
62
|
+
def __init__(
|
63
|
+
self,
|
64
|
+
default=None,
|
65
|
+
description=None,
|
66
|
+
min_value=None,
|
67
|
+
max_value=None,
|
68
|
+
choices=None,
|
69
|
+
# is_param=True
|
70
|
+
):
|
71
|
+
self.default = default
|
72
|
+
self.description = description
|
73
|
+
self.min_value = min_value
|
74
|
+
self.max_value = max_value
|
75
|
+
self.choices = choices
|
76
|
+
# self.is_param = is_param
|
77
|
+
|
78
|
+
def __repr__(self) -> str:
|
79
|
+
attrs = []
|
80
|
+
if self.default is not None:
|
81
|
+
attrs.append(f"default={self.default!r}")
|
82
|
+
if self.description is not None:
|
83
|
+
attrs.append(f"description={self.description!r}")
|
84
|
+
if self.min_value is not None:
|
85
|
+
attrs.append(f"min_value={self.min_value!r}")
|
86
|
+
if self.max_value is not None:
|
87
|
+
attrs.append(f"max_value={self.max_value!r}")
|
88
|
+
if self.choices is not None:
|
89
|
+
attrs.append(f"choices={self.choices!r}")
|
90
|
+
# attrs.append(f"is_param={self.is_param!r}")
|
91
|
+
return f"InputField({', '.join(attrs)})"
|
92
|
+
|
93
|
+
def to_proto(self, proto=None) -> InputFieldProto:
|
94
|
+
if proto is None:
|
95
|
+
proto = InputFieldProto()
|
96
|
+
if self.description is not None:
|
97
|
+
proto.description = self.description
|
98
|
+
|
99
|
+
if self.choices is not None:
|
100
|
+
for choice in self.choices:
|
101
|
+
option = ModelTypeEnumOption(id=str(choice))
|
102
|
+
proto.model_type_enum_options.append(option)
|
103
|
+
|
104
|
+
proto.required = self.default is None
|
105
|
+
|
106
|
+
if self.min_value is not None or self.max_value is not None:
|
107
|
+
range_info = ModelTypeRangeInfo()
|
108
|
+
if self.min_value is not None:
|
109
|
+
range_info.min = float(self.min_value)
|
110
|
+
if self.max_value is not None:
|
111
|
+
range_info.max = float(self.max_value)
|
112
|
+
proto.model_type_range_info.CopyFrom(range_info)
|
113
|
+
# proto.is_param = self.is_param
|
114
|
+
|
115
|
+
if self.default is not None:
|
116
|
+
if isinstance(self.default, str) or isinstance(self.default, bool) or isinstance(
|
117
|
+
self.default, (int, float)):
|
118
|
+
proto.default = str(self.default)
|
119
|
+
else:
|
120
|
+
import json
|
121
|
+
proto.default = json.dumps(self.default)
|
122
|
+
|
123
|
+
return proto
|
124
|
+
|
125
|
+
@classmethod
|
126
|
+
def from_proto(cls, proto):
|
127
|
+
default = None
|
128
|
+
if proto.HasField('default'):
|
129
|
+
pb_value = proto.default
|
130
|
+
if pb_value.HasField('string_value'):
|
131
|
+
default = pb_value.string_value
|
132
|
+
try:
|
133
|
+
import json
|
134
|
+
default = json.loads(default)
|
135
|
+
except json.JSONDecodeError:
|
136
|
+
pass
|
137
|
+
elif pb_value.HasField('number_value'):
|
138
|
+
default = pb_value.number_value
|
139
|
+
if default.is_integer():
|
140
|
+
default = int(default)
|
141
|
+
else:
|
142
|
+
default = float(default)
|
143
|
+
elif pb_value.HasField('bool_value'):
|
144
|
+
default = pb_value.bool_value
|
145
|
+
|
146
|
+
choices = [option.id for option in proto.model_type_enum_options
|
147
|
+
] if proto.model_type_enum_options else None
|
148
|
+
|
149
|
+
min_value = None
|
150
|
+
max_value = None
|
151
|
+
if proto.HasField('model_type_range_info'):
|
152
|
+
min_value = proto.model_type_range_info.min
|
153
|
+
max_value = proto.model_type_range_info.max
|
154
|
+
if min_value.is_integer():
|
155
|
+
min_value = int(min_value)
|
156
|
+
if max_value.is_integer():
|
157
|
+
max_value = int(max_value)
|
158
|
+
|
159
|
+
return cls(
|
160
|
+
default=default,
|
161
|
+
description=proto.description if proto.description else None,
|
162
|
+
min_value=min_value,
|
163
|
+
max_value=max_value,
|
164
|
+
choices=choices,
|
165
|
+
# is_param=proto.is_param
|
166
|
+
)
|
167
|
+
|
168
|
+
@classmethod
|
169
|
+
def set_default(cls, proto=None, default=None):
|
170
|
+
|
171
|
+
if proto is None:
|
172
|
+
proto = InputFieldProto()
|
173
|
+
if default is not None:
|
174
|
+
if isinstance(default, str) or isinstance(default, bool) or isinstance(
|
175
|
+
default, (int, float)):
|
176
|
+
proto.default = str(default)
|
177
|
+
else:
|
178
|
+
import json
|
179
|
+
proto.default = json.dumps(default)
|
180
|
+
return proto
|
clarifai/runners/utils/loader.py
CHANGED
@@ -6,7 +6,6 @@ import shutil
|
|
6
6
|
|
7
7
|
import requests
|
8
8
|
|
9
|
-
from clarifai.runners.utils.const import CONCEPTS_REQUIRED_MODEL_TYPE
|
10
9
|
from clarifai.utils.logging import logger
|
11
10
|
|
12
11
|
|
@@ -14,10 +13,9 @@ class HuggingFaceLoader:
|
|
14
13
|
|
15
14
|
HF_DOWNLOAD_TEXT = "The 'huggingface_hub' package is not installed. Please install it using 'pip install huggingface_hub'."
|
16
15
|
|
17
|
-
def __init__(self, repo_id=None, token=None
|
16
|
+
def __init__(self, repo_id=None, token=None):
|
18
17
|
self.repo_id = repo_id
|
19
18
|
self.token = token
|
20
|
-
self.clarifai_model_type_id = model_type_id
|
21
19
|
if token:
|
22
20
|
if self.validate_hftoken(token):
|
23
21
|
try:
|
@@ -45,17 +43,13 @@ class HuggingFaceLoader:
|
|
45
43
|
f"Error setting up Hugging Face token, please make sure you have the correct token: {e}")
|
46
44
|
return False
|
47
45
|
|
48
|
-
def download_checkpoints(self,
|
49
|
-
checkpoint_path: str,
|
50
|
-
allowed_file_patterns=None,
|
51
|
-
ignore_file_patterns=None):
|
46
|
+
def download_checkpoints(self, checkpoint_path: str):
|
52
47
|
# throw error if huggingface_hub wasn't installed
|
53
48
|
try:
|
54
49
|
from huggingface_hub import snapshot_download
|
55
50
|
except ImportError:
|
56
51
|
raise ImportError(self.HF_DOWNLOAD_TEXT)
|
57
|
-
if os.path.exists(checkpoint_path) and self.validate_download(
|
58
|
-
checkpoint_path, allowed_file_patterns, ignore_file_patterns):
|
52
|
+
if os.path.exists(checkpoint_path) and self.validate_download(checkpoint_path):
|
59
53
|
logger.info("Checkpoints already exist")
|
60
54
|
return True
|
61
55
|
else:
|
@@ -67,16 +61,10 @@ class HuggingFaceLoader:
|
|
67
61
|
return False
|
68
62
|
|
69
63
|
self.ignore_patterns = self._get_ignore_patterns()
|
70
|
-
if ignore_file_patterns:
|
71
|
-
if self.ignore_patterns:
|
72
|
-
self.ignore_patterns.extend(ignore_file_patterns)
|
73
|
-
else:
|
74
|
-
self.ignore_patterns = ignore_file_patterns
|
75
64
|
snapshot_download(
|
76
65
|
repo_id=self.repo_id,
|
77
66
|
local_dir=checkpoint_path,
|
78
67
|
local_dir_use_symlinks=False,
|
79
|
-
allow_patterns=allowed_file_patterns,
|
80
68
|
ignore_patterns=self.ignore_patterns)
|
81
69
|
# Remove the `.cache` folder if it exists
|
82
70
|
cache_path = os.path.join(checkpoint_path, ".cache")
|
@@ -87,8 +75,7 @@ class HuggingFaceLoader:
|
|
87
75
|
logger.error(f"Error downloading model checkpoints {e}")
|
88
76
|
return False
|
89
77
|
finally:
|
90
|
-
is_downloaded = self.validate_download(checkpoint_path
|
91
|
-
ignore_file_patterns)
|
78
|
+
is_downloaded = self.validate_download(checkpoint_path)
|
92
79
|
if not is_downloaded:
|
93
80
|
logger.error("Error validating downloaded model checkpoints")
|
94
81
|
return False
|
@@ -122,13 +109,9 @@ class HuggingFaceLoader:
|
|
122
109
|
from huggingface_hub import file_exists, repo_exists
|
123
110
|
except ImportError:
|
124
111
|
raise ImportError(self.HF_DOWNLOAD_TEXT)
|
125
|
-
|
126
|
-
return repo_exists(self.repo_id) and file_exists(self.repo_id, 'config.json')
|
127
|
-
else:
|
128
|
-
return repo_exists(self.repo_id)
|
112
|
+
return repo_exists(self.repo_id) and file_exists(self.repo_id, 'config.json')
|
129
113
|
|
130
|
-
def validate_download(self, checkpoint_path: str
|
131
|
-
ignore_file_patterns: list):
|
114
|
+
def validate_download(self, checkpoint_path: str):
|
132
115
|
# check if model exists on HF
|
133
116
|
try:
|
134
117
|
from huggingface_hub import list_repo_files
|
@@ -137,20 +120,7 @@ class HuggingFaceLoader:
|
|
137
120
|
# Get the list of files on the repo
|
138
121
|
repo_files = list_repo_files(self.repo_id, token=self.token)
|
139
122
|
|
140
|
-
# Get the list of files on the repo that are allowed
|
141
|
-
if allowed_file_patterns:
|
142
|
-
|
143
|
-
def should_allow(file_path):
|
144
|
-
return any(fnmatch.fnmatch(file_path, pattern) for pattern in allowed_file_patterns)
|
145
|
-
|
146
|
-
repo_files = [f for f in repo_files if should_allow(f)]
|
147
|
-
|
148
123
|
self.ignore_patterns = self._get_ignore_patterns()
|
149
|
-
if ignore_file_patterns:
|
150
|
-
if self.ignore_patterns:
|
151
|
-
self.ignore_patterns.extend(ignore_file_patterns)
|
152
|
-
else:
|
153
|
-
self.ignore_patterns = ignore_file_patterns
|
154
124
|
# Get the list of files on the repo that are not ignored
|
155
125
|
if getattr(self, "ignore_patterns", None):
|
156
126
|
patterns = self.ignore_patterns
|
File without changes
|