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

Uploaded Python 3Windows x86-64

weed_loader-0.6.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.6.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.6.0-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.6.0-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.6.0.tar.gz.

File metadata

  • Download URL: weed_loader-0.6.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.6.0.tar.gz
Algorithm Hash digest
SHA256 4165fc3eca0492507d4376c421603df4ab864f111bb0f6a5b63e5fef6cfeb191
MD5 e2ddc7bf7334d767edf358f0abcfac6e
BLAKE2b-256 a2719acf0c252ff9605d61431f47abfe4dad0879207f3f650d7fb24e9b21c965

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.6.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.6.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 36672c14f01d1d3ba2fed8785e346ec0fc338fd717e666524154466e778b4c91
MD5 6855bf76ff7db7fc05b5b27b98a6eb6e
BLAKE2b-256 45083cdecf64c51f8279ab0798b14f3f7dcb86883cd61661ab1a412b27835193

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.0-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 f59c5de1580f3ec18cfd91b238dc0f067b91fc3d8464789891a3b6c6a163365b
MD5 f28b7df8a401ab555c1cef15eb83b149
BLAKE2b-256 61ce176742dd0b076094ec2aff56e44299a10862d49f1f518d5421a9b36a7e21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.0-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 48b0d0171da141e47b668209c620c62720e8ba018bc135c242af7df4c86e324c
MD5 22cac85bd1669e52f4297cb71a773cf0
BLAKE2b-256 82564be1548c8af722fe5ec618759df78624dcfa74f5b6ffb14bf229af5589e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.0-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 7d040c4947aa8593e537f54e50eb55a4e1347ff5223ca8e1034471fd33913292
MD5 b4891a21344762aa13c40b9e73897b05
BLAKE2b-256 4391b0fc58de79d3a7e3e231c7094e87f04ac62ffcefd56665da02671771672c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.0-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 91c8b4c3eefee038442ae2062645e17275ec3812085edcf33698f3aff6d9e996
MD5 01aeef22801823eda329ceb0646c7d98
BLAKE2b-256 8e7dcaa1e6b222f0fe285bc7117e21cf398c20da0569338088c93f469d5a309a

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