1 पॉइंट द्वारा GN⁺ 2024-11-15 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • कई LLM को समान शर्तों पर शतरंज में उतारा गया तो ज़्यादातर शुरुआती चरण के बाद ढह गए, लेकिन केवल gpt-3.5-turbo-instruct ने Stockfish की सबसे कम कठिनाई के खिलाफ बहुत मजबूत प्रदर्शन दिखाया
  • प्रयोग में LLM को सफेद मोहरों से खिलाया गया और Stockfish की सबसे कम कठिनाई के खिलाफ गेम के बाद, हर चाल पर बोर्ड की स्थिति को chess engine के centipawn score से आंका गया
  • 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 में से कोई भी gpt-3.5-turbo-instruct के करीब नहीं पहुंचा
  • मिलती-जुलती family के models की तुलना में instruction/chat tuning शतरंज प्रदर्शन को घटाने की दिशा में दिखी, लेकिन गिरावट की मात्रा model के हिसाब से कम या बहुत बड़ी रही
  • open models में prompt के अंत में एक space से performance काफी बदलने वाली tokenizer समस्या दिखी, और chess notation input LLM की internal representation और generation constraints के प्रति संवेदनशील रूप से प्रतिक्रिया करता है

प्रयोग की setup और evaluation पद्धति

  • LLM को chess grandmaster की तरह अगली चाल चुनने वाला prompt दिया गया, और input आंशिक रूप से चल चुकी chess notation थी
    • notation में e4, Rdf8, R1a3 जैसी standard algebraic notation का इस्तेमाल हुआ
    • turn number न लिखने और चुनी गई चाल का कारण न समझाने का निर्देश भी शामिल था
  • सभी games में LLM ने सफेद मोहरों से खेला, और प्रतिद्वंद्वी standard chess AI Stockfish की सबसे कम कठिनाई था
  • हर turn के बाद board state को chess engine से score कर model performance की तुलना की गई
    • unit centipawn है, जिसमें एक pawn को 100 points माना जाता है और positional value भी reflect होती है
    • game खत्म होने पर LLM की जीत को +1500, draw को 0, और हार को -1500 माना गया

opening के बाद तेजी से कमजोर हो जाने वाले models

  • llama-3.2-3b 3 अरब parameters वाला base model है, और 50 games में सभी हार गया
    • standard opening की कुछ चालें खेल पाया, लेकिन जल्द ही मोहरे गंवाने लगा
    • opponent Stockfish की सबसे कम setting पर था, फिर भी सभी games हार गया
  • 70 अरब parameters वाला llama-3.1-70b बस थोड़ा बेहतर था, लेकिन नतीजे अभी भी बहुत खराब रहे
  • llama-3.1-70b-instruct, Qwen-2.5-72b, command-r-v01, gemma-2-27b को भी इसी तरीके से test किया गया, लेकिन मजबूत chess performance नहीं दिखी
  • कुछ games खेलने वाला llama-3.1-405b भी gpt-3.5-turbo से बड़ा model है, लेकिन नतीजे फिर भी खराब रहे

असाधारण रूप से मजबूत gpt-3.5-turbo-instruct

  • gpt-3.5-turbo-instruct OpenAI का closed model है, इसलिए details अस्पष्ट हैं, लेकिन 10 tests में इसने बहुत अच्छा प्रदर्शन दिखाया
  • Stockfish difficulty को कुछ levels बढ़ाने पर भी यह इतना मजबूत था कि सभी games जीत गया
  • मिलते-जुलते नाम वाला gpt-3.5-turbo अधिक conversational tuning वाला model है, और उसका chess performance gpt-3.5-turbo-instruct से काफी अलग था
  • gpt-4o-mini, gpt-4o, o1-mini भी test में शामिल थे, और gpt-4o थोड़ा अधिक धीरे हारा, लेकिन सभी games में हार गया
  • इंटरनेट पर LLM chess experiments का trend ऐसा था कि 2023 के सितंबर-अक्टूबर में advanced amateur level की बातों से दिलचस्पी बढ़ी थी, लेकिन हालिया models में फिर से opening के बाद ढहने वाला pattern लौट आया

