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

Uploaded Python 3Windows x86-64

weed_loader-0.7.0-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.0-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.0-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.7.0-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.0.tar.gz.

File metadata

  • Download URL: weed_loader-0.7.0.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.0.tar.gz
Algorithm Hash digest
SHA256 4fe434874f14c822790bf7f6c3e8c72be16c97dd7ab3743475d1774a14a83a2d
MD5 67803a96abd844dfebaa345e1d599ecc
BLAKE2b-256 3ddba1a5b0f560bc08c58b06172e554254da57bdb5cdff0cae65d8a92e320f77

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.7.0-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.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 3a912d1f80d70069393119cc14cc3fbde143d4be49c3fcd136fe0b9882c0d24e
MD5 07d8692dfb76fa934eec62849cf8a255
BLAKE2b-256 4daec59cd281b5cc4ba7072525757e3cb603fd512279fe2fa5bc11d377858e21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 d381d47ac5a2484c426bb71fc304d3b783e0d62e49010960f53849931655635a
MD5 d3ba38fc4b2a5ab9105e03fadca8ad8a
BLAKE2b-256 d93198a119d1f3d7ba5b36b04fc5f87a93ca20d7e1cd3ab57e8be4191c780e9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 406bc1dde68a4148fc641ce4c9ba83c3565ea1ed878d1b4315ebd4687233f7c5
MD5 470f23ff1d23b478964e867507751358
BLAKE2b-256 e5cbe18aca4140c85065b8e6b65c7383704d05479b13018a3f783c911068e413

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 51b448de33d036b26ce761507e3c1773d225fbdb0ecf3935f91be47d66014af7
MD5 76a696c2d66b85db5784563cf5cc6a3f
BLAKE2b-256 db3c236b32b7d010cb0cebed2638207a5c2079cf444e3d3447b2820be3f94e34

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.7.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 e8cd8d5675409d8b8dfdf5640dea69d35661da60d95205e20fa242427bd8304f
MD5 5c2c8ad27e3d6512c3fa66372e33bbaa
BLAKE2b-256 00edba247e9d1a923fb357f06fd86ea7f2fc4849fb201a01efb3d27034795e69

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