HPS Initialize
-
hierarchical_parameter_server.
Init
(**kwargs)[source] Abbreviated as
hps.Init(**kwargs)
.This function initializes the HPS for all the deployed models. It can be used explicitly or implicitly. When used explicitly, you must call the function only once and you must call it before any other HPS APIs. When used implicitly,
ps_config_file
andglobal_batch_size
should be specified in the constructor ofhps.SparseLookupLayer
andhps.LookupLayer
. When the layer is executed for the first time, it triggers the internal HPS initialization implicitly in a thread-safe call-once manner. The implicit initialization is especially useful for deploying the SavedModels that leverage the HPS layers for online inference.HPS leverages all available GPUs for the current CPU process. Set
CUDA_VISIBLE_DEVICES
ortf.config.set_visible_devices
to specify which GPUs to use in this process before you launch the TensorFlow runtime and calling this function. Additionally, ensure that thedeployed_device_list
parameter in the HPS configuration JSON file matches the visible devices.In TensorFlow 2.x, HPS can be used with
tf.distribute.Strategy
or Horovod. When it is used withtf.distribute.Strategy
, you must call it understrategy.scope()
as shown in the following code block.import hierarchical_parameter_server as hps with strategy.scope(): hps.Init(**kwargs)
To use the function with Horovod, call it one for each time you initialize a Horovod process such as the following code block shows.
import hierarchical_parameter_server as hps import horovod.tensorflow as hvd hvd.init() hps.Init(**kwargs)
In TensorFlow 1.15, HPS can only work with Horovod. The returned status must be evaluated with
sess.run
and it must be the first step before evaluating any other HPS APIs.import hierarchical_parameter_server as hps hps_init = hps.Init(**kwargs) with tf.Session() as sess: sess.run(hps_init) ...
- Parameters
kwargs (dict) –
Keyword arguments for this function. The dictionary must contain
global_batch_size
andps_config_file
.global_batch_size: int, the global batch size for HPS that is deployed on multiple GPUs.
ps_config_file: str, the JSON configuration file for HPS initialization.
An example
ps_config_file
is as follows andglobal_batch_size
can be configured as 16384 correspondingly:ps_config_file = { "supportlonglong" : True, "models" : [{ "model": "demo_model", "sparse_files": ["demo_model_sparse.model"], "num_of_worker_buffer_in_pool": 3, "embedding_table_names":["sparse_embedding0"], "embedding_vecsize_per_table": [16], "maxnum_catfeature_query_per_table_per_sample": [10], "default_value_for_each_table": [1.0], "deployed_device_list": [0], "max_batch_size": 16384, "cache_refresh_percentage_per_iteration": 0.2, "hit_rate_threshold": 1.0, "gpucacheper": 1.0, "gpucache": True }, { "model": "demo_model2", "sparse_files": ["demo_model2_sparse_0.model", "demo_model2_sparse_1.model"], "num_of_worker_buffer_in_pool": 3, "embedding_table_names":["sparse_embedding0", "sparse_embedding1"], "embedding_vecsize_per_table": [64, 32], "maxnum_catfeature_query_per_table_per_sample": [3, 5], "default_value_for_each_table": [1.0, 1.0], "deployed_device_list": [0], "max_batch_size": 16384, "cache_refresh_percentage_per_iteration": 0.2, "hit_rate_threshold": 1.0, "gpucacheper": 1.0, "gpucache": True}, ] }
- Returns
status – On success, the function returns string with the value
OK
.- Return type