instruction/chat tuning और chess performance

  • मिलती-जुलती family में base के करीब models और additional tuned models की तुलना करने पर, extra instruction tuning हर मामले में chess performance को खराब करने की दिशा में दिखी
  • गिरावट की मात्रा समान नहीं थी
    • दो मामलों में अंतर छोटा था
    • एक मामले में अंतर बहुत बड़ा था
  • gpt-3.5-turbo-instruct नाम को सामान्य naming convention से अलग तरह से समझना होगा
    • यहां इसे gpt-3.5-turbo की तुलना में base model के ज्यादा करीब माना गया है
    • यह आम तौर पर instruct या it से conversation और instruction-following tuning ज्यादा होने के अर्थ के उलट है

संभावित कारणों के candidates

  • बड़ा base model शतरंज खेल सकता है, लेकिन instruction tuning उसे बिगाड़ सकती है

    • यह प्रयोग के नतीजों से मेल खाता है, लेकिन बड़ा llama-3.1-405b भी खराब निकला, जो एक counterexample है
  • gpt-3.5-turbo-instruct को अधिक chess games पर train किया गया हो सकता है

    • सभी models ने बहुत से chess games से सीखा होगा, इसकी संभावना अधिक है, लेकिन सटीक मात्रा जानना मुश्किल है
  • Transformer architecture के अंतर का असर पड़ा हो सकता है

    • Llama family के models chess में खास तौर पर कमजोर हो सकते हैं, इसे खारिज करना मुश्किल है
  • अलग-अलग data types के बीच competition हुआ हो सकता है

    • केवल chess games पर trained Transformer शतरंज बहुत अच्छी तरह खेल सकता है
    • अगर gpt-3.5-turbo-instruct को chess games के अधिक अनुपात वाले data पर train किया गया था, तो parameters का बड़ा हिस्सा chess में लगा हो सकता है
    • अगर यह hypothesis सही है, तो पर्याप्त बड़ा model chess games का proportion कम होने पर भी पर्याप्त chess data सीखकर शतरंज अच्छा खेलना चाहिए

implementation details और constraints

  • open models सीधे चलाए गए, और OpenAI के अलावा models को open models के रूप में classify किया गया
  • open models चलाने में Q5_K_M quantization का इस्तेमाल हुआ
  • open models में current legal moves सीधे बनाए गए, और llama.cpp grammars से output को constrain किया गया ताकि हमेशा legal move निकले
  • OpenAI models complete grammar support नहीं करते, इसलिए अधिकतम 10 बार generate कराया गया, और फिर भी legal move न निकले तो random move चुनी गई
  • chat models llama-3.1-70b-instruct, gemma-2-27b-it, gpt-3.5-turbo, gpt-4o-mini, gpt-4o के लिए अलग system prompt इस्तेमाल हुआ
  • o1-mini में system prompt बदला नहीं जा सकता, इसलिए उसे वैसे ही चलाया गया
  • open models temperature 0.7 पर, और OpenAI models default values पर चलाए गए

prompt space और tokenizer की अजीब घटना

  • open models में 1. e4 e5 2. जैसे अंत में space वाले prompt ने 1 e4 e5 2. जैसे बिना space के खत्म होने वाले prompt की तुलना में बहुत खराब performance दी
  • कारण tokenizer से जुड़ा माना गया
    • Llama tokenizer 1. के बाद e को एक token के रूप में generate करता है
    • यह space token के बाद e generate करने जैसा नहीं है
    • input के अंत में space डालकर अगला token generate कराने पर model उलझन भरी स्थिति में आ जाता है
  • उचित handling तरीका input के आखिरी token को हटाकर, हटाई गई string से शुरू होने वाली सभी strings पर constrained generation करने वाला token healing है
  • implementation में token healing के बजाय space हटाया गया, और grammar को ऐसा बदला गया कि वह space generate कर भी सके या न भी करे, फिर current legal move और optional space generate कराए
  • update में जोड़ा गया कि इस घटना का कारण सच में समझ लिया गया है, और सही explanation अभी तक किसी ने नहीं पहचानी है

