标签: AI

  • 探索 Llama 3 在 Java 中的实际应用

    引言

    在现代人工智能领域,模型推理的效率和方便性是技术人员关注的核心问题。如今,我们将目光投向一个名为 Llama 3 的项目,该项目旨在在 Java 环境中实现 Llama 3 的推理。这一项目不仅是其前身 Llama2.java 的延续,还在多个方面进行了优化和改进。让我们深入了解这个项目的细节及其实现方法。

    项目背景

    Llama 3 是基于 Andrej Karpathy 的 llama2.c 项目的一个扩展版本。Llama3.java 通过单个 Java 文件实现了 Llama 3 的推理,除了教育价值外,还为在 JVM 上测试和调整编译器优化和功能提供了便利,特别是针对 Graal 编译器的优化。

    项目特点

    1. 单文件实现,无依赖

    Llama3.java 的一大特点是其实现是通过单个 Java 文件完成的。这种设计简化了项目的依赖管理,使得项目的部署和维护更加便捷。

    2. 支持多种量化格式

    项目支持 GGUF 格式解析,并且提供了对 Q8_0 和 Q4_0 量化的支持。Q4_0 量化模型由于其较小的体积和较高的运行效率,成为推荐使用的模型。

    3. 高效的矩阵-向量乘法

    针对量化张量,项目使用了 Java 的 Vector API 实现了快速的矩阵-向量乘法。这一实现提高了推理的运行速度,特别是在处理大规模数据时。

    4. 简单的命令行界面

    Llama3.java 提供了一个简单的命令行界面,支持 --chat--instruct 模式,使用户能够方便地与模型进行交互。

    项目设置与运行

    下载量化模型

    首先,需要从 Hugging Face 下载纯 Q4_0 和(可选的)Q8_0 量化的 .gguf 文件。推荐使用大约 4.3GB 的 Q4_0 量化模型:

    curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q4_0.gguf
    
    # 可选地下载 Q8_0 量化模型(约 8GB)
    # curl -L -O https://huggingface.co/mukel/Meta-Llama-3-8B-Instruct-GGUF/resolve/main/Meta-Llama-3-8B-Instruct-Q8_0.gguf

    手动量化

    如果需要生成纯 Q4_0 量化模型,可以使用 llama.cpp 提供的量化工具从高精度的 .gguf 源文件生成:

    ./quantize --pure ./Meta-Llama-3-8B-Instruct-F32.gguf ./Meta-Llama-3-8B-Instruct-Q4_0.gguf Q4_0

    构建与运行

    Llama3.java 需要 Java 21 及以上版本,特别是 MemorySegment mmap-ing 功能。可以使用 jbang 工具运行:

    jbang Llama3.java --help

    或者直接执行:

    chmod +x Llama3.java
    ./Llama3.java --help

    使用 Makefile 手动构建

    项目提供了一个简单的 Makefile,可以运行 make 来生成 llama3.jar:

    javac -g --enable-preview -source 21 --add-modules jdk.incubator.vector -d target/classes Llama3.java
    jar -cvfe llama3.jar com.llama4j.Llama3 LICENSE -C target/classes .

    生成的 jar 文件可以如下运行:

    java --enable-preview --add-modules jdk.incubator.vector -jar llama3.jar --help

    性能评估

    在不同的硬件配置下,Llama3.java 的性能表现如下:

    笔记本电脑 Intel 13900H

    模型tokens/s实现
    Llama-3-8B-Instruct-Q4_0.gguf7.53llama.cpp
    Llama-3-8B-Instruct-Q4_0.gguf6.95llama3.java
    Llama-3-8B-Instruct-Q8_0.gguf5.16llama.cpp
    Llama-3-8B-Instruct-Q8_0.gguf4.02llama3.java

    工作站 AMD 3950X

    模型tokens/s实现
    Llama-3-8B-Instruct-Q4_0.gguf9.26llama.cpp
    Llama-3-8B-Instruct-Q4_0.gguf8.03llama3.java
    Llama-3-8B-Instruct-Q8_0.gguf5.79llama.cpp
    Llama-3-8B-Instruct-Q8_0.gguf4.92llama3.java

    结论

    Llama3.java 在 Java 环境中实现了高效的 Llama 3 模型推理,其单文件实现和简单的命令行界面使其具有很高的实用性。虽然在某些性能指标上与 llama.cpp 存在差距,但其在 Java 生态系统中的表现依然值得肯定。

    参考文献

  • 谷歌投资20亿美元在马来西亚建设数据中心及云区域

    根据马来西亚政府的宣布,美国科技巨头谷歌计划在马来西亚投资20亿美元,建设谷歌在该国的首个数据中心和谷歌云区域,同时推进人工智能领域的发展。这一投资使谷歌成为东南亚地区最新一家注入资金以寻求增长机会的科技巨头[1]

    以下是有关这一投资的详细信息:

    1. 投资规模:谷歌将投资20亿美元(约合27亿新元)在马来西亚建设数据中心和云区域[1]
    2. 地点:数据中心和云区域将建在马来西亚雪兰莪州沙亚南的艾美娜商业园[1]
    3. 经济影响:这项投资预计将为马来西亚医疗保健、教育和金融领域提供2万6500个工作机会,并为制造业和服务业利用人工智能和其他先进技术提升全球价值链,创造约150亿4000万令吉(约43亿1600万新元)的经济总值[1]
    4. 谷歌的战略合作:这项投资是建立在谷歌与马来西亚政府合作推进“云优先政策”的基础上的,包括推动一流的网络安全标准[1]

    此外,谷歌的母公司Alphabet及谷歌的总裁兼首席投资官波拉特表示,这是谷歌在马来西亚运营13年来数额最大的投资计划,也是首次在该国设立数据中心和谷歌云区域[1]

    这项投资计划进一步证明了马来西亚政府的明确规划、国家的经济实力和资源,成功吸引了现有和新的投资者,有助于加速马来西亚的数码转型议程[1]


    Learn more:

    1. 谷歌投资20亿美元在马国建数据中心及云区域 | 联合早报
    2. 谷歌将在马来西亚投资 20 亿美元:建数据中心 / 进一步开发 AI,拟创造 2.65 万个就业岗位 – IT之家
    3. 团结政府拼经济奏效 谷歌投资大马94亿! – DAP
人生梦想 - 关注前沿的计算机技术 acejoy.com 🐾 步子哥の博客 🐾 背多分论坛 🐾 借一步网 沪ICP备2024052574号-1