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.2.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.2-py3-none-win_amd64.whl (848.6 kB view details)

Uploaded Python 3Windows x86-64

weed_loader_cpu-0.7.2-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.2-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.2-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader_cpu-0.7.2-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.2.tar.gz.

File metadata

  • Download URL: weed_loader_cpu-0.7.2.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.2.tar.gz
Algorithm Hash digest
SHA256 c33c815d17b2444a69899a77343477781b25ceef5fa21fe503d3a6611f243696
MD5 59c2802e1376547ffd66641ef7e2cd1c
BLAKE2b-256 684293bf6d9c87ba1eec3866e2e5f367ad7889bf73f0f663501352f5ece91ef5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2414ca7d630d363783e7b54622a178d39743bd70b5e7c22b42e4a03764b9120c
MD5 05c6d851ea70bd4fc7832a343dda6773
BLAKE2b-256 4d88b9b4bcf092df7f30dcdc14101ac652d2e7391b066de31860737ffbde891d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 cf66b6c1f6d065e746672d9b549aed48f505d3ac84a058ad5accf0495fed6ac9
MD5 d87e8c5d361634185bf3b8fcf8d16e90
BLAKE2b-256 4ae79eb9bea4d3a909268c54df6859ffac67d270118a6a3670c8899718911d4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a61868c9147935d84dc2e99a49f0741f5dba5e1c512b580827a42e45c861fcc4
MD5 e09b475ee983f9a5b22a0b386a349cee
BLAKE2b-256 e63376b3db9300b43f0e18d08ff6bca4460e57662eaabe583cd31ced99a0e420

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f2cd26a58676dfa65d000cf469f5629f026856f6542c89659155c6de46c79839
MD5 4ad7830f53ed6006b1862ee6e355c609
BLAKE2b-256 ab63aa227e70d42f24fb1f18ea48f85e6bab1f9f3258253803665e24969182b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.7.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 70c87af748c2efae28ee448f96c6e1da359b735370bb9b056114b7878b5e070d
MD5 facc549349e8e7a269d036b6f8ca45b6
BLAKE2b-256 5cb07a0e8c265fd2ad851b9e5d5b3b186464281427a64870c8bf2fbd5c1f783f

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