2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

tweet

  • tweets

« 2011年6月 | トップページ | 2011年8月 »

2011年7月

いけないボナマジック

大会終わったあたりから、ボナにMagic Bitboardを入れてみることに取り組んでいました。いったんはじめたもののいろいろ割り込みが多くてなかなか進んでなかったんですが、最近ジョブがいくつか片付いて手が戻って、ようやく完了。

肝心の結果は…2-3%遅くなりました。使えねー、が結論orz

実装的には、従来のbitboardと別にoccupied専用のbitboard(uint64_t[2])をposi_tに持ちます。occupied_rl90/rl45/rr45は削除。[bw]_occupiedは残してます。
makemove/unmakemoveでは、従来のbitboardと追加したoccupied用bitboardを同時に更新。

Magic Bitboardの方式はissei流で、1-7/8-9筋に分け、[0]と[1]をORしてからmagicをかける、というもの。(発案者のisseiさんに感謝です)

従来のbitboardもすべて新形式に変えて統一して、とかやってぎちぎちにがんばればもしかしたらもう少し速くなるかもしれません。でも(根拠ないですが)最大うまくいってもせいぜい1-2%速くなるくらいかなー、という感触。というわけで、けっこう苦労して作ったんですが、お蔵入りすることに。

#CPUアーキが変わるとcore i8では速くなる…とか、まあないとは言えませんが

http://d.hatena.ne.jp/LS3600/20091119/p1

では「ほんとに速くなるの?」という懸念が示されてましたが、指摘どおりでしたね。かけ算が遅い?キャッシュのせい?

♪ 利きが遅けりゃ 夜は暗い
  春の陽射しの中も とてもクラ~~~イ

7/24 不参加になりました

もともと電通大さんから出演依頼を受けていたのですが、先週になって「出演依頼取り消します」という連絡をいただきました。私としては多少予想外ではありましたが、まあ特に困るわけでもないので了承しました。いろいろ事情があったようです。私からコメントすべき筋ではないのでしませんが。

古作さん、篠田さんとの対局は楽しみにしていたので多少残念ではありますが、まあしかたないですね。また機会がありましたら。また、ボンクラーズの対戦を期待されていた方々、そういう状況ですので申し訳ありませんがご了承お願いいたします。

Rybkagate考

コンピュータ将棋のライブラリ関連の話をしているところへ、コンピュータチェスの方でなんと!最強ソフトと言われていたRybkaが実はCrafty&Fruitのパクリだったためタイトル剥奪された、とのニュースが飛び込んできました。ライブラリ推進論を公言している立場としては静観もできないので、ちょっと詳しく見てみました。

ニュースを紹介している日本語ブログ

そこで引用されてる英語ニュース

最初ニュースのタイトルだけ見たときは私も、「え、コンピュータチェスではライブラリ利用はだめなのか?」と思いました。ところが詳しく読んでみるとそうではなく、むしろライブラリ利用に対してはかなり寛容なようにも受け取れます。いずれにせよ、Rybkaが断罪されているのは、「流用したこと」自体ではなく、他の点でした。

The International Computer Games Association (ICGA) という組織がコンピュータチェスの大会をやってるところ(CSAみたいなもの?)のようですが、そこの公式レポート も上記Chessvibesのサイトに載っています。

そこの 6.2 General Summaryにある最後の3文を引用します:

All panel members who expressed an opinion agree that Vasik Rajlich's Rybka violated the ICGA Tournament Rules. Not a single panel member fbelieved him innocent. Vasik Rajlich's claims of complete originality are contrary to the facts.

つまり、流用したこと自体がダメと言ってるのではなく、「トーナメントルールに違反したこと」、「全くの独自開発だ、と嘘をついていたこと」がまずい、ということです。

じゃあそのルールって何なの?ですが、これも上記pdfの1.2にあります:

Rybka has also violated ICGA Tournament Rules. Specifically, the
rules state:

"Each program must be the original work of the entering developers.
Programming teams whose code is derived from or including game-playing
code written by others must name all other authors, or the source of such code,
in the details of their submission form. Programs which are discovered to be
close derivatives of others (e.g., by playing nearly all moves the same), may be
declared invalid by the Tournament Director after seeking expert advice. For
this purpose a listing of all game-related code running on the system must be
available on demand to the Tournament Director."

最初の文で、プログラムは"original work"であるべき、とありますが、これは「100%独自開発コード」を意味するのではなく「独自の工夫を施したもの」と取るべきのように思われます。というのは、2番めの文では「他人のソースを流用した場合は、その旨申告すること」とあります。100%独自であるべきならこの注意書きは不要でしょうから。

更に3番めの文ではこうあります:「他のプログラムに非常に近い派生プログラム(たとえば、指し手がほとんど一致するもの)は、参加無効となる*ことがある*」(アステリスクは私が追加)。つまり、指し手がほとんど一致するものでさえ、参加資格が認められる場合もある、ということですね。実際にどの程度の「独自度」なら認められるのか、判例(?)にあたるものを知らないので断言はできませんが、少なくともこの文言を読むかぎり、今のWCSCよりはよほどライブラリ利用に関して寛容なように思えます。「登録したライブラリ以外は使っちゃいかん」なんてこともないみたいだし。

