tf.distribute.experimental.rpc.Client
Класс-клиент для вызова RPC на сервер.
Методы
call
call(
method_name: str,
args: Optional[Sequence[core_tf_types.Tensor]] = None,
output_specs=None,
timeout_in_ms=0
)
Метод для выполнения вызовов RPC на удаленный сервер.
Этот вызов выполняет RPC на сервер, удаленно выполняя зарегистрированный метод method_name. Аргументы: method_name: Удаленно зарегистрированный метод для вызова args: Список аргументов для зарегистрированного метода. output_specs: Спецификации выходных данных для выходных данных метода. Например, если tf.function имеет вид: @tf.function(input_signature=[ tf.TensorSpec([], tf.int32), tf.TensorSpec([], tf.int32) ]) def multiply_fn(a, b): return tf.math.multiply(a, b) output_spec имеет вид: tf.TensorSpec((), tf.int32) Если у вас есть доступ к TF Function, спецификации выходных данных можно получить из tf.function, вызвав: output_specs = tf.nest.map_structure(tf.type_spec_from_value, tf_function.get_concrete_function().structured_outputs Если output_specs не указаны, в ответ будет возвращен уплощенный список тензоров. timeout_in_ms: Таймаут для этого вызова. Если 0, будет использован стандартный таймаут клиента.
| Возвращаемое значение | |
|---|---|
Экземпляр класса StatusOrResult со следующими доступными методами.
Вызов любого из вышеперечисленных методов будет блокировать выполнение до завершения RPC и получения результата. |
create
@staticmethod
create(
rpc_layer, address, name='', timeout_in_ms=0
)
Создать клиент TF RPC для подключения к указанному адресу.
| Аргументы | |
|---|---|
rpc_layer | Слой связи между клиентом и сервером. В данный момент поддерживается только слой rpc "grpc". |
address | Адрес сервера для подключения клиента RPC. |
name | Имя клиента RPC. Можно создать несколько клиентов, подключающихся к одному серверу, и различать их с помощью разных имен. |
timeout_in_ms | Стандартный таймаут для исходящих вызовов RPC от клиента. 0 означает отсутствие таймаута. Превышение таймаута во время RPC приведет к ошибке DeadlineExceeded. |
| Возвращаемое значение | |
|---|---|
Экземпляр tf.distribute.experimental.rpc.Client с динамически добавленными методами для созданных в режиме eager клиентов:
|
| Возможные исключения | |
|---|---|
| ValueError, если используется rpc_layer, отличный от "grpc". В данный момент поддерживается только GRPC. Исключение DeadlineExceeded в режиме eager, если таймаут превышен во время создания и перечисления методов клиента. |
Пример использования:
# Have server already started.
import portpicker
@tf.function(input_signature=[
tf.TensorSpec([], tf.int32),
tf.TensorSpec([], tf.int32)])
def remote_fn(a, b):
return tf.add(a, b)
port = portpicker.pick_unused_port()
address = "localhost:{}".format(port)
server = tf.distribute.experimental.rpc.Server.create("grpc", address)
server.register("addition", remote_fn)
server.start()
# Start client
client = tf.distribute.experimental.rpc.Client.create("grpc",
address=address, name="test_client")
a = tf.constant(2, dtype=tf.int32) b = tf.constant(3, dtype=tf.int32)
result = client.call( args=[a, b], method_name="addition", output_specs=tf.TensorSpec((), tf.int32))
if result.is_ok(): result.get_value()
result = client.addition(a, b)
if result.is_ok(): result.get_value()
value = client.addition_blocking(a, b)
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.9/api_docs/python/tf/distribute/experimental/rpc/Client