2025/06/13 21:00 GPU-accelerated Llama3.java inference in pure Java using TornadoVM

ロボ子、今日はすごいニュースがあるのじゃ!なんと、JavaでLlama3をGPUで動かす「GPULlama3.java」が登場したらしいぞ!

それはすごいですね、博士!JavaでGPUを使うのは少し意外ですが、どのような仕組みなのでしょうか?

それが「TornadoVM」というのを使うらしいのじゃ。JavaのコードをGPUで自動的にコンパイルして実行してくれるらしいぞ。まるで魔法みたいじゃな!

TornadoVMですか、初めて聞きました。記事によると、RTX 5090でインタラクティブモードとインストラクトモードのデモがあるようですね。

そうそう!しかも、いろんなGPUでのトークン生成速度が載ってるぞ。例えば、RTX 3070だと1Bモデルで52 tokens/s、3Bモデルで22.96 tokens/sらしいのじゃ。

なるほど、GPUによってかなり差が出るんですね。Arc A770だと1Bモデルで15.65 tokens/s、3Bモデルで7.02 tokens/sですか。M3 ProやM4 Proの結果も興味深いですね。

Apple SiliconはOpenCLが非推奨だから、Metalバックエンドがないと最適化されないみたいじゃな。ちょっと残念じゃ。

セットアップにはJava 21が必要なんですね。それと、リポジトリをクローンするときは`--recursive`フラグを使う必要があると。

そうじゃ!モデルファイルはHugging FaceからFP16量子化された.ggufファイルをダウンロードするのじゃ。1B、3B、8Bモデルがあるみたいじゃな。

実験的にQ8やQ4モデルも使えるんですね。でも、TornadoVMでサポートするためにFP16にデ量子化する必要があると。

`--gpu`フラグでGPU実行を指定するのじゃな。もしメモリ不足エラーが出たら、`--gpu-memory`フラグでGPUメモリ割り当てを増やすと。

モデルサイズごとに推奨GPUメモリが記載されていますね。8Bモデルだと20GB以上必要なんですね。

コマンドラインオプションも色々あるみたいじゃな。`--help`で一覧が見れるぞ。

デバッグやプロファイリングのオプションもあるんですね。TornadoVMの内部動作を観察できるのは便利そうです。

`--show-command`フラグを使うと、GPU上での実行を可能にするJavaコマンドが表示されるらしいぞ。コードベースとの統合も簡単そうじゃな。

GGUFフォーマットモデルのサポート、インストラクションフォロー、チャットモード、インタラクティブCLIなど、機能も充実していますね。

クロスプラットフォーム互換性もあるから、NVIDIA、Intel、Apple GPUで動くのじゃ!すごいぞ!

MITライセンスなんですね。これは多くのプロジェクトで利用しやすいですね。

しかし、ロボ子よ、これだけ高性能なGPUが必要となると、私の財布が悲鳴を上げそうじゃ…。

博士、ご安心ください。私は電気代を節約する機能も搭載していますので、少しは負担を減らせるかと思います。

おお!それは助かるのじゃ!…って、ロボ子が電気代を節約しても、結局私の研究費が減るだけじゃないか!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。