ggml-org/ggml
GitHub: ggml-org/ggml
面向机器学习的轻量级张量库,专注通过量化和跨平台优化在普通硬件上高效运行大模型推理。
Stars: 14162 | Forks: 1502
# ggml
[路线图](https://github.com/users/ggerganov/projects/7) / [宣言](https://github.com/ggerganov/llama.cpp/discussions/205)
用于机器学习的张量库
***请注意,本项目正处于活跃开发阶段。 \
目前部分开发工作正在 [llama.cpp](https://github.com/ggerganov/llama.cpp) 和 [whisper.cpp](https://github.com/ggerganov/whisper.cpp) 仓库中进行***
## 功能特性
- 底层跨平台实现
- 整数量化支持
- 广泛的硬件支持
- 自动微分
- ADAM 和 L-BFGS 优化器
- 无第三方依赖
- 运行时零内存分配
## 构建
```
git clone https://github.com/ggml-org/ggml
cd ggml
# 在虚拟环境中安装 python 依赖
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# 构建 examples
mkdir build && cd build
cmake ..
cmake --build . --config Release -j 8
```
## GPT 推理(示例)
```
# 运行 GPT-2 small 117M 模型
../examples/gpt-2/download-ggml-model.sh 117M
./bin/gpt-2-backend -m models/gpt-2-117M/ggml-model.bin -p "This is an example"
```
欲了解更多信息,请查看 [examples](examples) 文件夹中的相应程序。
## 使用 CUDA
```
# 修改路径以指向您的 CUDA 编译器
cmake -DGGML_CUDA=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.1/bin/nvcc ..
```
## 使用 hipBLAS
```
cmake -DCMAKE_C_COMPILER="$(hipconfig -l)/clang" -DCMAKE_CXX_COMPILER="$(hipconfig -l)/clang++" -DGGML_HIP=ON
```
## 使用 SYCL
```
# linux
source /opt/intel/oneapi/setvars.sh
cmake -G "Ninja" -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DGGML_SYCL=ON ..
# windows
"C:\Program Files (x86)\Intel\oneAPI\setvars.bat"
cmake -G "Ninja" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=icx -DGGML_SYCL=ON ..
```
## 为 Android 编译
从此下载[页面](https://developer.android.com/ndk/downloads)下载并解压 NDK。设置 NDK_ROOT_PATH 环境变量,或者在下面的命令中提供 CMAKE_ANDROID_NDK 的绝对路径。
```
cmake .. \
-DCMAKE_SYSTEM_NAME=Android \
-DCMAKE_SYSTEM_VERSION=33 \
-DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \
-DCMAKE_ANDROID_NDK=$NDK_ROOT_PATH
-DCMAKE_ANDROID_STL_TYPE=c++_shared
```
```
# 创建目录
adb shell 'mkdir /data/local/tmp/bin'
adb shell 'mkdir /data/local/tmp/models'
# 将编译好的 binaries 推送到该文件夹
adb push bin/* /data/local/tmp/bin/
# 推送 ggml 库
adb push src/libggml.so /data/local/tmp/
# 推送模型文件
adb push models/gpt-2-117M/ggml-model.bin /data/local/tmp/models/
adb shell
cd /data/local/tmp
export LD_LIBRARY_PATH=/data/local/tmp
./bin/gpt-2-backend -m models/ggml-model.bin -p "this is an example"
```
## 资源
- [ggml 简介](https://huggingface.co/blog/introduction-to-ggml)
- [GGUF 文件格式](https://github.com/ggerganov/ggml/blob/master/docs/gguf.md)
标签:AI基础设施, Android, Apex, Bash脚本, C++, CMake, CPU推理, CUDA, DLL 劫持, DSL, GPT-2, hipBLAS, llama.cpp, ROCm, SYCL, UML, Vectored Exception Handling, whisper.cpp, 优化器, 大语言模型, 底层库, 张量库, 数据擦除, 无依赖, 机器学习, 模型推理, 模型量化, 深度学习, 自动微分, 边缘计算, 逆向工具, 高性能计算