前回の本コラムでも紹介したように、AIノイズ ―AI/LLMに由来する大量のパッチやバグ報告がLinuxカーネル開発メンテナーたちの労力を増大させており、カーネル開発のサイクルにも影響を及ぼしつつあるが、AIによる負荷に疲弊しているのはメンテナーだけではない。
Linuxカーネルのメインリポジトリ「kernel.org」の管理人であるKonstantin Ryabitseは「地理的に分散したgit.kernel.orgの5つのノードにある合計90個のCPUコアのうち、つねに14~16個のコア(全体の処理能力の約20%)がAIクローラー(スクレイパー)のコミットをレンダリングするためだけに使われている」という内容のブログを8月29日付けで投稿、AIクローラーの貪欲で非効率なデータ取得の現状を明らかにしている。
git.kernel.orgには現在、約148万のコミットと922(執筆時点)ものフォークあるが、ふつうにLinuxカーネルのコードを取得したいのであれば、Ryabitseが指摘するように単にgit cloneするだけですべての履歴を手に入れることができる。リポジトリを丸ごとコピーしたあとは、自分の環境でコミット履歴を走査すればいい。
だがAIクローラーはこのアプローチではなく、「実際にはもっともバカげた方法 ―コミットごとにすべてをHTMLとしてレンダリングし、それを解析する」(Ryabitse)という方法を取っている。つまり「このコミットをHTMLにして」「このコミットもHTMLにして」「このdiffをHTMLにして」「このフォークのこのコミットをHTMLにして」という要求を延々とサーバに送り続けるのだ。
Gitではフォークを作ったとしても実データを何重にもコピーする必要はなく、オブジェクト共有を使って効率よく保存することができる。しかしAIクローラーは「フォーク1のコミット1」「フォーク1のコミット2」…「フォーク2のコミット1」「フォーク2のコミット2」…「フォークXのコミット1」「フォークXのコミット2」…と同じコミットを何度も何度もHTMLとして取得しようとする。「スクレイパーは何十億もの有効なURLをスクレイピングしているが、得られるのは148万件のコミットの922件の重複だけだ」(Ryabitse)
Ryabitseによれば、現在、git.kernel.orgにはランダムなコミットを表示してほしいというリクエストが1日あたり約600万件寄せられているという。うち66%はスクレイピングボットを防ぐためのしくみとして導入したAnubisチャレンジ(後述)で弾かれているが、33%は問題を解いてメインサイトにアクセス可能になっており、「かなり寛大に仮定したとしても、(人間による)正当なリクエストはトラフィックの約2%に過ぎず、残りはすべてスクレイパーによるものだ」とRyabitseは分析している。
いまのところAIクローラーによるリクエストはgit.kernel.orgにとって「それほど大きな問題にはなっていない」ものの、冒頭でも挙げたように5つの分散サーバにある合計90個のCPUコアのうち、常時14~16個のコアがAIクローラーのコミットをレンダリングするためだけに使われており、全体の処理能力の約20%が費やされている。AIクローラーはデータの取得だけでなく、その取得のための計算コストまでオープンソースであるLinuxカーネル開発プロジェクト側に負担させていることになる。
Linuxカーネルコードが「デジタルプリオン病の回復薬」に
そもそもなぜAIクローラーはLinuxカーネルのデータを求めるのだろうか。Ryabitseは以下のようにコメントしている。
Linuxの開発はオープンな環境で行われている。クローン可能なGitリポジトリからリアルタイムでフォローできるディスカッションアーカイブまで、あらゆるものが利用可能だ。大規模言語モデルにとって、これは学習データの宝庫である。なぜならこれらのデータはすべてすぐに利用できるだけでなく、純粋で、混ぜ物のない、AI以前のコンテンツを保証するために簡単にフィルタリングできるからだ。LLMが生成したコンテンツでLLMをトレーニングすると“デジタルプリオン病(digital prion disease)”のような事態が発生する。そのため、カーネルコミットの全履歴のように、LLMが存在しないことが保証されているソースはトレーニングデータのソースとして非常に価値がある。
AIが生成したデータを学習したAIが学習する、これを繰り返すことでAIモデルの出力が劣化し、生成されるコンテンツの質が世代を経るごとに低下する現象を“デジタルプリオン病”と呼ぶ向きがあるが、まさに人間の力(だけ)によって長い時間をかけて作り上げられた純粋なコンテンツを追い求めるAIクローラーの行動は、デジタルプリオン病を回避するには理に適っているのかもしれない。だがそのアプローチがあまりに原始的で非効率であるために、Linuxカーネル側が大きな負担を強いられているのが現状だ。
なお、Ryabitseは今回の投稿に「Creepy Crawlies(不気味な虫たち)」というタイトルを付けているが、多くの人々の貢献によって作られてきたLinuxカーネルという成果物にAIクローラーが膨大なリクエストを投げているさまは、豊かな実りを付けた稲穂に群がるイナゴの大群による“蝗害”を連想させる。
AIボットとの果てしなき戦い
もっともLinuxカーネル側もこれらの”蝗害”に何も対策しなかったわけではない。Ryabitseによれば、最初にこの問題が明らかになったのはおよそ1年前としているが、当初はボット自身がUserAgentを通じて自分がボットであると教えてくれていたので「ログを調べて、明らかにスクレイピングボットとわかるIPアドレスを見つけ出し、fail2ban(オープンソースのセキュリティツール)でブロックする」という方法で対処できていたという。
だがボットが通常のブラウザのふり(Chrome on Windows / Firefox / Safariなど)をするようになったため、Linuxカーネル側はIPアドレスによるアクセス禁止措置を開始したが、今度はクローラーが一般家庭のISPやモバイル回線のIPアドレスからアクセスを開始したのである。しかもタチが悪いことに1つのIPアドレスからずっとアクセスするのではなく、「4、5回のリクエストを行ったら、ログには二度と現れなくなる(もうそのIPアドレスは使わない)」という使い方をしていた。「それらがボットだと気づいたときにはすでに攻撃は終了していた。二度と戻ってこないIPアドレスをブロックリストに追加してもファイアウォールセットを無駄に肥大化させるだけだった。彼らはイナゴの大群のように襲いかかり、システムがダウンするまで激しく、すばやく攻撃し、こちらが回復するまでに次の標的へと移動し、そしてまた別の姿で戻ってくる。これを繰り返すのだ。そして彼らはいまもプロキシSDK(一般ユーザの家庭用インターネット回線を他人の通信のプロキシとして機能させるソフトウェアの開発キット、スマートTVやゲームアプリなどに組み込まれる)の収益化ビジネスを通してそれをやっている。あなたのテレビもおそらくそれをやっている」(Ryabitse)
Linuxカーネル側は次の対策として「ボットに無駄な計算をさせる」ためにPoW(Proof-of-Wokr)認証を行うAnubisを導入した。現在、git.kernel.orgにブラウザでアクセスすると、最初に「あなたがボットでないことを確認しています!」というメッセージとともにケモミミのキャラクターが表示されるが、これは「あなた(アクセス元)が人間かどうかを確かめるために、ブラウザに計算問題を解かせる」という意味だ。人間が1回アクセスする程度ならAnubisが要求する計算(たとえば“SHA-256を計算して先頭に0が4個並ぶ結果になる文字列を探す”など)は大きな負荷とならない。しかしボットやAIクローラーが1億ページ取得しようとすると、計算を1億回解く必要がある。Anubisの効果はてきめんで、ボットたちは「あっさりとあきらめた」(Ryabiste)ようだった。

