Vegaと、わたしのはじまり

統計計算がしたいという小さな願いから、研究にたどり着くまで
伊藤あきら(a.k.a りもこ) — AETS / Akatsuki Enterprise Technology Solutions

わたしが最初にやりたかったのは、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 はいまでも、たいせつなことを、教え続けてくれている。