1 poin oleh GN⁺ 2024-11-15 | 1 komentar | Bagikan ke WhatsApp
  • Ketika beberapa LLM diuji bermain catur dalam kondisi yang sama, sebagian besar runtuh setelah fase pembukaan, tetapi hanya gpt-3.5-turbo-instruct yang menunjukkan performa sangat kuat melawan Stockfish pada tingkat kesulitan terendah
  • Eksperimen dilakukan dengan cara LLM bermain sebagai putih melawan Stockfish pada tingkat kesulitan terendah, lalu posisi papan pada setiap giliran dievaluasi menggunakan skor centipawn dari engine catur
  • llama-3.2-3b, llama-3.1-70b, Qwen-2.5-72b, command-r-v01, gemma-2-27b, gpt-3.5-turbo, gpt-4o-mini, gpt-4o, o1-mini semuanya tidak mampu mendekati gpt-3.5-turbo-instruct
  • Dalam perbandingan model dari keluarga yang mirip, tuning instruction/chat tampak menurunkan performa catur, tetapi besarnya penurunan berbeda-beda dari kecil hingga sangat besar tergantung modelnya
  • Pada model terbuka, muncul masalah tokenizer di mana satu spasi di akhir prompt dapat sangat mengubah performa, dan input notasi catur bereaksi sensitif terhadap representasi internal LLM serta batasan generasi

Pengaturan eksperimen dan metode evaluasi

  • LLM diberi prompt untuk memilih langkah berikutnya seolah-olah sebagai grandmaster catur, dan inputnya berupa notasi permainan catur yang sudah berjalan sebagian
    • Notasi seperti e4, Rdf8, R1a3 menggunakan notasi aljabar standar
    • Terdapat instruksi agar tidak menulis nomor giliran dan tidak menjelaskan alasan pemilihan langkah
  • Dalam semua permainan, LLM bermain sebagai putih, dan lawannya adalah Stockfish, AI catur standar, pada tingkat kesulitan terendah
  • Posisi papan setelah setiap giliran diberi skor dengan engine catur untuk membandingkan performa model
    • Satuannya adalah centipawn, dengan satu bidak dihitung 100 poin dan nilai posisi juga ikut diperhitungkan
    • Jika permainan berakhir, kemenangan LLM dihitung +1500, remis 0, dan kekalahan -1500

Model-model yang melemah drastis setelah pembukaan

  • llama-3.2-3b adalah base model 3 miliar parameter, dan kalah di semua 50 permainan
    • Model ini masih bisa memainkan beberapa langkah pembukaan standar, tetapi segera mulai kehilangan buah
    • Bahkan ketika lawannya adalah Stockfish dengan setelan terendah, hasilnya tetap kalah semua
  • llama-3.1-70b dengan 70 miliar parameter hanya sedikit lebih baik, namun hasilnya tetap sangat buruk
  • llama-3.1-70b-instruct, Qwen-2.5-72b, command-r-v01, gemma-2-27b juga diuji dengan cara yang sama, tetapi tidak menunjukkan performa catur yang kuat
  • llama-3.1-405b, yang dimainkan dalam beberapa pertandingan, juga merupakan model yang lebih besar daripada gpt-3.5-turbo, tetapi hasilnya tetap buruk

gpt-3.5-turbo-instruct yang kuat secara tidak biasa

  • gpt-3.5-turbo-instruct adalah model tertutup dari OpenAI sehingga detailnya tidak jelas, tetapi dalam 10 percobaan model ini menunjukkan performa yang sangat baik
  • Bahkan ketika tingkat kesulitan Stockfish dinaikkan beberapa level, model ini cukup kuat untuk memenangkan semua permainan
  • gpt-3.5-turbo, yang namanya mirip, adalah model yang di-tuning agar lebih percakapan, dan performa caturnya sangat berbeda dari gpt-3.5-turbo-instruct
  • gpt-4o-mini, gpt-4o, dan o1-mini juga ikut diuji, dan gpt-4o kalah sedikit lebih lambat tetapi tetap kalah di semua permainan
  • Tren eksperimen catur dengan LLM di internet sempat memunculkan minat besar pada September–Oktober 2023 karena dianggap berada di level amatir tingkat lanjut, tetapi pada model-model terbaru polanya kembali menjadi runtuh setelah pembukaan

