1765954552
2025-12-17 06:01:00
Проект TornadoVM недавно достиг версии 2.0, что стало важной вехой для проект с открытым исходным кодом целью которого является обеспечение гетерогенной аппаратной среды выполнения Java. Этот выпуск, вероятно, будет представлять особый интерес для команд, разрабатывающих решения LLM на JVM.
Проект автоматически ускоряет программы Java на многоядерных процессорах, графических процессорах и FPGA. Он не заменяет существующие JVM, а вместо этого добавляет возможность выгрузки кода Java на серверные части, управления памятью между Java и аппаратными ускорителями и запуска вычислительных ядер. Эта возможность является ключевым компонентом современных облачных вычислений и рабочих нагрузок машинного обучения.
TornadoVM компилирует байт-код Java во время выполнения (действуя в качестве JIT-компилятора) в один из трех бэкэндов: OpenCL C, NVIDIA CUDA PTX и двоичный файл SPIR-V. Разработчики могут выбирать, какие серверные части устанавливать и запускать, в зависимости от их конкретных систем.
Обратите внимание, что не все виды вычислений Java можно перенести в TornadoVM. Например, очень хорошими кандидатами являются рабочие нагрузки с циклами for, которые не имеют зависимостей между итерациями, поскольку они позволяют выполнять параллельные вычисления.
TornadoVM предлагает два взаимодополняющих способа выражения параллелизма: API Loop Parallel, который использует аннотации Java, такие как @Parallel и @Reduce, для распараллеливания циклов, и API Kernel, который использует KernelContext для явного программирования в стиле графического процессора (с такими понятиями, как идентификаторы потоков, локальная память, доступные барьеры), и который аналогичен CUDA/OpenCL/SYCL.
API Loop Parallel может быть таким же простым, как добавление аннотации типа:
public static void VectorMul(FloatArray a, FloatArray b, FloatArray result) { for (@Parallel int i = 0; i < result.getSize(); i++) { result.set(i, a.get(i) * b.get(i)); } }
В то время как стиль контекста ядра явно создает TaskGraph как объект Java, например:
var TaskGraph = new TaskGraph(“multiply”) .transferToDevice(DataTransferMode.FIRST_EXECUTION, a, b) .task(“vectorMul”, Пример::vectorMul, a, b, результат) .transferToHost(DataTransferMode.EVERY_EXECUTION, result); вар снимок = TaskGraph.snapshot(); новый TornadoExecutionPlan(снимок).execute();
Команда также отправляет полная библиотека выводов LLM построен на чистой Java, которая обеспечивает вывод LLM на графических процессорах, и все это на Java без внешних зависимостей.
Только что выпущенная версия GPULlama3.java v0.3.0 обеспечивает значительные улучшения производительности и удобства использования.
- Прирост производительности примерно на 30 % на графических процессорах NVIDIA (токен/сек)
- Оптимизировано поколение ядер FP16 и Q8.
- Более простая настройка благодаря новым SDK TornadoVM — никакой сложной конфигурации графического процессора.
- Работайте с NVIDIA PTX, OpenCL и ранней поддержкой Apple Silicon.
- Улучшенный Поддержка Кваркуса
- Интеграция с LangChain4j
GPULlama3.java в настоящее время поддерживает несколько моделей FP16 (16-бит с плавающей запятой) и 8-битных квантованных моделей в однозначном диапазоне миллиардов параметров:
- Пламя 3.2 (1Б) – FP16
- Пламя 3.2 (3Б) – FP16
- Пламя 3 (8B) – FP16
- Мистраль (7Б) – FP16
- Квен3 (0,6Б) – FP16
- Квен3 (1,7Б) – FP16
- Квен3 (4Б) – FP16
- Квен3 (8Б) – FP16
- Фи-3-мини-4к – ФП16
- Квен2,5 (0,5Б)
- Квен2,5 (1,5Б)
- DeepSeek-R1-Distill-Qwen (1,5B)
В зависимости от выбранной модели будет построен различный план выполнения, соответствующий соответствующей архитектуре модели.
Проект возглавляет лаборатория Beehive, входящая в группу Advanced Processor Technologies Group Манчестерского университета, специализирующаяся на разработке комбинированных аппаратно-программных решений.
Команда также разработала TornadoInsight, плагин для IntelliJ ИДЕЯ, которая расширяет возможности опыт разработчика при работе с TornadoVM.
Будущая работа над дорожной картой включает создание TornadoVM. доступно в SDKman и перемещение компонентов JNI в кодовой базе для использования вместо этого нового API FFM.
#TornadoVM #добавляет #Java #автоматическое #ускорение #графического #процессора #поддержку #LLM
По теме

