Skip to main content

Python bindings for ggml. Fork of the original project to use the latest version of ggml.

Project description

Python bindings for ggml

PyPI PyPI - Python Version PyPI - License PyPI - Downloads

ℹ️ Note this is a fork of the original project which hasn't been updated since July 2024. There have been a number of CVE security patches for ggml / llama.cpp since that date. This fork updates ggml to the latest. See the llama.cpp security page for more on this.

Python bindings for the ggml tensor library for machine learning.

Installation

Requirements

  • Python 3.10+
  • C compiler (gcc, clang, msvc, etc)

You can install ggml-py using pip:

pip install ggml-py

This will compile ggml using cmake which requires a c compiler installed on your system. To build ggml with specific features (ie. OpenBLAS, GPU Support, etc) you can pass specific cmake options through the cmake.args pip install configuration setting. For example to install ggml-py with cuBLAS support you can run:

pip install --upgrade pip
pip install ggml-py --config-settings=cmake.args='-DGGML_CUDA=ON'

Options

Option Description Default
GGML_CUDA Enable cuBLAS support OFF
GGML_CLBLAST Enable CLBlast support OFF
GGML_OPENBLAS Enable OpenBLAS support OFF
GGML_METAL Enable Metal support OFF
GGML_RPC Enable RPC support OFF

Usage

import ggml
import ctypes

# Allocate a new context with 16 MB of memory
params = ggml.ggml_init_params(mem_size=16 * 1024 * 1024, mem_buffer=None)
ctx = ggml.ggml_init(params)

# Instantiate tensors
x = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)
a = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)
b = ggml.ggml_new_tensor_1d(ctx, ggml.GGML_TYPE_F32, 1)

# Use ggml operations to build a computational graph
x2 = ggml.ggml_mul(ctx, x, x)
f = ggml.ggml_add(ctx, ggml.ggml_mul(ctx, a, x2), b)

gf = ggml.ggml_new_graph(ctx)
ggml.ggml_build_forward_expand(gf, f)

# Set the input values
ggml.ggml_set_f32(x, 2.0)
ggml.ggml_set_f32(a, 3.0)
ggml.ggml_set_f32(b, 4.0)

# Compute the graph
ggml.ggml_graph_compute_with_ctx(ctx, gf, 1)

# Get the output value
output = ggml.ggml_get_f32_1d(f, 0)
assert output == 16.0

# Free the context
ggml.ggml_free(ctx)

Troubleshooting

If you are having trouble installing ggml-py or activating specific features please try to install it with the --verbose and --no-cache-dir flags to get more information about any issues:

pip install ggml-py --verbose --no-cache-dir --force-reinstall --upgrade

License

This project is licensed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ggml_py-0.9.4.post1.tar.gz (2.2 MB view details)

Uploaded Source

File details

Details for the file ggml_py-0.9.4.post1.tar.gz.

File metadata

  • Download URL: ggml_py-0.9.4.post1.tar.gz
  • Upload date:
  • Size: 2.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.19

File hashes

Hashes for ggml_py-0.9.4.post1.tar.gz
Algorithm Hash digest
SHA256 eb89ddb0b63ee17f02b65d79b66bb6b4e1afe2ea6e061a83914115f90ac318f0
MD5 eaddf32a0d708262a3cc88c16d28317b
BLAKE2b-256 4006c7b5acb7ab90b29e40dfaf8d7638ff0e51cec90718a3ef007c7feb85cc3d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page