Tuning instruction/chat dan performa catur

  • Saat membandingkan model yang masih dekat dengan base model dan model yang telah mendapat tuning tambahan dalam keluarga yang mirip, tuning instruction tambahan semuanya tampak memperburuk performa catur
  • Besarnya penurunan tidak konsisten
    • Dalam dua kasus, perbedaannya kecil
    • Dalam satu kasus, perbedaannya sangat besar
  • Nama gpt-3.5-turbo-instruct perlu ditafsirkan berbeda dari konvensi penamaan umum
    • Di sini model tersebut diperlakukan sebagai model yang lebih dekat ke base model dibanding gpt-3.5-turbo
    • Ini kebalikan dari makna umum instruct atau it, yang biasanya berarti tuning lebih lanjut untuk percakapan dan mengikuti instruksi

Kandidat penyebab yang mungkin

  • Base model besar mungkin bisa bermain catur, tetapi tuning instruction bisa merusaknya

    • Ini sesuai dengan hasil eksperimen, tetapi ada contoh tandingan bahwa llama-3.1-405b yang lebih besar juga memberi hasil buruk
  • gpt-3.5-turbo-instruct mungkin dilatih dengan lebih banyak permainan catur

    • Besar kemungkinan semua model telah belajar dari banyak permainan catur, tetapi jumlah pastinya sulit diketahui
  • Perbedaan arsitektur Transformer mungkin berpengaruh

    • Sulit menyingkirkan kemungkinan bahwa model keluarga Llama sangat lemah khusus untuk catur
  • Mungkin ada kompetisi antarjenis data yang berbeda

    • Transformer yang dilatih hanya dengan permainan catur bisa bermain catur dengan sangat baik
    • Jika gpt-3.5-turbo-instruct dilatih dengan data yang memiliki porsi permainan catur lebih tinggi, porsi parameter yang lebih besar mungkin digunakan untuk catur
    • Jika hipotesis ini benar, model yang cukup besar seharusnya tetap bisa bermain catur dengan baik meski proporsi permainan catur rendah, asalkan tetap mempelajari cukup banyak data catur

Detail implementasi dan batasan

  • Model terbuka dijalankan secara langsung, dan model selain OpenAI diklasifikasikan sebagai model terbuka
  • Untuk menjalankan model terbuka digunakan kuantisasi Q5_K_M
  • Pada model terbuka, semua langkah legal yang tersedia saat itu dibuat secara langsung, lalu output dibatasi dengan llama.cpp grammars agar selalu menghasilkan langkah legal
  • Model OpenAI tidak mendukung grammar penuh, sehingga generasi dilakukan hingga maksimal 10 kali, dan jika tetap tidak muncul langkah legal maka langkah dipilih secara acak
  • Untuk model chat seperti llama-3.1-70b-instruct, gemma-2-27b-it, gpt-3.5-turbo, gpt-4o-mini, gpt-4o, digunakan system prompt terpisah
  • o1-mini tidak bisa diubah system prompt-nya sehingga dijalankan apa adanya
  • Model terbuka dijalankan dengan temperature 0.7, sedangkan model OpenAI menggunakan nilai bawaan

Keanehan prompt dengan spasi dan tokenizer

  • Pada model terbuka, prompt yang diakhiri spasi seperti 1. e4 e5 2. memberikan performa jauh lebih buruk dibanding prompt yang berakhir tanpa spasi seperti 1 e4 e5 2.
  • Penyebabnya diduga terkait tokenizer
    • Tokenizer Llama menghasilkan e sebagai satu token setelah 1.
    • Ini tidak sama dengan menghasilkan e setelah token spasi
    • Jika spasi diletakkan di akhir input lalu model diminta menghasilkan token berikutnya, model berada dalam situasi yang membingungkan
  • Cara penanganan yang tepat adalah token healing, yaitu menghapus token terakhir dari input lalu melakukan generasi terbatasi untuk semua string yang diawali oleh string yang terhapus itu
  • Dalam implementasinya, alih-alih memakai token healing, spasi dihapus dan grammar diubah agar bisa menghasilkan spasi atau tidak, lalu menghasilkan langkah legal saat ini beserta spasi opsional
  • Dalam pembaruan, ditambahkan petunjuk bahwa penyebab fenomena ini memang sudah berhasil dipahami secara nyata, dan sejauh ini belum ada yang menebak penjelasan yang benar

