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

Uploaded Python 3Windows x86-64

weed_loader-0.3.2-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.2-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.2-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

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

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.3.2-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.2.tar.gz.

File metadata

  • Download URL: weed_loader-0.3.2.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.2.tar.gz
Algorithm Hash digest
SHA256 f9656f1891a674e447ab8e238a35f496ab3e143ce00bdd3ff494b48f1339716b
MD5 bd295f35b4f65e128ba9821a3429b6d9
BLAKE2b-256 7ab508cbc6933b12cf154627307d986744d0a0505161ebc52a0c400a7a1d8935

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.3.2-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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 fbc7c79ff23ea94a0d5e320da26db68f4028383dd51e01a7eb2e463b86c9b433
MD5 ec442d24462ab29a3c2b9e0cf6849a32
BLAKE2b-256 ba3ea62010a4f366481ec5681501a7304968a909224f020e20604cea33ae9a9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 5a8c818b7ce5b9c76c0c8097978ac1991496f03a5d4f6d4eb6336783e89c481f
MD5 cc7bb3313564a5fd0ca496cc54da70af
BLAKE2b-256 f78915978f9302c969053e7c15c21d733ce11dd5e605a7ccd33b9ec7d6077df1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a41ba20353dadeced803ad0fd24dd8713fb79c47a34911b7214df273602000e1
MD5 d8a66de348bd14de34348010ce661af7
BLAKE2b-256 352f0309f3e4a4348ddd94e4bd4e38b12feabd833240243eeddc28acd8459cc2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.2-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 a12f39f5589ac64f71d3af6e9cac9c0e45175da546bb57f9623ca68c54a48ab8
MD5 f91771ec63cf3e384f61edd4873835cd
BLAKE2b-256 abc66f03ec29aa349ff9c4a134703350a4cfdc858b8ef705f636bf94d412dd94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 dbbaa676b4cd6dbc5444d0763a8368b8442c32daeacc30b46e56b488e3fc36c3
MD5 63176d05dc9b3a24e3f148c962563b4b
BLAKE2b-256 0d7d6456577fb94f0bd6a6b0adaaeaeab318f08cf0310d6f2e764e656c25e23f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.3.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 b14a8eddebd51e5f756106254f3387ba153a1bba70af52b073fba85fd1cf2f7c
MD5 e24590999bc802e89263b48d2ec77530
BLAKE2b-256 fe9ed82f370ca0b2104e0cb5b8be246e546ea7a703d52ec6afbfe6c893a7ba2a

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