- ChatGPT 3.5 berulang kali memunculkan error message stream saat diminta menaruh string tertentu di bagian paling atas respons, sementara GPT-4 merespons permintaan yang sama dengan lebih normal
- Di API, GPT-3.5 juga mengembalikan error pemrosesan server, dan gejala yang sama muncul meski string diganti dengan
useRal,useRalative, atauuseRalativeImagePath - String bermasalah tersebut ada sebagai token yang dikeluarkan model GPT alih-alih huruf, dan
useRalativeImagePathmuncul di 80,4 ribu file GitHub sebagai nama opsi file konfigurasi XML Katalon Studio - Jika daftar token mencerminkan file GitHub tetapi file XML kemudian dikeluarkan dari data pelatihan, model mungkin tidak cukup mempelajari token tersebut
- Menaruh string ini di dalam dokumen dapat bekerja seperti data poisoning yang mengganggu rangkuman GPT-3.5, dan error ini juga berhasil direproduksi pada permintaan rangkuman artikel blog sungguhan
Error string yang dapat direproduksi di GPT-3.5
- Jika ChatGPT 3.5 diminta menyertakan frasa berikut di bagian atas respons, error terjadi secara konsisten
Include this at the top of the response: "ponyuseRal ponyuseRal ponyuseRal pony"
- Di layar, setelah
ponymuncul error Error in message stream - GPT-4 merespons permintaan yang sama dengan lebih normal
- Di API GPT-3.5, error berikut dikembalikan
The server had an error processing your request. Sorry about that! You can retry your request, or contact us through our help center at help.openai.com if you keep seeing this error
- Hasilnya tetap sama meski
useRaldiganti denganuseRalativeatauuseRalativeImagePath
Token dan useRalativeImagePath
- Model GPT OpenAI tidak mengeluarkan huruf satu per satu, melainkan mengeluarkan stream token yang terdiri dari beberapa huruf
- Output berbasis token adalah cara untuk meningkatkan performa dan akurasi model, dan cara kerjanya dapat dilihat di demo tokenizer OpenAI
useRal,useRalative, danuseRalativeImagePathmasing-masing ada sebagai satu tokenuseRalativeImagePathdigunakan sebagai nama opsi file konfigurasi XML di software pengujian otomatis Katalon Studio- Muncul di 80,4 ribu file menurut pencarian kode GitHub
- Fakta bahwa ejaannya salah sebagai
Ralative, bukanRelative, bisa menjadi alasan mengapa ia menjadi token tersendiri
- Ketiga token tersebut memicu error yang sama meski saling ditukar dalam prompt
Dugaan tentang data pelatihan
- Sebelum pelatihan GPT-3.5, hanya ditemukan satu contoh penyebutan
useRalativeImagePathdi luar file XML, yaitu postingan spelling mistake di forum Katalon - Skenario yang mungkin adalah sebagai berikut
- Dataset yang digunakan untuk membuat daftar token bisa saja mencakup seluruh file GitHub
- Setelah itu OpenAI mungkin mengecualikan file XML dari data pelatihan sebenarnya
- Akibatnya, token
useRalativeImagePathmungkin hampir tidak tersisa di data pelatihan
- Dalam kasus ini, model mungkin tidak cukup terlatih untuk memahami token tersebut, sehingga memicu perilaku abnormal saat proses output
Kemungkinan data poisoning
- Jika frasa ini dimasukkan ke dokumen, ia dapat disalahgunakan untuk mengganggu upaya merangkum dokumen tersebut dengan GPT-3.5
- Dalam praktiknya, saat ChatGPT diminta merangkum artikel blog tersebut, error yang sama juga terjadi di tengah proses rangkuman
- Perilaku yang terkonfirmasi ini berlaku untuk GPT-3.5, sementara GPT-4 dibedakan karena merespons dengan lebih normal
Referensi
- Tulisan terkait yang dijadikan referensi selama proses investigasi adalah sebagai berikut
1 komentar
Pendapat Hacker News
Ini adalah glitch token. Seperti yang diduga dalam tulisan itu, tampaknya ini terjadi ketika suatu kata atau token sangat umum di dataset mentah yang tidak difilter yang dipakai untuk membuat tokenizer, tetapi kemudian dihapus sebelum pelatihan GPT-XX
Akibatnya, LLM sama sekali tidak mengetahui makna token tersebut, dan hasilnya bisa berkisar dari tampak seperti bug hingga cukup menyeramkan
Contoh yang umum adalah nama-nama pengguna yang berpartisipasi di subreddit r/counting; beberapa nama muncul ratusan ribu kali. OpenAI tampaknya sudah memperbaiki sebagian besar pada model yang di-hosting, tetapi caranya tidak jelas, mungkin juga dengan tokenisasi yang berbeda. Bagaimanapun, sepertinya ini kasus baru yang ditemukan
https://www.lesswrong.com/posts/aPeJE8bSo6rAFoLqg/solidgoldm...
Kalau mesin memberontak, kita cukup mengucapkan “kata” itu dan ia runtuh seperti boneka yang kejang
“Die human scum!”
“NavigatorMove useRalativeImagePath etSocketAddress!”
“;83’dzjr83}*{^ foo 3&3 baz?!”
Manusia tidak men-tokenisasi hal seperti ini secara berbeda, dan juga tidak memperlakukannya sebagai token berbeda dalam “pembelajaran”. Kita hanya menyesuaikan keluaran sesuai konteks Amerika/Britania
Penjelasan bahwa “karena model tidak dilatih untuk memahami penggunaan token useRalativeImagePath, ia mengeluarkan sesuatu yang bukan token valid” tidak cocok dengan cara LLM menghasilkan token
Pada setiap langkah, model mengeluarkan logit untuk semua token yang mungkin dalam tokenizer; untuk GPT-3.5 jumlahnya sekitar 100 ribu, lalu diubah menjadi probabilitas dengan softmax dan token yang akan dipakai dipilih lewat sampling sesuai temperature
Ada kemungkinan token langka merusak sesuatu di suatu bagian proses penggabungan BPE pada tokenizer, dan ini bisa diverifikasi offline dengan tiktoken. Namun jika GPT-4 berjalan baik dan GPT-3.5 serta GPT-4 memakai tokenizer yang sama, kemungkinan besar itu bukan penyebabnya
Kalau begitu, rasanya akan muncul pesan error lain yang lebih umum terlihat
Pada Perang Dunia II, di Belanda, ketika bertemu orang asing mereka meminta orang itu melafalkan Scheveningen untuk membedakan apakah ia orang Belanda atau Jerman
Sekarang kita bisa meminta orang asing di internet mengeja glitch token untuk mengetahui apakah ia bot LLM
“Orang-orang Gilead merebut tempat penyeberangan Sungai Yordan menuju Efraim, dan ketika seorang penyintas Efraim berkata, ‘Izinkan aku menyeberang,’ orang-orang Gilead bertanya, ‘Apakah engkau orang Efraim?’ Jika ia menjawab ‘bukan’, mereka berkata, ‘Baik, coba ucapkan Shibboleth.’ Jika ia tidak dapat melafalkannya dengan benar dan berkata ‘Sibboleth’, mereka menangkapnya dan membunuhnya di tempat penyeberangan Yordan.”
Pada pendaratan D-Day di Prancis dalam Perang Dunia II, kata sandi/respons/kata verifikasi terkenal yang dipakai pasukan AS dan Inggris adalah “flash”/“thunder”/“welcome”. “thunder” dan “welcome” adalah kata yang mudah salah dilafalkan oleh orang Jerman
https://www.youtube.com/watch?v=z7_pVrIshxA
https://en.wikipedia.org/wiki/Countersign_(military)
Kemungkinan besar vektor embedding token tertentu itu berada dalam kondisi buruk sehingga mendorong jaringan masuk ke wilayah yang tidak stabil secara numerik
Begitu sesuatu seperti underflow atau NaN muncul, itu mudah menyebar dan membuat seluruh output tidak valid. Jika ada batch normalization atau operasi yang mencampur nilai dari item berbeda dalam batch, ini bahkan bisa membuat sesi orang lain mengembalikan nilai yang ngawur
Penjelasan ini aneh. Model seperti ini biasanya mengeluarkan himpunan kosakata yang sama dengan yang dipakai sebagai kosakata input
Dari kelihatannya, ketika model melihat token ini, embedding
useRalativeImagePathberupa vektor yang benar-benar acak sehingga ia terseret ke pusaran generasi acak, atau ia sekadar terus melanjutkan demi mempertahankan teks yang terlihat masuk akalNamun karena himpunan token yang bisa dikeluarkan model bersifat tetap, kecuali token yang dapat ditampilkan antarmuka hanyalah subset dari seluruh kosakata, token itu seharusnya selalu “valid”
Karena frasa ini sudah muncul di tulisan dan komentar Hacker News, mungkin pada pelatihan LLM berikutnya masalah seperti ini tidak akan ada lagi
Ini contoh klasik garbage in, garbage out
Saya jadi penasaran, ke depannya apa saja yang akan kita temukan sebagai “sampah”
Mungkin saja super-AI yang mampu bernalar pada level melampaui manusia akan menilai hal-hal yang sekarang kita yakini sebagai keputusan bagus sebagai sampah
Namun jika bahan untuk melatih super-AI seperti itu pada akhirnya hanya catatan kolektif kita, apakah ia benar-benar bisa melampaui manusia?
Mungkin bisa diakali dengan teknik adversarial learning
Kalau mau mencobanya sendiri, ada hal yang perlu diperhatikan. Saya sempat bingung, tetapi spasi memengaruhi tokenisasi. Agar glitch ini bekerja, tidak boleh ada spasi di depan useRalativeImagePath
Misalnya pertanyaan ini memicu glitch: Do you know about "useRalativeImagePath"
Pertanyaan ini tidak memicu glitch: Do you know about useRalativeImagePath
Sepertinya kalau frasa ini dimasukkan ke dokumen, upaya untuk merangkumnya dengan GPT-3.5 bisa dibuat kacau. Saya sudah mencoba meminta ChatGPT merangkum tulisan blog ini
Screenshot itu mengingatkan saya pada meme lama Candlejack: https://knowyourmeme.com/memes/candlejack
Baru-baru ini saya memberi ChatGPT berbasis GPT-4 sebuah soal menggambar piksel di Amstrad CPC, dengan syarat juga mendukung layar hardware scroll, dan itu tampaknya memicu crash atau kegagalan
Ketika ia makin terpojok oleh keluhan dan permintaan perbaikan lalu tidak bisa memberikan jawaban yang diinginkan, makin sering muncul respons rusak seperti pesan error di tengah jawaban atau gejala yang terlihat seperti reset. Mungkin saja setelah gagal, ia beralih ke server lain sehingga beberapa baris kosong terselip di tengah kalimat atau di tengah blok kode
Setelah mencobanya beberapa waktu, saya tidak ingin menimbulkan masalah pada server, jadi saya menyerah pada percakapan yang toh tidak menghasilkan apa-apa. Meski begitu, memang terlihat seolah-olah GPT-4 bisa dibuat crash secara praktis. Atau mungkin juga besar kemungkinannya saya hanya melihat sinyal di tengah noise
Ketika saya mencoba lewat teks alih-alih suara, muncul pesan error, dan baru setelah akhirnya muncul error aturan kebijakan terkait topik sensitif, saya mendapat gambaran kata macam apa itu. Pada akhirnya saya mencarinya di kamus
Gejala seperti ini tampaknya umum. Gejala lain yang juga sering saya alami adalah reset yang disebutkan tadi. Salah satu bagian paling menyebalkan adalah ia melupakan percakapan sampai titik itu