Stockfish, çeşitli masaüstü ve mobil platformlar için kullanılabilen özgür ve açık kaynaklı bir satranç motorudur. Universal Chess Interface aracılığıyla satranç yazılımında kullanılabilir.
Stockfish, çoğu satranç motoru derecelendirme listesinde istikrarlı bir şekilde birinci veya üst sıralarda yer aldı ve Ekim 2022 itibarıyla dünyanın en güçlü CPU (işlemci) satranç motorudur.[2] Top Chess Engine Championship'i 12 kez ve Chess.com Computer Chess Championship'i 19 kez kazandı.
Stockfish, bir açık kaynak geliştiriciler topluluğunun birçok katkısıyla Marco Costalba, Joona Kiiski, Gary Linscott, Tord Romstad, Stéphane Nicolet, Stefan Geschwentner ve Joost VandeVondele tarafından geliştirilmiştir.[3] Tord Romstad tarafından 2004 yılında piyasaya sürülen açık kaynaklı bir motor olan Glaurung'dan türetilmiştir.
Özellikler
Stockfish, çok işlemcili sistemlerde 1024 adede kadar CPU iş parçacığı kullanabilir. Transpozisyon tablosunun maksimum boyutu 32 TB'dir. Stockfish, gelişmiş bir alfa-beta araması uygular ve bitboard'lar kullanır. Diğer motorlarla karşılaştırıldığında, kısmen daha agresif budama ve geç hareket azaltma nedeniyle, büyük arama derinliği ile karakterize edilir.[4] (Temmuz 2022 (2022-07) itibarıyla), Stockfish 15 (4 iş parçacıklı) CCRL 40/15 karşılaştırmasında, 3540 +16-16Elo derecesi elde etti.[5]
Stockfish, Glaurung'dan devralınan bir özellik olan Chess960'ı desteklemektedir.[6] Daha önce Ronald de Man tarafından sağlanan bir çatalda bulunan Syzygy masa tabanı desteği, 2014 yılında Stockfish'e entegre edildi.[7] 2018'de 7 kişilik Syzygy desteği, kullanıma sunulduktan kısa bir süre sonra eklendi.[8]
Stockfish, çeşitli platformlarda çok popüler bir motor olmuştur. Masaüstünde, Internet Chess Club arayüz programları BlitzIn ve Dasher ile birlikte verilen varsayılan satranç motorudur. Cep telefonunda Stockfish uygulaması, SmallFish ve Droidfish ile birlikte gelir. Diğer Stockfish uyumlu grafik kullanıcı arabirimleri (GUI'ler) arasında Fritz, Arena, Stockfish for Mac ve PyChess mevcuttur.[9][10] Stockfish, WebAssembly veya JavaScript olarak derlenebilir ve tarayıcıda çalışmasına olanak sağlar. Chess.com ve Lichess, bir sunucu tarafı programına ek olarak Stockfish'i bu biçimde sağlar.[11] Yayın sürümleri ve geliştirme sürümleri, Microsoft Windows, macOS, Linux 32-bit/64-bit ve Android için C++kaynak kodu ve önceden derlenmiş sürümler olarak mevcuttur.
Tarih
Programın kökeni, Romstad tarafından oluşturulan ve ilk olarak 2004 yılında piyasaya sürülen açık kaynaklı bir satranç motoru olan Glaurung'dur. Dört yıl sonra, güçlü açık kaynak motorundan ilham alan Costalba, projeyi çatallamaya karar verdi. "Norveç'te üretilip İtalya'da pişirildiği" için ona Stockfish adını verdi (Romstad Norveççe, Costalba İtalyan). İlk sürüm olan Stockfish 1.0, Kasım 2008'de yayınlandı.[12][13] Bir süre, iki program arasında her iki yönde de yeni fikirler ve kod değişiklikleri aktarıldı, ta ki Romstad, Glaurung'u o zamanlar daha gelişmiş olan Stockfish lehine durdurmaya karar verene kadar.[14] Son Glaurung versiyonu (2.2) Aralık 2008'de yayımlandı.
2011 civarında Romstad, yeni iOS satranç uygulamasında daha fazla zaman geçirmek için Stockfish ile olan ilişkisini bırakmaya karar verdi.[15] 18 Haziran 2014'te Marco Costalba, "Stockfish bakımcısı olarak istifa etmeye karar verdiğini" duyurdu ve topluluktan mevcut sürümün bir çatalını oluşturmasını ve geliştirmeye devam etmesini istedi.[16] Gönüllü bir çekirdek Stockfish geliştiricileri grubu tarafından yönetilen resmi bir havuz kısa bir süre sonra oluşturuldu ve şu anda projenin gelişimini yönetiyor.[17]
Fishtest
Stockfish, 2013'ten bu yana, gönüllülerin programdaki iyileştirmeleri test etmek için CPU zamanı bağışlayabildiği Fishtest adlı dağıtılmış bir test kütüphanesi kullanılarak geliştirildi.[18][19][20]
Oyun oynama kodunda yapılan değişiklikler, programın eski bir "referans" sürümüne karşı sıralı olasılık oranı testi kullanılarak çerçeve üzerinde on binlerce oyunun oynanmasının sonuçlarına göre kabul edilir veya reddedilir. Çerçeve üzerindeki testler, ki-kare testi kullanılarak doğrulanır ve yalnızca sonuçların istatistiksel olarak anlamlı olması durumunda güvenilir kabul edilir ve yazılım kodunu revize etmek için kullanılır.
Fishtest'in başlangıcından sonra Stockfish, yalnızca 12 ayda 120 Elo puanı gibi patlayıcı bir büyüme yaşadı ve onu tüm önemli derecelendirme listelerinin başına taşıdı.[21] Stockfish 7'de, Fishtest'in yazarı Gary Linscott, Stockfish'in gücüne katkılarından dolayı resmi yazar listesine eklendi.
(2022 (2022-November) itibarıyla), kütüphane, 5.5↵ milyardan fazla satranç oyunu oynamak için toplam 9500 yıldan fazla CPU zamanı kullandı.[22]
NNUE
Haziran 2020'de, Stockfish NNUE adlı bilgisayar shogi programcıları tarafından tanıtılan verimli bir şekilde güncellenebilir sinir ağı (NNUE) çatalı, geliştiriciler tarafından tartışıldı.[23][24] Temmuz 2020'de satranç haberleri, Stockfish NNUE'nin "zaten inanılmaz derecede güçlü Stockfish satranç motoruna bir sinir ağı ekleyerek bilgisayar satrancında yeni bir çığır açtığını" bildirdi.[25] Ardından Stockfish ile bir NNUE birleşmesi duyuruldu ve geliştirme yapıları kullanıma sunuldu.[26][27]
"@nodchip tarafından sürdürülen NNUE şubesi, güçlü sonuçlar gösterdi ve büyük bir potansiyel sunuyor ve birleştirmeye devam edeceğiz... Bu birleştirme, motora makine öğrenimi tabanlı kodlamayı tanıtacak, böylece geliştiriciler topluluğunu genişleterek yeni beceriler kazandıracak. Kapsayıcı bir topluluk olmayı hedefleyen, çeşitli donanımların tüm geliştiricileri ve kullanıcıları da dahil olmak üzere herkesi yanımızda tutmaya can atıyoruz ...gerekli kesin adımlar ilerledikçe daha net hale gelecek, bunun gerçekleşmesi için toplulukla birlikte çalışmayı dört gözle bekliyorum !"
2 Eylül 2020'de, Stockfish'in yukarıda belirtilen sinir ağı iyileştirmesini içeren on ikinci sürümü yayımlandı. Blog duyurusuna göre, bu yeni sürüm "önceki sürümlerden önemli ölçüde daha güçlü oynuyor" ve genellikle on bir sürümle eşleştirildiğinde kaybettiğinden on kat daha fazla oyun çifti kazanıyor.[28][29]
Yarışma sonuçları
Top Chess Engine Championship
Stockfish, birden çok kez TCEC şampiyonu ve kupa sayısında şu anki liderdir. TCEC 2013'te yeniden başladığından beri Stockfish, biri hariç her sezonu birinci veya ikinci bitirdi. TCEC Sezon 4 ve 5'te Stockfish, önce Houdini 3'e ve daha sonra Komodo 1142'ye karşı 23-25'lik Süper Final skorları ile ikinci oldu. 5. Sezon, etkinliğin son aşamasında bir hastalığa yenik düşen programın yaratıcısı Don Dailey'nin ölümünden sonra ödülü kabul eden kazanan Komodo takımı için dikkate değerdi. Onun şerefine, o sezondan kısa bir süre sonra yayınlanan Stockfish versiyonuna "Stockfish DD" adı verildi.[30]
30 Mayıs 2014'te Stockfish 170514 (Stockfish 5'in masa tabanı destekli bir geliştirme versiyonu), Süper Final'de Komodo 7x'e karşı 35,5-28,5 puan alarak TCEC 6. Sezonu ikna edici bir şekilde kazandı.[31] Stockfish 5 ertesi gün piyasaya çıktı.[32] TCEC 7. Sezonunda Stockfish yine Süper Final'e yükseldi ancak 30,5-33,5'lik skorla Komodo'ya yenildi.[31] TCEC Sezon 8'de, buggy (hatalı) kodunun neden olduğu zaman kayıplarına rağmen Stockfish yine de Süper Final için bir kez daha hak kazandı, ancak ardından gelen 100 maçlık maçı Komodo'ya 46,5-53,5 kaybetti.[31] 9. Sezonda Stockfish, Houdini 5'i 45.5'e karşı 54.5'lik bir skorla mağlup etti.[31][33]
Stockfish, 2013'ten bu yana Stockfish'in süper finale kalamadığı tek sezon olan TCEC'nin 10. sezonunda üçüncü oldu. Bir oyun kaybetmedi, ancak daha düşük dereceli motorlara karşı yeterince galibiyet elde edemediği için yine de elendi. Bu teknik elemeden sonra, Stockfish uzun bir galibiyet serisine devam etti ve 11. sezonu (Houdini'ye karşı 59'a karşı 41, 6.03),[31][34] 12 (Komodo 12.1.1'e karşı 60'a karşı 40),[31][35] ve 13 (55'e karşı 45, Komodo 2155.00'a karşı)[31][36] ikna edici.[37] 14. Sezonda Stockfish, Leela Chess Zero'da yeni bir rakiple karşılaştı, ancak bir oyun farkla (50,5-49,5) galibiyet elde etmeyi başardı.[31][38] Galibiyet serisi nihayet 15. sezonda Leela tekrar hak kazanıp 53.5-46.5[31] kazandığında sona erdi ancak Stockfish, Leela süper finale kalmayı başaramayınca AllieStein'i 54.5-45.5 yenerek hemen 16. sezonu kazandı.[31] 17. sezonda Stockfish, süper finalde Leela ile tekrar karşılaştı ve 52,5-47,5 mağlup oldu. Ancak Stockfish sonraki dört süper finalde Leela'yı ikna edici bir şekilde mağlup etti: 18. sezonda 53.5-46.5, 19. sezonda 54.5-45.5, 20. sezonda 53-47 ve 21. sezonda 56-44.[31]
Stockfish ayrıca TCEC kupasına da katılarak ilk baskıyı kazandı, ancak ikinci baskının yarı finallerinde Houdini tarafından şaşırtıcı bir şekilde üzüldü.[31][39] Stockfish, üçüncü sıradaki play-off'ta Komodo'yu yenmek için toparlandı.[31] Üçüncü baskıda, Stockfish finallere yükseldi, ancak 7 kişilik bir oyunsonu masa tabanı çekilişinde hata yaptıktan sonra Leela Chess Zero tarafından mağlup edildi. Dördüncü baskıda bu sonucu tersine çevirdi ve finalde Leela'yı 4,5-3,5 mağlup etti.[31]
Chess.com, 2018'de ilk Chess.com Bilgisayar Satranç Şampiyonası'na ev sahipliği yaptığından beri, Stockfish en başarılı motor oldu. CCC7'de ikinci bitirmeden önce arka arkaya altı şampiyonluk kazanarak önceki şampiyonalara hakim oldu. O zamandan beri, hakimiyeti sinir ağı motorları Leelenstein ve Leela Chess Zero tarafından tehdit edildi ancak iyi performans göstermeye devam etti ve CCC11'e kadar her sürümde en azından süper finale ulaştı. CCC12 ilk kez bir eleme formatına sahipti ve sıralama CCC11 finalistleri Stockfish ve Leela'yı aynı yarıya yerleştirdi. Leela, Stockfish'i yarı finalde eledi. Ancak finalin kaybedeni Leelenstein ile turnuva sonrası bir maç, Stockfish'in ana etkinlikle aynı formatta kazandığını gördü.
Stockfish'in en iyi insan satranç oyuncularına göre gücü, en çok Ağustos 2014'te büyük usta Hikaru Nakamura (2798 puanlı) ile bir handikap maçında ortaya çıktı. Maçın ilk iki maçında Nakamura, Rybka'nın eski bir versiyonunun desteğini aldı ve sonraki iki maçta Beyaz'ı piyon oranlarıyla aldı ancak yardım almadı. Nakamura, maç sırasında dünyanın en iyi beşinci insan satranç oyuncusuyken, Stockfish 5'in açılış kitabını ve oyunsonu masa tabanını kullanması reddedildi. Stockfish maçın her yarısını 1,5-0,5 kazandı. Stockfish'in her iki galibiyeti de Nakamura'nın, oyun tarzının tipik bir örneği olarak, beraberliğe boyun eğmek yerine galibiyet için bastırdığı pozisyonlardan kaynaklandı.[138]
Stockfish 8, AlphaZero'ya karşı
Aralık 2017'de Stockfish 8, Google bölümü DeepMind'in AlphaZero'sunu test etmek için bir kıyaslama noktası olarak kullanıldı ve her motor farklı donanım tarafından desteklendi. AlphaZero, kendi kendine oynayarak toplam dokuz saat boyunca eğitildi ve sadece dört saat sonra Stockfish'in seviyesine ulaştı.[139][140][141] Normal başlangıç konumundan 100 maçta AlphaZero, Beyaz olarak 25 galibiyet, Siyah olarak 3 galibiyet ve kalan 72 maçta 0 mağlubiyetle berabere kaldı.[142] AlphaZero ayrıca Stockfish'e karşı on iki popüler açılıştan başlayarak 290 galibiyet, 886 beraberlik ve 24 mağlubiyetle 733:467 puanla on iki 100 maçlık maç oynadı.[143][note 2]
AlphaZero'nun Stockfish'e karşı kazandığı zafer, bilgisayar satrancı topluluğunda bir hareketlilik ateşledi ve AlphaZero'yu kopyalamayı amaçlayan Leela Chess Zero olarak bilinen yeni bir açık kaynak motora yol açtı. Ocak 2019'a kadar Leela, 100 oyunluk bir maçta AlphaZero (Stockfish 8) oynayan Stockfish versiyonunu yenmeyi başardı. Stockfish'in güncellenmiş bir versiyonu, 14. TCEC sezonunun süper finalinde Leela Chess Zero'yu az farkla mağlup etti, 50,5–49,5 (+10 =81 −9),[31] ancak sonraki sezonun süper finalini Leela'ya 53,5–46,5 (+14) kaybetti =79 -7).[31][145] İyileşmeye devam etseler bile iki motorun gücü birbirine çok yakın: Leela, TCEC Sezon 17'nin süper finalinde Stockfish'i yendi, ancak Stockfish, her biri TCEC Sezon 18, TCEC Sezon 19, TCEC Sezon 20 ve TCEC Sezon 21'i kazandı . süper finalde Leela'yı yenme zamanı.
Türevler
YaneuraOu, güçlü bir shogi motoru ve NNUE'nin kökeni. Shogi için UCI'nin bir çeşidi olan USI'yi konuşur.[146]
Fairy Stockfish, peri satrancı oynamak için değiştirilmiş bir versiyon. Bölgesel varyantlarla (satranç, shogi, makruk vb.) ve ayrıca antichess gibi diğer varyantlarla çalışır.[147]
Lichess Stockfish, değişkenleri peri parçaları olmadan oynamak için bir versiyon.[11]
Aşırı azaltma veya aşırı budama nedeniyle konumsal veya taktiksel körlük gibi satranç motorlarıyla ilgili yaygın sorunları ele almayı amaçlayan Crystal, hareket ufkundan kaynaklanan çekme körlüğü ve temel varyasyon güvenilirliği sergiledi.[148]
Bir satranç açılış kitaplığı olan Cerebellum'un küçültülmüş bir sürümünü içeren Brainfish.[149]
BrainLearn, Brainfish'in bir türevidir, ancak kalıcı bir öğrenme algoritmasına sahiptir.[150]
ShashChess, Best Play: A New Method for Discovering the Strongest Move adlı kitaptan Alexander Shashin teorisini uygulama amacı taşıyan bir türev.[151][152]
Fat Titz, adı Fat Fritz 2'nin sözcük oyunu olan ve Stockfish 14'ün 4 kat bilgisini içeren HalfKAv2-2048x2-64-64-1 değerlendirme ağına sahip bir CFish çatalı. Kısmen, Stockfish'in taktik keskinliğini korurken benzersiz bir konumsal stil sağlayan Lc0 verileri üzerinde eğitildi.[153]
Houdini 6, talep üzerine kaynakları sağlamadan, GPL lisansını ihlal ettiği iddia edilen bir Stockfish 8 türevidir.[154]
Fat Fritz 2, iddia edilen bir Stockfish 12 türevidir ve istek üzerine kaynak sağlamaz, GPL lisansını ihlal eder.[154][155][156]
^"About". stockfishchess.org. 20 Eylül 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Mart 2014.
^"Stockfish 1.0". talkchess.com. 2 Kasım 2008. 6 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 6 Mart 2014.Yazar |ad1= eksik |soyadı1= (yardım)
^"Re: Stockfish – Glaurung". wbec-ridderkerk.forumotion.com. 5 Eylül 2009. 6 Mart 2014 tarihinde kaynağından arşivlendi. Erişim tarihi: 5 Mart 2014.Yazar |ad1= eksik |soyadı1= (yardım)
^"Stockfish". Chess.com (İngilizce). 22 Eylül 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 21 Haziran 2022.Yazar |ad1= eksik |soyadı1= (yardım)
^"Step down". groups.google.com. 18 Haziran 2014. 21 Eylül 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Haziran 2014.Yazar |ad1= eksik |soyadı1= (yardım)
^"New official repository". groups.google.com. 18 Haziran 2014. 21 Eylül 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Haziran 2014.Yazar |ad1= eksik |soyadı1= (yardım)