У меня возникла проблема с библиотекой преобразователей, в частности с инициализацией конвейера. Когда я обращаюсь к атрибуту base_model модели LlamaForCausalLM, кажется, что она повторяется бесконечно.
Вот пример того, что я вижу:
Код: Выделить всё
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
# let's rock the smallest model on hf
MODEL_NAME = "arnir0/Tiny-LLM"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME)
INPUT = ["the secret to baking a really good cake is ", "a baguette is "]
if __name__ == "__main__":
pipeline = pipeline(
task="text-generation",
model=MODEL_NAME,
device="mps"
)
for out in pipeline(INPUT):
print(out[0]["generated_text"])
Проверив атрибут model, я замечаю, что это экземпляр LlamaForCausalLM, который имеет атрибут base_model, указывающий на LlamaModel. Однако, когда я обращаюсь к атрибуту base_model модели LlamaModel, кажется, что он повторяется бесконечно, а атрибут base_model указывает на другой (или сам?) объект LlamaModel.
Мои вопросы:
- Завершится ли этот рекурсивный цикл? Есть ли условие, которое разорвет цикл, или это будет продолжаться бесконечно?
- Почему атрибут model застревает в этом цикле? Это выбор дизайна в библиотеке преобразователей или есть конкретная причина такого поведения?
- Связано ли рекурсивное поведение атрибута model с файлом model.config? Я проверил model.config, и он кажется нормальным, но я не уверен, есть ли между ними связь.
Подробнее здесь: https://stackoverflow.com/questions/798 ... te-mystery
Мобильная версия