Transformers documentation

Pemecahan masalah

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

Pemecahan masalah

Kadang-kadang terjadi kesalahan, tetapi kami di sini untuk membantu! Panduan ini membahas beberapa masalah paling umum yang pernah kami temui dan cara Anda dapat menyelesaikannya. Namun, panduan ini tidak dimaksudkan sebagai kumpulan komprehensif dari setiap masalah 🤗 Transformers. Untuk bantuan lebih lanjut dalam memecahkan masalah Anda, coba:

  1. Meminta bantuan di forum. Ada kategori khusus tempat Anda dapat memposting pertanyaan, seperti Beginners atau 🤗 Transformers. Pastikan Anda menulis posting forum yang deskriptif dengan kode yang dapat direproduksi untuk memaksimalkan kemungkinan masalah Anda terselesaikan!
  1. Buat Issue di repositori 🤗 Transformers jika itu adalah bug yang terkait dengan pustaka. Usahakan untuk menyertakan sebanyak mungkin informasi yang mendeskripsikan bug tersebut agar kami dapat lebih mudah memahami apa yang salah dan bagaimana cara memperbaikinya.

  2. Periksa panduan Migration jika Anda menggunakan versi 🤗 Transformers yang lebih lama, karena beberapa perubahan penting telah diperkenalkan di antara versi-versi tersebut.

Untuk detail lebih lanjut tentang pemecahan masalah dan cara mendapatkan bantuan, lihat Bab 8 dari kursus Hugging Face.

Lingkungan yang terisolasi

Beberapa instans GPU pada konfigurasi cloud dan intranet dibatasi oleh firewall terhadap koneksi eksternal, sehingga menyebabkan error koneksi. Ketika skrip Anda mencoba mengunduh bobot model atau dataset, proses unduhan akan menggantung dan kemudian timeout dengan pesan berikut:

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.

Dalam kasus ini, Anda sebaiknya mencoba menjalankan 🤗 Transformers dalam mode offline untuk menghindari error koneksi.

CUDA kehabisan memori

Melatih model besar dengan jutaan parameter bisa menjadi tantangan tanpa perangkat keras yang tepat. Kesalahan umum yang mungkin Anda temui saat GPU kehabisan memori adalah:

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)

Berikut adalah beberapa solusi potensial yang dapat Anda coba untuk mengurangi penggunaan memori:

Lihat ringkasan optimasi untuk detail lebih lanjut tentang teknik penghematan memori.

ImportError

Kesalahan umum lain yang mungkin Anda temui, terutama jika model tersebut baru dirilis, adalah ImportError:

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

Untuk jenis error ini, pastikan Anda telah menginstal versi terbaru 🤗 Transformers untuk mengakses model-model terbaru:

pip install transformers --upgrade

CUDA error: device-side assert dipicu

Kadang-kadang, Anda mungkin menemui error CUDA generik yang berkaitan dengan error dalam kode perangkat.

RuntimeError: CUDA error: device-side assert triggered

Anda sebaiknya mencoba menjalankan kode di CPU terlebih dahulu untuk mendapatkan pesan error yang lebih deskriptif. Tambahkan variabel lingkungan berikut di awal kode Anda untuk beralih ke CPU:

>>> import os

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

Opsi lain adalah mendapatkan traceback yang lebih baik dari GPU. Tambahkan variabel lingkungan berikut di awal kode Anda agar traceback mengarah ke sumber kesalahan:

>>> import os

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

Output yang salah ketika token padding tidak dimask

Dalam beberapa kasus, output hidden_state mungkin tidak benar jika input_ids berisi token padding. Untuk mendemonstrasikannya, muat sebuah model dan tokenizer. Anda dapat mengakses pad_token_id dari sebuah model untuk melihat nilainya. pad_token_id mungkin bernilai None untuk beberapa model, tetapi Anda selalu dapat menyetelnya secara manual.

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

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

Contoh berikut menunjukkan output tanpa masking token padding:

>>> 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>)

Berikut adalah output aktual dari urutan kedua:

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

Sebagian besar waktu, Anda sebaiknya menyediakan attention_mask untuk model Anda agar mengabaikan token padding dan menghindari kesalahan diam-diam ini. Sekarang, output dari urutan kedua sesuai dengan output aslinya:

Secara default, tokenizer membuat attention_mask untuk Anda berdasarkan nilai default tokenizer spesifik Anda.

>>> 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 tidak secara otomatis membuat attention_mask untuk mem-mask token padding jika token tersebut diberikan, karena:

  • Beberapa model tidak memiliki token padding.
  • Untuk beberapa kasus penggunaan, pengguna menginginkan model untuk memperhatikan token padding.

ValueError: Kelas konfigurasi XYZ tidak dikenali untuk jenis AutoModel ini

Secara umum, kami merekomendasikan penggunaan kelas AutoModel untuk memuat instance model pretrained. Kelas ini dapat secara otomatis menyimpulkan dan memuat arsitektur yang benar dari checkpoint tertentu berdasarkan konfigurasinya. Jika Anda melihat ValueError ini saat memuat model dari checkpoint, artinya kelas Auto tidak dapat menemukan pemetaan dari konfigurasi di checkpoint yang diberikan ke jenis model yang sedang Anda coba muat. Paling sering, hal ini terjadi ketika sebuah checkpoint tidak mendukung tugas tertentu. Sebagai contoh, Anda akan melihat error ini pada contoh berikut karena tidak ada GPT2 untuk question answering:

>>> 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