OpenAI optimization की संभावना

  • एक assumption यह है कि OpenAI ने chess performance में interest देखकर gpt-3.5-turbo-instruct की chess performance बढ़ाने के लिए training data, fine-tuning, या algorithm में से किसी चीज़ को optimize किया हो सकता है
  • उसी assumption में यह optimization cost या अन्य features की गिरावट जैसे trade-offs के कारण बाद के models में जारी नहीं रखी गई हो सकती है
  • यह कोई ठोस evidence नहीं, बल्कि “OpenAI ने जानबूझकर किया” स्तर का अनुमान है, और timing भी निश्चित नहीं है

1 टिप्पणियां

 
GN⁺ 2024-11-15
Hacker News की राय
  • लगता है लेख ने एक साफ़ संभावना छोड़ दी: OpenAI ने chess को ऐसा benchmark माना जिसे “जीतना चाहिए”, और gpt-3.5-turbo-instruct के अंदर सिर्फ़ chess के लिए special handling डाल दी, लेकिन बाद के models में उसे नहीं रखा क्योंकि उससे लगातार media attention नहीं बनती

    • मुझे भी ठीक यही लगता है। chess evaluation जोड़ने वाला pull request यहां है: https://github.com/openai/evals/pull/45
    • मुझे भी यही शक है। ऐसा हो सकता है कि LLM ने “chess सीखा” नहीं, बल्कि chess game को पहचानना और निर्देशों को chess engine को पास करना “सीखा” हो। अगर ऐसा है, तो यह बिल्कुल impressive नहीं है
    • यह संभावना काफ़ी बड़ी लगती है, लेकिन मैं उत्सुक हूं कि special handling LLM के अंदर reinforcement learning से डाली गई थी, या OpenAI API call के दूसरी तरफ़ खरबों parameters वाले LLM के साथ-साथ Stockfish instance भी चलाया जा रहा था
    • chess तो स्वाभाविक रूप से जीतने लायक benchmark था, Watson के समय से ही। उससे भी पहले देखें तो बात Mechanical Turk तक जाती है
    • निष्पक्ष रूप से देखें तो लेख में भी “Theory 2: GPT-3.5-instruct को ज़्यादा chess game records पर train किया गया” कहा गया है
  • test में कुछ महत्वपूर्ण बातें थीं: closed OpenAI models में अगर legal move नहीं निकला तो अधिकतम 10 बार generate किया गया, और फिर भी न हुआ तो random move चुना गया; open models को Q5_K_M quantization के साथ खुद चलाया गया; prompt के अंत में space होने या न होने भर से open models की performance काफ़ी बदल गई; open models में temperature 0.7 था, जबकि OpenAI models में default values इस्तेमाल हुईं
    tokenizer के अजीब behavior, temperature, quantization, random moves और chess prompt—सब कुछ मिला हुआ है, इसलिए समझ नहीं आता कि results को कैसे interpret किया जाए। फिर भी लेख दिलचस्प है

    • यह बात लेख के पीछे की तरफ़ दब गई थी। पहले जब मैंने LLMs को chess खेलते देखा था, वे legal moves तक ठीक से नहीं चल पाते थे, इसलिए यहां मैं सोच रहा था कि models सारे legal moves कैसे चला पा रहे हैं
  • शायद अगर हमें सच में intelligent model चाहिए, तो tokenization को ही बंद करना पड़े। model क्या देखता है और दुनिया को कैसे perceive करता है, इसे हम शुरुआत से ही input information flow की structure से सीमित कर रहे हैं
    raw bits या bytes के साथ काम करना धीमा है, यह पता है, लेकिन यह hypothesis कि बड़ी समस्याएं tokenization के कारण हो सकती हैं, उसे disprove करना तुलनात्मक रूप से सस्ता और आसान लगता है। हैरानी है कि radically different tokenization पर ज़्यादा research नहीं दिखती

    • जिसे अक्सर “tokenization problem” कहा जाता है, उनमें से ज़्यादातर असल में reasoning problems हैं, और उन्हें छोटी technical problem पर गलत ढंग से डाल दिया जाता है
      उदाहरण के लिए लोग कहते हैं कि LLM basic counting इसलिए नहीं कर पाता क्योंकि tokenization है, लेकिन वही LLM chain-of-thought prompt इस्तेमाल करने पर ठीक count करता है। तब इसे tokenization से explain नहीं किया जा सकता। समस्या यह है कि इंसान को उसे बताना पड़ता है कि step-by-step हल करने पर सही answer मिलेगा, और उस मदद के बिना वह बस guess करने लगता है
    • byte-level training व्यवहार में मुश्किल लगती है। फिर भी हाथ से बनाए गए, आखिरकार human-style tokens इस्तेमाल करना बहुत गलत-सा लगता है। असली tokenizer देखें तो उसमें heuristics के हिसाब से क्या tokenize करना है यह बदलने वाली regex जैसी दिलचस्प चीज़ें होती हैं
      अगर images को tokens में बदला जा सकता है और audio को भी tokens में बदला जा सकता है, तो क्या model द्वारा खुद चुने गए semantic representation tokens का set बनाकर फिर उन tokens को वापस text में decode नहीं किया जा सकता? मैं बार-बार यही सोचता हूं। नुकसान यह है कि encoded tokens को text में वापस बदलने की process lossy होगी, इसलिए देखे गए text को 1:1 quote नहीं किया जा सकेगा
      मेरी समझ के हिसाब से OpenAI ने gpt-4o report की image में ठीक ऐसा ही किया लगता है। “Explorations of capabilities” देखें: https://openai.com/index/hello-gpt-4o/
    • human brain में dedicated language processing area होने की वजह है। tokenization काफ़ी मजबूत strategy होने की संभावना है। असली core बात यह है कि language हर तरह के knowledge को encode करने का अच्छा तरीका नहीं है
    • https://youtu.be/zduSFxRajkE
      Karpathy भी इसी सोच से सहमत हैं। यह 2 घंटे तक tokenizer को फिर से बनाते हुए tokenizer से नफ़रत करने वाला video है
    • tokens से bytes पर उतरने पर model size बहुत बढ़ जाता है। अभी reference नहीं मिल रहा, लेकिन कहा जाता है कि average token size घटाने पर model की width, यानी हर layer का size, उसी अनुपात में square होकर बढ़ता है। इसका असर सिर्फ़ inference speed पर नहीं, training speed पर भी पड़ता है
  • prompt और board position को कई तरीकों से बदलकर experiment करना worth है। reference के लिए, model को दी गई board position यह image है: https://i.imgur.com/qRxalgH.png
    इस experiment में एक से ज़्यादा अजीब बातें हो सकती हैं। जैसे, instruction-tuned न किए गए variant model को instructions देना उल्टा असर कर सकता है। ज़्यादा महत्वपूर्ण यह है कि जब सिर्फ़ truncated PGN दिया गया, तो यह position white को grandmaster-level player जैसा दिखाती है या नहीं, इस पर संदेह है। model chess अच्छी तरह समझता भी हो, तो वह current position में सबसे plausible move predict करने की कोशिश करेगा; अगर वह white को कमजोर player मानता है, तो खराब move की probability ज़्यादा मान सकता है

    • ऐसे opening वाले strong players के बीच कुछ games मिल सकते हैं, इसलिए model जानबूझकर खराब move predict कर रहा है—मेरी hypothesis कमजोर पड़ती है: 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=
      फिर भी Stockfish को lowest level पर रखकर “बहुत strong opponent” की तरह भिड़ाना model को कुछ हद तक confuse कर सकता था। अगर मैंने chart सही समझा है, तो model की शुरुआती कुछ moves ठीक लगती हैं, और उसके बाद problem शुरू होती दिखती है। prompt guide, Stockfish strength, starting position, fictional player names आदि बदलकर repeat experiments करने लायक हैं
    • experiment games की पहली move से शुरू हुआ और हर game को अंत तक चलाया गया। आपने जिस position का link दिया है, वह बस इस format का example है जिसमें हर move पर game state model में डाली जाती है
      अगर सिर्फ़ एक single move के against किया गया होता, तो “जीतना” या “हारना” आखिर मतलब क्या रखता?
  • सहमत। prompt में कुछ variations आज़माए जा सकते हैं: अगर model को सोचने की प्रक्रिया की अनुमति दी जाए तो कैसा रहेगा—इस experiment में इसे स्पष्ट रूप से मना किया गया था। साथ ही हर step पर board position को prompt में समझा दिया जाए, तो model को अंदरूनी तौर पर calculate या अनुमान नहीं लगाना पड़ेगा

    • यह सिर्फ एक move नहीं, बल्कि पूरा game खेला गया था
  • जिज्ञासा है कि क्या model illegal moves करने की कोशिश करता है। मूल लेखक ने इसका ज़िक्र नहीं किया, लेकिन chess के नियम काफ़ी arbitrary हैं और LLM कठिन problems में “answer नहीं है” मानने के बजाय plausible बातें गढ़ने के लिए बदनाम हैं, इसलिए लगता है कि कम-से-कम एक बार तो यह अनिवार्य रूप से होगा

    • मेरे अनुभव में लगातार 10 legal moves खेल पाना भी अच्छी किस्मत है। उदाहरण: https://news.ycombinator.com/item?id=41527143#41529024
    • हाँ। इसमें सिर्फ legal moves की अनुमति देने के लिए grammar constraints इस्तेमाल करने की बात की गई है
  • समझ नहीं आता कि पढ़े-लिखे लोग क्यों उम्मीद करते हैं कि LLM chess को ठीक-ठाक स्तर पर खेल पाएगा
    LLM को अपने data की quality नहीं पता होती। “x की तरह behave करो” वाला prompt chess में साफ़ तौर पर ज़रूरी वास्तविक reasoning और deterministic calculation का विकल्प नहीं है

    • तो क्या आपको इस बात पर हैरान नहीं होना चाहिए कि turbo-instruct सच में अच्छा खेलता है? “वास्तविक reasoning” जैसी बेबुनियाद anthropomorphic intuition पर आधारित ढीले-ढाले दावे बहुत हैं। मुझे लगता है कि मौजूदा स्थिति इस बात का अच्छा सबूत है कि किसी को ठीक से समझ नहीं है कि हो क्या रहा है
      अगर कोई mental model कहता है कि LLM को chess नहीं खेल पाना चाहिए, तो वह मजबूत chess खेलने वाले LLM को explain नहीं कर पाता। उल्टा, जो model कहता है कि उसे अच्छा खेलना चाहिए, वह यह explain नहीं कर पाता कि कई बड़े models chess में बुरी तरह fail क्यों होते हैं। साफ़ है कि कुछ ज़्यादा complex चल रहा है
    • experiments करने का एक मुख्य मकसद यह जांचना है कि हमारी preconceived notions सही हैं या नहीं। बेशक, अगर उस सवाल में रुचि नहीं है तो telescope में झाँकने की ज़रूरत नहीं
    • पर्याप्त training information हो तो यह puzzle के करीब है। LLM दिए गए moves के बाद board state सफलतापूर्वक output कर सकता है, position summaries भी काफ़ी ठीक बना सकता है, और कम-से-कम एक move आगे के threats list कर सकता है
      “ठीक-ठाक स्तर” subjective है, लेकिन इतना हो तो उसे beginner को हराना चाहिए। लेख में इस्तेमाल किया गया Stockfish का सबसे निचला level भी सबसे निचले intermediate player के स्तर का है। यह इस पर निर्भर करता है कि आप मौजूदा public implementation की बात कर रहे हैं या LLM के idea की सामान्य रूप से; और अगर बेहतर results चाहिए तो chess books और पुराने games की analysis उसे कहीं ज़्यादा feed की जा सकती है
    • chess एक सरल probabilistic sequence modeling task है, और मैंने खुद GPT-3.5-turbo-instruct को advanced amateur level पर खेलते देखा है। हालांकि नए models में डाले गए RLHF और distillation ने शायद उस capability को खराब कर दिया है
    • तो सवाल यह है कि gpt-3.5-instruct Stockfish को कैसे हरा सकता है
  • public model को Q5_K_M quantization के साथ चलाने का मतलब सिर्फ यह है कि सभी parameters को lossy compress किया गया है। शायद यह महत्वपूर्ण नहीं होगा?

    • अगर OpenAI के non-quantized model से competition कर रहा है, तो शायद महत्वपूर्ण होगा
  • मेरे हिसाब से chess को sequence के रूप में train करने का तरीका फायदे से ज्यादा problems पैदा करता है। 1 trillion games train करने पर भी यह नहीं बचाएगा: https://en.wikipedia.org/wiki/Shannon_number
    completeness के लिए जोड़ दूँ: modern chess engines high-quality chess-specific models को अपने tools के हिस्से के रूप में इस्तेमाल करते हैं, और वे आज या अतीत के किसी भी player से हर बार कम-से-कम draw कर सकते हैं। opponent अगर ज़रा-सी भी गलती करे तो हार जाता है। Stockfish level को maximum तक बढ़ाने या कम-से-कम 1800+ Elo player तक बढ़ाने से शायद ज़्यादा successful games मिलें, लेकिन वह सिर्फ इसलिए होगा कि advanced players बेकार moves कम खेलते हैं, यानी training data का noise घटता है; इसका मतलब बेहतर play नहीं है

    • सही। पहले भी pointed out किया गया है कि possible chess positions की संख्या ज्ञात universe में atoms की संख्या के बड़े-से-बड़े estimate को भी आसानी से, बहुत भारी अंतर से पीछे छोड़ देती है
    • चूँकि Shannon का ज़िक्र आया है, पूछना चाहूँगा: उस problem space का minimum representative sample size कितना होगा? क्या वह internet और books में publicly available chess moves की संख्या के काफी करीब होगा?
    • सही। sequence से एक बार भटके तो रास्ता खो जाता है
      अरबों-खरबों positions में best move सीखना और उसे किसी AI में डालना शायद बेहतर काम कर सकता है। मिलती-जुलती positions में अक्सर उसी तरह के best moves होते हैं
    • सच कहूँ तो जिन moves को कोई कभी नहीं खेलेगा उन्हें हटाकर, और symmetries व practically similar board positions को ध्यान में रखकर देखें तो chess शायद इतना बड़ा game न हो। ऐसी positions को बहुत simple pattern matcher से भी detect किया जा सकता है
  • gpt-3.5-turbo-instruct, gpt-3.5-turbo, gpt-4 सहित related experiments का एक set मिला
    conclusion भी उतना ही हैरान करने वाला है: gpt-3.5-turbo-instruct chess कहीं बेहतर खेलता है
    https://blog.mathieuacher.com/GPTsChessEloRatingLegalMoves/

    • मैं इस possibility पर दाँव लगाऊँगा कि वह actual chess engine को function call कर रहा है। token count या game complexity के हिसाब से inference time कैसे बदलता है—या नहीं बदलता—इसकी timing analysis से शायद यह साबित किया जा सके
  • OpenAI के पास game-playing AI बनाने का बहुत बड़ा experience है। अगर याद हो तो कई सालों तक यही उनका main area था। इसलिए शायद उन्होंने एक model को chess के लिए अच्छे से tune किया, यह देखने के लिए कि chess learning का general intelligence पर असर होता है या नहीं। जैसे इंसान chess सीखकर अधिक smart हो सकता है, और math या programming सीखना भी ऐसा कर सकता है

    • play का game state के abstract representation से गहरा संबंध होता है। player को इसका होश न भी हो, chess उपलब्ध moves के भीतर shallow search या beam search करने की problem के करीब है
      LLM reasoning या search नहीं करता; वह पिछले text के आधार पर text लिखता है। इसलिए हमारी नज़र में वह play जैसा लग सकता है, लेकिन असल में यह पुराने games के आधार पर smart guessing है। यह वैसा है जैसे Kasparov वास्तविक pieces की placement imagine किए बिना moves लिख रहे हों। दिलचस्प experiment यह होगा कि सिर्फ rules दिए जाने पर model खेल सकता है या नहीं; शायद नहीं खेल पाएगा। अभी यह goal track नहीं कर रहा, बल्कि memory से replay कर रहा है। अभी forward attention जैसी कोई चीज़ नहीं है और beam search काफी महंगा है, इसलिए बेहतर है कि classical chess algorithm पर fallback किया जाए
    • लगता है आपने OpenAI और DeepMind को mix up कर दिया है
      OpenAI ने conversational agents के अलावा कुछ नहीं किया