Skip to content
This repository was archived by the owner on May 23, 2024. It is now read-only.

Commit e2f0d18

Browse files
author
Jinpeng Qi
committed
modify to pick ports in linear fashion
1 parent bd41141 commit e2f0d18

File tree

2 files changed

+20
-22
lines changed

2 files changed

+20
-22
lines changed

docker/build_artifacts/sagemaker/python_service.py

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@
3131

3232
SAGEMAKER_BATCHING_ENABLED = os.environ.get("SAGEMAKER_TFS_ENABLE_BATCHING", "false").lower()
3333
MODEL_CONFIG_FILE_PATH = "/sagemaker/model-config.cfg"
34-
TFS_GRPC_SELECTED_PORTS = os.environ.get("TFS_GRPC_SELECTED_PORTS")
35-
TFS_REST_SELECTED_PORTS = os.environ.get("TFS_REST_SELECTED_PORTS")
34+
TFS_GRPC_PORT_RANGE = os.environ.get("TFS_GRPC_PORT_RANGE")
35+
TFS_REST_PORT_RANGE = os.environ.get("TFS_REST_PORT_RANGE")
3636
SAGEMAKER_TFS_PORT_RANGE = os.environ.get("SAGEMAKER_SAFE_PORT_RANGE")
3737
TFS_INSTANCE_COUNT = int(os.environ.get("SAGEMAKER_TFS_INSTANCE_COUNT", "1"))
3838

@@ -69,10 +69,8 @@ def __init__(self):
6969
# during the _handle_load_model_post()
7070
self.model_handlers = {}
7171
else:
72-
self._tfs_grpc_ports = self._reconstruct_sagemaker_selected_ports(
73-
TFS_GRPC_SELECTED_PORTS)
74-
self._tfs_rest_ports = self._reconstruct_sagemaker_selected_ports(
75-
TFS_REST_SELECTED_PORTS)
72+
self._tfs_grpc_ports = self._parse_sagemaker_port_range(TFS_GRPC_PORT_RANGE)
73+
self._tfs_rest_ports = self._parse_sagemaker_port_range(TFS_REST_PORT_RANGE)
7674

7775
self._channels = {}
7876
for grpc_port in self._tfs_grpc_ports:
@@ -100,13 +98,13 @@ def on_post(self, req, res, model_name=None):
10098
data = json.loads(req.stream.read().decode("utf-8"))
10199
self._handle_load_model_post(res, data)
102100

103-
def _reconstruct_sagemaker_selected_ports(self, selected_ports):
104-
lower, upper = selected_ports.split('-')
101+
def _parse_sagemaker_port_range(self, port_range):
102+
lower, upper = port_range.split('-')
105103
lower = int(lower)
106104
upper = int(upper)
107105
if lower == upper:
108106
return [lower]
109-
return [lower + 2 * i for i in range(TFS_INSTANCE_COUNT)]
107+
return [lower + i for i in range(TFS_INSTANCE_COUNT)]
110108

111109
def _pick_port(self, ports):
112110
return str(random.choice(ports))

docker/build_artifacts/sagemaker/serve.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -96,22 +96,23 @@ def __init__(self):
9696
.format(self._sagemaker_port_range))
9797
# select non-overlapping grpc and rest ports based on tfs instance count
9898
# record the init and end value in order to reconstruct them in python service
99-
self._tfs_grpc_selected_ports = "{}-{}".format(low,
100-
low + 2 * self._tfs_instance_count)
101-
self._tfs_rest_selected_ports = "{}-{}".format(low + 1,
102-
low + 2 * self._tfs_instance_count + 1)
99+
self._tfs_grpc_port_range = "{}-{}".format(low,
100+
low + self._tfs_instance_count)
101+
self._tfs_rest_port_range = "{}-{}".format(low + self._tfs_instance_count,
102+
low + 2 * self._tfs_instance_count)
103103
for i in range(self._tfs_instance_count):
104-
self._tfs_grpc_port.append(str(low + 2 * i))
105-
self._tfs_rest_port.append(str(low + 2 * i + 1))
104+
self._tfs_grpc_port.append(str(low + i))
105+
self._tfs_rest_port.append(str(low + self._tfs_instance_count + i))
106106
else:
107107
# just use the standard default ports
108108
self._tfs_grpc_port = ["9000"]
109109
self._tfs_rest_port = ["8501"]
110-
self._tfs_grpc_selected_ports = "9000-9000"
111-
self._tfs_rest_selected_ports = "8501-8501"
110+
self._tfs_grpc_port_range = "9000-9000"
111+
self._tfs_rest_port_range = "8501-8501"
112+
112113
# set environment variable for python service
113-
os.environ["TFS_GRPC_SELECTED_PORTS"] = self._tfs_grpc_selected_ports
114-
os.environ["TFS_REST_SELECTED_PORTS"] = self._tfs_rest_selected_ports
114+
os.environ["TFS_GRPC_PORT_RANGE"] = self._tfs_grpc_port_range
115+
os.environ["TFS_REST_PORT_RANGE"] = self._tfs_rest_port_range
115116

116117
def _need_python_service(self):
117118
if os.path.exists(INFERENCE_PATH):
@@ -193,14 +194,13 @@ def _setup_gunicorn(self):
193194
gunicorn_command = (
194195
"gunicorn -b unix:/tmp/gunicorn.sock -k {} --chdir /sagemaker "
195196
"--workers {} --threads {} "
196-
"{}{} -e TFS_GRPC_SELECTED_PORTS={} -e TFS_REST_SELECTED_PORTS={} "
197+
"{}{} -e TFS_GRPC_PORT_RANGE={} -e TFS_REST_PORT_RANGE={} "
197198
"-e SAGEMAKER_MULTI_MODEL={} -e SAGEMAKER_SAFE_PORT_RANGE={} "
198199
"-e SAGEMAKER_TFS_WAIT_TIME_SECONDS={} "
199200
"python_service:app").format(self._gunicorn_worker_class,
200201
self._gunicorn_workers, self._gunicorn_threads,
201202
python_path_option, ",".join(python_path_content),
202-
self._tfs_grpc_selected_ports,
203-
self._tfs_rest_selected_ports,
203+
self._tfs_grpc_port_range, self._tfs_rest_port_range,
204204
self._tfs_enable_multi_model_endpoint,
205205
self._sagemaker_port_range,
206206
self._tfs_wait_time_seconds)

0 commit comments

Comments
 (0)