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.

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.3.1.tar.gz (11.3 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.3.1-py3-none-win_amd64.whl (1.1 MB view details)

Uploaded Python 3Windows x86-64

weed_loader-0.3.1-py3-none-manylinux_2_39_x86_64.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

weed_loader-0.3.1-py3-none-manylinux_2_35_x86_64.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader-0.3.1-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.3.1-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.3.1.tar.gz.

File metadata

  • Download URL: weed_loader-0.3.1.tar.gz
  • Upload date:
  • Size: 11.3 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.3.1.tar.gz
Algorithm Hash digest
SHA256 d50ec93e56e5a739c491740ec9f4a5a3925f6eee8323abb59a145aa7a51a9f94
MD5 78f14bd05ebe521ddb1720bb59ebae34
BLAKE2b-256 31427b0742f26c40b851b9294812dcd7322cd13c462d66406de76f0814b60bd4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.3.1-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.3.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 81dc6b5480c3ad3fa1158363e7ed8a929436627f9afd219d0f5e3e88a2c61171
MD5 c1802a591d01f3932a61cb683e6714f3
BLAKE2b-256 d943bf435fe906c071319e26e7ee5c93ed2e5dfe00f6a421a19d9e60e41e1e04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9b1726bd6ab0b966508150a84e49962eae51bd2e7b7fca682e47cc8335f97957
MD5 ee3903aa23f1a33989a914cf0727cbfa
BLAKE2b-256 18a3e08dc112ffbf581f911d051a6291b25c3ca97d3e7afaa9b7ab528ab6cf9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 d46d35c8495034593ffea451866cbf515222c8e57c3cebfb7f01b60e201fc641
MD5 955af62e301bba398054a461803fc299
BLAKE2b-256 8636c0adb835949d3c882c4004b1ad1a76d0908e17e7043ea3d57f12730cef82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.1-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 9c4c35bc2cc27746b98e39439073bdf9928e4a418e8f42c1f98e939917488925
MD5 ed288515061804b6a4f8391fc29c2887
BLAKE2b-256 e97a5d8d290611d5496a70aa7abf4a945c5cce3be1335d0974f5c06c3268aacd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f4f66a4ca7a3d2de89bb7c747453f0d54176b3483d13e55371d6498223bb19cf
MD5 a5f989d7806535d9e487e9981f8acba9
BLAKE2b-256 f822554d93499b494d1306c5fa46c340738cb919d134aa9cb949e709ce6af8b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3bc99abebceed1d17eda88f24aadcd564929f63a6293ad24eca4155a91eec652
MD5 50000642240b247e7ebad6338e547fc7
BLAKE2b-256 4b28adfac8c80b2c603a2a21a5998f499920e6bdf5fe39c76db4de1f675e8a7c

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