当前位置:AIGC资讯 > AIGC > 正文

使用go-llama.cpp 运行 yi-01-6b大模型,使用本地CPU运行,速度挺快的

1,视频地址

2,关于llama.cpp 项目

https://github.com/ggerganov/llama.cpp

LaMA.cpp 项目是开发者 Georgi Gerganov 基于 Meta 释出的 LLaMA 模型(简易 Python 代码示例)手撸的纯 C/C++ 版本,用于模型推理。所谓推理,即是给输入-跑模型-得输出的模型运行过程。

那么,纯 C/C++ 版本有何优势呢?

无需任何额外依赖,相比 Python 代码对 PyTorch 等库的要求,C/C++ 直接编译出可执行文件,跳过不同硬件的繁杂准备;
支持 Apple Silicon 芯片的 ARM NEON 加速,x86 平台则以 AVX2 替代;
具有 F16 和 F32 的混合精度;
支持 4-bit 量化;

golang 的项目地址:

https://github.com/go-skynet/go-llama.cpp

3,准备工作,解决cgo编译问题

关于go-llama.cpp 项目地址:

https://github.com/go-skynet/go-llama.cpp

首先下载模型:

https://hf-mirror.com/TheBloke/Yi-6B-GGUF/tree/main


然后运行测试:

虽然模型回答的不太对,但是可以运行了,速度确实还可以。

4,只要是llama.cpp支持的模型就可以


已经支持很多模型了,都需要测试下效果。

总结

### 文章总结
**主题**: 介绍`llama.cpp`项目及其在Go语言环境(通过cgo)的应用,重点是目前项目的优势、如何使用以及如何准备和测试项目。
**一、`llama.cpp`项目简介**
`llama.cpp`是由开发者Georgi Gerganov基于Meta发布的LLaMA模型(原仅有Python示例代码)实现的纯C/C++版本。该项目的主要功能是进行模型推理,即从输入数据通过模型处理得到输出结果。其特点和优势包括:
- **无需额外依赖**:与Python版需要依赖PyTorch等库不同,纯C/C++版本可直接编译成可执行文件,简化了跨硬件部署的过程。
- **硬件加速**:支持Apple Silicon芯片的ARM NEON加速技术,以及x86平台的AVX2加速,提升性能。
- **混合精度与量化支持**:提供F16和F32混合精度,以及支持4-bit量化,进一步优化模型运行效率和存储需求。
**二、go-llama.cpp项目**
`go-llama.cpp`是`llama.cpp`项目在Go语言环境中的应用实例,通过cgo工具桥接C/C++底层实现以支持在Go代码中运行这些模型。项目地址位于:[https://github.com/go-skynet/go-llama.cpp](https://github.com/go-skynet/go-llama.cpp)
**三、准备工作与模型测试**
要使用`go-llama.cpp`,需先完成以下准备工作:
1. **下载模型**:模型可以从Mirrors如[HF Mirror](https://hf-mirror.com/TheBloke/Yi-6B-GGUF/tree/main)等处获取。
2. **解决cgo编译问题**:由于涉及到cgo对C/C++代码的编译,可能需解决一些依赖和编译链接的问题,确保能够在Go项目中顺畅编译与运行C/C++代码。
3. **运行测试**:一旦环境和模型准备妥当,便可运行测试,评估模型在Go语言环境下的性能和准确性。虽然初始测试可能不完全准确,但项目整体运行速度和兼容性已得到验证。
**四、模型兼容性**
`llama.cpp`及其Go语言接口已支持多种LLaMA模型,使用者可尝试这些模型并在自己的应用场景中测试其表现。随着项目的不断发展,可能会有更多模型和功能的支持加入。
综上,`llama.cpp`及其Go语言的集成(通过`go-llama.cpp`),为无需额外库依赖、支持多种硬件加速和优化精度的LLaMA模型推理提供了一个高效且灵活的解决方案。

更新时间 2024-08-01