Kemungkinan optimasi oleh OpenAI

  • Salah satu dugaan adalah bahwa OpenAI melihat minat terhadap performa catur lalu mengoptimalkan sesuatu pada gpt-3.5-turbo-instruct—baik data pelatihan, fine-tuning, maupun algoritme—untuk meningkatkan performa caturnya
  • Dalam dugaan yang sama, optimasi itu mungkin tidak dipertahankan pada model-model berikutnya karena ada trade-off seperti biaya atau penurunan kemampuan lain
  • Ini bukan bukti yang jelas, melainkan sekadar spekulasi pada tingkat “OpenAI mungkin melakukannya dengan sengaja”, dan bahkan kecocokan waktunya pun tidak pasti

1 komentar

 
GN⁺ 2024-11-15
Komentar di Hacker News
  • Sepertinya tulisan ini melewatkan satu kemungkinan yang cukup jelas: OpenAI mungkin melihat catur sebagai benchmark yang “harus dimenangkan”, lalu memberi penanganan khusus untuk catur di dalam gpt-3.5-turbo-instruct, tetapi tidak memasukkan penanganan khusus itu ke model-model berikutnya karena tidak lagi menghasilkan perhatian media yang berkelanjutan

    • Saya rasa persis begitu. Pull request yang menambahkan evaluasi catur ada di sini: https://github.com/openai/evals/pull/45
    • Saya juga curiga hal yang sama. Bisa jadi alih-alih LLM “belajar catur”, ia “belajar” cara mengenali permainan catur lalu meneruskan instruksinya ke chess engine. Kalau begitu, sama sekali tidak mengesankan
    • Kemungkinan itu tampaknya cukup besar, tetapi saya penasaran apakah penanganan khususnya disuntikkan ke dalam LLM lewat reinforcement learning, atau di sisi lain pemanggilan API OpenAI mereka menjalankan bukan hanya LLM dengan triliunan parameter, melainkan juga instance Stockfish
    • Catur jelas merupakan benchmark yang layak dimenangkan, dan sudah begitu sejak era Watson. Bahkan sebelumnya bisa ditarik mundur sampai Mechanical Turk
    • Agar adil, tulisan itu memang juga mengatakan “Teori 2: GPT-3.5-instruct dilatih dengan lebih banyak notasi permainan catur
  • Ada bagian-bagian penting dalam pengujiannya: untuk model OpenAI tertutup, jika tidak menghasilkan langkah legal, mereka mencoba menghasilkan ulang hingga 10 kali, dan jika tetap gagal memilih secara acak; model terbuka dijalankan sendiri dengan kuantisasi Q5_K_M; performa model terbuka berubah besar hanya karena ada atau tidaknya spasi di akhir prompt; model terbuka memakai temperature 0,7, sementara model OpenAI memakai nilai default
    Perilaku tokenizer yang aneh, temperature, kuantisasi, langkah acak, dan prompt catur semuanya bercampur, jadi saya tidak tahu bagaimana harus menafsirkan hasilnya. Meski begitu, tulisannya menarik

    • Itu bagian yang terkubur di belakang tulisan. Saat dulu melihat LLM bermain catur, mereka bahkan tidak bisa membuat langkah legal dengan benar, jadi saya penasaran bagaimana semua model di sini bisa memainkan langkah legal
  • Mungkin kalau kita benar-benar menginginkan model yang cerdas, kita harus berhenti melakukan tokenisasi itu sendiri. Sejak awal, kita membatasi apa yang dilihat model dan bagaimana ia memahami dunia melalui struktur aliran informasi masukan
    Saya tahu menangani bit atau byte mentah itu lambat, tetapi tampaknya relatif murah dan mudah untuk membantah hipotesis bahwa banyak masalah besar mungkin disebabkan oleh tokenisasi. Mengejutkan bahwa tidak terlihat lebih banyak riset tentang tokenisasi yang sangat berbeda secara radikal

    • Menurut saya, sebagian besar hal yang disebut “masalah tokenisasi” sebenarnya adalah masalah penalaran, tetapi sering keliru disalahkan pada persoalan teknis kecil
      Misalnya, orang sering mengatakan alasan LLM tidak bisa menghitung hal-hal dasar adalah tokenisasi, tetapi LLM yang sama bisa menghitung dengan baik jika memakai prompt alur berpikir. Maka itu tidak bisa dijelaskan dengan tokenisasi. Masalahnya adalah manusia harus memberi tahu bahwa kalau dipecahkan langkah demi langkah, jawabannya bisa tepat; tanpa bantuan itu, model mudah hanya menebak
    • Menurut saya pelatihan berbasis byte sulit secara realistis. Meski begitu, memakai token buatan tangan yang pada akhirnya bergaya manusia terasa sangat keliru. Kalau melihat tokenizer sungguhan, ada hal-hal menarik seperti regex yang mengubah apa yang ditokenisasi berdasarkan aturan praktis
      Kalau gambar bisa dijadikan token dan audio juga bisa dijadikan token, saya terus berpikir apakah kita bisa membuat kumpulan token representasi makna yang dipilih langsung oleh model, lalu mendekode token itu kembali menjadi teks. Kekurangannya adalah proses mengembalikan token yang sudah dienkode ke teks bersifat lossy, sehingga teks yang dilihat tidak bisa dikutip 1:1
      Sepemahaman saya, OpenAI tampaknya melakukan hal seperti ini persis pada gambar di laporan gpt-4o. Lihat “Explorations of capabilities”: https://openai.com/index/hello-gpt-4o/
    • Ada alasan mengapa otak manusia memiliki area khusus untuk pemrosesan bahasa. Tokenisasi kemungkinan besar adalah strategi yang cukup solid. Inti sebenarnya adalah bahasa bukan cara yang baik untuk mengodekan semua bentuk pengetahuan
    • https://youtu.be/zduSFxRajkE
      Karpathy juga sependapat. Itu video 2 jam tentang membuat ulang tokenizer sambil membenci tokenizer
    • Jika turun dari token ke byte, ukuran model akan meledak. Saya tidak bisa menemukan referensinya sekarang, tetapi katanya jika ukuran rata-rata token dikurangi, lebar model, yaitu ukuran tiap layer, meningkat secara kuadrat sesuai dengan itu. Ini memengaruhi bukan hanya kecepatan inferensi, tetapi juga kecepatan pelatihan
  • Layak dicoba eksperimen dengan mengubah prompt dan posisi papan dalam berbagai cara. Sebagai referensi, posisi papan yang diberikan ke model adalah gambar ini: https://i.imgur.com/qRxalgH.png
    Mungkin ada lebih dari satu hal aneh dalam eksperimen ini. Misalnya, memberikan instruksi kepada varian model yang tidak di-instruction-tuning justru bisa berdampak negatif. Yang lebih penting, ketika hanya diberi PGN yang terpotong, saya meragukan apakah dari posisi ini putih terlihat seperti pemain setingkat grandmaster. Bahkan jika model memahami catur dengan baik, ia akan mencoba memprediksi langkah yang paling masuk akal pada posisi saat ini; jika ia menilai putih sebagai pemain buruk, ia bisa memprediksi bahwa langkah buruk lebih mungkin terjadi

    • Saya bisa menemukan beberapa permainan antara pemain kuat yang dimulai seperti itu, jadi hipotesis saya bahwa model sengaja memprediksi langkah buruk jadi goyah: https://www.365chess.com/search_result.php?search=1&p=1&m=8&n=3071&order=welo&ms=e4.e6.d3.c5.Nf3.Nc6.g3.Nf6&rev=&wid=&bid=
      Meski begitu, memasang Stockfish pada level terendah lalu memasangkannya seolah-olah sebagai “lawan yang sangat kuat” mungkin membuat model cukup bingung. Kalau saya menafsirkan grafiknya dengan benar, beberapa langkah awal model tampak baik-baik saja, lalu masalah mulai muncul setelah itu. Eksperimen ini layak diulang dengan mengubah panduan prompt, kekuatan Stockfish, posisi awal, nama pemain fiktif, dan sebagainya
    • Eksperimennya dimulai dari langkah pertama permainan dan menjalankan tiap permainan sampai selesai. Posisi yang ditautkan hanya contoh format ketika status permainan dimasukkan ke model pada setiap langkah
      Kalau hanya melawan satu langkah tunggal, apa arti “menang” atau “kalah”?
  • Setuju. Bisa mencoba beberapa variasi prompt: bagaimana jika model diizinkan melakukan proses berpikir; dalam eksperimen ini hal itu secara eksplisit dilarang. Selain itu, jika posisi papan dijelaskan dalam prompt di setiap langkah, model tidak perlu menghitung atau memperkirakannya secara internal

    • Yang dimainkan bukan satu langkah saja, melainkan seluruh permainan
  • Saya penasaran apakah model mencoba langkah ilegal. Penulis asli tidak menyebutkannya, tetapi aturan catur cukup arbitrer, dan LLM terkenal suka mengarang jawaban yang tampak masuk akal alih-alih mengakui tidak punya jawaban untuk masalah sulit, jadi rasanya setidaknya sekali hal itu pasti terjadi

  • Saya tidak paham mengapa orang-orang terdidik berharap LLM bisa bermain catur pada tingkat yang masuk akal
    LLM tidak mengetahui kualitas datanya sendiri. Prompt “bertindaklah seperti x” bukan pengganti penalaran nyata dan perhitungan deterministik yang jelas dibutuhkan dalam catur

    • Kalau begitu, bukankah kita seharusnya terkejut oleh fakta bahwa turbo-instruct benar-benar bermain dengan baik? Ada banyak sekali klaim asal-asalan yang didasarkan pada intuisi antropomorfis tanpa dasar seperti “penalaran nyata”. Menurut saya situasi saat ini adalah bukti bagus bahwa tidak ada orang yang benar-benar memahami apa yang terjadi
      Jika suatu model mental mengatakan LLM seharusnya tidak bisa bermain catur, ia tidak bisa menjelaskan LLM yang bermain catur dengan kuat. Sebaliknya, model yang mengatakan LLM seharusnya bermain baik tidak bisa menjelaskan mengapa banyak model besar gagal total dalam catur. Jelas ada sesuatu yang lebih kompleks sedang terjadi
    • Salah satu tujuan utama melakukan eksperimen adalah memeriksa apakah prasangka kita benar. Tentu saja, kalau Anda tidak tertarik pada pertanyaan itu, Anda tidak perlu melihat melalui teleskop
    • Dengan informasi pelatihan yang cukup, ini lebih mirip teka-teki. LLM dapat berhasil mengeluarkan keadaan papan setelah langkah tertentu, dapat membuat ringkasan posisi yang lumayan, dan setidaknya dapat mencantumkan ancaman satu langkah ke depan
      “Tingkat yang masuk akal” memang subjektif, tetapi dengan kemampuan seperti itu seharusnya bisa mengalahkan pemula. Level terendah Stockfish yang digunakan dalam tulisan itu pun setara pemain menengah tingkat paling bawah. Ini tergantung apakah yang dimaksud adalah implementasi publik saat ini atau gagasan LLM secara umum, dan jika ingin hasil lebih baik, model juga bisa diberi jauh lebih banyak buku catur dan analisis pertandingan lama
    • Catur adalah tugas pemodelan urutan probabilistik yang sederhana, dan saya sendiri pernah melihat GPT-3.5-turbo-instruct bermain pada level amatir mahir. Namun RLHF dan distilasi yang masuk ke model-model baru tampaknya merusak kemampuan itu
    • Kalau begitu pertanyaannya adalah mengapa gpt-3.5-instruct bisa mengalahkan Stockfish
  • Menjalankan model publik dengan kuantisasi Q5_K_M hanya berarti semua parameternya telah dikompresi secara lossy. Mungkin tidak penting, kan?

    • Jika dibandingkan dengan model OpenAI yang tidak dikuantisasi, mungkin itu penting
  • Menurut saya melatih catur sebagai urutan menimbulkan lebih banyak masalah daripada manfaat. Bahkan mempelajari 1 triliun permainan pun tidak akan menyelamatkannya: https://en.wikipedia.org/wiki/Shannon_number
    Sebagai pelengkap, mesin catur modern menggunakan model khusus catur berkualitas tinggi sebagai bagian dari alatnya, dan setidaknya dapat selalu remis melawan setiap pemain yang ada sekarang maupun di masa lalu. Jika lawan melakukan kesalahan sekecil apa pun, ia kalah. Menaikkan level Stockfish ke maksimum, atau setidaknya ke pemain Elo 1800+, mungkin menghasilkan permainan yang lebih sukses, tetapi itu hanya akibat berkurangnya noise dalam data pelatihan karena pemain tingkat lanjut lebih jarang memainkan langkah sampah, bukan berarti permainan yang lebih baik

    • Benar. Seperti pernah ditunjukkan sebelumnya, jumlah posisi catur yang mungkin dengan mudah dan luar biasa melampaui jumlah atom di alam semesta teramati, bahkan dengan perkiraan yang sangat besar
    • Karena menyebut Shannon, saya ingin bertanya: berapa ukuran sampel representatif minimum untuk ruang masalah itu? Apakah cukup mendekati jumlah langkah catur yang tersedia di internet dan buku?
    • Benar. Begitu keluar dari urutan, ia tersesat
      Mempelajari langkah terbaik dari miliaran atau triliunan posisi lalu memasukkannya ke suatu AI mungkin akan bekerja lebih baik. Posisi yang mirip sering kali memiliki jenis langkah terbaik yang sama
    • Sejujurnya, jika membuang langkah-langkah yang tidak akan pernah dimainkan, serta mempertimbangkan simetri dan posisi papan yang secara praktis mirip, catur mungkin bukan permainan sebesar itu. Posisi-posisi seperti itu bisa dideteksi bahkan dengan pencocok pola yang sangat sederhana
  • Saya menemukan sekumpulan eksperimen terkait yang mencakup gpt-3.5-turbo-instruct, gpt-3.5-turbo, dan gpt-4
    Kesimpulannya sama-sama mengejutkan: gpt-3.5-turbo-instruct bermain catur jauh lebih baik
    https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/

    • Saya berani bertaruh ada kemungkinan ia melakukan pemanggilan fungsi ke mesin catur sungguhan. Analisis waktu tentang bagaimana waktu inferensi berubah, atau tidak berubah, sesuai jumlah token atau kompleksitas permainan sepertinya bisa membuktikannya
  • OpenAI punya sangat banyak pengalaman membuat AI untuk bermain gim. Kalau ingat, selama beberapa tahun itu adalah bidang utama mereka. Jadi sepertinya mereka membuat satu model yang disesuaikan agar bagus dalam catur, untuk melihat apakah pelatihan catur memengaruhi kecerdasan umum. Sama seperti manusia bisa menjadi lebih pintar dengan belajar catur, dan mungkin juga dengan belajar matematika atau pemrograman

    • Bermain sangat berkaitan dengan representasi abstrak dari keadaan permainan. Meski pemain tidak menyadarinya, catur pada dasarnya dekat dengan masalah melakukan pencarian dangkal atau beam search dalam ruang langkah yang mungkin
      LLM tidak melakukan penalaran atau pencarian; ia menulis teks berdasarkan teks sebelumnya. Jadi bagi mata kita itu bisa tampak seperti bermain, tetapi sebenarnya itu adalah tebakan cerdas berdasarkan pertandingan sebelumnya. Mirip seperti Kasparov menuliskan langkah tanpa membayangkan susunan bidak yang sebenarnya. Eksperimen yang menarik adalah melihat apakah model bisa bermain jika hanya diberi aturan; kemungkinan besar tidak bisa. Saat ini ia bukan melacak tujuan, melainkan memutar ulang dari ingatan. Belum ada yang seperti perhatian ke depan, dan beam search cukup mahal, jadi lebih baik fallback ke algoritma catur klasik
    • Sepertinya Anda mencampuradukkan OpenAI dan DeepMind
      OpenAI tidak pernah melakukan apa pun selain agen percakapan