AI・機械学習
不気味な這うものたち
Creepy Crawlies (people.kernel.org)
要約
この記事は、Linuxカーネルのgitリポジトリに対するAIクローラーの負荷について、具体的な数値を用いて解説しています。AI学習モデルへのデータ供給を目的としたクローラーが、正規のgitクローンやアクセスよりも多くのCPUサイクルを消費しており、システム全体に持続的な負荷を与えている現状を指摘しています。AIが学習データとしてカーネルのコミット履歴をHTMLとしてレンダリングする非効率的な方法を採用しているため、大量のURLが生成され、ボットによるアクセスが急増している問題に対処するため、計算チャレンジ(Anubis)の導入などの対策が取られていますが、それでもAIによるデータ消費は増加の一途をたどっており、リソースの枯渇が懸念されています。
全文翻訳
不気味な這うものたち
2026年8月29日
以前から「AIクローラー」について不満を漏らしていたかもしれませんが、今ではその影響を示す具体的な数値を示すことができます。
一言で言えば、それはシステム負荷の絶え間ない「バックグラウンド放射線」を作り出すほど悪く、学習モデルへのデータ供給という単一の目的のためだけの出力を生成するために、常に容量の一部を占有しています。
TL;DR:スクレイパーのためにコミットをレンダリングするのに費やすCPUサイクルは、gitクローンを含む他のすべての正当なアクセスよりも多く費やしています。
地理的に分散された5つのノード全体で、常に14個のCPUコアがgitコミットをHTMLとしてレンダリングすること以外何もしていません。
なぜgit.kernel.orgはクローラーにとって「興味深い」のか
Linux開発はオープンに行われています。
gitリポジトリをクローンしたり、リアルタイムでフォローできる議論アーカイブをフォローしたりできます。
大規模言語モデルにとって、これは学習データの宝庫です。
なぜなら、これらはすべてすぐに利用できるだけでなく、純粋で混じりけのないAI以前のコンテンツを保証するために簡単にフィルタリングできるからです。
LLMをLLMによって生成されたコンテンツでトレーニングすることは、デジタルプリオン病に相当します。
そのため、カーネルコミットの全履歴のようにLLMフリーであることが保証されているソースは、学習データソースとしてその重み分の金に値します。
最も愚かな方法
私たちはほとんどすべてをクローン可能にしています。
なぜなら、私たちは永遠にここにいるわけではないかもしれないので、ここにリポジトリをクローンしてください。
アーカイブもクローンしてください。
コピーを取っておけば、私たちだけがすべてを持っているわけではありません。
真剣に、それは単なる「git clone」の距離です。
そして、あなたは全履歴を持つことになります。
例えば、LKML全体をクローンして、好きなようにできることを知っていましたか?
それはすべてgitリポジトリです。
したがって、「人工知能」を装うものが、トレーニング目的でデータを最も効率的に使用する方法を選択するだろうと考えるでしょう。
リポジトリをクローンし、すべてのコミットをウォークします。
完了です。
しかし、そうではありません。
実際には、それをHTMLコミットごとにレンダリングしてから解析するという、可能な限り最も愚かな方法を選択しましょう。
執筆時点では、linux.gitは約148万コミットです。
ああ、そしてgit.kernel.orgには約922のフォークがあります。
しかし、心配しないでください。
バックエンドでは非常に効率的です。
なぜなら、ほとんどの場合、すべてのフォークで同じオブジェクトだからです。
もちろん、あなたがスクレイパーである場合を除きます。
その場合、あなたは、 oh、数億の有効なURLをスクレイピングできます。
たった922の同じ148万コミットの重複を取得するためだけに。
そして、まさにスクレイパーが行っていることです。
しかし、待ってください。
コミット自体だけではありません。
パッチ、プレーンレンダリング、任意のコミット間の差分を要求することもできます。
cgitは喜んでそれを提供してくれます。
これは、インターネットが人間やrobots.txtに従うクローラーのためのものだった時代には完璧でしたが、今ではひどいものです。
なぜなら、linux.gitの単一フォークのために、1.2兆もの有効なURLを生成できるからです。
ブロックする
当初、これが解決策でした。
ログを調べて、どのIPが明らかにスクレイパーボットであるかを見つけ、fail2banでブロックします。
最初は簡単でした。
なぜなら、ボットはユーザーエージェントを介して、自分が誰であるかを親切に教えてくれたからです。
その後、彼らは賢くなり、ランダムな通常のブラウザになりすまし始めました。
そこで、IPでブロックし始めました。
結局、Linuxの8年間の放棄されたフォークの可能な限りすべてのコミットを取得しようとしているIPが、画面に表示されるすべてのリンクを激しくクリックしているだけのChrome on Windowsユーザーではないことを理解するのは簡単です。
ボットはその後、サブネット全体に拡散し始めましたが、これはまだまあまあでした。
なぜなら、Google ComputeからのIPがFirefoxユーザーになりすましているのは明らかだからです。
ASN全体をブロックすることは正当化されました。
たとえ、それが時折、コミット内のリンクチェックを自動化しようとしているランダムな正当なインスタンスを捉えたとしてもです。
入ってきました…あなたのテレビ?
そして…そこで物事は本当に、本当に醜くなりました。
突然、クローラーは、ランダムな現代のブラウザになりすましている何百万ものランダムな住宅用またはモバイルIPから来るようになりました。
そのようなIPは4〜5回リクエストを行い、その後ログに二度と現れませんでした。
それらがボットであると判断する頃には、すでにあなたとのやり取りは終わっていたので、それらをブロックする意味はありませんでした。
二度と戻ってこないIPをファイアウォールルールセットに追加するだけで、不必要にルールセットを肥大化させていました。
彼らは locust の群れのように降り注ぎ、激しく素早く攻撃してシステムがダウンし、回復するまで次のターゲットに移りました。
その後、彼らは戻ってきました。
すすぎ。
繰り返す。
彼らは今でもそれをやっています。
「プロキシSDK収益化」の世界へようこそ。
これは大きなビジネスであり、あなたのテレビもそれを行っている可能性があります。
彼らに支払わせる
これが問題になったとき、約1年前、私たちはそれを止める方法があるだろうとナイーブに考えました。
ボットに、使い捨ての数学を燃やすことによって、経済全体をひっくり返すようなタスクを実行させるだけです。
例えば、IPと秘密の文字列を組み合わせたときに、SHA256ハッシュで先頭に4つのゼロを持つ文字列を計算します。
つまり、すべてにAnubisを配置しました。
それは即座に非常に効果的でした。
ボットはすぐに諦めました。
数ヶ月間は至福でした。
ボットは境界でブロックされ、諦め、より簡単なターゲットに移りました。
ユーザーは少し迷惑でしたが、それを許容しました。
Anubisスタックはどこにでも簡単に展開できました。
数ヶ月後、ボットが難易度4を解決して戻ってきました。
問題ない、と言って、難易度を5に上げましょう。
正当なユーザーは今ではさらに迷惑でした。
難易度5は、モバイルデバイスで解決するのに数秒かかり、電話は数字の計算を行っている間、不快に熱くなります。
しかし、それは効果的で、さらに数ヶ月の平和をもたらしました。
そして…ボットは難易度5を解決し始めました。
現状
今日、git.kernel.orgはランダムなコミットを表示する600万件のリクエストを毎日受け取っています。
そのうち66%はAnubisチャレンジで即座に撃退されますが、33%は数学を解決してメインサイトにアクセスしています。
なぜなら、私たちが提供しているものが、Anubisチャレンジを計算するために多くのサイクルを費やす価値があるからです。
これらのうちどれがボットで、どれが本物の人間であるかを確実に判断することは不可能です。
しかし、可能性が高いのは、古いフォークの古いコミットを要求している場合、それはおそらく実際の開発者が作業を行っているわけではないということです。
寛大な仮定をいくつかすると、正当なリクエストはgit.kernel.orgトラフィックのわずか2%です。
それ以外はすべてスクレイパーです。
どれほど悪いか?
現時点では、まだ圧倒されてはいません。
git.kernel.orgにアクセスすると、おそらく迅速かつ応答性が高いでしょう。
通常私たちをダウンさせるのはスクレイパーボットではなく、多数のノードから同時にstable.gitをシャローでクローンしようとするような、設計の悪いCIシステムです。
(シャロークローンはひどいです。
そのようなひどいことをするのであれば、自分でミラーを実行してください。)
しかし、地理的に分散された5つのノード全体で90コアのうち、14〜16コアが常にスクレイパーのためにコミットをレンダリングすること以外何もしていないことを知っておくべきです。
平均すると、これは私たちの全容量の20%です。
ただし、群れは波のように襲来し、実際のグラフは20%のフラットラインよりもはるかにギザギザしています。
どこに向かうのか?
不明です。
AIバブルが弾けて、モデルのトレーニングを試みるエンティティが突然少なくなるかもしれません。
あるいは、彼らが賢くなり、データを最も愚かな方法で消費するのをやめるかもしれません。
私たちがやっていることに関しては、クロール可能なURLの数を減らし、実行にコストのかかるアクションをゲートオフするために機能をオフにしています。
少なくとも匿名でリソースにアクセスする際には、機能の一部を失うことが予想されます。
信じてください、私たちはあなたと同じくらいそれを嫌っていますが、現時点では必要不可欠です。
最悪なのは、簡単な解決策がないことです。
カスタム「AI」モデルを提供する企業は毎日登場しており、すべてがトレーニングデータを求めています。
アプリ開発者はまだ探しています