def automl_fixture(): from zoo import init_spark_on_local from zoo.ray.util.raycontext import RayContext sc = init_spark_on_local(cores=4, spark_log_level="INFO") ray_ctx = RayContext(sc=sc, object_store_memory="1g") ray_ctx.init() yield ray_ctx.stop() sc.stop()
def test_local(self): node_num = 4 sc = init_spark_on_local(cores=node_num) ray_ctx = RayContext(sc=sc) ray_ctx.init() actors = [TestRay.remote() for i in range(0, node_num)] print([ray.get(actor.hostname.remote()) for actor in actors]) ray_ctx.stop() sc.stop() for process_info in ray_ctx.ray_processesMonitor.process_infos: for pid in process_info.pids: assert not psutil.pid_exists(pid)
def test_local(self): node_num = 4 sc = init_spark_on_local(cores=node_num) ray_ctx = RayContext(sc=sc, object_store_memory="1g") ray_ctx.init() actors = [TestRay.remote() for i in range(0, node_num)] print(ray.get([actor.hostname.remote() for actor in actors])) ray_ctx.stop() time.sleep(3) # repeat print("-------------------first repeat begin!------------------") ray_ctx = RayContext(sc=sc, object_store_memory="1g") ray_ctx.init() actors = [TestRay.remote() for i in range(0, node_num)] print(ray.get([actor.hostname.remote() for actor in actors])) ray_ctx.stop() sc.stop() time.sleep(3) for process_info in ray_ctx.ray_processesMonitor.process_infos: for pid in process_info.pids: assert not psutil.pid_exists(pid)
# compute_gradient returns two variables, so action_id is a list action_id = actors[i].compute_gradient.remote(model_id) actions.append(action_id) for i in range(batch_size): # wait for one actor to finish its operation # action_id is the ready object id action_id, actions = ray.wait(actions) grad, reward_sum = ray.get(action_id[0]) # Accumulate the gradient of each weight parameter over batch. for k in model: grad_buffer[k] += grad[k] running_reward = (reward_sum if running_reward is None else running_reward * 0.99 + reward_sum * 0.01) end_time = time.time() print("Batch {} computed {} rollouts in {} seconds, " "running mean is {}".format(batch_num, batch_size, end_time - start_time, running_reward)) # update gradient after one iteration for k, v in model.items(): g = grad_buffer[k] rmsprop_cache[k] = (decay_rate * rmsprop_cache[k] + (1 - decay_rate) * g**2) model[k] += learning_rate * g / (np.sqrt(rmsprop_cache[k]) + 1e-5) # Reset the batch gradient buffer. grad_buffer[k] = np.zeros_like(v) batch_num += 1 ray_ctx.stop() sc.stop()