ArrayRecord¶
- class ArrayRecord[source]¶
- class ArrayRecord(array_dict: dict[str, Array], *, keep_input: bool = True)
- class ArrayRecord(numpy_ndarrays: list[ndarray[tuple[Any, ...], dtype[Any]]], *, keep_input: bool = True)
- class ArrayRecord(torch_state_dict: dict[str, torch.Tensor] | dict[str, Any], *, keep_input: bool = True)
Bases :
TypedDict[str,Array],InflatableObjectEnregistrement d’array.
Un dictionnaire typé (
stràArray) qui peut stocker des tableaux nommés, y compris les paramètres de modèle, les gradients, les embeddings ou les tableaux non-paramétriques. Intérieurement, cela se comporte de manière similaire à undict[str, Array]. UnArrayRecordpeut être vu comme équivalent à PyTorch’sstate_dict, mais il contient des tableaux sous forme sérialisée.Cet objet est l’un des types d’enregistrements pris en charge par
RecordDictet peut donc être stocké dans lecontentd’unMessageou dans lestated’unContext.Cette classe peut être instanciée de plusieurs manières :
En fournissant rien (conteneur vide).
En fournissant un dictionnaire de clés
Array(via l’argumentarray_dict).En fournissant une liste de matrices NumPy
ndarray(via l’argumentnumpy_ndarrays).En fournissant un objet PyTorch
state_dict(via l’argumenttorch_state_dict).
- Paramètres:
array_dict (Optional[dict[str, Array]] (default: None)) – Un dictionnaire existant contenant des instances nommées
Array. Si fourni, ces entrées seront utilisées directement pour peupler le record.numpy_ndarrays (Optional[list[NDArray]] (default: None)) – Une liste de tableaux NumPy. Chaque tableau sera automatiquement converti en un
Arrayet stocké dans ce record avec des clés générées.torch_state_dict (Optional[dict[str, torch.Tensor]] (default: None)) – Un
state_dictPyTorch (clésstrvers valeurstorch.Tensor). Chaque tenseur sera converti enArrayet stocké dans cet enregistrement.keep_input (bool (default: True)) – Si
False, les entrées du input sont supprimées après avoir été ajoutées à ce record pour libérer de la mémoire. SiTrue, l’input reste inchangé. Quoi qu’il en soit, aucune mémoire dupliquée n’est utilisée si l’input est un dictionnaire deArray, c’est-à-direarray_dict.
Exemples
Initialiser un ArrayRecord vide:
record = ArrayRecord()
Initialiser avec un dictionnaire de
Array:arr = Array("float32", [5, 5], "numpy.ndarray", b"serialized_data...") record = ArrayRecord({"weight": arr})
Initialiser avec une liste de tableaux NumPy:
import numpy as np arr1 = np.random.randn(3, 3) arr2 = np.random.randn(2, 2) record = ArrayRecord([arr1, arr2])
Initialiser avec l’état_dict d’un modèle PyTorch:
import torch.nn as nn model = nn.Linear(10, 5) record = ArrayRecord(model.state_dict())
Initialiser avec les poids d’un modèle TensorFlow (une liste de tableaux NumPy):
import tensorflow as tf model = tf.keras.Sequential([tf.keras.layers.Dense(5, input_shape=(10,))]) record = ArrayRecord(model.get_weights())
Methods
clear()copy()Retourner une copie superficielle du dictionnaire.
Retourner le nombre de Bytes stockés dans cet objet.
deflate()Défléter l'ArrayRecord.
from_array_dict(array_dict, *[, keep_input])Créer un ArrayRecord à partir d'un dictionnaire de
Array.from_numpy_ndarrays(ndarrays, *[, keep_input])Créez ArrayRecord à partir d'une liste de NumPy
ndarray.from_torch_state_dict(state_dict, *[, ...])Créez ArrayRecord à partir de PyTorch
state_dict.get(k[,d])inflate(object_content[, children])Infléitez un ArrayRecord à 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])to_numpy_ndarrays(*[, keep_input])Retournez l'ArrayRecord sous forme de liste de NumPy
ndarray.to_torch_state_dict(*[, keep_input])Retournez l'ArrayRecord sous forme de PyTorch
state_dict.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
Retournez un dictionnaire des Arrays avec leurs IDs d'objet comme clés.
Vérifier si l'objet est sale après la dernière déflation.
Obtenir l'ID d'objet.
- property children: dict[str, InflatableObject]¶
Retournez un dictionnaire des Arrays avec leurs IDs d’objet comme clés.
- 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.
Notez que une petite quantité de Bytes peut également être incluse dans ce comptage qui correspond à la métadonnée du objet sérialisé (par exemple, d’un tableau NumPy) nécessaire pour désérialiser.
- classmethod from_array_dict(array_dict: dict[str, Array], *, keep_input: bool = True) ArrayRecord[source]¶
Créer un ArrayRecord à partir d’un dictionnaire de
Array.
- classmethod from_numpy_ndarrays(ndarrays: list[ndarray[tuple[Any, ...], dtype[Any]]], *, keep_input: bool = True) ArrayRecord[source]¶
Créez ArrayRecord à partir d’une liste de NumPy
ndarray.
- classmethod from_torch_state_dict(state_dict: dict[str, torch.Tensor], *, keep_input: bool = True) ArrayRecord[source]¶
Créez ArrayRecord à partir de PyTorch
state_dict.
- 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) ArrayRecord[source]¶
Infléitez un ArrayRecord à partir de bytes.
- Paramètres:
object_content (bytes) – Le contenu déflété de l’ArrayRecord.
children (Optional[dict[str, InflatableObject]] (default: None)) – Dictionnaire des objets Inflatable enfants mappés à leurs IDs d’objet. Ces enfants permettent l’inflation complète de l’ArrayRecord.
- Renvoie:
L’ArrayRecord gonflé.
- Type renvoyé:
- property is_dirty: bool¶
Vérifier si l’objet est sale après la dernière déflation.
- 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¶
Obtenir 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¶
- to_numpy_ndarrays(*, keep_input: bool = True) list[ndarray[tuple[Any, ...], dtype[Any]]][source]¶
Retournez l’ArrayRecord sous forme de liste de NumPy
ndarray.
- to_torch_state_dict(*, keep_input: bool = True) OrderedDict[str, torch.Tensor][source]¶
Retournez l’ArrayRecord sous forme de PyTorch
state_dict.
- 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.¶