JLama:首个使用向量API和Project Panama实现的纯Java模型推理引擎

Andrej Karpathy开源700行llama.c推理接口

Andrej Karpathy开源了700行的llama.c推理接口,帮助开发者更好地理解如何与大型语言模型(LLMs)进行交互。该项目在GitHub上迅速获得了大量关注,拥有数千个star和fork,并被移植到其他编程语言。

JLama:首个纯Java实现的推理引擎

在llama.c之前,JLama已经开始了其作为首个纯Java实现的推理引擎的旅程。JLama支持从Gemma到Mixtral等Hugging Face模型。该实现利用了Java 21的新特性Vector API和PanamaTensorOperations类,并提供了本地回退功能。JLama是目前Maven Central仓库中唯一的Java推理库。

JLama的开发者与开源许可

JLama由DataStax的首席软件架构师Jake Luciani开发,并采用Apache License开源。项目使用了Java 21和Vector API,承诺提供更快的推理速度。

使用JLama的步骤

开发者可以通过以下步骤使用JLama:

  1. 下载模型:使用run-cli.sh脚本从Hugging Face下载模型。

    $ ./run-cli.sh download gpt2-medium
    $ ./run-cli.sh download -t XXXXXXXX meta-llama/Llama-2-7b-chat-hf
    $ ./run-cli.sh download intfloat/e5-small-v2
  2. 与模型交互:开发者可以与模型进行对话或完成提示。

    $ ./run-cli.sh complete -p "The best part of waking up is " -t 0.7 -tc 16 -q Q4 -wq I8 models/Llama-2-7b-chat-hf
    $ ./run-cli.sh chat -p "Tell me a joke about cats." -t 0.7 -tc 16 -q Q4 -wq I8 models/Llama-2-7b-chat-hf
  3. 使用Web UI:JLama还提供了一个简单的Web UI,可以通过以下命令启动:

    $ ./run-cli.sh download tjake/llama2-7b-chat-hf-jlama-Q4
    $ ./run-cli.sh serve models/llama2-7b-chat-hf-jlama-Q4

    启动后,可以通过http://localhost:8080/ui/index.html访问。

JLama支持的功能与模型

JLama实现了分布式推理、Flash Attention、混合专家(Mixture of Experts)、Hugging Face的SafeTensors模型和Tokenizer格式等功能。目前支持的模型包括Gemma、Llama、Llama2、Mistral、Mixtral、GPT-2和BERT,支持的Tokenizer包括BPE和WordPiece。未来计划支持更多模型,并加入LoRA和GraalVM支持。

Karpathy的观点

Karpathy在其仓库的文档中指出,即使是小型LLM在特定领域内也能表现出强大的性能,预示着“小型”大型生成模型的时代即将到来。

Java生态系统中的LLM集成

Java生态系统中有多种集成LLM的选项,包括Spring和Quarkus应用的特定集成,以及可以轻松集成到任何普通Java应用中的JLama。此外,新的应用如Devoxx Genie和Podman Desktop的扩展也在帮助开发者更快地开始使用LLM。

阅读 56
0 条评论