しかしその数ヵ月後、ボットはふたたび攻撃に戻ってきて計算の難易度4を解くまでに賢くなっていた。そこでLinuxカーネル側は難易度5に上げたが、これは人間のユーザが使うスマートフォンでも数秒かかり、しかも端末が「不快なほど熱くなる」という副作用が生じたものの、一定の効果をあげる結果となり、「数ヵ月は平穏な日々が続いた」…だが、現在、ボットたちは難易度5の問題を解き始めつつある。前述したように、約600万件/日のアクセスのうち、66%はAnubisが弾いているが、33%は計算を解いてアクセスに成功している。
AI時代がもたらす「予期せぬ問題」は今後も…
Ryabisteは最後に「我々はどう対応すべきか」という問いに対して「不透明だ(Unclear)」と答えている。とりあえずの対策としてはクロール可能なURLの数を減らし、実行コストの高い処理を制限するために一部の機能を無効化しているという。また、git.kernel.orgにアクセスするユーザに対し「匿名でリソースにアクセスする際は一部の機能が利用できなくなるが、どうかわかってほしい。我々もこの措置は望んでいないのだが、現時点ではやむを得ないのだ」と理解を求めている。
「最悪なことにこの問題には簡単な解決策がない。独自のAIモデルを提供する企業は今も毎日登場しており、いずれも学習データを求めている。アプリ開発者は利益を上げる方法を模索しており、今後も家庭用電化製品を攻撃の標的に変え続けるだろう」(Ryabiste)
オープンソースとして発展を遂げてきたLinuxカーネルはその原則にのっとり、すべてのデータを公開しており、誰からのアクセスも受け入れてきた。だがAI時代となった現在、AIツールによる貢献の是否や今回のAIイナゴによるデジタル蝗害など、かつてのプロジェクト運営ではぶつかることのなかった問題が増えつつある。単なるボット/クローラー対策とは異なる、AIと共存できるオープンソースの実現に向けて、さまざまなしくみを再設計する必要があるのかもしれない。
