# Pemecahan masalah

Kadang-kadang terjadi kesalahan, tetapi kami di sini untuk membantu! Panduan ini membahas beberapa masalah paling umum yang telah kami lihat dan bagaimana 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](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2F). Ada kategori khusus tempat Anda dapat memposting pertanyaan, seperti [Beginners](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fc%2Fbeginners%2F5) atau [🤗 Transformers](/static-proxy?url=https%3A%2F%2Fdiscuss.huggingface.co%2Fc%2Ftransformers%2F9). Pastikan Anda menulis posting forum yang deskriptif dengan kode yang dapat direproduksi untuk memaksimalkan kemungkinan masalah Anda terselesaikan!

2. Buat [Issue](https://github.com/huggingface/transformers/issues/new/choose) di repositori 🤗 Transformers jika itu adalah bug yang terkait dengan pustaka. Usahakan untuk menyertakan sebanyak mungkin informasi yang mendeskripsikan bug tersebut untuk membantu kami lebih baik memahami apa yang salah dan bagaimana kami dapat memperbaikinya.

3. Periksa panduan [Migration](https://github.com/huggingface/transformers/blob/main/MIGRATION_GUIDE_V5.md) 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](https://huggingface.co/course/chapter8/1?fw=pt) 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:

```text
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](installation#offline-mode) 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:

```text
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:

- Kurangi nilai [per_device_train_batch_size](/docs/transformers/main/id/main_classes/trainer#transformers.TrainingArguments.per_device_train_batch_size) di [TrainingArguments](/docs/transformers/main/id/main_classes/trainer#transformers.TrainingArguments).
- Coba gunakan [gradient_accumulation_steps](/docs/transformers/main/id/main_classes/trainer#transformers.TrainingArguments.gradient_accumulation_steps) di [TrainingArguments](/docs/transformers/main/id/main_classes/trainer#transformers.TrainingArguments) untuk secara efektif meningkatkan ukuran batch keseluruhan.

Lihat [ringkasan optimasi](optimization_overview) untuk detail lebih lanjut tentang teknik penghematan memori.

## ImportError

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

```text
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:

```bash
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.

```text
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:

```py
>>> 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:

```py
>>> 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` mencakup token padding. Untuk mendemonstrasikannya, muat 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.

```py
>>> 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:

```py
>>> 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:

```py
>>> 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.

```py
>>> 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](/docs/transformers/main/id/model_doc/auto#transformers.AutoModel) untuk memuat instance model pretrained. Kelas ini dapat secara otomatis menginfer dan memuat arsitektur yang benar dari checkpoint yang diberikan 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 umum, hal ini terjadi ketika checkpoint tidak mendukung tugas tertentu. Misalnya, Anda akan melihat error ini pada contoh berikut karena tidak ada GPT2 untuk question answering:

```py
>>> 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, ...
```

