From d307f26492fcfadebfca88b353007a07c313cd51 Mon Sep 17 00:00:00 2001 From: felix0496 Date: Thu, 24 Nov 2022 09:53:18 +0100 Subject: [PATCH 1/4] save embedder as pickle --- controller.py | 9 +++++++++ start | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/controller.py b/controller.py index 3e5c9e1..b61834e 100644 --- a/controller.py +++ b/controller.py @@ -10,6 +10,7 @@ notification, organization, ) +import pickle import torch import traceback from requests.exceptions import HTTPError @@ -449,6 +450,14 @@ def run_encoding( request_util.post_embedding_to_neural_search( request.project_id, embedding_id ) + pickle_path = os.path.join( + "/inference", request.project_id, f"embedder-{embedding_id}.pkl" + ) + if not os.path.exists(pickle_path): + os.makedirs(os.path.dirname(pickle_path), exist_ok=True) + with open(pickle_path, "wb") as f: + pickle.dump(embedder, f) + upload_embedding_as_file(request.project_id, embedding_id) embedding.update_embedding_state_finished( request.project_id, diff --git a/start b/start index 3aedfd3..fdece59 100755 --- a/start +++ b/start @@ -27,6 +27,20 @@ then fi fi +INFERENCE_DIR=${PWD%/*}/dev-setup/inference/ +if [ ! -d "$_DIR" ] +then + INFERENCE_DIR=${PWD%/*/*}/dev-setup/inference/ + if [ ! -d "$INFERENCE_DIR" ] + then + # to include volume for local development, use the dev-setup model data folder: + # alternative use manual logic with + # -v /path/to/dev-setup/model-data:/models \ + echo "Can't find model data directory: $INFERENCE_DIR -> stopping" + exit 1 + fi +fi + echo -ne 'starting...' docker run -d --rm \ --name refinery-embedder \ @@ -42,6 +56,7 @@ docker run -d --rm \ --mount type=bind,source="$(pwd)"/,target=/app \ -v /var/run/docker.sock:/var/run/docker.sock \ -v "$MODEL_DIR":/models \ +-v "$INFERENCE_DIR":/inference \ --network dev-setup_default \ refinery-embedder-dev > /dev/null 2>&1 echo -ne '\t\t\t [done]\n' From 65de4ff1ae3069317be33afde7f3b397bd896a42 Mon Sep 17 00:00:00 2001 From: felix0496 Date: Thu, 12 Jan 2023 14:00:35 +0100 Subject: [PATCH 2/4] write out embedder pickle for embedding type if is managed --- controller.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/controller.py b/controller.py index b61834e..0abc036 100644 --- a/controller.py +++ b/controller.py @@ -450,6 +450,8 @@ def run_encoding( request_util.post_embedding_to_neural_search( request.project_id, embedding_id ) + + if get_config_value("is_managed"): pickle_path = os.path.join( "/inference", request.project_id, f"embedder-{embedding_id}.pkl" ) From 67ae661cfdaa0ded20f702df8872e97f8a6efc9a Mon Sep 17 00:00:00 2001 From: felix0496 Date: Mon, 16 Jan 2023 16:12:36 +0100 Subject: [PATCH 3/4] removes inference pickle on embedder removal --- controller.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/controller.py b/controller.py index 0abc036..78c5369 100644 --- a/controller.py +++ b/controller.py @@ -496,6 +496,12 @@ def delete_embedding(project_id: str, embedding_id: str) -> int: org_id = organization.get_id_by_project_id(project_id) s3.delete_object(org_id, project_id + "/" + object_name) request_util.delete_embedding_from_neural_search(embedding_id) + if get_config_value("is_managed"): + pickle_path = os.path.join( + "/inference", project_id, f"embedder-{embedding_id}.pkl" + ) + if os.path.exists(pickle_path): + os.remove(pickle_path) return 200 From adff62227fa59810fa8294d91c3a167d7e8b4e0a Mon Sep 17 00:00:00 2001 From: felix0496 Date: Mon, 30 Jan 2023 16:37:00 +0100 Subject: [PATCH 4/4] pr comments --- controller.py | 9 +++------ start | 4 ++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/controller.py b/controller.py index 78c5369..cc81153 100644 --- a/controller.py +++ b/controller.py @@ -496,12 +496,9 @@ def delete_embedding(project_id: str, embedding_id: str) -> int: org_id = organization.get_id_by_project_id(project_id) s3.delete_object(org_id, project_id + "/" + object_name) request_util.delete_embedding_from_neural_search(embedding_id) - if get_config_value("is_managed"): - pickle_path = os.path.join( - "/inference", project_id, f"embedder-{embedding_id}.pkl" - ) - if os.path.exists(pickle_path): - os.remove(pickle_path) + pickle_path = os.path.join("/inference", project_id, f"embedder-{embedding_id}.pkl") + if os.path.exists(pickle_path): + os.remove(pickle_path) return 200 diff --git a/start b/start index fdece59..e0dcd48 100755 --- a/start +++ b/start @@ -33,9 +33,9 @@ then INFERENCE_DIR=${PWD%/*/*}/dev-setup/inference/ if [ ! -d "$INFERENCE_DIR" ] then - # to include volume for local development, use the dev-setup model data folder: + # to include volume for local development, use the dev-setup inference folder: # alternative use manual logic with - # -v /path/to/dev-setup/model-data:/models \ + # -v /path/to/dev-setup/inference:/models \ echo "Can't find model data directory: $INFERENCE_DIR -> stopping" exit 1 fi