From 6d7c959e30a3f32a53a299699196cf59642e1b83 Mon Sep 17 00:00:00 2001 From: rnetser Date: Thu, 21 Nov 2024 14:53:19 +0200 Subject: [PATCH 1/7] Update model mesh deploymenet from ui rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../CLI/DSProjects/DSProjects.resource | 2 +- .../caikit_tgis_servingruntime_http.yaml | 2 -- .../ModelServer.resource | 8 +++++-- .../ODH/ODHDashboard/ODHModelServing.resource | 23 ++++++++++++++++--- .../1001__model_serving_modelmesh.robot | 8 +++---- .../1007__model_serving_llm_UI.robot | 2 +- ...0__model_serving_triton_on_modelmesh.robot | 4 ++-- 7 files changed, 34 insertions(+), 15 deletions(-) diff --git a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource index 7f9cab3e9..82eea3398 100644 --- a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource +++ b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource @@ -16,6 +16,6 @@ Delete All DS Projects With Name Like Log List of DS Projects to be deleted: @{dsp_list} console=yes FOR ${dsp_name} IN @{dsp_list} ${return_code}= Run And Return Rc - ... oc delete project ${dsp_name} + ... oc delete project ${dsp_name} --force Should Be Equal As Integers ${return_code} 0 msg=Error deleting DS Project ${dsp_name} END diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml index 4aabf4d0f..36aed7fd0 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml @@ -27,8 +27,6 @@ spec: value: /tmp/transformers_cache - name: RUNTIME_LOCAL_MODELS_DIR value: /mnt/models - - name: TRANSFORMERS_CACHE - value: /tmp/transformers_cache - name: RUNTIME_GRPC_ENABLED value: "false" - name: RUNTIME_HTTP_ENABLED diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index 4cf258c4c..b6a49212f 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -24,8 +24,9 @@ ${SERVING_MODEL_SERVERS_SIDE_MENU}= xpath=//span[text()='Models and model ser ${TOKEN_AUTH_CHECKBOX_XP}= xpath://input[@id="alt-form-checkbox-auth"] ${ADD_SERVICE_ACCOUNT_BUTTON}= xpath://button[text()='Add a service account'] ${SERVICE_ACCOUNT_INPUT}= xpath://input[@data-testid='service-account-form-name'] -${REPLICAS_COUNT_XP}= xpath=//input[@id='model-server-replicas'] +${REPLICAS_COUNT_XP}= xpath=//input[@aria-label='model server replicas number input'] ${PROJECT_SELECTOR_XP}= xpath://main[contains(@id, 'dashboard-page-main')]//*[@data-testid="project-selector-toggle"] +${DEPLOY_MULTI_MODEL_BTN}= //button[contains(@data-testid,"add-server-button")] *** Keywords *** @@ -39,8 +40,11 @@ Create Model Server ${existing_server}= Run Keyword And Return Status Wait Until Page Contains Element //button[.="${server_name}"] IF ${existing_server} Run Keyword And Return ... Log Model Server '${server_name}' already exists, reusing server console=True + ELSE + SeleniumLibrary.Click Button //button[@data-testid="multi-serving-select-button"] END - SeleniumLibrary.Click Button Add model server + SeleniumLibrary.Wait Until Page Contains Element ${DEPLOY_MULTI_MODEL_BTN} + SeleniumLibrary.Click Button ${DEPLOY_MULTI_MODEL_BTN} SeleniumLibrary.Wait Until Page Contains Element //span[.="Add model server"] Set Model Server Name ${server_name} Set Replicas Number With Buttons ${no_replicas} diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index b48743eed..2d2164000 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -516,9 +516,26 @@ Set Model Server Runtime [Documentation] Opens the Serving runtime dropdown in the deploy model modal window for models ... and select the given runtime [Arguments] ${runtime}=Caikit TGIS - Page Should Contain Element ${KSERVE_RUNTIME_DROPDOWN} - Click Element ${KSERVE_RUNTIME_DROPDOWN} - Click Element //span[contains(text(),"${runtime}")] + TRY + ${is_enabled}= Run Keyword And Return Status + ... Element Should Be Enabled xpath://button[@id="serving-runtime-template-selection"] + + IF ${is_enabled} + FOR ${retry_idx} IN RANGE 0 1+${retries} + Click Element xpath://button[@id="serving-runtime-template-selection"] + Page Should Contain Element xpath://span[contains(., "${runtime}")] + ${selected}= Run Keyword And Return Status + ... Click Element xpath://span[contains(., "${runtime}")] + IF ${selected}==${TRUE} BREAK + END + ELSE + Element Should Be Disabled id:serving-runtime-template-selection + ${text}= Get Text xpath://button[@id="serving-runtime-template-selection"]/span + Should Be True ${runtime} in ${text} + END + EXCEPT + Log framework ${runtime} does not appear to be supported by the chosen model server + END Get Kserve Inference Host Via UI [Documentation] Fetches the host of the model's URL from the Data Science Project UI diff --git a/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot b/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot index 5f1f85eb3..a2974987b 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot @@ -73,7 +73,7 @@ Verify Tensorflow Model Via UI # robocop: off=too-long-test-case,too-many-cal Recreate S3 Data Connection project_title=${PRJ_TITLE}-2268 dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${FALSE} server_name=${RUNTIME_NAME} existing_server=${TRUE} + Create Model Server token=${FALSE} server_name=${RUNTIME_NAME} existing_server=${FALSE} Serve Model project_name=${PRJ_TITLE}-2268 model_name=${MODEL_NAME} framework=tensorflow ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection ... model_path=inception_resnet_v2.pb @@ -102,7 +102,7 @@ Verify Secure Model Can Be Deployed In Same Project # robocop: off=too-long-t Recreate S3 Data Connection project_title=${PRJ_TITLE} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${TRUE} server_name=${SECURED_RUNTIME} existing_server=${TRUE} + Create Model Server token=${TRUE} server_name=${SECURED_RUNTIME} existing_server=${FALSE} Serve Model project_name=${PRJ_TITLE} model_name=${SECURED_MODEL} model_server=${SECURED_RUNTIME} ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection existing_model=${TRUE} ... framework=onnx model_path=mnist-8.onnx @@ -127,7 +127,7 @@ Test Inference With Token Authentication # robocop: off=too-long-test-case Recreate S3 Data Connection project_title=${SECOND_PROJECT} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${TRUE} server_name=${SECURED_RUNTIME} existing_server=${TRUE} + Create Model Server token=${TRUE} server_name=${SECURED_RUNTIME} existing_server=${FALSE} Serve Model project_name=${SECOND_PROJECT} model_name=${SECURED_MODEL} model_server=${SECURED_RUNTIME} ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection existing_model=${TRUE} ... framework=onnx model_path=mnist-8.onnx @@ -218,7 +218,7 @@ Create Openvino Models # robocop: off=too-many-calls-in-keyword Recreate S3 Data Connection project_title=${new_project} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${FALSE} server_name=${server_name} existing_server=${TRUE} + Create Model Server token=${FALSE} server_name=${server_name} existing_server=${FALSE} Serve Model project_name=${new_project} model_name=${model_name} framework=openvino_ir ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection ... model_path=openvino-example-model existing_model=${TRUE} diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot index 0c0a8faf3..baf3948d0 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot @@ -405,7 +405,7 @@ Verify User With Edit Permission Can Deploy Query And Delete A LLM # robocop: ${test_namespace}= Set Variable ${TEST_NS}-edit-permission ${flan_model_name}= Set Variable flan-t5-small-caikit Move To Tab Permissions - Assign Edit Permissions To User ${TEST_USER_3.USERNAME} + Assign Contributor Permissions To User ${TEST_USER_3.USERNAME} Move To Tab Overview Logout From RHODS Dashboard Login To RHODS Dashboard ${TEST_USER_3.USERNAME} ${TEST_USER_3.PASSWORD} ${TEST_USER_3.AUTH_TYPE} diff --git a/ods_ci/tests/Tests/1000__model_serving/1010__model_serving_triton_on_modelmesh/1010__model_serving_triton_on_modelmesh.robot b/ods_ci/tests/Tests/1000__model_serving/1010__model_serving_triton_on_modelmesh/1010__model_serving_triton_on_modelmesh.robot index 7f2c35953..9047cba35 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1010__model_serving_triton_on_modelmesh/1010__model_serving_triton_on_modelmesh.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1010__model_serving_triton_on_modelmesh/1010__model_serving_triton_on_modelmesh.robot @@ -54,7 +54,7 @@ Test Onnx Model Rest Inference Via UI (Triton on Modelmesh) Recreate S3 Data Connection project_title=${PRJ_TITLE} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${TRUE} runtime=${ONNX_RUNTIME_NAME} server_name=${ONNX_RUNTIME_NAME} existing_server=${TRUE} + Create Model Server token=${TRUE} runtime=${ONNX_RUNTIME_NAME} server_name=${ONNX_RUNTIME_NAME} existing_server=${FALSE} Sleep 10s Serve Model project_name=${PRJ_TITLE} model_name=${ONNX_MODEL_NAME} framework=onnx - 1 ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection @@ -130,7 +130,7 @@ Test Tensorflow Model Rest Inference Via UI (Triton on Modelmesh) Recreate S3 Data Connection project_title=${PRJ_TITLE} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 - Create Model Server token=${TRUE} runtime=${ONNX_RUNTIME_NAME} server_name=${ONNX_RUNTIME_NAME} existing_server=${TRUE} + Create Model Server token=${TRUE} runtime=${ONNX_RUNTIME_NAME} server_name=${ONNX_RUNTIME_NAME} existing_server=${FALSE} Sleep 10s Serve Model project_name=${PRJ_TITLE} model_name=${TENSORFLOW_MODEL_NAME} framework=tensorflow - 2 ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection From 7e434751e340906dd5c2ce75d69372cdf52694de Mon Sep 17 00:00:00 2001 From: rnetser Date: Thu, 21 Nov 2024 19:47:31 +0200 Subject: [PATCH 2/7] add raw and serverless rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../1007__model_serving_llm.robot | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot index cd0fe6ef1..c4a0c4aea 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot @@ -110,6 +110,47 @@ Verify User Can Deploy Multiple Models In The Same Namespace # robocop: off=t ... n_times=10 namespace=${test_namespace} [Teardown] Clean Up Test Project test_ns=${test_namespace} ... isvc_names=${models_names} wait_prj_deletion=${FALSE} + ... +Verify User Can Deploy Raw and Serverless Models In The Same Namespace # robocop: off=too-long-test-case,too-many-calls-in-test-case,line-too-long + [Documentation] Checks if user can deploy and query multiple models in the same namespace + [Tags] Sanity ODS-2371 + [Setup] Set Project And Runtime namespace=${TEST_NS}-multisame protocol=http + ${test_namespace}= Set Variable ${TEST_NS}-multisame + ${model_one_name}= Set Variable bloom-560m-caikit + ${model_two_name}= Set Variable flan-t5-small-caikit + ${models_names}= Create List ${model_one_name} ${model_two_name} + Compile Inference Service YAML isvc_name=${model_one_name} + ... sa_name=${DEFAULT_BUCKET_SA_NAME} + ... model_storage_uri=${BLOOM_STORAGE_URI} + ... kserve_mode=Serverless + Deploy Model Via CLI isvc_filepath=${INFERENCESERVICE_FILLED_FILEPATH} + ... namespace=${test_namespace} + Compile Inference Service YAML isvc_name=${model_two_name} + ... sa_name=${DEFAULT_BUCKET_SA_NAME} + ... model_storage_uri=${FLAN_STORAGE_URI} + ... kserve_mode=RawDeployment + Deploy Model Via CLI isvc_filepath=${INFERENCESERVICE_FILLED_FILEPATH} + ... namespace=${test_namespace} + Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_one_name} + ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} + Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_two_name} + ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} + Query Model Multiple Times model_name=${model_one_name} + ... n_times=5 namespace=${test_namespace} + ... protocol=http + Query Model Multiple Times model_name=${model_two_name} + ... n_times=10 namespace=${test_namespace} + ... protocol=http + ... port_forwarding=TRUE + Query Model Multiple Times model_name=${model_one_name} + ... n_times=5 namespace=${test_namespace} + ... protocol=http + Query Model Multiple Times model_name=${model_two_name} + ... n_times=10 namespace=${test_namespace} + ... protocol=http + ... port_forwarding=TRUE + [Teardown] Clean Up Test Project test_ns=${test_namespace} + ... isvc_names=${models_names} wait_prj_deletion=${FALSE} Verify User Can Deploy Multiple Models In Different Namespaces # robocop: off=too-long-test-case,too-many-calls-in-test-case,line-too-long [Documentation] Checks if user can deploy and query multiple models in the different namespaces From 9c24c8a1eb530829ded16072b33c91c8970a9ce5 Mon Sep 17 00:00:00 2001 From: rnetser Date: Thu, 21 Nov 2024 19:52:55 +0200 Subject: [PATCH 3/7] add raw and serverless rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../1007__model_serving_llm/1007__model_serving_llm.robot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot index c4a0c4aea..3b8ef8209 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot @@ -141,14 +141,14 @@ Verify User Can Deploy Raw and Serverless Models In The Same Namespace # robo Query Model Multiple Times model_name=${model_two_name} ... n_times=10 namespace=${test_namespace} ... protocol=http - ... port_forwarding=TRUE + ... port_forwarding=${TRUE} Query Model Multiple Times model_name=${model_one_name} ... n_times=5 namespace=${test_namespace} ... protocol=http Query Model Multiple Times model_name=${model_two_name} ... n_times=10 namespace=${test_namespace} ... protocol=http - ... port_forwarding=TRUE + ... port_forwarding=${TRUE} [Teardown] Clean Up Test Project test_ns=${test_namespace} ... isvc_names=${models_names} wait_prj_deletion=${FALSE} From 99b0b8526bcb9d9093cd780c64f188d3b323b08e Mon Sep 17 00:00:00 2001 From: rnetser Date: Sun, 24 Nov 2024 17:02:01 +0200 Subject: [PATCH 4/7] fix tests rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../CLI/ModelServing/modelmesh.resource | 1 + .../1001__model_serving_modelmesh.robot | 38 ++++++++++--------- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource b/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource index 2fea01b1c..94fdb805b 100644 --- a/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource +++ b/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource @@ -33,6 +33,7 @@ Verify Openvino Deployment [Arguments] ${runtime_name} ${project_name}=${PRJ_TITLE} ${num_replicas}=1 ${pod_selector}= Set Variable name=modelmesh-serving-${runtime_name} @{ovms} = Oc Get kind=Pod namespace=${project_name} label_selector=${pod_selector} + Log message=${ovms} console=True ${containerNames} = Create List rest-proxy oauth-proxy ovms ovms-adapter mm ${pass}= Run Keyword And Return Status Verify Deployment ${ovms} ${num_replicas} 5 ${containerNames} IF not ${pass} diff --git a/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot b/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot index a2974987b..38e600b97 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1001__model_serving_modelmesh.robot @@ -69,26 +69,27 @@ Verify Tensorflow Model Via UI # robocop: off=too-long-test-case,too-many-cal [Tags] Sanity ... ODS-2268 Open Data Science Projects Home Page - Create Data Science Project title=${PRJ_TITLE}-2268 description=${PRJ_DESCRIPTION} - Recreate S3 Data Connection project_title=${PRJ_TITLE}-2268 dc_name=model-serving-connection + ${namespace}= Set Variable ${PRJ_TITLE}-2268 + Create Data Science Project title=${namespace} description=${PRJ_DESCRIPTION} + Recreate S3 Data Connection project_title=${namespace} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 Create Model Server token=${FALSE} server_name=${RUNTIME_NAME} existing_server=${FALSE} - Serve Model project_name=${PRJ_TITLE}-2268 model_name=${MODEL_NAME} framework=tensorflow + Serve Model project_name=${namespace} model_name=${MODEL_NAME} framework=tensorflow ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection ... model_path=inception_resnet_v2.pb ${runtime_pod_name}= Replace String Using Regexp string=${RUNTIME_NAME} pattern=\\s replace_with=- ${runtime_pod_name}= Convert To Lower Case ${runtime_pod_name} - Wait Until Keyword Succeeds 5 min 10 sec Verify Openvino Deployment runtime_name=${RUNTIME_POD_NAME} - Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service + Wait Until Keyword Succeeds 5 min 10 sec Verify Openvino Deployment runtime_name=${RUNTIME_POD_NAME} project_name=${namespace} + Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service project_name=${namespace} Verify Model Status ${MODEL_NAME} success Set Suite Variable ${MODEL_CREATED} ${TRUE} ${url}= Get Model Route Via UI ${MODEL_NAME} - ${status_code} ${response_text}= Send Random Inference Request endpoint=${url} name=input + ${status_code} ${response_text}= Send Random Inference Request endpoint=${url} name=input:0 ... shape={"B": 1, "H": 299, "W": 299, "C": 3} no_requests=1 Should Be Equal As Strings ${status_code} 200 [Teardown] Run Keywords Run Keyword If Test Failed Get Modelmesh Events And Logs - ... server_name=${RUNTIME_NAME} project_title=${PRJ_TITLE}-2869 + ... server_name=${RUNTIME_NAME} project_title=${namespace} ... AND ... Model Serving Test Teardown @@ -113,7 +114,7 @@ Verify Secure Model Can Be Deployed In Same Project # robocop: off=too-long-t Verify Model Status ${SECURED_MODEL} success Set Suite Variable ${MODEL_CREATED} ${TRUE} [Teardown] Run Keywords Run Keyword If Test Failed Get Modelmesh Events And Logs - ... server_name=${RUNTIME_NAME} project_title=${PRJ_TITLE}-2869 + ... server_name=${RUNTIME_NAME} project_title=${PRJ_TITLE} ... AND ... Model Serving Test Teardown @@ -139,7 +140,7 @@ Test Inference With Token Authentication # robocop: off=too-long-test-case ${out}= Get Model Inference ${SECURED_MODEL} ${INFERENCE_INPUT} token_auth=${FALSE} Should Contain ${out} [Teardown] Run Keywords Run Keyword If Test Failed Get Modelmesh Events And Logs - ... server_name=${RUNTIME_NAME} project_title=${PRJ_TITLE}-2869 + ... server_name=${RUNTIME_NAME} project_title=${SECOND_PROJECT} ... AND ... Model Serving Test Teardown @@ -157,37 +158,38 @@ Verify Editing Existing Model Deployment # robocop: off=too-long-test-case,to [Tags] Tier1 ... RHOAIENG-2869 Open Data Science Projects Home Page - Create Data Science Project title=${PRJ_TITLE}-2869 description=${PRJ_DESCRIPTION} - Recreate S3 Data Connection project_title=${PRJ_TITLE}-2869 dc_name=model-serving-connection + ${namespace}= Set Variable ${PRJ_TITLE}-2869 + Create Data Science Project title=${namespace} description=${PRJ_DESCRIPTION} + Recreate S3 Data Connection project_title=${namespace} dc_name=model-serving-connection ... aws_access_key=${S3.AWS_ACCESS_KEY_ID} aws_secret_access=${S3.AWS_SECRET_ACCESS_KEY} ... aws_bucket_name=ods-ci-s3 Create Model Server token=${FALSE} server_name=${RUNTIME_NAME} existing_server=${TRUE} - Serve Model project_name=${PRJ_TITLE}-2869 model_name=${MODEL_NAME} framework=tensorflow + Serve Model project_name=${namespace} model_name=${MODEL_NAME} framework=tensorflow ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection ... model_path=inception_resnet_v2.pb ${runtime_pod_name}= Replace String Using Regexp string=${RUNTIME_NAME} pattern=\\s replace_with=- ${runtime_pod_name}= Convert To Lower Case ${runtime_pod_name} - Wait Until Keyword Succeeds 5 min 10 sec Verify Openvino Deployment runtime_name=${RUNTIME_POD_NAME} - Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service + Wait Until Keyword Succeeds 5 min 10 sec Verify Openvino Deployment runtime_name=${RUNTIME_POD_NAME} project_name=${namespace} + Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service project_name=${namespace} Verify Model Status ${MODEL_NAME} success Set Suite Variable ${MODEL_CREATED} ${TRUE} ${url}= Get Model Route Via UI ${MODEL_NAME} ${status_code} ${response_text}= Send Random Inference Request endpoint=${url} name=input ... shape={"B": 1, "H": 299, "W": 299, "C": 3} no_requests=1 Should Be Equal As Strings ${status_code} 200 - Serve Model project_name=${PRJ_TITLE}-2869 model_name=${MODEL_NAME} framework=openvino_ir + Serve Model project_name=${namespace} model_name=${MODEL_NAME} framework=openvino_ir ... existing_data_connection=${TRUE} data_connection_name=model-serving-connection ... model_path=openvino-example-model existing_model=${TRUE} ${runtime_pod_name}= Replace String Using Regexp string=${RUNTIME_NAME} pattern=\\s replace_with=- ${runtime_pod_name}= Convert To Lower Case ${runtime_pod_name} Wait Until Keyword Succeeds 5 min 10 sec Verify Openvino Deployment runtime_name=${runtime_pod_name} - ... project_name=${PRJ_TITLE}-2869 - Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service ${PRJ_TITLE}-2869 + ... project_name=${namespace} + Wait Until Keyword Succeeds 5 min 10 sec Verify Serving Service ${namespace} Verify Model Status ${MODEL_NAME} success Run Keyword And Continue On Failure Verify Model Inference ${MODEL_NAME} ${INFERENCE_INPUT_OPENVINO} ... ${EXPECTED_INFERENCE_OUTPUT_OPENVINO} token_auth=${FALSE} [Teardown] Run Keywords Run Keyword If Test Failed Get Modelmesh Events And Logs - ... server_name=${RUNTIME_NAME} project_title=${PRJ_TITLE}-2869 + ... server_name=${RUNTIME_NAME} project_title=${namespace} ... AND ... Model Serving Test Teardown From 17158de453c5fc25f0893e515afb5cab874a4086 Mon Sep 17 00:00:00 2001 From: rnetser Date: Sun, 24 Nov 2024 18:41:45 +0200 Subject: [PATCH 5/7] fix tests rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../ODHDashboard/ODHDataScienceProject/ModelServer.resource | 2 +- .../Resources/Page/ODH/ODHDashboard/ODHModelServing.resource | 4 ++-- .../1007__model_serving_llm/1007__model_serving_llm_UI.robot | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource index b6a49212f..8badfbdbb 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHDataScienceProject/ModelServer.resource @@ -225,7 +225,7 @@ Get Model Serving Access Token via UI SeleniumLibrary.Wait Until Page Contains Element xpath://td[@data-label="Tokens"]/button SeleniumLibrary.Click Element xpath://td[@data-label="Tokens"]/button ${token}= SeleniumLibrary.Get Element Attribute - ... xpath://div[.="${service_account_name} "]/../../td[@data-label="Token Secret"]//span/input value + ... xpath://div[.="${service_account_name}"]/../../td[@data-label="Token Secret"]//span/input value END RETURN ${token} diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index 2d2164000..af3ddc9eb 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -226,7 +226,7 @@ Get Model Route Via UI [Arguments] ${model_name} # TODO: Open model serving home page if needed? # Click on Inference Endpoints link - ${endpoint_link}= Set Variable //a[@data-testid="metrics-link-test-model" and text()="${model_name}"]/ancestor::tr//td//button[@data-testid="internal-external-service-button"] + ${endpoint_link}= Set Variable //a[contains(@data-testid, 'metrics-link')][text() = '${model_name}']/ancestor::tr//td//button[@data-testid="internal-external-service-button"] SeleniumLibrary.Wait Until Page Contains Element ${endpoint_link} SeleniumLibrary.Click Button ${endpoint_link} # Get the external URL @@ -515,7 +515,7 @@ Deploy Kserve Model Via UI #robocop: disable Set Model Server Runtime [Documentation] Opens the Serving runtime dropdown in the deploy model modal window for models ... and select the given runtime - [Arguments] ${runtime}=Caikit TGIS + [Arguments] ${runtime}=Caikit TGIS ${retries}=1 TRY ${is_enabled}= Run Keyword And Return Status ... Element Should Be Enabled xpath://button[@id="serving-runtime-template-selection"] diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot index baf3948d0..a36afac53 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_UI.robot @@ -61,7 +61,7 @@ Verify User Can Deploy Multiple Models In The Same Namespace Using The UI # r Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_one_name} ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} Deploy Kserve Model Via UI ${model_two_name} serving_runtime=Caikit TGIS data_connection=kserve-connection - ... path=flan-t5-small/${model_two_name} + ... path=flan-t5-small/${model_two_name} existing_server=${TRUE} Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_two_name} ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} Query Model Multiple Times inference_type=all-tokens model_name=${model_one_name} From 42b2044ebcaee40af0449efa91dcc8c070b31fc9 Mon Sep 17 00:00:00 2001 From: rnetser Date: Sun, 24 Nov 2024 18:56:26 +0200 Subject: [PATCH 6/7] fix tests rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource | 2 +- ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource index 82eea3398..7f9cab3e9 100644 --- a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource +++ b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource @@ -16,6 +16,6 @@ Delete All DS Projects With Name Like Log List of DS Projects to be deleted: @{dsp_list} console=yes FOR ${dsp_name} IN @{dsp_list} ${return_code}= Run And Return Rc - ... oc delete project ${dsp_name} --force + ... oc delete project ${dsp_name} Should Be Equal As Integers ${return_code} 0 msg=Error deleting DS Project ${dsp_name} END diff --git a/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource b/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource index 94fdb805b..2fea01b1c 100644 --- a/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource +++ b/ods_ci/tests/Resources/CLI/ModelServing/modelmesh.resource @@ -33,7 +33,6 @@ Verify Openvino Deployment [Arguments] ${runtime_name} ${project_name}=${PRJ_TITLE} ${num_replicas}=1 ${pod_selector}= Set Variable name=modelmesh-serving-${runtime_name} @{ovms} = Oc Get kind=Pod namespace=${project_name} label_selector=${pod_selector} - Log message=${ovms} console=True ${containerNames} = Create List rest-proxy oauth-proxy ovms ovms-adapter mm ${pass}= Run Keyword And Return Status Verify Deployment ${ovms} ${num_replicas} 5 ${containerNames} IF not ${pass} From 3a024e615e98d2f59887c75bdddd751e8b5466ae Mon Sep 17 00:00:00 2001 From: rnetser Date: Mon, 25 Nov 2024 17:12:06 +0200 Subject: [PATCH 7/7] update images rh-pre-commit.version: 2.3.2 rh-pre-commit.check-secrets: ENABLED --- .../CLI/DSProjects/DSProjects.resource | 2 +- .../caikit_tgis_servingruntime_grpc.yaml | 4 +- .../caikit_tgis_servingruntime_http.yaml | 4 +- .../ovms_servingruntime_http.yaml | 2 +- .../tgis_servingruntime_grpc.yaml | 2 +- .../vllm_servingruntime_http.yaml | 2 +- .../Files/llm/vllm/vllm_servingruntime.yaml | 2 +- .../ODH/ODHDashboard/ODHModelServing.resource | 2 +- .../1005__model_serving_ovms_on_kserve.robot | 2 +- .../1007__model_serving_llm.robot | 40 ------------------- .../1007__model_serving_llm_models.robot | 4 +- 11 files changed, 13 insertions(+), 53 deletions(-) diff --git a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource index 7f9cab3e9..82eea3398 100644 --- a/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource +++ b/ods_ci/tests/Resources/CLI/DSProjects/DSProjects.resource @@ -16,6 +16,6 @@ Delete All DS Projects With Name Like Log List of DS Projects to be deleted: @{dsp_list} console=yes FOR ${dsp_name} IN @{dsp_list} ${return_code}= Run And Return Rc - ... oc delete project ${dsp_name} + ... oc delete project ${dsp_name} --force Should Be Equal As Integers ${return_code} 0 msg=Error deleting DS Project ${dsp_name} END diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_grpc.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_grpc.yaml index 4ffee3c66..23a954679 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_grpc.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_grpc.yaml @@ -10,7 +10,7 @@ spec: name: caikit containers: - name: kserve-container - image: quay.io/modh/text-generation-inference@sha256:28a15bf3dce43753a78e7b1b89ac40ef54dd4e2f1c103667daee009725cc2562 + image: quay.io/modh/text-generation-inference@sha256:bb36bb41cc744a8ff94d537f74c228e8b4e17c2468c50ccd89fc21ecc3940a70 command: ["text-generation-launcher"] args: ["--model-name=/mnt/models/artifacts/"] env: @@ -23,7 +23,7 @@ spec: ## Note: cannot add readiness/liveness probes to this container because knative will refuse them. # multi-container probing will be available after https://github.com/knative/serving/pull/14853 is merged - name: transformer-container - image: quay.io/modh/caikit-tgis-serving@sha256:5350ac5f5883b7072296edf8583279ffe2b37c737d59f999c26f5f03bb7889bf + image: quay.io/modh/caikit-tgis-serving@sha256:fe0d1f1233d0b056ca7c690f765b20611e20837465674998e3d293df9b95e838 env: - name: RUNTIME_LOCAL_MODELS_DIR value: /mnt/models diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml index 36aed7fd0..4ae0c1d6c 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/caikit_tgis_servingruntime_http.yaml @@ -10,7 +10,7 @@ spec: name: caikit containers: - name: kserve-container - image: quay.io/modh/text-generation-inference@sha256:28a15bf3dce43753a78e7b1b89ac40ef54dd4e2f1c103667daee009725cc2562 + image: quay.io/modh/text-generation-inference@sha256:bb36bb41cc744a8ff94d537f74c228e8b4e17c2468c50ccd89fc21ecc3940a70 command: ["text-generation-launcher"] args: ["--model-name=/mnt/models/artifacts/"] env: @@ -21,7 +21,7 @@ spec: # cpu: 8 # memory: 16Gi - name: transformer-container - image: quay.io/modh/caikit-tgis-serving@sha256:5350ac5f5883b7072296edf8583279ffe2b37c737d59f999c26f5f03bb7889bf + image: quay.io/modh/caikit-tgis-serving@sha256:fe0d1f1233d0b056ca7c690f765b20611e20837465674998e3d293df9b95e838 env: - name: TRANSFORMERS_CACHE value: /tmp/transformers_cache diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/ovms_servingruntime_http.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/ovms_servingruntime_http.yaml index 348b3f7e2..30476ca1b 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/ovms_servingruntime_http.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/ovms_servingruntime_http.yaml @@ -17,7 +17,7 @@ spec: - --rest_bind_address=0.0.0.0 - --target_device=AUTO - --metrics_enable - image: quay.io/modh/openvino_model_server@sha256:9086c1ba1ba30d358194c534f0563923aab02d03954e43e9f3647136b44a5daf + image: quay.io/modh/openvino_model_server@sha256:f1140e9d987580d1aab1ccc62519b48b1d2673308b2db496e9e505e3be788d9f name: kserve-container ports: - containerPort: 8888 diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/tgis_servingruntime_grpc.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/tgis_servingruntime_grpc.yaml index 4d491989e..586ab4190 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/tgis_servingruntime_grpc.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/tgis_servingruntime_grpc.yaml @@ -9,7 +9,7 @@ spec: name: pytorch containers: - name: kserve-container - image: quay.io/modh/text-generation-inference@sha256:28a15bf3dce43753a78e7b1b89ac40ef54dd4e2f1c103667daee009725cc2562 + image: quay.io/modh/text-generation-inference@sha256:bb36bb41cc744a8ff94d537f74c228e8b4e17c2468c50ccd89fc21ecc3940a70 command: ["text-generation-launcher"] args: - "--model-name=/mnt/models/" diff --git a/ods_ci/tests/Resources/Files/llm/serving_runtimes/vllm_servingruntime_http.yaml b/ods_ci/tests/Resources/Files/llm/serving_runtimes/vllm_servingruntime_http.yaml index db54dfdcf..4369e98fd 100644 --- a/ods_ci/tests/Resources/Files/llm/serving_runtimes/vllm_servingruntime_http.yaml +++ b/ods_ci/tests/Resources/Files/llm/serving_runtimes/vllm_servingruntime_http.yaml @@ -12,7 +12,7 @@ spec: - '--served-model-name={{.Name}}' - '--distributed-executor-backend=mp' - '--chat-template=/app/data/template/template_chatml.jinja' - image: quay.io/modh/vllm@sha256:167aa05982214c3941afbdde7c5aff6f81040193a0db1dc06a5ad16af0a8780e + image: quay.io/modh/vllm@sha256:c86ff1e89c86bc9821b75d7f2bbc170b3c13e3ccf538bf543b1110f23e056316 name: kserve-container command: - python3 diff --git a/ods_ci/tests/Resources/Files/llm/vllm/vllm_servingruntime.yaml b/ods_ci/tests/Resources/Files/llm/vllm/vllm_servingruntime.yaml index 9afb08dc5..4bbbbb41d 100644 --- a/ods_ci/tests/Resources/Files/llm/vllm/vllm_servingruntime.yaml +++ b/ods_ci/tests/Resources/Files/llm/vllm/vllm_servingruntime.yaml @@ -19,7 +19,7 @@ spec: containers: - name: kserve-container #image: kserve/vllmserver:latest - image: quay.io/modh/vllm@sha256:a2593489ee20b8e5f01358a9aa984fc90618c6335f4c8e138e94ce635ffb112a + image: quay.io/modh/vllm@sha256:c86ff1e89c86bc9821b75d7f2bbc170b3c13e3ccf538bf543b1110f23e056316 startupProbe: httpGet: port: 8080 diff --git a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource index af3ddc9eb..6891df2a1 100644 --- a/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource +++ b/ods_ci/tests/Resources/Page/ODH/ODHDashboard/ODHModelServing.resource @@ -206,7 +206,7 @@ Verify Model Status Delete Model Via UI [Documentation] Deletes a deployed model from the Model Serving page in the dashboard. [Arguments] ${model_name} - ${model_row_xpath}= Set Variable xpath://tr[starts-with(., '${model_name} ')] + ${model_row_xpath}= Set Variable xpath://tr[starts-with(., '${model_name}')] Wait Until Element Is Visible ${model_row_xpath} ODHDashboard.Click Action From Actions Menu item_title=${model_name} action=Delete Wait Until Page Contains Element xpath://input[@id="delete-modal-input"] diff --git a/ods_ci/tests/Tests/1000__model_serving/1005__model_serving_ovms_on_kserve.robot b/ods_ci/tests/Tests/1000__model_serving/1005__model_serving_ovms_on_kserve.robot index 1eaf6f2f2..8261fb470 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1005__model_serving_ovms_on_kserve.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1005__model_serving_ovms_on_kserve.robot @@ -64,7 +64,7 @@ Verify Tensorflow Model Via UI (OVMS on Kserve) # robocop: off=too-long-test- Verify Model Status ${MODEL_NAME} success Set Suite Variable ${MODEL_CREATED} ${TRUE} ${url}= Get Model Route Via UI ${MODEL_NAME} - ${status_code} ${response_text}= Send Random Inference Request endpoint=${url} name=input + ${status_code} ${response_text}= Send Random Inference Request endpoint=${url} name=input:0 ... shape={"B": 1, "H": 299, "W": 299, "C": 3} no_requests=1 Should Be Equal As Strings ${status_code} 200 [Teardown] Run Keywords Clean All Models Of Current User AND diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot index 3b8ef8209..d3bc94b04 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm.robot @@ -111,46 +111,6 @@ Verify User Can Deploy Multiple Models In The Same Namespace # robocop: off=t [Teardown] Clean Up Test Project test_ns=${test_namespace} ... isvc_names=${models_names} wait_prj_deletion=${FALSE} ... -Verify User Can Deploy Raw and Serverless Models In The Same Namespace # robocop: off=too-long-test-case,too-many-calls-in-test-case,line-too-long - [Documentation] Checks if user can deploy and query multiple models in the same namespace - [Tags] Sanity ODS-2371 - [Setup] Set Project And Runtime namespace=${TEST_NS}-multisame protocol=http - ${test_namespace}= Set Variable ${TEST_NS}-multisame - ${model_one_name}= Set Variable bloom-560m-caikit - ${model_two_name}= Set Variable flan-t5-small-caikit - ${models_names}= Create List ${model_one_name} ${model_two_name} - Compile Inference Service YAML isvc_name=${model_one_name} - ... sa_name=${DEFAULT_BUCKET_SA_NAME} - ... model_storage_uri=${BLOOM_STORAGE_URI} - ... kserve_mode=Serverless - Deploy Model Via CLI isvc_filepath=${INFERENCESERVICE_FILLED_FILEPATH} - ... namespace=${test_namespace} - Compile Inference Service YAML isvc_name=${model_two_name} - ... sa_name=${DEFAULT_BUCKET_SA_NAME} - ... model_storage_uri=${FLAN_STORAGE_URI} - ... kserve_mode=RawDeployment - Deploy Model Via CLI isvc_filepath=${INFERENCESERVICE_FILLED_FILEPATH} - ... namespace=${test_namespace} - Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_one_name} - ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} - Wait For Model KServe Deployment To Be Ready label_selector=serving.kserve.io/inferenceservice=${model_two_name} - ... namespace=${test_namespace} runtime=${CAIKIT_TGIS_RUNTIME_NAME} - Query Model Multiple Times model_name=${model_one_name} - ... n_times=5 namespace=${test_namespace} - ... protocol=http - Query Model Multiple Times model_name=${model_two_name} - ... n_times=10 namespace=${test_namespace} - ... protocol=http - ... port_forwarding=${TRUE} - Query Model Multiple Times model_name=${model_one_name} - ... n_times=5 namespace=${test_namespace} - ... protocol=http - Query Model Multiple Times model_name=${model_two_name} - ... n_times=10 namespace=${test_namespace} - ... protocol=http - ... port_forwarding=${TRUE} - [Teardown] Clean Up Test Project test_ns=${test_namespace} - ... isvc_names=${models_names} wait_prj_deletion=${FALSE} Verify User Can Deploy Multiple Models In Different Namespaces # robocop: off=too-long-test-case,too-many-calls-in-test-case,line-too-long [Documentation] Checks if user can deploy and query multiple models in the different namespaces diff --git a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_models.robot b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_models.robot index e2bbda30e..1ce4f832d 100644 --- a/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_models.robot +++ b/ods_ci/tests/Tests/1000__model_serving/1007__model_serving_llm/1007__model_serving_llm_models.robot @@ -1347,9 +1347,9 @@ Set Runtime Image [Arguments] ${gpu_type} IF "${RUNTIME_IMAGE}" == "${EMPTY}" IF "${gpu_type}" == "nvidia" - Set Test Variable ${runtime_image} quay.io/modh/vllm@sha256:167aa05982214c3941afbdde7c5aff6f81040193a0db1dc06a5ad16af0a8780e + Set Test Variable ${runtime_image} quay.io/modh/vllm@sha256:c86ff1e89c86bc9821b75d7f2bbc170b3c13e3ccf538bf543b1110f23e056316 ELSE IF "${gpu_type}" == "amd" - Set Test Variable ${runtime_image} quay.io/modh/vllm@sha256:1db9fc11f3cac723dee8c4de71fd36aafc94c6ff4d9f51cb785a6f4461f027af + Set Test Variable ${runtime_image} quay.io/modh/vllm@sha256:10f09eeca822ebe77e127aad7eca2571f859a5536a6023a1baffc6764bcadc6e ELSE FAIL msg=Provided GPU type is not yet supported. Only nvidia and amd gpu type are supported END