Rybkaがまずかったのは、ルールで「他人のソースを流用した場合は、その旨申告すること」とあるにも関わらず、「Rybkaは流用はしていない。bit操作等ごく一部を除いて100%独自開発」と主張しつづけていた点です。ところがリバースエンジニアリング等によって、たとえば評価関数はほとんどFruitと同じであることがはっきりしてしまったらしいです。これが「ルール違反」「他人のプログラムを尊重する態度(respect)がない」との断罪につながりました。

また、FruitのライセンスはGPLで、次の記述があります(これも上記pdf 1.2 にある):

Fruit 2.1 source code was distributed with a specific license in
the copying.txt file. Part of this license reads:

"For example, if you distribute copies of such a program, whether gratis or for
a fee, you must give the recipients all the rights that you have. You must make
sure that they, too, receive or can get the source code. And you must show them
these terms so they know their rights."

Rybkaは商品として販売していますので、Fruitを使っているならソースをGPLで公開しなくてはなりません。ところがそれもしていなかった。

大会に出るためだけなら、たぶん別に独自開発などと主張する必要はなく、正直に申告してればよかったわけです。その場合ICGAが参加可否を審議するのでしょうが、(リバースエンジニアリングによる)調査によると、RybkaのコードはFruitまったくそのままではなくかなりのチューンを施していたようですので(まあそうでなきゃ優勝なんてできないでしょうが)、問題なく認められる可能性も高かったと推測します。なのに申告しなかったのは、やっぱり商品だったからなんでしょうね。Fruit使ってると申告したら、ソース公開しなきゃならない。そしたら商品価値は下がる。まあ、儲けたかったんでしょうね。

ただ、ライセンス違反というのはかなり罪が重いです。Rybkaが不正な手段でソフトを強くし、それを商品として売れば、他の商品ソフトは損害をこうむっています。日本ならば、へたすると不正競争防止法に違反、とかになりかねないのではないでしょうかね。プログラマの倫理、だけの話でなく、法律違反の可能性あり、訴えられると有罪かも、というレベルの話です。これは、さしものライブラリ積極論者の私も賛同できません。

#あくまで、「Rybkaが*本当に*Fruitをコピーしてたら」、の話ですよ。
#本当にコピーしたのか、については、私は当面ICGAの出したレポートを
#とりあえず信用してこの文を書いていますが、その真偽は正直わかりません

やっぱ、金がからむと話が難しくなるなぁ…、てとこでしょうか。私みたいに一銭の得もしてなければ、「流用?しましたが、何か?」で済ませるのですがw

ということで私の感想をまとめると、今回の事件のキーは「ライセンス違反」「虚偽申告」であり、今我々が議論している「ライブラリ流用の是非」には直ちに影響を及ぼす話ではないな、というところです。チェスの世界でライブラリ流用の是非がどう捉えられているのか知りたかったので多少ググってみたのですが、残念ながらあまり有用そうな情報は見つかりませんでした。

YSS掲示板で出てる talkchess.com という掲示板でチェスの事情聞いてみようかと思って先ほどアカウント申請したんですが、管理者の承認がいるんだそうで現在承認待ち中…

ちなみに、ルールのところで「必要なら委員会はソース公開を要求することがある」とありますが、今回はこの条項は発動しなかったようです。商品のソフトにソース公開させて、万一ほんとに独自だった場合、損害賠償とかになりかねないですからね。もちろん守秘義務はあるんでしょうが、何かの手違いでリークしたりするとそれこそ責任問題です。ルール上一応条項はあるものの、実際に発動するのはかなり難しいのではと思われます。将棋で激指やYSSにソース公開要求したら、どうなるのか…

実際チェス関連の掲示板を見ていると、「審査する委員がRybkaの競合のプログラマばっかなのに、そいつらに対してソース公開しろ、なんて受け入れられるわけないだろ!」というRybka擁護の意見がけっこうありました。まあたしかに、ソース見て解読できる人って、実際問題競争相手ばっかりなんですよねぇ… ルールでソース公開を義務づけるのは、あまり現実的でない気がします。

7/16 追記: その後見つけた情報ですが、ICGAのwiki というのがあります。ここの左から Historical Examples をたどると、過去の事例がいくつかあります。この中でGunda-1というのがあります。これは1996年の大会でCraftyのソースを流用して、「流用しました」と申請したうえで参加した模様です。で、参加取り消し等にもならず、1996年大会の正式記録にも載っています。その後この点のルールが変わったということもないようなので、「チェスでは、(正直申告&ライセンスOKなら)ソース流用OK」、で間違いなさそうです。なお現在のCraftyのライセンスは「これ使って大会出ちゃだめ」とあるんですが、ここはたぶん当時は違ったんでしょうね。

« 2011年6月 | トップページ | 2011年8月 »