Skip to content

Commit d6fe23e

Browse files
authored
[TT-3003] added model prediction retries for MODEL_DEPLOYING status (#4)
* fixed errors and added caching * added model prediction retries for MODEL_DEPLOYING status
1 parent 77ac3c9 commit d6fe23e

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

pages/llm_comparison.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,21 @@
66
import pandas as pd
77
import requests
88
import streamlit as st
9-
from clarifai.client.app import \
10-
App # New import to support list_model function
9+
from clarifai.client.app import App # New import to support list_model function
1110
from clarifai.client.auth import V2Stub, create_stub
1211
from clarifai.client.auth.helper import ClarifaiAuthHelper
1312
from clarifai.client.input import Inputs
14-
from clarifai.client.model import \
15-
Model # New import to support list_model function
13+
from clarifai.client.model import Model # New import to support list_model function
1614
from clarifai.modules.css import ClarifaiStreamlitCSS
1715
from clarifai_grpc.grpc.api import resources_pb2, service_pb2
1816
from clarifai_grpc.grpc.api.status import status_code_pb2
1917
from google.protobuf import json_format
2018
from google.protobuf.json_format import MessageToDict
2119
from google.protobuf.struct_pb2 import Struct
2220
from typing import Dict
21+
from clarifai.utils.misc import BackoffIterator
22+
import time
23+
2324

2425
st.set_page_config(layout="wide")
2526
ClarifaiStreamlitCSS.insert_default_css(st)
@@ -268,17 +269,29 @@ def delete_workflow(workflow_id: str):
268269
@st.cache_resource
269270
@st.cache_data
270271
def run_workflow(input_text, workflow):
271-
response = stub.PostWorkflowResults(
272-
service_pb2.PostWorkflowResultsRequest(
273-
user_app_id=userDataObject,
274-
workflow_id=workflow.id,
275-
inputs=[
276-
resources_pb2.Input(
277-
data=resources_pb2.Data(text=resources_pb2.Text(raw=input_text,),),),
278-
],
279-
))
280-
if response.status.code != status_code_pb2.SUCCESS:
281-
raise Exception("PostWorkflowResults request failed: %r" % response)
272+
start_time = time.time()
273+
backoff_iterator = BackoffIterator()
274+
while True:
275+
response = stub.PostWorkflowResults(
276+
service_pb2.PostWorkflowResultsRequest(
277+
user_app_id=userDataObject,
278+
workflow_id=workflow.id,
279+
inputs=[
280+
resources_pb2.Input(
281+
data=resources_pb2.Data(text=resources_pb2.Text(raw=input_text,),),),
282+
],
283+
))
284+
285+
if response.status.code == status_code_pb2.MODEL_DEPLOYING and \
286+
time.time() - start_time < 60 * 10: # 10 minutes
287+
st.info(f"Model is still deploying, please wait...")
288+
time.sleep(next(backoff_iterator))
289+
continue
290+
291+
if response.status.code != status_code_pb2.SUCCESS:
292+
raise Exception(f"PostWorkflowResults failed with response {response.status!r}")
293+
else:
294+
break
282295

283296
if DEBUG:
284297
st.json(json_format.MessageToDict(response, preserving_proto_field_name=True))

0 commit comments

Comments
 (0)