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.4.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.5.4-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

weed_loader-0.5.4-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.4-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.4-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.5.4-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.4.tar.gz.

File metadata

  • Download URL: weed_loader-0.5.4.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.5.4.tar.gz
Algorithm Hash digest
SHA256 4d4a431c478246a1109629c9184d103fd26b89f1fbcf37b17849d70708d73f6c
MD5 ae688219503e1dc7b42f1e2abed1ab3b
BLAKE2b-256 3b72a82d4e6a1c288ca9e4ab8d576104d0005f349f3fc1c3edbf9ee0f12a8850

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.5.4-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.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7696428d4d7f97ff821be16a2af5fd937fbf3af13e0e24522ade97fc2d9f5b1f
MD5 0682e0d2baf76002641250a74a1d3c52
BLAKE2b-256 82ace397b653c84306fedaae7e5a2e460fb0140fe3bf333369a72bb7cdc8e199

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.5.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 343d317c20bc058177f092da75b3b6137c57d21a7b7b2e4a936c0f1fdda54e05
MD5 d35806a8a3d15841f60c7ca7cd9bb888
BLAKE2b-256 535655462d57bbf817274615dc89cf1a151ccd5d91d26f1456a94c9ecde3f45a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.5.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 13db6f6bb1572c1e034d4c9fe4ef93f09213463c3f04e618b66e9b40b7453221
MD5 f621dd9cb863e7f6f1a471d334a11e16
BLAKE2b-256 7610d6a7fbb124cfea37b082a65409fa00272b3c118a0a829a92db7cd27060c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.5.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 096320c4c2a6f8f00f07e6ebefc38878e7f0ed7d975b34aa377911ffe239d28b
MD5 084dc545774b3ba462bc1e8ad03a6cdb
BLAKE2b-256 6ac45a758d4b8f2c5a2ab23d661d27d95b59f866ce0b0c516b76f6effd92d060

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.5.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a77a07a057e47ed67d19513da27154cb0636408d22b2cfa5f3908ab521d8248a
MD5 3e60cd41d7c1a6a5968d80f257ef87c8
BLAKE2b-256 086544431621605d6fd32995a41d9246fc7da44eed6ac4cb8a86b27a1a8e64f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.5.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 fb2acb82555113b7199d74f9df685347ea63c849d7f12cf9f45303fcc95f310b
MD5 5221a37a7224d77125f6e18fd1c5e385
BLAKE2b-256 a4c11cc0001d183064768e4819090293e167ba410a9efdae5d9a96daa9a80c37

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