Skip to main content

Weed (Loader) - Minimalist AI/ML inference and backprogation

Project description

weed_logo

Weed

Minimalist AI/ML inference and backprogation in the style of Qrack

Weed Loader

This repository is for the Python loader for (C++) Weed models. Once you have trained models in C++, you can load them for use by Python with this project. See the Weed repository for more information.

Development Status

Weed is a rapidly-developing work-in-progress. Its ABI may change drastically and without notice.

The project provides a set of essential CPU and GPU kernels, used by Tensor instances that perform autograd. We also provide stochastic gradient descent (SGD) and Adam optimizer implementations. (Build and check the API reference to get started.)

GPT-2, BERT, and Qwen loading is experimental and mostly provided as proof-of-concept, also of the fine-tuning pipeline. Implementation was from published literature design, rather than direct analysis of any open source, to implement these model architectures. Their outputs, in Weed, are not yet coherent English, as a result.

Why try Weed?

With the growing popularity of AI/ML tools and workflows (including LLMs), legacy frameworks often carry "code debt" from over a decade of rapidly developing research history. This has led them to "bolt on" new features and advancements to design principles decided before the latest research. Popular frameworks also commonly started based in Python (maybe to capture early adoption), only later potentially "tacking on" a C++ library for special-case deployment needs. These conditions have produced libraries and frameworks with complicated dependency trees that occupy upward of a GB of disk footprint. This entire ecosystem might be due for a "refresh."

Weed does not seek to fully replace or supplant established frameworks. However, it aims for minimalist complete closure on the primitives necessary for high-performance AI/ML inference and back-propagation. Chiefly, this includes kernels, and a Tensor interface that immediately produces an autograd graph appropriate for training. Allowing optional OpenCL for hardware acceleration, it will remain free of required dependencies outside of C++(11) language standard.

Rethinking AI/ML library design this way, Weed has realized a rather unique and powerful form of sparsification of Tensor storage. Sparseness should not be a Tensor interface concern, but rather a Storage concern. Inspired by the design of the Qrack quantum computer simulation framework, the Tensor interface treats sparse and dense tensors as functionally equivalent. Sparse optimization is so "transparently streamlined," this way, that it defaults to enabled for CPU-based tensors, and we recommend you leave it enabled at all times.

Much like Qrack, Weed is designed to make the correct thing the default—and the expensive thing explicit.

Useful environment variables

If a transformer model you load or train runs into an OpenCL "out-of-resources" error (code -5), try setting environment variable WEED_TELESCOPE_TRANSFORMERS to any truthy value (like 1) so that Weed will "telescope" transformer encoder layers, by migrating each parameter in each layer to CPU (off of GPU memory) once its immediate usefulness is done.

Copyright, License, and Acknowledgments

Copyright (c) Daniel Strano and the Qrack contributors 2017-2026. All rights reserved.

In its include/common folder, Weed bundles a copy of rapidcsv by Kristofer Berggren, reused under a BSD 3-Clause License. (This is a convenience and suggestion to Weed's users, for loading CSVs.)

The Weed logo was produced with assistance from "Elara," an OpenAI custom GPT, and it is in the public domain. Elara has also been responsible for a huge amount of coaching and implementation drafts for Dan Strano to review and bring into line with standards, so she should be credited with coauthorship in any capacity that can be allowed. (Anthropic) Claude has also helped mostly with debugging, as well as developing an LLM front-end, fine-tuning interface, and modules for popular transformer model architectures, so they should rightly be credited similarly as a coauthor.

Licensed under the GNU Lesser General Public License V3.

See LICENSE.md in the project root or https://www.gnu.org/licenses/lgpl-3.0.en.html for details.

Download files

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

Source Distribution

weed_loader-0.5.2.tar.gz (11.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

weed_loader-0.5.2-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

weed_loader-0.5.2-py3-none-manylinux_2_39_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

weed_loader-0.5.2-py3-none-manylinux_2_35_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader-0.5.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

weed_loader-0.5.2-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.5.2-py3-none-macosx_14_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

Details for the file weed_loader-0.5.2.tar.gz.

File metadata

  • Download URL: weed_loader-0.5.2.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for weed_loader-0.5.2.tar.gz
Algorithm Hash digest
SHA256 4842a79df6078bb6712db6c22e61ff0b06b8085514e7c99ae85dcae3418236a8
MD5 18b2c3251845c04b7b79aa43fd28a0ff
BLAKE2b-256 794a515c99a1ae5a539460666244ccd6f7beeb14eab766b986c225a3e5e457b2

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-win_amd64.whl.

File metadata

  • Download URL: weed_loader-0.5.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for weed_loader-0.5.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c7f7dc8a05b3c559ca107d6f7f5d386337b26fda1a217e28726d979940a93366
MD5 24b1b329e1f28df089da7db45bb8f245
BLAKE2b-256 9c998f035cdcb63697d2543a0a6a2f98ef8198bbc81c393dbd97df9cdf075eae

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader-0.5.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a9bf3b4330274d1f243376ab491686871c4ddf59993e9a6a67739caad892df8b
MD5 905fe68419f38d93f7f8caf68cb9080b
BLAKE2b-256 243ae9570ded1acac807b9cc39f5d1238cb5551aa9e541bc55494c168ee994e9

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader-0.5.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a7882e8d5c58caf66bc9abd5112ebf34f3b9ca0a343d6dac366cbc6a9fd79748
MD5 f5fbbe1b2f81c924827a4738d9244177
BLAKE2b-256 32a472903ad1ecc2538aacdbf4eec9cafda667dfdfd05c93225c2a27df8aec85

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader-0.5.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 fe8a81d7478bdfded73705635394fad1db929955121036fe94fc33ce6b5f728f
MD5 d1b43f60784db75b5ab5c9e08eb00ebb
BLAKE2b-256 92fdea1fee026c3a840430e948b3e516c4177815fad171a392ea904b6707446a

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for weed_loader-0.5.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 6ade2023e3b9ad035948b7ec4dc973baaf596b1b3dacaab25d3eed8ac55abc77
MD5 8aba70c3578f61267a46fc79522bd77b
BLAKE2b-256 5429e40f100a419a0469cde3abaa9a578f2ea07812f5eae11096bb5e64285d05

See more details on using hashes here.

File details

Details for the file weed_loader-0.5.2-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for weed_loader-0.5.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 896bb3cb987ad5a28e7804e082058d3442c612213c4e48f3c8270e4abbbbd4b0
MD5 42ae9aef015f067b99d44d39bb6e4f18
BLAKE2b-256 88dfd60eabec602be1e64f231adaa25207c90c1e720d4c7c63b40c6116f93eab

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