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

Commit 1a5d9e4

Browse files
authored
Merge branch 'master' into multimodel_endpoints_support
2 parents b3c9b51 + e9546bb commit 1a5d9e4

File tree

1 file changed

+22
-2
lines changed
  • docker/build_artifacts/sagemaker

1 file changed

+22
-2
lines changed

docker/build_artifacts/sagemaker/serve.py

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,14 @@ def _enable_per_process_gpu_memory_fraction(self):
309309

310310
return False
311311

312+
def _get_number_of_gpu_on_host(self):
313+
nvidia_smi_exist = os.path.exists("/usr/bin/nvidia-smi")
314+
if nvidia_smi_exist:
315+
return len(subprocess.check_output(['nvidia-smi', '-L'])
316+
.decode('utf-8').strip().split('\n'))
317+
318+
return 0
319+
312320
def _calculate_per_process_gpu_memory_fraction(self):
313321
return round((1 - self._tfs_gpu_margin) / float(self._tfs_instance_count), 4)
314322

@@ -421,8 +429,20 @@ def _start_single_tfs(self, instance_id):
421429
tfs_gpu_memory_fraction=self._calculate_per_process_gpu_memory_fraction(),
422430
)
423431
log.info("tensorflow serving command: {}".format(cmd))
424-
p = subprocess.Popen(cmd.split())
425-
log.info("started tensorflow serving (pid: %d)", p.pid)
432+
433+
num_gpus = self._get_number_of_gpu_on_host()
434+
if num_gpus > 1:
435+
# utilizing multi-gpu
436+
worker_env = os.environ.copy()
437+
worker_env["CUDA_VISIBLE_DEVICES"] = str(instance_id % num_gpus)
438+
p = subprocess.Popen(cmd.split(), env=worker_env)
439+
log.info("started tensorflow serving (pid: {}) on GPU {}"
440+
.format(p.pid, instance_id % num_gpus))
441+
else:
442+
# cpu and single gpu
443+
p = subprocess.Popen(cmd.split())
444+
log.info("started tensorflow serving (pid: {})".format(p.pid))
445+
426446
return p
427447

428448
def _monitor(self):

0 commit comments

Comments
 (0)