Go to file
Georgi Gerganov 52443f03db
sync : whisper.cpp
ggml-ci
2025-04-25 15:59:04 +03:00
.github/workflows ci : fix workflow name 2025-02-27 13:12:11 +02:00
ci ci: disable test-opt for now (#1158) 2025-03-26 09:51:18 +02:00
cmake ggml : sync/merge cmake,riscv,powerpc, add common.cmake (#0) 2025-03-27 09:35:24 +02:00
docs gguf.md: naming convention synced to llama.cpp (#896) 2024-07-22 13:25:01 +03:00
examples ggml : add bilinear upscale support (#1185) 2025-04-09 12:32:13 +02:00
include rpc : add RPC_CMD_HELLO (llama/12955) 2025-04-24 18:36:25 +03:00
scripts sync : whisper.cpp 2025-04-25 15:59:04 +03:00
src cuda : fix unused variable compile warning (whisper/0) 2025-04-25 15:58:23 +03:00
tests CUDA: noncont MMVQ + batched bs1 MUL_MAT_ID (llama/13014) 2025-04-24 18:36:25 +03:00
.editorconfig gguf : add file format specification (#302) 2023-11-01 19:01:49 +02:00
.gitignore files : remove make artifacts 2024-12-03 21:05:37 +02:00
.gitmodules Create .gitmodules for the kompute backend (#1024) 2024-11-20 23:39:37 +01:00
AUTHORS authors : update 2025-02-04 13:03:55 +02:00
CMakeLists.txt ggml : add SSE 4.2 and x64 base variant for CPUs without AVX (llama/12871) 2025-04-24 18:36:25 +03:00
CONTRIBUTING.md Create CONTRIBUTING.md (#1146) 2025-03-13 20:29:48 +02:00
ggml.pc.in pkg-config: Use CMake install paths for lib, include (#1133) 2025-03-06 21:01:02 +02:00
LICENSE license : update copyright notice + add AUTHORS 2024-04-09 20:17:51 +03:00
README.md readme : remove transfer notice (#1107) 2025-02-08 10:33:44 +02:00
requirements.txt ci : update requirements.txt 2024-12-03 21:05:37 +02:00

ggml

Roadmap / Manifesto

Tensor library for machine learning

Note that this project is under active development.
Some of the development is currently happening in the llama.cpp and whisper.cpp repos

Features

  • Low-level cross-platform implementation
  • Integer quantization support
  • Broad hardware support
  • Automatic differentiation
  • ADAM and L-BFGS optimizers
  • No third-party dependencies
  • Zero memory allocations during runtime

Build

git clone https://github.com/ggml-org/ggml
cd ggml

# install python dependencies in a virtual environment
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# build the examples
mkdir build && cd build
cmake ..
cmake --build . --config Release -j 8

GPT inference (example)

# run the GPT-2 small 117M model
../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"

For more information, checkout the corresponding programs in the examples folder.

Using CUDA

# fix the path to point to your CUDA compiler
cmake -DGGML_CUDA=ON -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.1/bin/nvcc ..

Using hipBLAS

cmake -DCMAKE_C_COMPILER="$(hipconfig -l)/clang" -DCMAKE_CXX_COMPILER="$(hipconfig -l)/clang++" -DGGML_HIP=ON

Using 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 ..

Compiling for Android

Download and unzip the NDK from this download page. Set the NDK_ROOT_PATH environment variable or provide the absolute path to the CMAKE_ANDROID_NDK in the command below.

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
# create directories
adb shell 'mkdir /data/local/tmp/bin'
adb shell 'mkdir /data/local/tmp/models'

# push the compiled binaries to the folder
adb push bin/* /data/local/tmp/bin/

# push the ggml library
adb push src/libggml.so /data/local/tmp/

# push model files
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"

Resources