Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TornadoVMが切り拓くJavaの新領域

 TornadoVMが切り拓くJavaの新領域

JJUG CCC 2026 Spring

Avatar for Kenji Kazumura

Kenji Kazumura

May 30, 2026

More Decks by Kenji Kazumura

Other Decks in Technology

Transcript

  1. 2026/05/30 数村憲治 © 2026 Fujitsu Limited JJUG CCC 2026 Spring

    @kkzr TornadoVMが切り拓く Javaの新領域 ~ GPU活用と生成AIへの適用
  2. © 2026 Fujitsu Limited 自己紹介 Jakarta EE 仕様策定委員 MicroProfile ステコミ委員

    JCP Executive Committee メンバー Eclipse Foundation ボードディレクター OCX、Adoptium Summit、JakartaOneなどで登壇 Adoptium ステコミ委員 3
  3. © 2026 Fujitsu Limited © 2026 Fujitsu Limited メモリアクセス・GPU制御 RAG利用

    AIフレームワーク ネイティブラッパー トレーニング MCP / A2A / ACP利用 AIクラウドネイティブ化 AIリモートアクセス Vector API HAT Babylon Valhalla JCuda TensorFlow for Java FFM Deep Java Library Visual Recognition Jakarta Agentic AI MicroProfile REST Client LangChain4j Jakarta Messaging Quarkus AI Spring AI LangGraph4j Embabel Jakarta Transactions Jakarta Query Jakarta Data Jakarta Security Jakarta Restful Web Services Jakarta RPC MicroProfile Fault Tolerance MicroProfile Telemetry MicroProfile Config Jakarta Websocket Jakarta Config Agentic AI Tornado VM Java X AI 関連技術 Landscape 2025年版 5
  4. © 2026 Fujitsu Limited © 2026 Fujitsu Limited メモリアクセス・GPU制御 RAG利用

    AIフレームワーク ネイティブラッパー トレーニング MCP / A2A / ACP利用 AIクラウドネイティブ化 AIリモートアクセス Vector API HAT Babylon Valhalla JCuda TensorFlow for Java FFM Deep Java Library Visual Recognition Jakarta Agentic AI MicroProfile REST Client LangChain4j Jakarta Messaging Quarkus AI Spring AI LangGraph4j Embabel Jakarta Transactions Jakarta Query Jakarta Data Jakarta Security Jakarta Restful Web Services Jakarta RPC MicroProfile Fault Tolerance MicroProfile Telemetry MicroProfile Config Jakarta Websocket Jakarta Config Agentic AI Tornado VM Java X AI 関連技術 Landscape 2025年版 本日のターゲット 6
  5. © 2026 Fujitsu Limited © 2026 Fujitsu Limited AIによる計算需要 https://arxiv.org/abs/1706.03762

    Figure 1:The Transformer - model architecture. 各フェーズで大量の行列計算 Attention 𝑄 𝐾 𝑉 = softmax​ 𝑄𝐾𝑇 𝑑𝑘 𝑉 Attention例: Transformerアーキテクチャ GPUの需要増加 7
  6. © 2026 Fujitsu Limited © 2026 Fujitsu Limited CPUとGPU CPU

    GPU PCI-e ノースブリッジ メモリコントローラ メインメモリ グローバルメモリ 8
  7. © 2026 Fujitsu Limited © 2026 Fujitsu Limited CPUプログラミングとGPUプログラミング CPU

    GPU PCI-e ノースブリッジ メモリコントローラ メインメモリ グローバルメモリ スレッドレベルの計算 並列 並行計算 ・Vector API ・並列ストリーム ・バーチャルスレッド ・ 9
  8. © 2026 Fujitsu Limited © 2026 Fujitsu Limited GPUプログラミング用語 カーネル:プログラムの最少単位

    スレッド:カーネルを実行する最少単位 ブロック(Work Group):スレッドの集合 グリッド(NDRange):ブロックの集合、処理範囲 ホスト:CPU側 デバイス:GPU側 10
  9. © 2026 Fujitsu Limited © 2026 Fujitsu Limited CUDAの例 void

    vectoradd(const float *a, const float *b, float *c, int n) { int i = blockIdx.x * BlockDim.x + threadIdx.x; if (i < n) { c[i] = a[i] + b[i]; } } void main() { ・・・ vectorAdd<<<M, N>>>(d_a, d_b, d_c, M*N); ・・・ } 1つのスレッドが実行する処理 →カーネル 範囲(ND-Range)は、 呼出し元で指定する 11
  10. © 2026 Fujitsu Limited © 2026 Fujitsu Limited パラダイムシフト GPUプログラミングはCPUプログラミングの延長ではない

    JavaでGPUプログラミングするには、 新しいプログラミングパラダイムが必要 OpenJDKでは、BabylonのCode Reflectionが該当 12
  11. © 2026 Fujitsu Limited © 2026 Fujitsu Limited TornadoVMとは Javaプログラムを、CPU/GPU/FPGA向けに動的コンパイル

    CUDAやOpenCLのコードを書かなくてよい OpenCL CやNVIDIA PTXのコードをJITで生成 主要なOpenJDKや、GraalVMにプラグイン可能 マンチェスター大学で2017年より開発 OpenJDKのプロジェクトではない 現バージョンは4.0で実運用でも使われている JVMに対するプラグイン 14 https://www.tornadovm.org/
  12. © 2026 Fujitsu Limited © 2026 Fujitsu Limited TornadoVMデザイン Task

    データフロー メモリハンドラ デバイスドライバ スケジューラ オーケストレータ Execution Plan JIT OpenCL PTX SPIR-V バイトコード生成 開発者用API TornadoVM ランタイム TaskGraph グラフ最適化 実行エンジン コンパイラ拡張 (JVMCI) 15
  13. © 2026 Fujitsu Limited © 2026 Fujitsu Limited TaskGraph var

    taskGraph = new TaskGraph(“inference”) .transferToDevice(DataTransferMode.FIRST_EXECUTION, weights) .transferToDevice(DataTransferMode.EVERY_EXECUTION, input) .task(“forward”, Model::forward, weights, input, output) .transferToHost(DataTransferMode.EVERY_EXECUTION, output); 毎回コピー 最初の1度だけコピー アウトプットのコピーは毎回実施 タスクとして実行するメソッド 16
  14. © 2026 Fujitsu Limited © 2026 Fujitsu Limited TornadoExecutionPlan ImmutableTaskGraph

    immutableTaskGraph = taskGraph.snapshot(); try (var executionPlan = new TornadoExecutionPlan(immutableTaskGraph)) { executionPlan .withProfiler(ProfilerMode.CONSOLE) .execute(); } どのように実行するかを記載 例:プロファイラ、ウォームアップ、デバイス JITで再翻訳されないようにimmutable版を使う 17
  15. © 2026 Fujitsu Limited © 2026 Fujitsu Limited @Parallel public

    static void vectorMultiply( FloatArray a, FloatArray b, FloatArray result) { for (@Parallel int i = 0 ; i < result.getSize() ; i++) { result.set(i, a.get(i) * b.get(i) ); } } ループ内を自動的に並列化 イテレーションで依存性がないことが前提 ND-Range実行をOpenCLやCUDAにマッピング FFMを使ったオフヒープの型 TaskGraphのtaskに指定するメソッドの定義 18
  16. © 2026 Fujitsu Limited © 2026 Fujitsu Limited Kernel API

    // Loop over all tiles along the K dimension int numTiles = size / TS; for (int t = 0; t < numTiles; t++) { // Each thread loads ONE element of the tile into local memory int tiledRow = TS * t + row; int tiledCol = TS * t + col; aSub[col * TS + row] = A.get(tiledCol * size + globalRow); bSub[col * TS + row] = B.get(globalCol * size + tiledRow); // BARRIER: Wait for ALL threads to finish loading the tile context.localBarrier(); // Compute partial dot product using the cached tile for (int k = 0; k < TS; k++) { sum += aSub[k * TS + row] * bSub[col * TS + k]; } // BARRIER: All threads finished computing before loading next tile context.localBarrier(); } // Store the final accumulated result C.set((globalCol * size) + globalRow, sum); 19
  17. © 2026 Fujitsu Limited © 2026 Fujitsu Limited Babylon/HAT v.s.

    TornadoVM Babylon/HAT TornadoVM コード変換 Code Reflection (JEP draft 8361105) JIT 記述レベル 低レベル NDRangeを意識したカーネル記述 高レベル TaskGraphと並列指示 メモリ管理 FFMで低レベルの制御 ランタイムがJavaヒープ とGPU間を転送 開発場所 OpenJDK マンチェスター大学 精度(fp16等) Valhalla依存 独自実装 20
  18. © 2026 Fujitsu Limited © 2026 Fujitsu Limited TornadoVM 採用例

    EU & UKRI ファンドプロジェクト AERO (https://aero-project.eu/) P2CODE (https://p2code-project.eu/) ENCRYPT (https://encrypt-project.eu/) TANGO (https://tango-project.eu/) E2Data (https://e2data.eu/) GAIA (https://www.esa.int/Science_Exploration/Space_Science/Gaia) European Space Agency (ESA) 21
  19. © 2026 Fujitsu Limited © 2026 Fujitsu Limited トークン数の急増 データソース:https://blog.google/company-news/inside-google/message-ceo/

    https://www.morganstanley.com/insights/articles/nvidia-jensen-huang-compute-new-economic-engine-tmt-2026 Agentic AI can consume 1 million times more tokens than a standard generative prompt , which is causing compute demand to skyrocket, Huang said. トークン数増加は、性能・コストに影響 23
  20. © 2026 Fujitsu Limited © 2026 Fujitsu Limited 学習と推論の非対称性 https://x.com/nvidia/status/2039767180158406961

    "The inflection point for inference has arrived." — Jensen Huang, Founder & CEO of NVIDIA 学習と推論の非対称性が逆転 アプリケーションに近い所で実施される 推論の比重が高まる 企業アプリケーションで使われているJavaでの推論への期待 安定、性能、セキュリティ・ ・ ・ 24
  21. © 2026 Fujitsu Limited © 2026 Fujitsu Limited リモートLLM (クラウドサービス)

    ローカル 推論 プログラム モデル プロンプト REST API ChatGPT Gemini Claude ・・・ リモート 25
  22. © 2026 Fujitsu Limited © 2026 Fujitsu Limited ローカルLLM (REST接続)

    推論 プログラム プロンプト REST API llama.cpp Ollama ・・・ ローカル(*) ローカル(*) (*) 同一マシン、または、ローカルネットワーク モデル 26
  23. © 2026 Fujitsu Limited © 2026 Fujitsu Limited ローカルLLM (プログラム呼出し)

    推論 プログラム プロンプト 関数・メソッドコール llama.cpp llama3.java GPULlama3.java ・・・ ローカル ローカル モデル ローカル 27
  24. © 2026 Fujitsu Limited © 2026 Fujitsu Limited リモート v.s.

    ローカル リモートLLM ローカルLLM プロセッサ GPU CPU or GPU 性能(平準) トラフィックに依存 安定 性能(ピーク) 速い マシンに依存 セキュリティ データをリモートに送信 データは閉域内 精度 良い モデル(サイズ)に依存 コスト 従量課金or定額サブスク ハードウェア価格 28
  25. © 2026 Fujitsu Limited © 2026 Fujitsu Limited pure Java

    推論スタック LangChain4j Javaアプリケーション TornadoVM GPULlama3.java Vector API GPU PTX/CUDA JVMCI FFM OpenCL CPU SPIR-V GPUバックエンド Metal Javaコア推論 29
  26. © 2026 Fujitsu Limited © 2026 Fujitsu Limited GPULlama3.java Llama3モデルなど(※)の推論をGPU上で実施

    TornadoVMが必須 Llama3.javaをベースにpure Javaで実装 FP16、Q8_0、Q4_0量子化サポート (*) サポートモデル Llama3、Mistral、Devstral 2、Qwen2.5、Qwen3、Phi-3、 IBM Granite 3.2+、IBM Granite 4.0 30
  27. © 2026 Fujitsu Limited © 2026 Fujitsu Limited LangChain4j AI-Infused

    Java アプリケーションを構築するツールキット 多数のLLM/SMLとのインテグレーションを提供 一般的パターン(RAG、関数呼出し)のビルディングブロック を提供 プロンプト・メッセージ・メモリ・トークンなどの抽象化 多種多様なベクトルストアとドキュメントデータの統合 31
  28. © 2026 Fujitsu Limited © 2026 Fujitsu Limited LangChain4j +

    GPULlama3 var model = GPULlama3ChatModel.builder() .modelPath(Paths.get(“llama-3.2-1b-instruct-fp16.gguf”)) .temperature(0.9) .topP(0.9) .maxTokens(2048) .onGPU(true) .build(); var response = AiServices.create(ChatService.class, model) .chat(“Javaの歴史を教えて”); 32
  29. © 2026 Fujitsu Limited ローカルLLMでの利用期待(安定、性能、セキュリティなど) TornadoVM サマリ ただし、 OpenJDKのメインストリームではない JVMCI終了への対応が課題

    学習から推論へ比重変化 Java開発者のためのpure Java AIプラットフォーム GPUプログラミングに関する専門的知識はそれほどいらない (あった方がよい) 実際に使うことが可能 企業アプリケーションで多く使われているJavaへの期待 34