llama3.java
llama3.java
概述
llama3.java
是一个用Java编写的单文件项目,它的目的是在JVM(Java虚拟机)上进行Llama 3的推理(inference)。它是llama2.java
项目的继任者,后者基于Andrej Karpathy的llama2.c
以及他的一些教育视频。
功能特点
- 单文件、无依赖:整个项目被打包在一个Java文件中,无需外部依赖。
- 模型格式解析:支持解析GGUF格式的模型文件。
- Llama 3 分词器:基于minbpe,实现了Llama 3 Tokenizer。
- 推理功能:支持Llama 3的推理,并使用了Grouped-Query Attention技术。
- 量化支持:支持Q8_0和Q4_0量化方法。
- 矩阵乘法优化:利用Java的Vector API,实现了高效的矩阵-向量乘法。
- 简单命令行界面:提供
--chat
和--instruct
模式,用于不同的交互方式。
安装和使用
- 环境要求:需要Java 21及以上版本,特别是需要支持
MemorySegment
mmap特性。 - 模型下载:从Hugging Face下载量化的模型文件(推荐使用Q4_0量化模型)。
- 运行命令:
- 使用
jbang
工具运行:jbang Llama3.java --help
- 或者直接运行:
chmod +x Llama3.java ./Llama3.java --help
- 使用
- 手动构建和运行:可以通过
Makefile
或手动编译并运行生成的JAR文件。
使用场景
- 教育和研究:适合用作教育研究, 可以深入了解Llama 3推理流程及其在Java中的实现。
- 性能测试和优化:用于测试和调整JVM上的编译器优化,特别是针对Graal编译器。
- 模型推理:在没有强大GPU或资源受限情况下,使用CPU进行模型的推理和验证。
性能表现
运行在不同硬件与Llama.cpp对比性能测试结果如下:
Intel 13900H
Model | tokens/s | Implementation |
---|---|---|
Llama-3-8B-Instruct-Q4_0.gguf | 7.53 | llama.cpp |
Llama-3-8B-Instruct-Q4_0.gguf | 6.95 | llama3.java |
Llama-3-8B-Instruct-Q8_0.gguf | 5.16 | llama.cpp |
Llama-3-8B-Instruct-Q8_0.gguf | 4.02 | llama3.java |
AMD 3950X
Model | tokens/s | Implementation |
---|---|---|
Llama-3-8B-Instruct-Q4_0.gguf | 9.26 | llama.cpp |
Llama-3-8B-Instruct-Q4_0.gguf | 8.03 | llama3.java |
Llama-3-8B-Instruct-Q8_0.gguf | 5.79 | llama.cpp |
Llama-3-8B-Instruct-Q8_0.gguf | 4.92 | llama3.java |
广告:私人定制视频文本提取,字幕翻译制作等,欢迎联系QQ:1752338621