def _apply_workflow_options(f: RemoteFunction): if not isinstance(f, RemoteFunction): raise ValueError("Only apply 'workflow.options' to Ray remote functions.") from ray.workflow.common import WORKFLOW_OPTIONS if "_metadata" not in f._default_options: f._default_options["_metadata"] = {} f._default_options["_metadata"][WORKFLOW_OPTIONS] = workflow_options return f
def java_function(class_name, function_name): """Define a Java function. Args: class_name (str): Java class name. function_name (str): Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries placement_group=None, # TODO(ekl) set default to -1 once we support -1 as "any index" placement_group_bundle_index=0, placement_group_capture_child_tasks=None)
def spread(f: RemoteFunction, *args, **kwargs): with spread_to_all_nodes(f) as (nodes, pg): return [ f.options(placement_group=pg, placement_group_bundle_index=index).remote( *args, **kwargs) for index in range(nodes) ]
def java_function(class_name, function_name): """Define a Java function. Args: class_name (str): Java class name. function_name (str): Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries, None, # retry_exceptions, None, # runtime_env, None, # placement_group, None) # scheduling_strategy,
def cpp_function(function_name): """Define a Cpp function. Args: function_name (str): Cpp function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.CPP, lambda *args, **kwargs: None, CppFunctionDescriptor(function_name, "PYTHON"), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # accelerator_type, None, # num_returns, None, # max_calls, None, # max_retries, None, # retry_exceptions, None, # runtime_env, None, # placement_group, None, ) # scheduling_strategy,
def update_workflow_options(f: RemoteFunction, **workflow_options) -> RemoteFunction: new_metadata = f._default_options.get("_metadata", {}).copy() # copy again because the origina copy is shallow copy new_workflow_options = new_metadata.get(WORKFLOW_OPTIONS, {}).copy() new_workflow_options.update(**workflow_options) new_metadata[WORKFLOW_OPTIONS] = new_workflow_options return f.options(_metadata=new_metadata)
def cpp_function(function_name: str): """Define a Cpp function. Args: function_name: Cpp function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.CPP, lambda *args, **kwargs: None, CppFunctionDescriptor(function_name, "PYTHON"), {}, )
def java_function(class_name, function_name): from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # num_return_vals, None, # max_calls, None) # max_retries)
def java_function(class_name: str, function_name: str): """Define a Java function. Args: class_name: Java class name. function_name: Java function name. """ from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), {}, )
def java_function(class_name, function_name): from ray.remote_function import RemoteFunction return RemoteFunction( Language.JAVA, lambda *args, **kwargs: None, JavaFunctionDescriptor(class_name, function_name, ""), None, # num_cpus, None, # num_gpus, None, # memory, None, # object_store_memory, None, # resources, None, # num_return_vals, None, # max_calls, None, # max_retries placement_group=None, # TODO(ekl) set default to -1 once we support -1 as "any index" placement_group_bundle_index=0)