From e3c088fa1ebf8baa4b3b08763ac4234863e9b7f8 Mon Sep 17 00:00:00 2001 From: Eric Liang Date: Tue, 27 Nov 2018 01:14:10 -0800 Subject: [PATCH] [rllib] PPO doesn't work with fractional num gpus (#3396) * frac ppo * gpu test --- python/ray/rllib/optimizers/multi_gpu_optimizer.py | 5 ++++- test/jenkins_tests/run_multi_node_tests.sh | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/python/ray/rllib/optimizers/multi_gpu_optimizer.py b/python/ray/rllib/optimizers/multi_gpu_optimizer.py index 7e01ee904..771acb5ac 100644 --- a/python/ray/rllib/optimizers/multi_gpu_optimizer.py +++ b/python/ray/rllib/optimizers/multi_gpu_optimizer.py @@ -3,6 +3,7 @@ from __future__ import division from __future__ import print_function import logging +import math import numpy as np from collections import defaultdict import tensorflow as tf @@ -44,7 +45,9 @@ class LocalMultiGPUOptimizer(PolicyOptimizer): if not num_gpus: self.devices = ["/cpu:0"] else: - self.devices = ["/gpu:{}".format(i) for i in range(num_gpus)] + self.devices = [ + "/gpu:{}".format(i) for i in range(int(math.ceil(num_gpus))) + ] self.batch_size = int(sgd_batch_size / len(self.devices)) * len( self.devices) assert self.batch_size % len(self.devices) == 0 diff --git a/test/jenkins_tests/run_multi_node_tests.sh b/test/jenkins_tests/run_multi_node_tests.sh index 93f00a0ee..40e9635d9 100755 --- a/test/jenkins_tests/run_multi_node_tests.sh +++ b/test/jenkins_tests/run_multi_node_tests.sh @@ -53,6 +53,14 @@ docker run --rm --shm-size=10G --memory=10G $DOCKER_SHA \ --stop '{"training_iteration": 2}' \ --config '{"simple_optimizer": true, "num_sgd_iter": 2, "model": {"use_lstm": true}}' +docker run --rm --shm-size=10G --memory=10G $DOCKER_SHA \ + python /ray/python/ray/rllib/train.py \ + --env CartPole-v1 \ + --run PPO \ + --stop '{"training_iteration": 2}' \ + --config '{"num_gpus": 0.1}' \ + --ray-num-gpus 1 + docker run --rm --shm-size=10G --memory=10G $DOCKER_SHA \ python /ray/python/ray/rllib/train.py \ --env CartPole-v1 \