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

Commit 9110754

Browse files
authored
Merge branch 'master' into multimodel_endpoints_support
2 parents bd6e359 + e9546bb commit 9110754

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
@@ -308,6 +308,14 @@ def _enable_per_process_gpu_memory_fraction(self):
308308

309309
return False
310310

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

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

427447
def _monitor(self):

0 commit comments

Comments
 (0)