パスワードを忘れた? アカウント作成
16673643 story
人工知能

ディープマインドがAIで高速アルゴリズムを発見、C++に採用 70

ストーリー by nagazou
採用 部門より
ディープマインドは、ゲームをプレイするAI「AlphaZero」の最新版に当たる「AlphaDev」を使用して、従来よりも最大70%程度、高速にソートを実行するアルゴリズムを発見したそうだ(MIT Tech Review)。

この発見されたアルゴリズムはすでにC++に組み込まれているとのこと。C++のソーティングアルゴリズムが変更されたのは10年ぶり。2022年1月にディープマインドは新しいソーティング・アルゴリズムを、C++を管理する組織に提出。そして2か月間にわたる第三者審査の結果、AlphaDevの発見したアルゴリズムがC++に取り入れられることとなったという流れだそう。

ディープマインドの研究者は、ムーアの法則の終焉とチップの基礎物理的な限界に近づいていることから、今後はコンピューティングの最適化のための革新的な手法を見つけ出す必要性があるとしている。

あるAnonymous Coward 曰く、

アセンブリをAIに学習させたら三倍速デソートできるようになったという話なのでC++が早くなったわけではない気はする

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2023年06月26日 17時22分 (#4484474)
    • by Anonymous Coward

      「3~5要素のソートで最大70%高速化しており、25万要素を超えるような大規模なソートでも約1.7%高速化できたと述べられています。」
      1.7%でも大したものだとは思うけれども、70%のインパクトから本文を読むとなんかちょっと残念な印象が。

      • 大量データに対応したソートアルゴリズムは、
        小数を処理するときにはオーバーヘッドが大きすぎてあまり速くないので、
        今時のソートライブラリは分割統治でデータ数に応じてソートアルゴリズムを切り替えるのが一般的

        というのが前提で、「最大5要素の固定要素数ソートアルゴリズム」を高速化、というのが今回の話ですね。
        だから、3~5要素で最大70%(≒3倍)の高速化が、
        25万要素ソートの末端で適用されることで、1.7%高速化につながる、と。

        ソートというのは、
        「12個の玉のうち一個だけ重さが違う。天秤を3回使って見つけ出せ」
        といった数学パズルの複雑版みたいなもので、
        こういうパズルで「こういう順番で比較していけば、12個のうちどれが当たりでみ見つけ出せる」という比較パターンが回答になるように

        ソートも、「こういう順番で比較していけば、元データがどんな並び順であっても、その並び順を判断できる(≒正しく並べ替えられる)」ような比較パターンを構築することがキモになります。

        通常のソートアルゴリズムは、汎用的に要素数可変で、それぞれのアルゴリズムで規定されたルールで比較を繰り返すことになりますし、そういうルールで比較すれば正しく並び替えられることをあらかじめ証明されたものが「ソートアルゴリズム」と呼ばれるわけですがが、

        要素数固定の処理ルーチンなら、どれとどれを比較していくのかも固定になりますし、

        例えば、3要素のソートなら、元データのありえる順番は「1,2,3」「1,3,2」「2,1,3」「2,3,1」「3,1,2」「3,2,1」の6通り。
        5要素でも元データは120通りしかありませんから、
        その全データを処理させてみれば、
        「ありえるどんなデータでもソートできている」=「正しいソートアルゴリズムである」かどうかは機械的に証明可能です。

        あとは正しいソートアルゴリズムとして高効率なものをAIベースで探した、ということでしょう。

        親コメント
      • by Anonymous Coward

        「最大」と聞くとワースト時の偏りも気になりますね。

    • by Anonymous Coward

      いくつかの入力例でテストしてOKでしょってAI様がアルゴリズム出して、
      本当に正しく問題解くアルゴリズムか人間が頑張って証明するのね

      • by Anonymous Coward

        でも「いくつかの例」の数を膨大にしとけば偶然は防げるし、そもそも候補が既知の最短行数であることは担保されてて差分を見るだけなんだから、楽しそうではある。

  • by Anonymous Coward on 2023年06月26日 16時30分 (#4484434)

    デブとか人の体形のことをからかっちゃいけないと思います。
    アルファぽっちゃり とかに改名すべきだと思います。

    • by Anonymous Coward

      「なんでここの開発ブランチ、pochaって名前なんすか?」
      「よう知らんけど、水平展開しろって言われたらしいわ」

    • by Anonymous Coward

      デブなアルファ・メイルかと思った(うそ

    • by Anonymous Coward

      私はデブ部門で働いてます。

  • by Anonymous Coward on 2023年06月26日 16時27分 (#4484431)

    ツノをつけて赤く塗ったに違いない

    # デソートって何

  • by Anonymous Coward on 2023年06月26日 16時32分 (#4484436)

    シャア専用アルゴリズム

  • by Anonymous Coward on 2023年06月26日 16時43分 (#4484445)

    多分,ニーモニックをどう並べるかという問題を
    改善したということなのだと思うけど。
    ランタイムライブラリのアセンブリ実装の改善ね。
    それともコンパイラの最適化アルゴリズムまで手を入れたのだろうか。
    具体的なデバイスの(ISAの)名前もないし,
    なんか舌足らずな記事だなぁ(元記事からして)

    • by Anonymous Coward

      そもそも C++ の規格的にはアルゴリズムは指定されていなかったような。
      関数の満たすべきパフォーマンス要件が指定されているだけで。

      • by Anonymous Coward

        一部は安定性を規定されているね。

        • by Anonymous Coward

          あと比較関数の呼び出し回数がO(logN)でなければならないという規定もあったような

    • by Anonymous Coward

      ステップを(AIにとって)可視化するためにアセンブリが適してるってだけで、同じ手法を使えば最低クロックのバイナリ生成もできるんだろうけど、とんでもない時間がかかりそう。

      • by Anonymous Coward

        最適化にAI使うのね。
        クラウドのコンパイラ。
        ただし,正しいかどうかは実行してみないとわからない。
        当たるも八卦当らぬも八卦な
        八卦コンパイラ。

        # 誰が使うかこんなの

        • by Anonymous Coward

          使ったというニュースなのでは? もちろん人間のレビューは入っているようだが

          • by Anonymous Coward

            横だが、
            ソートのバイナリコードで最速を目指す際に、機械学習(恐らくは強化学習)を使っただろうが、それと同様に、
            「何度もトライしては実行ステップ数などで評価して、最も良いコードを採用する」
            といった過程を、何かしらソースをコンパイルする度に行えば?と言っているんだと思う。
            現時点では実験でしか行われないだろうなあ。

    • by Anonymous Coward

      「C++を管理する組織」って標準化委員会だと思って読んでたから
      てっきりqsort()に代わる関数が追加されるのかと思いました。
      何かよくわからん記事ですね。

  • by Anonymous Coward on 2023年06月26日 16時44分 (#4484446)

    ブロック崩しの学習結果は動画ととおりである。
    機械的学習のほかに人のプレイを学習できる部分が加われば
    最強のプレイヤーが作れそうだ。

    Breakout | DeepMind | WIRED
    https://www.youtube.com/watch?v=Q70ulPJW3Gk [youtube.com]

  • by Anonymous Coward on 2023年06月26日 16時44分 (#4484448)

    記事を見たけど、遺伝的アルゴリズムと何が違うのかなー、と思った。

    • by Anonymous Coward

      それは機械学習全般に言えることでは…

    • by Anonymous Coward

      そんなこと言ったら何でもGAになっちゃうよ〜ん
      シェキシェキ

    • by Anonymous Coward

      いわゆるディープラーニングって、学習データとの誤差から計算してパラメーターの調整してくんでしょ
      遺伝的アルゴリズムは交叉とか突然変異とかで適当にパラメータいじって、その中から優秀な奴を選抜するんじゃないの
      結構違うと思うけど

    • by Anonymous Coward

      過去の手を記憶したり、さらに記憶をニューラルネットにやらせたりする所が違う。囲碁を打つとかだともっと違う。
      単に違いを言うならば、現状、囲碁を遺伝的アルゴリズムで打つようにした上で、最強とされる人間に勝つ、とかは出来ていないなあ。

  • by Anonymous Coward on 2023年06月26日 16時54分 (#4484451)

    >アセンブリをAIに学習させたら三倍速デソートできるようになったという話なのでC++が早くなったわけではない気はする

    で、その三倍速のコードがC++のオフィシャルな管理組織に採用されたって話なんだから、やっぱりC++が速くなったって話じゃん

    # まぁ「速くなった」のだから、「早くなった」わけではないかもね

    • by Anonymous Coward

      タレコミだとまるでC++標準化委員会に規格文章でも提出したかのように読めるけど、実際はLLVMに実装(libc++)の変更をコミットしたというだけの話らしいぞ。

    • by Anonymous Coward

      LLVMってそこまでオフィシャルでもないような。まあ、影響力は大きいと思うけど。

  • by Anonymous Coward on 2023年06月26日 19時45分 (#4484604)

    簡単に使えるようになると助かるのだが。

typodupeerror

人生の大半の問題はスルー力で解決する -- スルー力研究専門家

読み込み中...