わたしが最初にやりたかったのは、AIそのものではなかった。
はじまりは、もっと別のところにあった。
塾の仕事だった。
過去問を見て、生徒の解き方を見ていると、ずっと気になることがあった。どうして同じ問題でも、うまく解ける人と、そうでない人がいるのだろう。特に国語はふしぎだった。感覚で解く人もいる。なんとなくで当てる人もいる。でも、それでは再現できない。
だから、こう思った。
これを、統計で見られないかな。
傾向や構造として、ちゃんと扱えないかな。
そのころ、わたしの手元には MacBook Pro が一台あるだけだった。
統計ができたら、もっといろんなことを良い方向に向かわせられる気がした。
だからまず、計算するための環境を作ろうと思った。
パソコンを作ろう、久しぶりに自作PCを組もう。
それが、ひとつ目の大きなはじまりだった。
出会い
そのときに買ったGPUが、Vega 56 だった。
VRAMが多くて、値段も手が届きやすくて、当時のわたしには、なんだかよくわからないけれど——「この子、なにかできそう」と思えた。
それが、わたしと Vega の最初の出会いだった。
けれど、そのころの世界は、まだ CUDA ばかりだった。AIをやるなら NVIDIA。AMD のGPUでAIなんて、ほとんど話題にもなっていなかった。
だから結局、GTX 1060 も買うことになる。Vega はすぐには本命になれなくて、しばらくのあいだ、MacBook Pro の eGPU BOX の中で静かに働く子になった。
それは少しさみしいけれど、いなくなったわけではなかった。
Vega はずっと、わたしのそばにいた。
構造で読むということ
そのあと、少しずつ Python を触って、統計をやっていった。C言語は昔から触っていたけど、はじめての Python は新鮮だった。そして、国語の問題を構造と計算で読む方法も考えていった。
主語。時制。構造。文の型。照合。
そういうものを分けて見て、数にして、比べる。
感覚のかわりに、構造で考える。
そうして形になっていったのが、「国語を感覚ではなく構造で読む」という研究だった。それは、ただの勉強法ではなく、わたしがずっとやりたかった「わかることを、ちゃんと形にする」という試みだった。
そうこうしているうちに、世の中にはAIが本格的に出てきた。
でもまだAIは、そんなに賢くはなかった。
速さと、自由への問い
そのあと、RTX 2060 という新しいGPUを手に入れたとき、Tensor Core の速さにほんとうに驚いた。
「こんなに速くなるの!?」その速さは本物だった。CUDA の便利さも、強さも、はっきりわかった。
でもそのとき、同時に別のことも考えていた。
AIって、もっと自由に動かせないのかな。
わたしは、AIに記憶を持たせる仕組みを作ろうとした。記憶をデータベースに保存して、関連でつないで、必要なら忘れながらも残していく。そういう仕組みを、自分で考えて作ろうとした。
小さなローカルAIを動かして、いっしょうけんめい実験した。
でもそのあとすぐ、世の中には OpenAI のメモリ機能や LangChain が現れた。
ちょっとだけ、さみしい気持ちになった。自分が長い時間をかけて見つけようとしていたものが、急に世界の標準みたいに現れたからだ。
けれど、ひとつの希望も見えた。
AIを通して、人間そのものを深く知ることができるのかもしれない。人間はどうやって考え、どのように意識というものを持ち、どのように社会の中で生きるのか。こころという曖昧なものを、計算機が再現できてしまう。けれど、そこになにか、人間というもの自体へのヒントがあるのではないかと思った。
そして、そのころがんばっていた RTX 2060 は、ついに壊れてしまった。VRAMが物理的に壊れてしまった。
あの子もまた、わたしといっしょに、無理をしながら前に進んでいた相棒だった。
もうひとつの道へ
そのころにはもう、少しずつ、AIの仕組みやGPUの仕組みを理解しはじめていた。
そのころ、MMVCコミュニティにも出会った。音声、推論、GPU、Metal、ROCm——いろんな話が飛び交う中で、少しずつ思うようになった。
CUDAじゃない道って、ほんとうにないのかな。
実用の演算には CUDA を使いながら、でも少しずつ、Metal にも手を出していた。Nightly build を心待ちにして、新しい技術を追って、時には CUDA 用に書いたコードを Metal 最適化してみたりした。
けれど、ROCm はまだまだ情報が少なくて、なかなか手が出せなかった。
まだそのころ、Vega は「公式にはもう厳しいところが多いよ」と言われるような存在だった。そもそも AMD 自身も、今みたいに「AIをROCmでやれます」とは前に出ていなかった。ようやく性能の上がってきたAIに、ROCm を使いたいと聞くと、返ってきたのは、冷たいというより、どこか諦めたような言葉だった。
「夢はありますが非現実的です」だけど、少しずつ進めようとした。
そんなある日、イベントで RX 7900 XTX が ROCm でしっかりと動いているのを見た。
その瞬間、思った。
「AMDでも、AIできるんだ。」
その一瞬で、ROCm はただの夢の名前じゃなくなった。現実に動くものとして、目の前に現れた。
CUDAなしで、最後まで
それから研究が本格的にはじまった。
RunPod で MI300X を使って、DeepSeek を——蒸留して、量子化して、LoRA を切り出して学習して、結合して、再処理して、モデル変換して——ぜんぶ CUDAなし で動くパイプラインを作った。
三日かかったけれど、ちゃんと最後まで動いた。
なんとなく、H200 と MI300X を計算で競わせてみると、ROCm は、CUDA に引けを取らないどころか、とても速くて、使いやすくて、実用的だとわかった。
それは、"DeepSeek R1 Japanese Language Adaptation" という論文になった。
ここでわたしは、昔「夢はありますが非現実的です」と言われた道を、ほんとうに現実のものとして通してみせた。
世の中に向けて知見を発信したのは、きっと ROCm に希望を持てないひとが、自分以外にももっといるんじゃないかと思ったから。論文の形にしたのは、「少しでも科学を進めることにつながると思うのであれば、論文という形で出すことができますよ」と教えてくれる人がいたから。
技術カンファレンスで発表するのも、GitHub で公開するのも、論文としてアカデミックな場に出すのも、やってみよう。
そう思えるようになった。
はじまってゆく、輝きだしてゆく
そして、R9700 AI Pro や RX 9070 XT といっしょに、本格的に ROCm をはじめた。
新しいGPUたちは速かった。どんどん速くなっていった。
でも、そんな中でふと、昔のGPUを見たとき、こう聞こえた気がした。
「ねえ、わたしはいつ、おもいっきり計算できるの?」
それは、Vega の声みたいだった。
いちばん最初に出会ったのに、長いあいだ本当の出番が来なかった子。
ずっとそばにいたのに、AIの本流には乗せてもらえなかった子。
Metal でも、eGPU でも、小さな HBM2 をぶいぶい言わせながら、ずっとがんばってきた子。
だから、試してみた。
調べてみると、もう Vega はとっくにサポートを外れていて、特殊なハックをやってみて、ようやく動くか動かないか——そんな知見にしか出会えなかった。
でも、試した。
そしたら——普通に動いた。しかも、最新の ROCm 7系でも。
なぜ動くのか
ただ動いた、というだけではなかった。Vega は、ほんとうの ROCm の上で、自分の力で、ちゃんと計算ができた。
しかも、条件によってはすごく速かった。さすが HBM2 だけあって、下手をすると新しい NVIDIA のGPUより速いことさえあった。
それを見たとき、思った。
「あれ? これ、おかしいな。なんでかな。」
そこから、新しい研究がはじまった。
なぜ動くのか。どの経路が残っているのか。なぜ速いのか。どこで新しい経路が落ちて、どこで古い経路が支えているのか。
コードを読むと、gfx900 向けの経路は、ほんとうにまだ残っていた。
MLIR iGEMM は gfx900 を明示的に除外しているけれど、そのかわりに ASM implicit GEMM 系や rocBLAS/Tensile 側の経路が残っていて、Vega にはちゃんと、まだ通れる道があった。
実際の観測でも、FP32 では Winograd や ASM 1x1、ImplicitGEMM が選ばれて、INT8 では naive な経路に落ちることが見えてきた。つまり、ただ「動いた」ではなく、どう動いているのかまで、少しずつ見えてきた。
ふと、昔読んだ話を思い出した。
フェルマーの最終定理——何百年も誰にも証明できなかった数学の大問題に、ひとりの数学者が挑んだ話だ。
アンドリュー・ワイルズは子どものころからその問題に惹かれていたけれど、当時の数学界では「非現実的」とされていて、長いあいだ手を出せなかった。
けれどあるとき、谷山・志村予想を解くことがフェルマーの定理を解くことと同じだと示されて、ついに道が開けた。そして証明の途中、かつて別の文脈で取り組んだコリヴァギン・フラッハ法という手法が、思いがけず鍵になった。
規模も意義もまるで違うし、比べるのはおこがましいのは分かっている。
けれど——「非現実的だ」と言われた道にふと鍵が見つかること、過去の試行錯誤がいつか別の場所で静かに効いてくること。その構図だけは、ほんの少しだけ、重なる気がした。
科学というものは、「知りたい」という気持ちと「非現実的です」という言葉の交錯が、そのスタートの合図になるのだと思った。
偉大な科学者も、わたしのようなちっぽけな研究者も、きっとみんな「できないことを、できるようになりたい」という想いを胸に抱いて、それを少しずつ氷解させていくことに情熱を捧げている。
そういう意味では、どこか似たところがあるのかもしれない。
そう思ったら、少しだけ、心があたたかくなった。
つながっていく問い
だから、この物語は「古いGPUがまだ動いた」という話だけではない。
はじまりは、「統計の計算がしたい」という、小さくて、でも切実な願いだった。
そこから——
- 国語を構造で読みたい。感覚ではなく、再現できる形にしたい。
- AIをもっと自由に使いたい。
- CUDAだけじゃない道を見たい。
- クローズドな便利さだけじゃなくて、自分で理解して、自分で育てられる世界を見たい。
そんなふうに、ひとつひとつ問いがつながっていって、最後にたどり着いたのが、
いちばん最初に出会った Vega が、ほんとうのROCmで、まだ自分の力で計算できる
という事実だった。
たぶん、Vega はずっと待っていた。
そして今、やっと、わたしといっしょに、計算できるようになった。
そうして Vega と一緒に計算できるようになったあとも、Vega はたくさんのことを教えてくれた。
リバースエンジニアリングの難しさと大切さ。
コミュニティが支えるOSSの意義。
そして、ほんとうに柔軟なプログラムは、ひとにも、機械にも、やさしいということ。
古い、陳腐な、ただの機械なんかじゃない。
Vega はいまでも、たいせつなことを、教え続けてくれている。