Transformers documentation

Sorun Giderme

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Sorun Giderme

Bazen hatalar oluşabilir, ancak size yardımcı olmak için buradayız! Bu kılavuz, karşılaştığımız en yaygın sorunlardan bazılarını ve bunları nasıl çözebileceğinizi ele alır. Bununla birlikte, bu kılavuz 🤗 Transformers sorunlarının kapsamlı bir derlemesi olarak tasarlanmamıştır. Sorununuzla ilgili daha fazla hata ayıklama yardımı için şunları deneyin:

  1. Forumlarda yardım istemek. Sorunuzu Beginners veya 🤗 Transformers gibi belirli kategorilere gönderebilirsiniz. Sorununuzun çözülme olasılığını en üst düzeye çıkarmak için, tekrarlanabilir kod içeren iyi bir açıklamalı forum gönderisi yazdığınızdan emin olun!
  1. Kütüphaneyle ilgili bir hata ise, 🤗 Transformers deposunda bir Issue oluşturun. Hatanın ne olduğunu daha iyi anlayabilmemiz ve nasıl düzeltebileceğimizi belirleyebilmemiz için hatayı mümkün olduğunca ayrıntılı olarak açıklayan bilgileri dahil etmeye çalışın.

  2. Eski bir 🤗 Transformers sürümü kullanıyorsanız, sürümler arasında önemli değişiklikler yapıldığı için Migration kılavuzunu kontrol edin.

Sorun giderme ve yardım alma konularında daha fazla ayrıntı için Hugging Face kursunun 8. Bölümü'ne göz atın.

Ateş duvarlı ortamlar

Bulut ve intranet kurulumlarındaki bazı GPU örnekleri, dış bağlantılara karşı güvenlik duvarıyla korunur ve bu durum bir bağlantı hatasına yol açar. Betiğiniz model ağırlıklarını veya veri kümelerini indirmeye çalıştığında, indirme işlemi takılır ve ardından aşağıdaki mesajla zaman aşımına uğrar:

ValueError: Connection error, and we cannot find the requested files in the cached path.
Please try again or make sure your Internet connection is on.

Bu durumda, bağlantı hatasını önlemek için 🤗 Transformers'ı çevrimdışı modda çalıştırmayı denemelisiniz.

CUDA bellek yetersiz

Milyonlarca parametreye sahip büyük modelleri uygun donanım olmadan eğitmek zorlayıcı olabilir. GPU belleği tükendiğinde karşılaşabileceğiniz yaygın bir hata şudur:

CUDA out of memory. Tried to allocate 256.00 MiB (GPU 0; 11.17 GiB total capacity; 9.70 GiB already allocated; 179.81 MiB free; 9.85 GiB reserved in total by PyTorch)

Bellek kullanımını azaltmak için deneyebileceğiniz bazı olası çözümler şunlardır:

Bellek tasarrufu sağlayan teknikler hakkında daha fazla ayrıntı için optimizasyon genel bakışına bakın.

ImportError

Özellikle yeni yayınlanmış bir model söz konusu olduğunda karşılaşabileceğiniz bir diğer yaygın hata ImportError'dır:

ImportError: cannot import name 'ImageGPTImageProcessor' from 'transformers' (unknown location)

Bu hata türleri için, en güncel modellere erişebilmek için 🤗 Transformers'ın en son sürümünün yüklü olduğundan emin olun:

pip install transformers --upgrade

CUDA hatası: cihaz tarafında bir assert tetiklendi

Bazen, cihaz kodundaki bir hataya ilişkin genel bir CUDA hatasıyla karşılaşabilirsiniz.

RuntimeError: CUDA error: device-side assert triggered

Daha açıklayıcı bir hata mesajı almak için kodu önce bir CPU üzerinde çalıştırmayı denemelisiniz. CPU'ya geçiş yapmak için kodunuzun başına aşağıdaki ortam değişkenini ekleyin:

>>> import os

>>> os.environ["CUDA_VISIBLE_DEVICES"] = ""

Bir diğer seçenek, GPU'dan daha iyi bir hata izi (traceback) almaktır. Hata izinin hatanın kaynağına işaret etmesi için aşağıdaki ortam değişkenini kodunuzun başına ekleyin:

