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
@@ -11,10 +11,8 @@ import traceback
|
|
11
11
|
import venv
|
12
12
|
|
13
13
|
from clarifai_grpc.grpc.api import resources_pb2, service_pb2
|
14
|
-
from clarifai_grpc.grpc.api.status import status_code_pb2, status_pb2
|
15
14
|
|
16
15
|
from clarifai.runners.models.model_builder import ModelBuilder
|
17
|
-
from clarifai.runners.utils.url_fetcher import ensure_urls_downloaded
|
18
16
|
from clarifai.utils.logging import logger
|
19
17
|
|
20
18
|
|
@@ -108,89 +106,21 @@ class ModelRunLocally:
|
|
108
106
|
|
109
107
|
def _build_stream_request(self):
|
110
108
|
request = self._build_request()
|
111
|
-
ensure_urls_downloaded(request)
|
112
109
|
for i in range(1):
|
113
110
|
yield request
|
114
111
|
|
115
|
-
def _run_model_inference(self, model):
|
116
|
-
"""Perform inference using the model."""
|
117
|
-
request = self._build_request()
|
118
|
-
stream_request = self._build_stream_request()
|
119
|
-
|
120
|
-
ensure_urls_downloaded(request)
|
121
|
-
predict_response = None
|
122
|
-
generate_response = None
|
123
|
-
stream_response = None
|
124
|
-
try:
|
125
|
-
predict_response = model.predict(request)
|
126
|
-
except NotImplementedError:
|
127
|
-
logger.info("Model does not implement predict() method.")
|
128
|
-
except Exception as e:
|
129
|
-
logger.error(f"Model Prediction failed: {e}")
|
130
|
-
traceback.print_exc()
|
131
|
-
predict_response = service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
132
|
-
code=status_code_pb2.MODEL_PREDICTION_FAILED,
|
133
|
-
description="Prediction failed",
|
134
|
-
details="",
|
135
|
-
internal_details=str(e),
|
136
|
-
))
|
137
|
-
|
138
|
-
if predict_response:
|
139
|
-
if predict_response.outputs[0].status.code != status_code_pb2.SUCCESS:
|
140
|
-
logger.error(f"Moddel Prediction failed: {predict_response}")
|
141
|
-
else:
|
142
|
-
logger.info(f"Model Prediction succeeded: {predict_response}")
|
143
|
-
|
144
|
-
try:
|
145
|
-
generate_response = model.generate(request)
|
146
|
-
except NotImplementedError:
|
147
|
-
logger.info("Model does not implement generate() method.")
|
148
|
-
except Exception as e:
|
149
|
-
logger.error(f"Model Generation failed: {e}")
|
150
|
-
traceback.print_exc()
|
151
|
-
generate_response = service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
152
|
-
code=status_code_pb2.MODEL_GENERATION_FAILED,
|
153
|
-
description="Generation failed",
|
154
|
-
details="",
|
155
|
-
internal_details=str(e),
|
156
|
-
))
|
157
|
-
|
158
|
-
if generate_response:
|
159
|
-
generate_first_res = next(generate_response)
|
160
|
-
if generate_first_res.outputs[0].status.code != status_code_pb2.SUCCESS:
|
161
|
-
logger.error(f"Moddel Prediction failed: {generate_first_res}")
|
162
|
-
else:
|
163
|
-
logger.info(
|
164
|
-
f"Model Prediction succeeded for generate and first response: {generate_first_res}")
|
165
|
-
|
166
|
-
try:
|
167
|
-
stream_response = model.stream(stream_request)
|
168
|
-
except NotImplementedError:
|
169
|
-
logger.info("Model does not implement stream() method.")
|
170
|
-
except Exception as e:
|
171
|
-
logger.error(f"Model Stream failed: {e}")
|
172
|
-
traceback.print_exc()
|
173
|
-
stream_response = service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
174
|
-
code=status_code_pb2.MODEL_STREAM_FAILED,
|
175
|
-
description="Stream failed",
|
176
|
-
details="",
|
177
|
-
internal_details=str(e),
|
178
|
-
))
|
179
|
-
|
180
|
-
if stream_response:
|
181
|
-
stream_first_res = next(stream_response)
|
182
|
-
if stream_first_res.outputs[0].status.code != status_code_pb2.SUCCESS:
|
183
|
-
logger.error(f"Moddel Prediction failed: {stream_first_res}")
|
184
|
-
else:
|
185
|
-
logger.info(
|
186
|
-
f"Model Prediction succeeded for stream and first response: {stream_first_res}")
|
187
|
-
|
188
112
|
def _run_test(self):
|
189
113
|
"""Test the model locally by making a prediction."""
|
190
114
|
# Create the model
|
191
115
|
model = self.builder.create_model_instance()
|
192
|
-
#
|
193
|
-
|
116
|
+
# call its test method, if it has one
|
117
|
+
if hasattr(model, "test"):
|
118
|
+
try:
|
119
|
+
model.test()
|
120
|
+
logger.info("Model tested successfully!")
|
121
|
+
except Exception as e:
|
122
|
+
logger.error(f"Error occurred while testing the model: {e}")
|
123
|
+
traceback.print_exc()
|
194
124
|
|
195
125
|
def test_model(self):
|
196
126
|
"""Test the model by running it locally in the virtual environment."""
|
@@ -474,33 +404,39 @@ def main(model_path,
|
|
474
404
|
inside_container=False,
|
475
405
|
port=8080,
|
476
406
|
keep_env=False,
|
477
|
-
keep_image=False
|
478
|
-
skip_dockerfile: bool = False):
|
407
|
+
keep_image=False):
|
479
408
|
|
409
|
+
if not os.environ.get("CLARIFAI_PAT", None):
|
410
|
+
logger.error(
|
411
|
+
"CLARIFAI_PAT environment variable is not set! Please set your PAT in the 'CLARIFAI_PAT' environment variable."
|
412
|
+
)
|
413
|
+
sys.exit(1)
|
480
414
|
manager = ModelRunLocally(model_path)
|
481
415
|
# get whatever stage is in config.yaml to force download now
|
482
416
|
# also always write to where upload/build wants to, not the /tmp folder that runtime stage uses
|
483
|
-
_, _, _, when
|
417
|
+
_, _, _, when = manager.builder._validate_config_checkpoints()
|
484
418
|
manager.builder.download_checkpoints(
|
485
419
|
stage=when, checkpoint_path_override=manager.builder.checkpoint_path)
|
486
420
|
if inside_container:
|
487
421
|
if not manager.is_docker_installed():
|
488
422
|
sys.exit(1)
|
489
|
-
|
490
|
-
manager.builder.create_dockerfile()
|
423
|
+
manager.builder.create_dockerfile()
|
491
424
|
image_tag = manager._docker_hash()
|
492
|
-
|
493
|
-
|
494
|
-
image_name = f"{model_id}:{image_tag}"
|
495
|
-
container_name = model_id
|
425
|
+
image_name = f"{manager.config['model']['id']}:{image_tag}"
|
426
|
+
container_name = manager.config['model']['id']
|
496
427
|
if not manager.docker_image_exists(image_name):
|
497
428
|
manager.build_docker_image(image_name=image_name)
|
498
429
|
try:
|
430
|
+
envs = {
|
431
|
+
'CLARIFAI_PAT': os.environ['CLARIFAI_PAT'],
|
432
|
+
'CLARIFAI_API_BASE': os.environ.get('CLARIFAI_API_BASE', 'https://api.clarifai.com')
|
433
|
+
}
|
499
434
|
if run_model_server:
|
500
435
|
manager.run_docker_container(
|
501
|
-
image_name=image_name, container_name=container_name, port=port)
|
436
|
+
image_name=image_name, container_name=container_name, port=port, env_vars=envs)
|
502
437
|
else:
|
503
|
-
manager.test_model_container(
|
438
|
+
manager.test_model_container(
|
439
|
+
image_name=image_name, container_name=container_name, env_vars=envs)
|
504
440
|
finally:
|
505
441
|
if manager.container_exists(container_name):
|
506
442
|
manager.stop_docker_container(container_name)
|
@@ -82,6 +82,8 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
82
82
|
ensure_urls_downloaded(request)
|
83
83
|
|
84
84
|
resp = self.model.predict_wrapper(request)
|
85
|
+
if resp.status.code != status_code_pb2.SUCCESS:
|
86
|
+
return service_pb2.RunnerItemOutput(multi_output_response=resp)
|
85
87
|
successes = [o.status.code == status_code_pb2.SUCCESS for o in resp.outputs]
|
86
88
|
if all(successes):
|
87
89
|
status = status_pb2.Status(
|
@@ -112,6 +114,9 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
112
114
|
ensure_urls_downloaded(request)
|
113
115
|
|
114
116
|
for resp in self.model.generate_wrapper(request):
|
117
|
+
if resp.status.code != status_code_pb2.SUCCESS:
|
118
|
+
yield service_pb2.RunnerItemOutput(multi_output_response=resp)
|
119
|
+
continue
|
115
120
|
successes = []
|
116
121
|
for output in resp.outputs:
|
117
122
|
if not output.HasField('status') or not output.status.code:
|
@@ -140,6 +145,9 @@ class ModelRunner(BaseRunner, HealthProbeRequestHandler):
|
|
140
145
|
) -> Iterator[service_pb2.RunnerItemOutput]:
|
141
146
|
# Call the generate() method the underlying model implements.
|
142
147
|
for resp in self.model.stream_wrapper(pmo_iterator(runner_item_iterator)):
|
148
|
+
if resp.status.code != status_code_pb2.SUCCESS:
|
149
|
+
yield service_pb2.RunnerItemOutput(multi_output_response=resp)
|
150
|
+
continue
|
143
151
|
successes = []
|
144
152
|
for output in resp.outputs:
|
145
153
|
if not output.HasField('status') or not output.status.code:
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import os
|
1
2
|
from itertools import tee
|
2
3
|
from typing import Iterator
|
3
4
|
|
@@ -6,6 +7,8 @@ from clarifai_grpc.grpc.api.status import status_code_pb2, status_pb2
|
|
6
7
|
|
7
8
|
from ..utils.url_fetcher import ensure_urls_downloaded
|
8
9
|
|
10
|
+
_RAISE_EXCEPTIONS = os.getenv("RAISE_EXCEPTIONS", "false").lower() in ("true", "1")
|
11
|
+
|
9
12
|
|
10
13
|
class ModelServicer(service_pb2_grpc.V2Servicer):
|
11
14
|
"""
|
@@ -33,6 +36,8 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
|
|
33
36
|
try:
|
34
37
|
return self.model.predict_wrapper(request)
|
35
38
|
except Exception as e:
|
39
|
+
if _RAISE_EXCEPTIONS:
|
40
|
+
raise
|
36
41
|
return service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
37
42
|
code=status_code_pb2.MODEL_PREDICTION_FAILED,
|
38
43
|
description="Failed",
|
@@ -50,8 +55,10 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
|
|
50
55
|
ensure_urls_downloaded(request)
|
51
56
|
|
52
57
|
try:
|
53
|
-
|
58
|
+
yield from self.model.generate_wrapper(request)
|
54
59
|
except Exception as e:
|
60
|
+
if _RAISE_EXCEPTIONS:
|
61
|
+
raise
|
55
62
|
yield service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
56
63
|
code=status_code_pb2.MODEL_PREDICTION_FAILED,
|
57
64
|
description="Failed",
|
@@ -74,8 +81,10 @@ class ModelServicer(service_pb2_grpc.V2Servicer):
|
|
74
81
|
ensure_urls_downloaded(req)
|
75
82
|
|
76
83
|
try:
|
77
|
-
|
84
|
+
yield from self.model.stream_wrapper(request_copy)
|
78
85
|
except Exception as e:
|
86
|
+
if _RAISE_EXCEPTIONS:
|
87
|
+
raise
|
79
88
|
yield service_pb2.MultiOutputResponse(status=status_pb2.Status(
|
80
89
|
code=status_code_pb2.MODEL_PREDICTION_FAILED,
|
81
90
|
description="Failed",
|