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. KV cache improvements are based on TurboQuant (Zandieh et al., arXiv:2504.19874) and an Apache 2.0 open-source implementation by TheTom (github.com/TheTom/turboquant_plus), adapted for complex quantum state vectors by (Anthropic) Claude, with limited guidance and input from Dan Strano.

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_cpu-0.7.3.tar.gz (12.0 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_cpu-0.7.3-py3-none-win_amd64.whl (852.1 kB view details)

Uploaded Python 3Windows x86-64

weed_loader_cpu-0.7.3-py3-none-manylinux_2_39_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

weed_loader_cpu-0.7.3-py3-none-manylinux_2_35_x86_64.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader_cpu-0.7.3-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader_cpu-0.7.3-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_cpu-0.7.3.tar.gz.

File metadata

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

File hashes

Hashes for weed_loader_cpu-0.7.3.tar.gz
Algorithm Hash digest
SHA256 9905eb6196b88f3691ffa5e3dbfb06ed53f909d694f909a2ca4b3c077ece9068
MD5 43eadb85aaa0f2f58fe31135d942ded5
BLAKE2b-256 65d7924d1413f1c768d1d0aea6f98aa7bf314f4189b1a24b6d45360a9b7d1008

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.7.3-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d0f006c645b0ba5f4e9b4766516a057eb67302a8c2eb4b2b9dd2f2fb8e64057e
MD5 82a44ddd097af3953140bce0172a35e6
BLAKE2b-256 1e508f7d3b030950c3e9f9da92f6858023464211dc83e5bbea3e6c6df8cb1c6f

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.7.3-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.3-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 4e82f16d7b807aadffe4ba4492ecb5b23b6562322bdfec1cb1ba2b63358f102e
MD5 2166069dd28f0ae13d910572a7daf5e3
BLAKE2b-256 87df73e99a05dd36ea75a4bf13aa3a5274aba4bb8a38710fb32d56eb118e15d7

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.7.3-py3-none-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.3-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c7ee8e98271d54b39a50e816ba99247c5a735d7ca27c26c750033af80361722d
MD5 bc1ab453bdc8193b2ac63a52d5c2927f
BLAKE2b-256 8a3d2fe5d7ca2590c7b1cc41fbd2821f7c20143184cd61ce19e6478598714fb3

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.7.3-py3-none-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.3-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9d4b707b10fd39e60987b8ea23e9ae69ef53ea1e20326116cd4a320343c02dd2
MD5 b5d3d06f8eb3ca49a019683633060a3e
BLAKE2b-256 6c67331eb71f7110345ccc8711e5a9c9f5d897def3fd1c4f3d06d341986dabc1

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.7.3-py3-none-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.3-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 f24caa317ea651ea71ff78823bbf7ad0dbe51363dc5c66ada065339c3297f0c6
MD5 aec5371a095b0f454aa968a82c9de0da
BLAKE2b-256 2273bf89ed8fe1036339bd79ec8401b2c495d53fa566d89de31f89f892166eff

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