Transformers documentation
Modelos
Modelos
La clase base PreTrainedModel implementa los métodos comunes para cargar/guardar un modelo desde un archivo o directorio local, o desde una configuración de modelo preentrenado proporcionada por la biblioteca (descargada del Hub de HuggingFace).
PreTrainedModel también implementa algunos métodos comunes a todos los modelos para:
- redimensionar las incrustaciones de tokens de entrada cuando se añaden nuevos tokens al vocabulario
Los otros métodos comunes a cada modelo están definidos en ModuleUtilsMixin y GenerationMixin.
PreTrainedModel
Clase base para todos los modelos.
PreTrainedModel se encarga de almacenar la configuración de los modelos y gestiona los métodos para cargar, descargar y guardar modelos, así como algunos métodos comunes a todos los modelos:
- redimensionar los embeddings de entrada
Atributos de clase (sobreescritos por las clases derivadas):
- config_class (PreTrainedConfig) — Una subclase de PreTrainedConfig para usar como clase de configuración para esta arquitectura de modelo.
- base_model_prefix (
str) — Una cadena de caracteres que indica el atributo asociado al modelo base en las clases derivadas de la misma arquitectura que añaden módulos sobre el modelo base. - main_input_name (
str) — El nombre de la entrada principal del modelo (a menudoinput_idspara modelos de NLP,pixel_valuespara modelos de visión yinput_valuespara modelos de voz). - can_record_outputs (dict):
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parámetros
- repo_id (
str) — El nombre del repositorio al que deseas subir tu modelo. Debe incluir el nombre de tu organización cuando subas a una organización determinada. - commit_message (
str, opcional) — Mensaje para el commit al hacer push. El valor predeterminado es"Upload model". - commit_description (
str, opcional) — La descripción del commit que se creará - private (
bool, opcional) — Si se debe hacer el repositorio privado. Si esNone(predeterminado), el repositorio será público a menos que el valor predeterminado de la organización sea privado. Este valor se ignora si el repositorio ya existe. - token (
boolostr, opcional) — El token que se usará como autorización HTTP bearer para archivos remotos. Si esTrue(valor predeterminado), se usará el token generado al ejecutarhf auth login(almacenado en~/.huggingface). - revision (
str, opcional) — Rama a la que se enviarán los archivos subidos. - create_pr (
bool, opcional, valor predeterminadoFalse) — Si se debe crear una PR con los archivos subidos o realizar el commit directamente. - max_shard_size (
intostr, opcional, valor predeterminado"50GB") — Solo aplicable a modelos. El tamaño máximo de un checkpoint antes de ser fragmentado. Los fragmentos del checkpoint tendrán cada uno un tamaño inferior a este valor. Si se expresa como una cadena, debe consistir en dígitos seguidos de una unidad (como"5MB"). - tags (
list[str], opcional) — Lista de etiquetas para publicar en el Hub.
Sube el archivo del modelo al 🤗 Model Hub.
Ejemplos:
from transformers import AutoModel
model = AutoModel.from_pretrained("google-bert/bert-base-cased")
# Push the model to your namespace with the name "my-finetuned-bert".
model.push_to_hub("my-finetuned-bert")
# Push the model to an organization with the name "my-finetuned-bert".
model.push_to_hub("huggingface/my-finetuned-bert")Desactiva el checkpointing de activaciones para el modelo actual.
activation_checkpointing_enable
< source >( activation_checkpointing_kwargs = Noneevery_n_layers: int = 1offload: bool = False )
Parámetros
- every_n_layers (
int, opcional, valor predeterminado 1) — Realiza checkpoint solo de cadaevery_n_layers-ésima capa decodificadora, dejando que el resto conserve sus activaciones.1realiza checkpoint de cada capa, que es el comportamiento habitual de todo o nada. Valores mayores intercambian memoria por velocidad, lo cual vale la pena siempre que la memoria liberada por el checkpoint completo vaya a quedar sin usar. - offload (
bool, opcional, valor predeterminadoFalse) — Mantener las activaciones guardadas para el recálculo en memoria de host fijada (pinned host memory) en lugar de en el acelerador. Esto liberalayers x sequence x hiddenbytes de memoria del dispositivo, lo cual es lo que predomina con longitudes de secuencia largas, y tiene un coste de una copia de dispositivo a host en la propagación hacia adelante (forward) y una copia de host a dispositivo en la propagación hacia atrás (backward). Ambas copias se ejecutan en el stream de cómputo, por lo que el paso se vuelve más lento. - activation_checkpointing_kwargs (dict, opcional) —
Argumentos de palabra clave adicionales que se pasan a la función
torch.utils.checkpoint.checkpoint.
Activa el checkpointing de activaciones para el modelo actual.
Pasamos el método __call__ de los módulos en lugar de forward porque __call__ adjunta todos los hooks del módulo. https://discuss.pytorch.org/t/any-different-between-model-input-and-model-forward-input/3690/2
add_model_tags
< source >( tags: list[str] | str )
Añade etiquetas personalizadas al modelo que se sube al Hugging Face Hub. No sobrescribirá las etiquetas existentes en el modelo.
can_generate
< source >( ) → bool
Devuelve
bool
Si este modelo puede generar secuencias con .generate().
Indica si este modelo puede generar secuencias con .generate(), desde GenerationMixin o uno con una interfaz similar.
Por debajo, en las clases donde esta función devuelve True, se activan algunos cambios específicos de la generación: por ejemplo, la instancia del modelo tendrá un atributo generation_config con valor.
Un valor simulado para una ruta con puntos (p. ej. torch.float32): las cadenas de acceso a atributos y las llamadas se comportan como decoradores de paso, repr es la ruta con puntos, y su uso como clase base sustituye una base de type simple (PEP 560 __mro_entries__), de modo que las subclases reales conservan un metaclass normal y inspect.signature lee su __init__ real en lugar del de un simulado.
Des-cuantizar potencialmente el modelo en caso de que haya sido cuantizado mediante un método de cuantización que admita la des-cuantización.
Elimina el _require_grads_hook.
Habilita los gradientes para los embeddings de entrada. Esto es útil para ajustar los pesos del adaptador mientras se mantienen fijos los pesos del modelo.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLike | None*model_argsconfig: transformers.configuration_utils.PreTrainedConfig | str | os.PathLike | None = Nonecache_dir: str | os.PathLike | None = Noneignore_mismatched_sizes: bool = Falseforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'use_safetensors: bool | None = Noneweights_only: bool = Truefusion_config: dict[str, bool | dict[str, typing.Any]] | None = Nonedisable_mmap: bool | None = None**kwargs )
Parámetros
- pretrained_model_name_or_path (
stroos.PathLike, opcional) — Puede ser:- Una cadena de texto, el model id de un modelo preentrenado alojado en un repositorio de modelos en huggingface.co.
- Una ruta a un directorio que contiene los pesos del modelo guardados con
save_pretrained(), por ejemplo,
./my_model_directory/. Los directorios guardados consave_pretrained(..., distributed_checkpoint=True)se detectan y cargan con checkpointing distribuido (DCP), preservando la malla y las ubicaciones actuales del modelo. Esto requieretorch>=2.7y la carga es estricta: cada clave del modelo debe estar presente en el checkpoint. Nonesi proporcionas tanto la configuración como el diccionario de estado (respectivamente, con los argumentos de palabra claveconfigystate_dict).
- model_args (secuencia de argumentos posicionales, opcional) —
Todos los argumentos posicionales restantes se pasarán al método
__init__del modelo subyacente. - config (
Union[PreTrainedConfig, str, os.PathLike], opcional) — Puede ser:- una instancia de una clase derivada de PreTrainedConfig,
- una cadena o ruta válida como entrada para from_pretrained().
Configuración para el modelo a utilizar en lugar de una configuración cargada automáticamente. La configuración puede cargarse automáticamente cuando:
- El modelo es un modelo proporcionado por la biblioteca (cargado con la cadena model id de un modelo preentrenado).
- El modelo se guardó usando save_pretrained() y se recarga proporcionando el directorio de guardado.
- El modelo se carga al proporcionar un directorio local como
pretrained_model_name_or_pathy se encuentra un archivo JSON de configuración llamado config.json en el directorio.
- state_dict (
dict[str, torch.Tensor], opcional) — Un diccionario de estado para usar en lugar de un diccionario de estado cargado desde un archivo de pesos guardados. Esta opción se puede usar si deseas crear un modelo a partir de una configuración preentrenada pero cargar tus propios pesos. En este caso, sin embargo, deberías comprobar si usar save_pretrained() y from_pretrained() no es una opción más sencilla.Esta opción se puede usar si deseas crear un modelo a partir de una configuración preentrenada pero cargar tus propios pesos. En este caso, sin embargo, debes comprobar si usar save_pretrained() y from_pretrained() no es una opción más sencilla.
- cache_dir (
Union[str, os.PathLike], opcional) — Ruta a un directorio en el que se debe almacenar en caché la configuración de un modelo preentrenado descargado si no se debe utilizar la caché estándar. - ignore_mismatched_sizes (
bool, opcional, valor predeterminadoFalse) — Si se debe lanzar un error si algunos de los pesos del checkpoint no tienen el mismo tamaño que los pesos del modelo (por ejemplo, si se instancia un modelo con 10 etiquetas a partir de un checkpoint con 3 etiquetas). - force_download (
bool, opcional, valor predeterminadoFalse) — Indica si se debe forzar la (re)descarga de los pesos del modelo y los archivos de configuración, ignorando las versiones en caché si existen. - proxies (
dict[str, str], opcional) — Un diccionario de servidores proxy a utilizar por protocolo o punto de acceso, p. ej.,{'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Los proxies se utilizan en cada solicitud. - output_loading_info(
bool, opcional, por defectoFalse) — Indica si se debe devolver también un diccionario que contenga las claves faltantes, las claves inesperadas y los mensajes de error. - local_files_only(
bool, opcional, valor predeterminadoFalse) — Indica si se deben buscar únicamente archivos locales (es decir, no intentar descargar el modelo). - token (
strobool, opcional) — El token que se usará como autorización HTTP bearer para archivos remotos. Si esTrue, o no se especifica, se usará el token generado al ejecutarhf auth login(almacenado en~/.huggingface). - revision (
str, opcional, por defecto"main") — La versión específica del modelo que se va a usar. Puede ser el nombre de una rama, el nombre de una etiqueta o un id de commit, ya que usamos un sistema basado en git para almacenar modelos y otros artefactos en huggingface.co, por lo querevisionpuede ser cualquier identificador permitido por git.Para probar una solicitud de extracción (pull request) que hayas realizado en el Hub, puedes pasar
revision="refs/pr/<pr_number>". - attn_implementation (
str, opcional) — La implementación de atención a utilizar en el modelo (si es relevante). Puede ser cualquiera de"eager"(implementación manual de la atención)"sdpa"(usandoF.scaled_dot_product_attention)"flash_attention_2"(usando Dao-AILab/flash-attention)"flash_attention_3"(usando Dao-AILab/flash-attention/hopper)"flash_attention_4"(usando Dao-AILab/flash-attention/flash_attn/cute). Por defecto, si está disponible, se usará SDPA. En caso contrario, el valor predeterminado es la implementación manual"eager".
Aceptar referencias de kernel de HF en el formato:
/ [@ ][: ] y son cualquier secuencia que no sea "/" ni ":". - “@
” es opcional (rama, etiqueta o commit-ish), p. ej. “@main”, “@v1.2.0”, “@abc123”. - ”:
” es opcional y selecciona una función dentro del repositorio del kernel. - Ambas opciones pueden aparecer juntas y solo en este orden: @revision primero y luego :kernel_name.
- Permitimos intencionalmente un prefijo inicial de “
|” (p. ej., “flash|…”) porque el código lo elimina antes de cargar; el carácter ’|’ no está excluido en las clases de caracteres aquí.
Ejemplos que coinciden: “org/model” “org/model@main” “org/model:custom_kernel” “org/[email protected]:custom_kernel”
- experts_implementation (
str, opcional) — La implementación de expertos a utilizar en el modelo (si es relevante). Puede ser cualquiera de:"eager"(implementación secuencial de las multiplicaciones de matrices de los expertos)."batched_mm"(usandotorch.bmm)."grouped_mm"(usandotorch.nn.functional.grouped_mm).
Por defecto, si el modelo lo admite, se utilizará
"grouped_mm". En caso contrario, el valor predeterminado es la implementación manual"eager".
Parámetros para la inferencia de modelos grandes
- dtype (
strotorch.dtype, opcional, por defecto"auto") — Anula el valor predeterminado detorch_dtypey carga el modelo con undtype. Las diferentes opciones son:-
torch.float16otorch.bfloat16otorch.float: carga en undtypeespecificado, ignorando elconfig.dtypedel modelo si existe. Si no se especifica- el modelo se cargará en
torch.float(fp32).
- el modelo se cargará en
-
"auto"- Se intentará utilizar una entrada dedtypeotorch_dtypeen el archivoconfig.jsondel modelo. Si no se encuentra esta entrada, a continuación se comprobará eldtypedel primer peso del checkpoint que sea de un tipo de punto flotante y se usará ese comodtype. Esto cargará el modelo usando eldtypeen el que se guardó al final del entrenamiento. No se puede usar como indicador de cómo se entrenó el modelo, ya que podría haberse entrenado en uno de los dtypes de media precisión, pero guardado en fp32. -
Una cadena de caracteres que es un
torch.dtypeválido. Por ejemplo, “float32” carga el modelo entorch.float32, “float16” lo carga entorch.float16, etc.
Para algunos modelos, el
dtypeen el que se entrenaron es desconocido; puedes intentar consultar el paper del modelo o contactar con los autores y pedirles que añadan esta información a la tarjeta del modelo y que inserten la entradadtypeotorch_dtypeenconfig.jsonen el hub. -
- device_map (
strodict[str, Union[int, str, torch.device]]ointotorch.device, opcional) — Un mapa que especifica dónde debe ir cada submódulo. No es necesario que se refine hasta el nombre de cada parámetro/buffer; una vez que un nombre de módulo dado está incluido, todos sus submódulos se enviarán al mismo dispositivo. Si solo pasamos el dispositivo (e.g.,"cpu","cuda:1","mps", o un rango ordinal de GPU como1) en el que se asignará el modelo, el mapa de dispositivos asignará todo el modelo a este dispositivo. Pasardevice_map = 0significa colocar todo el modelo en la GPU 0.Para que Accelerate calcule automáticamente el
device_mapmás optimizado, establezcadevice_map="auto". Para obtener más información sobre cada opción, consulte el diseño de un mapa de dispositivos. - max_memory (
Dict, opcional) — Un diccionario de identificador de dispositivo a memoria máxima si se usadevice_map. Si no se establece, el valor predeterminado será la memoria máxima disponible para cada GPU y la RAM de CPU disponible. - distributed_config (DistributedConfig, opcional) —
Configuración para la carga distribuida nativa con paralelismo de tensores o FSDP2. Pasa
DistributedConfig(tp_size=N)para usar el plan de paralelismo de tensores predefinido de un modelo,DistributedConfig(tp_plan=...)para especificar un plan de paralelismo de tensores, oDistributedConfig(fsdp_size=N)para FSDP2. Requieretorchruny un grupo de procesos inicializado cuandotp_size > 1ofsdp_size > 1. Es mutuamente excluyente condevice_map. - device_mesh (
torch.distributed.DeviceMesh, opcional) — Una malla de dispositivos de torch. Si no se proporciona, se usará el tamaño del mundo por defecto. Por ahora, solo se utiliza para la paralelización de tensores. Si se proporciona, debe contener una dimensión llamada"tp"en caso de que sea de más de 1 dimensión; esta dimensión se utilizará para la paralelización de tensores. - offload_folder (
stroos.PathLike, opcional) — Si eldevice_mapcontiene algún valor"disk", la carpeta donde se descargarán los pesos. - offload_buffers (
bool, opcional) — Si se descargan o no los buffers con los parámetros del modelo. - quantization_config (
Union[QuantizationConfigMixin,Dict], opcional) — Un diccionario de parámetros de configuración o un objeto QuantizationConfigMixin para la cuantización (p. ej. bitsandbytes, gptq). - subfolder (
str, opcional, valor predeterminado"") — Si los archivos relevantes se encuentran en una subcarpeta del repositorio del modelo en huggingface.co, puede especificar el nombre de la carpeta aquí. - variant (
str, opcional) — Si se especifica, carga los pesos desde el nombre de archivovariant, p. ej. pytorch_model..bin. - use_safetensors (
bool, opcional, valor predeterminadoNone) — Indica si se deben usar puntos de control desafetensors. El valor predeterminado esNone. Si no se especifica ysafetensorsno está instalado, se establecerá enFalse. - weights_only (
bool, opcional, valor predeterminadoTrue) — Indica si el unpickler debe estar restringido a cargar solo tensores, tipos primitivos, diccionarios y cualquier tipo añadido mediante torch.serialization.add_safe_globals(). Cuando se establece en False, se pueden cargar pesos de subclases de tensores envueltos. - disable_mmap (
bool, opcional) — Si se debe deshabilitar el mapeo de memoria al cargar puntos de control de safetensors. Cuando esNone(valor predeterminado), se detecta automáticamente y se establece enTruecuando el punto de control reside en un sistema de archivos FUSE dehf-mount(que utilizan HF Spaces/Endpoints), donde mmap + fallas de página paralelas pueden provocar un bloqueo. Cuando esTrue, los archivos se leen por completo en memoria y se analizan consafetensors.torch.load. Cuando esFalse, siempre se utiliza el cargador de memoria mapeada predeterminado. - fusion_config (
dict[str, bool | dict[str, Any]], opcional) — Configuración de fusión opcional aplicada antes de la instanciación del modelo. Cada clave habilita una familia de fusión y su valor puede serTruepara habilitar esa fusión con opciones predeterminadas o un diccionario de opciones específicas de la familia. Por ejemplo,{"patch_embeddings": True}habilita la fusión de patch embedding. Esto solo debe usarse como una optimización de inferencia, ya que puede cambiar ligeramente las salidas. Si se omite,from_pretrained()recurre aconfig.fusion_configcuando está disponible. Consulte la guía de mapeo de fusión endocs/source/en/fusion_mapping.mdpara más detalles. - key_mapping (`dict[str, str], opcional) — Un posible mapeo de los nombres de los pesos si se utiliza un modelo del Hub que es compatible con una arquitectura de Transformers, pero que no se ha convertido de la manera correspondiente.
- kwargs (diccionario restante de argumentos de palabra clave, opcional) —
Se puede usar para actualizar el objeto de configuración (después de ser cargado) e iniciar el modelo (p. ej.,
output_attentions=True). Se comporta de manera diferente dependiendo de si se proporciona unaconfigo se carga automáticamente:- Si se proporciona una configuración con
config,**kwargsse pasará directamente al método__init__del modelo subyacente (se asume que todas las actualizaciones relevantes de la configuración ya se han realizado) - Si no se proporciona una configuración,
kwargsse pasará primero a la función de inicialización de la clase de configuración (from_pretrained()). Cada clave dekwargsque corresponda a un atributo de configuración se usará para sobrescribir dicho atributo con el valor dekwargsproporcionado. Las claves restantes que no correspondan a ningún atributo de configuración se pasarán a la función__init__del modelo subyacente.
- Si se proporciona una configuración con
Instanciar un modelo de pytorch preentrenado a partir de una configuración de modelo preentrenado.
El modelo se establece en modo de evaluación de forma predeterminada mediante model.eval() (los módulos Dropout se desactivan). Para entrenar
el modelo, primero debe volver a establecerlo en modo de entrenamiento con model.train().
La advertencia Weights from XXX not initialized from pretrained model significa que los pesos de XXX no vienen preentrenados con el resto del modelo. Corresponde a usted entrenar esos pesos con una tarea de ajuste fino de nivel inferior.
La advertencia Weights from XXX not used in YYY significa que la capa XXX no se utiliza en YYY, por lo que esos pesos se descartan.
Active el modo especial “offline-mode” para usar este método en un entorno con cortafuegos.
Ejemplos:
>>> from transformers import BertConfig, BertModel
>>> # Download model and configuration from huggingface.co and cache.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased")
>>> # Model was saved using *save_pretrained('./test/saved_model/')* (for example purposes, not runnable).
>>> model = BertModel.from_pretrained("./test/saved_model/")
>>> # Update configuration during loading.
>>> model = BertModel.from_pretrained("google-bert/bert-base-uncased", output_attentions=True)
>>> assert model.config.output_attentions == Trueget_compiled_call
< source >( compile_config: transformers.generation.configuration_utils.CompileConfig | None )
Devuelve una versión compilada con torch.compile de self.__call__. Esto es útil para elegir dinámicamente entre forward no compilado y compilado durante la inferencia, especialmente para alternar entre prefill (donde no queremos usar la versión compilada para evitar recalcular el grafo con nuevas formas) y decodificación iterativa (donde queremos las mejoras de velocidad de la versión compilada con formas estáticas).
Búsqueda de mejor esfuerzo del módulo decoder.
Orden de intentos (cubre ~85 % de los usos actuales):
self.decoder/self.language_model/self.text_modelself.base_model(muchos envoltorios almacenan el decodificador aquí)self.base_model.get_decoder()(envoltorios anidados)- fallback: lanzar una excepción para los pocos modelos exóticos que requieren una regla a medida
Búsqueda de mejor esfuerzo del módulo encoder. Si se proporciona el argumento modality,
busca un codificador específico de la modalidad en los modelos multimodales (p. ej. “image_encoder”)
Por defecto, la función devuelve el codificador de texto del modelo, si existe, y en caso contrario devuelve self.
Los valores posibles de modality son “image”, “video” y “audio”.
Devuelve las claves de pesos vinculados expandidos (en caso de que contengan módulos o patrones de expresiones regulares) solo para el modelo actual, o de forma recursiva para todos los submodelos si all_submodels=True (es decir, volverá a comprobar los valores de configuración de todos los submodelos).
Para casi todos los modelos, solo es necesario vincular los embeddings, por lo que el modelo tiene una propiedad interna _tied_weights_keys = {"lm_head.weight": "model.embed_tokens.weight"}. En este caso, el mapeo ya está
“expandido”, es decir, ya contiene los parámetros completos, y esta función simplemente devolverá una copia de la propiedad.
Para patrones más complejos, p. ej. para DFineForObjectDetection, tenemos el siguiente atributo
_tied_weights_keys = {
r"bbox_embed.(?![0])\d+": "bbox_embed.0",
r"class_embed.(?![0])\d+": "class_embed.0",
"model.decoder.class_embed": "class_embed",
"model.decoder.bbox_embed": "bbox_embed",
}devolviendo lo siguiente:
{
'bbox_embed.1.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.1.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'bbox_embed.1.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'bbox_embed.1.layers.1.weight': 'bbox_embed.0.layers.1.weight',
'bbox_embed.1.layers.2.bias': 'bbox_embed.0.layers.2.bias',
'bbox_embed.1.layers.2.weight': 'bbox_embed.0.layers.2.weight',
'bbox_embed.2.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'bbox_embed.2.layers.0.weight': 'bbox_embed.0.layers.0.weight',
...
'class_embed.1.bias': 'class_embed.0.bias',
'class_embed.1.weight': 'class_embed.0.weight',
'class_embed.2.bias': 'class_embed.0.bias',
'class_embed.2.weight': 'class_embed.0.weight',
...
'model.decoder.class_embed.0.bias': 'class_embed.0.bias',
'model.decoder.class_embed.0.weight': 'class_embed.0.weight',
'model.decoder.class_embed.1.bias': 'class_embed.0.bias',
'model.decoder.class_embed.1.weight': 'class_embed.0.weight',
...
'model.decoder.bbox_embed.0.layers.0.bias': 'bbox_embed.0.layers.0.bias',
'model.decoder.bbox_embed.0.layers.0.weight': 'bbox_embed.0.layers.0.weight',
'model.decoder.bbox_embed.0.layers.1.bias': 'bbox_embed.0.layers.1.bias',
'model.decoder.bbox_embed.0.layers.1.weight': 'bbox_embed.0.layers.1.weight',
...
}Devuelve la implementación de expertos de este modelo y sus submodelos, como un dict en el formato aceptado por set_experts_implementation ("" para este modelo, y una entrada por cada sub_config). Esta es la contraparte de set_experts_implementation, por ejemplo, para tomar una instantánea de la implementación actual y restaurarla más tarde.
get_memory_footprint
< source >( return_buffers = True )
Parámetros
- return_buffers (
bool, opcional, valor predeterminadoTrue) — Si se debe incluir el tamaño de los tensores de buffer en el cálculo de la huella de memoria. Los buffers son tensores que no requieren gradientes y no están registrados como parámetros. Por ejemplo, la media y la desviación estándar en las capas de normalización por lote. Consulte: https://discuss.pytorch.org/t/what-pytorch-means-by-buffers/120266/2
Obtén la huella de memoria de un modelo. Esto devolverá la huella de memoria del modelo actual en bytes. Útil para medir la huella de memoria del modelo actual y diseñar algunas pruebas. Solución inspirada en las discusiones de PyTorch: https://discuss.pytorch.org/t/gpu-memory-that-model-uses/56822/2
Devuelve el parámetro o búfer indicado por target si existe; de lo contrario, lanza un error. Esta función combina get_parameter() y get_buffer() en una única función práctica. Si el destino es un atributo _extra_state, devolverá el estado adicional proporcionado por el módulo. Tenga en cuenta que solo funciona si target es una hoja del modelo.
Alias obsoleto de activation_checkpointing_disable(), se eliminará en v6.
Alias obsoleto de activation_checkpointing_enable(), se eliminará en v6.
Inicializa y vincula los pesos si es necesario. Si usas un PreTrainedModel personalizado, debes implementar la lógica de inicialización en _init_weights.
Esto es equivalente a llamar a self.apply(self._initialize_weights), pero maneja correctamente los modelos compuestos.
Esta función despacha dinámicamente la función init_weights correcta a los módulos a medida que avanzamos en el
grafo de módulos a lo largo de la recursión. Puede manejar un número arbitrario de submodelos. Sin ella, cada modelo
compuesto tendría que recursar una segunda vez en todos los submodelos explícitamente en el _init_weights más externo, lo
cual es extremadamente propenso a errores e ineficiente.
Devuelve si el modelo actual es código personalizado, es decir, si es código cargado desde el hub o definido en cualquier módulo o sesión específico del usuario.
Devuelve si el modelo actual es código personalizado, es decir, código cargado desde el hub, o una clase que acabamos de registrar mediante register_for_auto_class.
Añade la bandera _is_hf_initialized a los parámetros que se vincularán, para evitar inicializarlos
posteriormente, ya que de todos modos se vincularán (se sobrescribirán).
Esto es muy importante, ya que la mayoría de las incrustaciones están vinculadas y son parámetros enormes (los vocabularios suelen ser de 256k), por lo
que ejecutar inicializaciones en ellos es muy costoso.
Similar a named_buffers, pero solo produce los no persistentes. Es útil, ya que no es del todo obvio saber si son persistentes o no.
Un método que se ejecuta al final de la inicialización de cada modelo de Transformers, para ejecutar código que requiere que los módulos del modelo estén correctamente inicializados (como la inicialización de pesos). También se utiliza para obtener todas las propiedades estáticas correctas (planes de paralelismo, tied_weights_keys, _keep_in_fp32_modules, etc.) de manera correcta en el caso de modelos compuestos (es decir, el modelo de nivel superior debe conocer esas propiedades de sus hijos).
register_for_auto_class
< source >( auto_class = 'AutoModel' )
Registra esta clase con una clase auto dada. Esto solo debe usarse para modelos personalizados, ya que los de la biblioteca ya están mapeados con una clase auto.
resize_token_embeddings
< source >( new_num_tokens: int | None = Nonepad_to_multiple_of: int | None = Nonemean_resizing: bool = True ) → torch.nn.Embedding
Parámetros
- new_num_tokens (
int, opcional) — El nuevo número de tokens en la matriz de incrustaciones. Aumentar el tamaño añadirá vectores recién inicializados al final. Reducir el tamaño eliminará vectores desde el final. Si no se proporciona o esNone, simplemente devuelve un puntero al módulo de tokens de entradatorch.nn.Embeddingdel modelo sin hacer nada. - pad_to_multiple_of (
int, opcional) — Si se establece, se rellenará la matriz de embeddings hasta un múltiplo del valor proporcionado. Sinew_num_tokensse establece enNone, simplemente se rellenará el embedding hasta un múltiplo depad_to_multiple_of.Esto resulta especialmente útil para habilitar el uso de Tensor Cores en hardware de NVIDIA con capacidad de cálculo
>= 7.5(Volta), o en TPUs, que se benefician de que las longitudes de secuencia sean un múltiplo de 128. Para más detalles sobre esto, o para obtener ayuda sobre cómo elegir el valor correcto para el redimensionamiento, consulte esta guía: https://docs.nvidia.com/deeplearning/performance/dl-performance-matrix-multiplication/index.html#requirements-tc - mean_resizing (
bool) — Si se inicializan los embeddings añadidos a partir de una distribución normal multivariante que tiene la media y la covarianza de los embeddings anteriores, o si se inicializan con una distribución normal que tiene una media de cero y una desviación estándar igual aconfig.initializer_range.Establecer
mean_resizingenTruees útil al aumentar el tamaño de los embeddings de los modelos de lenguaje causales, donde las probabilidades de los tokens generados no se verán afectadas por los embeddings añadidos, ya que inicializar los nuevos embeddings con la media de los embeddings antiguos reducirá la divergencia de KL entre la probabilidad del siguiente token antes y después de añadir los nuevos embeddings. Consulte este artículo para obtener más información: https://nlp.stanford.edu/~johnhew/vocab-expansion.html
Devuelve
torch.nn.Embedding
Puntero al módulo de Embeddings de los tokens de entrada del modelo.
Redimensiona la matriz de incrustaciones de tokens de entrada del modelo si new_num_tokens != config.vocab_size.
Se encarga de vincular los pesos de las incrustaciones después, si la clase del modelo tiene un método tie_weights().
save_pretrained
< source >( save_directory: str | os.PathLikeis_main_process: bool = Truestate_dict: dict | None = Nonepush_to_hub: bool = Falsemax_shard_size: int | str = '50GB'variant: str | None = Nonetoken: str | bool | None = Nonesave_peft_format: bool = Truesave_original_format: bool = Truedistributed_checkpoint: bool = False**kwargs )
Parámetros
- save_directory (
stroos.PathLike) — Directorio en el que se guardará. Se creará si no existe. - is_main_process (
bool, opcional, valor predeterminadoTrue) — Indica si el proceso que realiza esta llamada es el proceso principal o no. Útil en el entrenamiento distribuido, como con TPUs, cuando es necesario llamar a esta función en todos los procesos. En este caso, establezcais_main_process=Truesolo en el proceso principal para evitar condiciones de carrera. - state_dict (diccionario anidado de
torch.Tensor) — El diccionario de estado del modelo a guardar. Por defecto seráself.state_dict(), pero se puede usar para guardar solo partes del modelo o si se necesitan precauciones especiales al recuperar el diccionario de estado de un modelo (como cuando se usa paralelismo de modelos). - push_to_hub (
bool, opcional, valor predeterminadoFalse) — Indica si se debe subir el modelo al hub de modelos de Hugging Face después de guardarlo. Puedes especificar el repositorio al que deseas subirlo conrepo_id(por defecto, usará el nombre desave_directoryen tu espacio de nombres). - max_shard_size (
intostr, opcional, por defecto"50GB") — El tamaño máximo de un checkpoint antes de ser fragmentado. Los fragmentos del checkpoint tendrán cada uno un tamaño inferior a este valor. Si se expresa como una cadena, debe consistir en dígitos seguidos de una unidad (como"5MB").Si un solo peso del modelo es mayor que
max_shard_size, se encontrará en su propia partición de checkpoint, que será mayor quemax_shard_size. - variant (
str, opcional) — Si se especifica, los pesos se guardan en el formato model..safetensors. - token (
strobool, opcional) — El token que se usará como autorización HTTP bearer para archivos remotos. Si esTrue, o no se especifica, se usará el token generado al ejecutarhf auth login(almacenado en~/.huggingface). - save_peft_format (
bool, opcional, valor predeterminadoTrue) — Para la compatibilidad hacia atrás con la biblioteca PEFT, si los pesos del adaptador están unidos al modelo, todas las claves del state dict de los adaptadores deben tenerbase_model.modelcomo prefijo. Los usuarios avanzados pueden deshabilitar este comportamiento estableciendosave_peft_formatenFalse. - save_original_format (
bool, opcional, valor predeterminadoTrue) — Para la compatibilidad hacia atrás con las versiones anteriores detransformers, puede guardar el punto de control con su mapeo inverso. El mapeo inverso debe existir incluso si el modelo se cargó desde un punto de control legacy None. - distributed_checkpoint (
bool, opcional, valor predeterminadoFalse) — Al guardar un modelo particionado con FSDP o TP, escribe safetensors con checkpointing distribuido (DCP) en lugar de reunir los pesos en la CPU primero. Cada rank debe llamar a este método. CuandoFalse, los pesos se reúnen en la CPU en el rank 0 mediantegather_full_state_dictantes de escribirlos. Solo está pensado para guardar y reanudar el entrenamiento; establécelo enFalsesi deseas las funciones completas desave_pretrained. Conpush_to_hub=True, el rank 0 consolida el checkpoint en un subdirectorioconsolidated/y sube ese directorio. Requieretorch>=2.7. - kwargs (
dict[str, Any], opcional) — Argumentos de palabra clave adicionales que se pasan al método push_to_hub().
Guarde un modelo y su archivo de configuración en un directorio para que pueda recargarse mediante el método de clase from_pretrained().
set_attn_implementation
< source >( attn_implementation: str | dictallow_all_kernels: bool = False )
Parámetros
- attn_implementation (
strodict) — La implementación de atención a configurar para este modelo. Puede ser unstr, en cuyo caso se distribuirá a todos los submodelos si es relevante, o undictdonde las claves son los nombres de sub_configs, en cuyo caso cada submodelo distribuirá el valor correspondiente (a sí mismo y a todos los submodelos anidados en él). Un valor puede ser a su vez undicten el mismo formato, para apuntar a los sub_configs de ese submodelo (como al inicializar una config con unattn_implementationdict anidado). - allow_all_kernels (
bool, opcional) — Si se deben cargar kernels de repositorios no verificados del hub, siattn_implementationes un kernel personalizado fuera del repositorio del hubkernels-community.
Establece el attn_implementation solicitado para este modelo.
Configurador simétrico. Replica la lógica de búsqueda utilizada en get_decoder.
Configurador simétrico. Replica la lógica de búsqueda utilizada en get_encoder.
set_experts_implementation
< source >( experts_implementation: str | dict )
Parámetros
- experts_implementation (
strodict) — La implementación de expertos a configurar para este modelo. Puede ser unstr, en cuyo caso se asignará a todos los submodelos si es relevante, o undictdonde las claves son los nombres de sub_configs, en cuyo caso cada submodelo asignará el valor correspondiente.
Establezca el experts_implementation solicitado para este modelo.
set_use_kernels
< source >( use_kernelskernel_config: transformers.utils.kernel_config.KernelConfig | None = Nonemode: Mode | None = None )
Parámetros
- use_kernels (
bool) — Si se debe usar o no la bibliotecakernelspara kernelizar algunas capas del modelo. - kernel_config (
KernelConfig, opcional) — La configuración del kernel que se utilizará para kernelizar el modelo. Si esNone, se utilizará el mapeo de kernels predeterminado. - mode (
Mode, opcional) — El modo que debe aplicarse durantekernelize. Opcional, por defecto es el modo de entrenamiento o inferencia según la bandera internatraining.
Establece si se debe usar o no la biblioteca kernels para kernelizar algunas capas del modelo.
Vincula los pesos del modelo. Si recompute_mapping=False (valor predeterminado cuando se llama internamente), se basará en el atributo model.all_tied_weights_keys, que contiene el mapeo {target: source} para los parámetros vinculados.
Si recompute_mapping=True, volverá a comprobar todos los submodelos internos y su configuración para determinar los parámetros que deben vincularse. Este es el valor predeterminado cuando se llama a model.tie_weights() de forma independiente, fuera de __init__ y from_pretrained, por si los valores de la configuración se han modificado en algún lugar.
Tenga en cuenta que durante from_pretrained, el atado es simétrico: si el mapeo indica “tie target -> source” pero source no está presente en el checkpoint mientras que target sí existe, intercambiamos source y target para poder atar todo al parámetro que realmente existe.
Un valor simulado para una ruta con puntos (p. ej. torch.float32): las cadenas de acceso a atributos y las llamadas se comportan como decoradores de paso, repr es la ruta con puntos, y su uso como clase base sustituye una base de type simple (PEP 560 __mro_entries__), de modo que las subclases reales conservan un metaclass normal y inspect.signature lee su __init__ real en lugar del de un simulado.
Muestra una advertencia única si los input_ids parecen contener relleno y no se proporcionó una máscara de atención.
Los modelos personalizados también deben incluir _supports_assign_param_buffer, que determina si superfast init se puede aplicar en el modelo particular. Las señales de que su modelo necesita esto son si test_save_and_load_from_pretrained falla. En ese caso,
establezca esto en False.
ModuleUtilsMixin
Algunas utilidades para torch.nn.Modules, para usarse como mixin.
num_parameters
< source >( only_trainable: bool = Falseexclude_embeddings: bool = False ) → int
Obtener el número de parámetros (opcionalmente, entrenables o no de incrustaciones) en el módulo.
Subir al Hub
Un Mixin que contiene la funcionalidad para subir un modelo o tokenizador al hub.
push_to_hub
< source >( repo_id: strcommit_message: str | None = Nonecommit_description: str | None = Noneprivate: bool | None = Nonetoken: bool | str | None = Nonerevision: str | None = Nonecreate_pr: bool = Falsemax_shard_size: int | str | None = '50GB'tags: list[str] | None = None )
Parámetros
- repo_id (
str) — El nombre del repositorio al que deseas enviar tu {object}. Debe incluir el nombre de tu organización cuando se envía a una organización determinada. - commit_message (
str, opcional) — Mensaje para el commit al hacer push. El valor predeterminado es"Upload {object}". - commit_description (
str, opcional) — La descripción del commit que se creará - private (
bool, opcional) — Si se debe hacer el repositorio privado. Si esNone(predeterminado), el repositorio será público a menos que el valor predeterminado de la organización sea privado. Este valor se ignora si el repositorio ya existe. - token (
boolostr, opcional) — El token que se usará como autorización HTTP bearer para archivos remotos. Si esTrue(valor predeterminado), se usará el token generado al ejecutarhf auth login(almacenado en~/.huggingface). - revision (
str, opcional) — Rama a la que se enviarán los archivos subidos. - create_pr (
bool, opcional, valor predeterminadoFalse) — Si se debe crear una PR con los archivos subidos o realizar el commit directamente. - max_shard_size (
intostr, opcional, valor predeterminado"50GB") — Solo aplicable a modelos. El tamaño máximo de un checkpoint antes de ser fragmentado. Los fragmentos del checkpoint tendrán cada uno un tamaño inferior a este valor. Si se expresa como una cadena, debe consistir en dígitos seguidos de una unidad (como"5MB"). - tags (
list[str], opcional) — Lista de etiquetas para publicar en el Hub.
Sube {object_files} al 🤗 Model Hub.
Ejemplos:
from transformers import {object_class}
{object} = {object_class}.from_pretrained("google-bert/bert-base-cased")
# Push the {object} to your namespace with the name "my-finetuned-bert".
{object}.push_to_hub("my-finetuned-bert")
# Push the {object} to an organization with the name "my-finetuned-bert".
{object}.push_to_hub("huggingface/my-finetuned-bert")