Как реализовать многоуровневую архитектуру с подмножествами клиентов разного размера?

Я прочитал четыре урока, предоставленных tenorflow-federated. Однако здесь просто упоминалось, что tff_core можно использовать для реализации многоуровневой сети без каких-либо подробных инструкций. В моей реализации я хотел бы разработать трехуровневую сеть с подмножествами клиентов разных размеров. Мои вопросы:

  1. В настоящее время я просто использую код Python для представления обучения на уровне подмножества. Есть ли какой-нибудь API, который я могу использовать для замены моего кода Python?

  2. Я немного запутался в объявлении количества клиентов, во второй части учебника по федеративному ядру просто используется federated_map(local_train, [model, learning_rate, data]), чтобы понять это. Означает ли это, что количество клиентов в данном случае равно количеству элементов в массиве данных?

  3. В дополнение к вопросу 2 в руководстве используется tff.federated_broadcast для передачи модели и скорости обучения всем клиентам. Если у меня трехуровневая архитектура, имеет ли смысл tff.federated_broadcast?

  4. Наконец, что касается сервера второго уровня, следует ли мне рассматривать его как SERVER или CLIENTS?


person ZZhu    schedule 25.07.2019    source источник


Ответы (1)


Дизайн TFF поддерживает дополнительные уровни размещения, но в настоящее время существует только два стандартных места размещения: CLIENTS и SERVER. Кроме того, некоторые встроенные функции поддерживают только определенные изменения размещения (например, tff.federated_broadcast перемещает данные с SERVER на CLIENTS, но не может транслировать данные с CLIENTS на CLIENTS). Поддержка произвольных мест размещения пока не реализована.

В зависимости от того, как сконфигурирована многоуровневая сеть, возможно, она все еще может быть выражена в TFF; хотя и немного непонятно из-за отсутствия дополнительных меток размещения.

  1. В настоящее время это нужно делать на уровне Python, поддержки пока нет.
  2. Правильно, количество клиентов - это количество элементов в массиве. TFF параметризует клиентов данными, которые они хранят. Чтобы реализовать два набора клиентов, код может иметь два разных списка аргументов (потенциально разного размера).
  3. Зависит от того, чего вы пытаетесь достичь. Ответ может измениться в зависимости от того, стоит ли задача моделировать парк устройств с разными значениями или все устройства с одинаковым значением.
  4. Вероятно, потребуется дополнительная информация, ответ будет зависеть от того, как будет использоваться второй слой.
person Zachary Garrett    schedule 30.07.2019
comment
Привет, Закари, спасибо за ответ, это мне очень помогает. У меня еще вопрос по производительности. Tff плохо поддерживает графический процессор, поскольку он в основном ориентирован на моделирование, а не на производительность? - person ZZhu; 07.08.2019
comment
Делегаты TFF в TF; код, заключенный в @tff.tf_computation, будет выполняться с использованием TensorFlow. Даже при моделировании графический процессор можно использовать для обучения моделей, и во время этого обучения можно увидеть ускорение. - person Zachary Garrett; 07.08.2019