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.7.1.tar.gz (11.7 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.7.1-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.39+ x86-64

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

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader-0.7.1-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.7.1-py3-none-macosx_14_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 14.0+ ARM64

File details

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

File metadata

  • Download URL: weed_loader-0.7.1.tar.gz
  • Upload date:
  • Size: 11.7 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.7.1.tar.gz
Algorithm Hash digest
SHA256 d8f73f56dd3caae872d8350f025e55bff736eae2d5a1615e0e0e28671ec70dac
MD5 13e51900eea1cbca3f4d90430ddd54a7
BLAKE2b-256 a613fc593093d494ef700bd1764917b9030357d3572a4cd46ed0c9a70a6ed228

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.7.1-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.7.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 801fe1694eac958fc35e108a788a79028d64c524e23d6760faddb6cd7d7eee2f
MD5 a4da6a1a7950e6bc973f7a4f819eaee5
BLAKE2b-256 ea73665dda4da4d4a4ce3543550e2e1612a1f6c1f50b7fcb1c2d6aa901599682

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d16c85065e8a081b9c98a5168a86b02c342491e11dcc937f6792fc8aa707f718
MD5 64ab8db8396ae2563b56b296e3bb2b01
BLAKE2b-256 67874ab295d151011783bf55f86f4a3a6e4406c8d167f77f3bba0935cfcb5cd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 1979c69c8ce3ccfdf6249889a455dd2999d9f33b7275b1bbbe8b2f78272d0e53
MD5 84e3b03a8b485a418ca23b90fd01b5f9
BLAKE2b-256 4472cdf6b0ab0bb16b345d06837b43546d7c8abe7995c23aab2a5761835db6f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7988f6a13631ff7646e12ae9e76b468d8b3a7a718d7fd12dc53d51f7c33af680
MD5 3b81638f80dde905f1661f43cfc473b4
BLAKE2b-256 8eaaad912d5c14c36dc8272fbb85d5a126c70b81eac9bf85d919a826b7077e53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 24487304493d5e38951e4a31a430b295bd5e0a478e15a3d2ffcec698c9713241
MD5 0119c56c6dfeca553930b4f9bc35d27f
BLAKE2b-256 53967ce7c871d51ea5b0266e43d807c66ef1f2502b4b835d69cec41cc9788e35

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