ConfigRecord

class ConfigRecord(config_dict: dict[str, int | float | str | bytes | bool | list[int] | list[float] | list[str] | list[bytes] | list[bool]] | None = None, keep_input: bool = True)[source]

Bases : TypedDict[str, int | float | str | bytes | bool | list[int] | list[float] | list[str] | list[bytes] | list[bool]], InflatableObject

Enregistrement de configuration.

Un ConfigRecord est un dictionnaire Python conçu pour garantir que chaque paire de clé-valeur respecte les types de données spécifiés. Un ConfigRecord est l’un des types de documents que supporte une flwr.app.RecordDict et peut donc être utilisé pour construire des objets app.Message.

Paramètres:
  • config_dict (Optional[Dict[str, ConfigRecordValues]]) – Un dictionnaire qui stocke les types de base (c’est-à-dire str, int, float, bytes tels que définis dans ConfigScalar) et les listes de tels types (voir ConfigScalarList).

  • keep_input (bool (default: True)) – Une valeur booléenne indiquant si la configuration passée doit être supprimée du dictionnaire d’entrée immédiatement après y avoir ajouté. Lorsque cela est défini sur True, les données sont dupliquées en mémoire. Si la mémoire est un souci, définissez-le sur False.

Exemples

L’utilisation d’un ConfigRecord est prévue pour envoyer des valeurs de configuration indiquant au nœud cible comment effectuer une certaine action (par exemple, entraîner/évaluer un modèle). Vous pouvez utiliser les types Python intégrés tels que float, str , bytes. Tous les types autorisés sont définis dans flwr.app.ConfigRecordValues. Même si les listes sont prises en charge, nous vous encourageons à utiliser un ArrayRecord au lieu d’elles si celles-ci ont une grande dimensionnalité.

Voyez quelques exemples de construction d’un ConfigRecord à partir de zéro:

from flwr.app import ConfigRecord

# A `ConfigRecord` is a specialized Python dictionary
record = ConfigRecord({"lr": 0.1, "batch-size": 128})
# You can add more content to an existing record
record["compute-average"] = True
# It also supports lists
record["loss-fn-coefficients"] = [0.4, 0.25, 0.35]
# And string values (among other types)
record["path-to-S3"] = "s3://bucket_name/folder1/fileA.json"

De même que les autres types de documents dans un flwr.app.RecordDict, les types sont contrôlés. Si vous avez besoin d’ajouter une structure de données personnalisée ou un objet, nous recommandons de le sérialiser en bytes et de le sauvegarder sous forme de telles (les octets sont autorisés dans un ConfigRecord).

Methods

clear()

copy()

Retourner une copie superficielle du dictionnaire.

count_bytes()

Retourner le nombre de Bytes stockés dans cet objet.

deflate()

Défléter l'objet.

get(k[,d])

inflate(object_content[, children])

Infléitez un ConfigRecord à partir de bytes.

items()

keys()

pop(k[,d])

Si la clé n'est pas trouvée, d est retourné si donné, sinon KeyError est levé.

popitem()

Comme une 2-tuple ; mais levez KeyError si D est vide.

setdefault(k[,d])

update([E, ]**F)

Si E est présent et a une méthode .keys(), faites : pour k dans E: D[k] = E[k] Si E est présent mais manque de la méthode .keys(), faites : pour (k, v) dans E: D[k] = v Dans les deux cas, ceci est suivi de : pour k, v dans F.items(): D[k] = v

values()

Attributes

children

Récupérez tous les objets enfants sous forme de dictionnaire ou None si il n'y a pas d'enfants.

is_dirty

Vérifier si l'objet est sale après la dernière déflation.

object_id

Récupérez l'ID d'objet.

property children: dict[str, InflatableObject] | None

Récupérez tous les objets enfants sous forme de dictionnaire ou None si il n’y a pas d’enfants.

clear() None.  Remove all items from D.
copy() Self

Retourner une copie superficielle du dictionnaire.

count_bytes() int[source]

Retourner le nombre de Bytes stockés dans cet objet.

Cette fonction compte les booléens comme occupant 1 Byte.

deflate() bytes[source]

Défléter l’objet.

get(k[, d]) D[k] if k in D, else d.  d defaults to None.
classmethod inflate(object_content: bytes, children: dict[str, InflatableObject] | None = None) ConfigRecord[source]

Infléitez un ConfigRecord à partir de bytes.

Paramètres:
  • object_content (bytes) – Le contenu déflété de la ConfigRecord.

  • children (Optional[dict[str, InflatableObject]] (default: None)) – Doit être None. ConfigRecord ne supporte pas d’objets enfants. La fourniture de tout enfant entraînera une erreur ValueError.

Renvoie:

La ConfigRecord gonflée.

Type renvoyé:

ConfigRecord

property is_dirty: bool

Vérifier si l’objet est sale après la dernière déflation.

Un objet est considéré comme sale si son contenu a changé depuis le dernier calcul de son ID d’objet.

items() a set-like object providing a view on D's items.
keys() a set-like object providing a view on D's keys.
property object_id: str

Récupérez l’ID d’objet.

pop(k[, d]) v, remove specified key and return the corresponding value.

Si la clé n’est pas trouvée, d est retourné si donné, sinon KeyError est levé.

popitem() (k, v), remove and return some (key, value) pair

Comme une 2-tuple ; mais levez KeyError si D est vide.

setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) None.  Update D from mapping/iterable E and F.

Si E est présent et a une méthode .keys(), faites : pour k dans E: D[k] = E[k] Si E est présent mais manque de la méthode .keys(), faites : pour (k, v) dans E: D[k] = v Dans les deux cas, ceci est suivi de : pour k, v dans F.items(): D[k] = v

values() an object providing a view on D's values.