es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El uso de la biblioteca Huggingface genera un error: KeyError: ‘logits’

Soy nuevo en la biblioteca huggingface y estoy tratando de ejecutar un modelo para realizar una tarea de lenguaje enmascarado (“fill-mask task”):

from transformers import BertTokenizer, BertForMaskedLM
import torch
from transformers import pipeline, AutoTokenizer, AutoModel

# Inicializar el pipeline de MLM
tokenizer = AutoTokenizer.from_pretrained("emilyalsentzer/Bio_ClinicalBERT")
model = AutoModel.from_pretrained("emilyalsentzer/Bio_ClinicalBERT")

print(len(tokenizer.vocab))

Pero cuando intento obtener las probabilidades sobre los tokens, obtengo un error:

classifier = pipeline("fill-mask", model=model, tokenizer=tokenizer)
results = classifier("Paris is the [MASK] of France.")

KeyError: 'logits'

También intenté lo siguiente desde un tutorial diferente y obtuve el mismo error:

mlm = pipeline('fill-mask', model=model, tokenizer=tokenizer)

# Obtener el token enmascarado
mask = mlm.tokenizer.mask_token

# Obtener el resultado para una frase enmascarada en particular
phrase = f'Paris is the [MASK] of France.'
result = mlm(phrase, top_k=10000)

# Imprimir el resultado
print(result)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El error ‘KeyError: ‘logits” sugiere que la función de tubería no puede encontrar la clave ‘logits’ en el diccionario de salida. Esto puede ser debido a la falta de coincidencia entre el tokenizador utilizado para el preentrenamiento del modelo y el que se está utilizando en la tubería.

    Para resolver este problema, puedes intentar:

    1. Utilizar el mismo tokenizador tanto para la inicialización del modelo como para la tubería:
      tokenizer = BertTokenizer.from_pretrained("emilyalsentzer/Bio_ClinicalBERT")
      model = BertForMaskedLM.from_pretrained("emilyalsentzer/Bio_ClinicalBERT")
      classifier = pipeline('fill-mask', model=model, tokenizer=tokenizer)
      
    2. Actualizar la biblioteca transformers a la última versión.
      !pip install --upgrade transformers
      

    Si las soluciones anteriores no funcionan, puedes intentar especificar el formato de salida de la tubería. Por ejemplo:

        classifier = pipeline('fill-mask', model=model, tokenizer=tokenizer, output_format='list')
        results = classifier('Paris is the [MASK] of France.')
        print(results)
    

    Esto devolverá una lista de diccionarios que contienen el token predicho, su puntuación y su ID.

    La biblioteca Huggingface Transformers está extensamente documentada, y para obtener más ayuda, puedes visitar la documentación oficial o pedir apoyo a la comunidad.

Comments are closed.