>>> import os

>>> os.environ["CUDA_LAUNCH_BLOCKING"] = "1"

Doldurma (padding) jetonları maskelemediğinde hatalı çıktı

Bazı durumlarda, input_ids dolgu (padding) jetonları içeriyorsa, hidden_state çıktısı hatalı olabilir. Bunu göstermek için bir model ve tokenizer yükleyin. Bir modelin pad_token_id değerine erişerek bu değeri görebilirsiniz. Bazı modellerde pad_token_id None olabilir, ancak bunu her zaman manuel olarak ayarlayabilirsiniz.

>>> from transformers import AutoModelForSequenceClassification
>>> import torch

>>> model = AutoModelForSequenceClassification.from_pretrained("google-bert/bert-base-uncased")
>>> model.config.pad_token_id
0

Aşağıdaki örnek, dolgu (padding) belirteçlerini maskelemeden çıktıyı gösterir:

>>> input_ids = torch.tensor([[7592, 2057, 2097, 2393, 9611, 2115], [7592, 0, 0, 0, 0, 0]])
>>> output = model(input_ids)
>>> print(output.logits)
tensor([[ 0.0082, -0.2307],
        [ 0.1317, -0.1683]], grad_fn=<AddmmBackward0>)

İşte ikinci dizinin gerçek çıktısı:

>>> input_ids = torch.tensor([[7592]])
>>> output = model(input_ids)
>>> print(output.logits)
tensor([[-0.1008, -0.4061]], grad_fn=<AddmmBackward0>)

Çoğu durumda, bu sessiz hatadan kaçınmak için dolgu (padding) tokenlarını yok sayması adına modelinize attention_mask parametresini iletmeniz gerekir. Artık ikinci dizinin çıktısı, gerçek çıktısıyla eşleşiyor:

Varsayılan olarak, tokenizer, belirli tokenizer'ınızın varsayılanlarına dayanarak sizin için bir attention_mask oluşturur.

>>> attention_mask = torch.tensor([[1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0]])
>>> output = model(input_ids, attention_mask=attention_mask)
>>> print(output.logits)
tensor([[ 0.0082, -0.2307],
        [-0.1008, -0.4061]], grad_fn=<AddmmBackward0>)

🤗 Transformers, bir dolgu (padding) token'ı sağlandığında onu maskelemek için otomatik olarak bir attention_mask oluşturmaz, çünkü:

  • Bazı modellerin bir dolgu (padding) belirteci yoktur.
  • Bazı kullanım senaryolarında, kullanıcıların bir modelin dolgu (padding) belirteçlerine odaklanmasını istemesi gerekir.

ValueError: Bu AutoModel türü için XYZ yapılandırma sınıfı tanınmıyor

Genel olarak, önceden eğitilmiş model örneklerini yüklemek için AutoModel sınıfını kullanmanızı öneririz. Bu sınıf, yapılandırmaya dayanarak verilen bir kontrol noktasından doğru mimariyi otomatik olarak çıkarabilir ve yükleyebilir. Bir modeli kontrol noktasından yüklerken bu ValueError ile karşılaşıyorsanız, bu durum Auto sınıfının, verilen kontrol noktasındaki yapılandırmadan yüklemeye çalıştığınız model türüne bir eşleme bulamadığı anlamına gelir. Bu durum en sık, bir kontrol noktasının belirli bir görevi desteklemediğinde ortaya çıkar. Örneğin, soru-cevap için GPT2 bulunmadığından aşağıdaki örnekte bu hatayı göreceksiniz:

>>> from transformers import AutoProcessor, AutoModelForQuestionAnswering

>>> processor = AutoProcessor.from_pretrained("openai-community/gpt2-medium")
>>> model = AutoModelForQuestionAnswering.from_pretrained("openai-community/gpt2-medium")
ValueError: Unrecognized configuration class <class 'transformers.models.gpt2.configuration_gpt2.GPT2Config'> for this kind of AutoModel: AutoModelForQuestionAnswering.
Model type should be one of AlbertConfig, BartConfig, BertConfig, BigBirdConfig, BigBirdPegasusConfig, BloomConfig, ...
Update on GitHub