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_cpu-0.5.4.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_cpu-0.5.4-py3-none-win_amd64.whl (829.7 kB view details)

Uploaded Python 3Windows x86-64

weed_loader_cpu-0.5.4-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.5.4-py3-none-manylinux_2_35_x86_64.whl (2.8 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader_cpu-0.5.4-py3-none-macosx_15_0_x86_64.whl (2.1 MB view details)

Uploaded Python 3macOS 15.0+ x86-64

weed_loader_cpu-0.5.4-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: weed_loader_cpu-0.5.4.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_cpu-0.5.4.tar.gz
Algorithm Hash digest
SHA256 ec76952a4aa94761fc9fcc63e7d83a201b1fd94423622a39bd9d48ba101cade9
MD5 3b7f8d412a5195d0d45ed9dc59cc1518
BLAKE2b-256 825e0f5d9a2e3ddfce431cd0b69bfc5519b62f0d4acf0f5c378355f8e905d190

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6bf3007ed515633d1339806187c556a694199335c686896ba7b595705578ebb8
MD5 0a840cce5b5e387a90b0473da5ef34d6
BLAKE2b-256 dc591fd2188bcb19aa3e80b3a9fc524ddf9c2a9c18e62680107b77135ae28b6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 0dcfc9fea69b1f0cc971ac143216bc2b5ca60a698ff07f8c2e2be83b7ee65eb6
MD5 abf0f630a8f1a8fb7566200eaf825bf3
BLAKE2b-256 4441a0cece49e62c77b0e679e726c4ca7da30b8965ac3c23297626439b4b4ada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 63c75797a9b3af7e005997bd51626f5616d42071554ccaea0aac1216b083dbb0
MD5 84a20e03c0ed6eb9b867a3b09a757990
BLAKE2b-256 2ff59a4d837bfb6ace956c35ced22abe1a55488fac1f547accd77e81129eb105

See more details on using hashes here.

File details

Details for the file weed_loader_cpu-0.5.4-py3-none-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 22d05228bb21edf3367c9da59b4ccccdf95a8fd550fd847071753c5a3b351995
MD5 8acb1e2fb1d899004fca0047e971632f
BLAKE2b-256 79ce71299c7bcac6c95a4e2888de305d002a4c7b3a7002d029ac00cc58986688

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 34f651686e5ef929a496cac2b3ff9021958805fea7e521f5a665cddd7bca7eb1
MD5 f21d8d0e16ce414d22e2b10d9995e22b
BLAKE2b-256 8bbf89ebbc3313039d822461aa6d56e56f3fa57a9d1762ba4f5f125114875aed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.4-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 29b8231f95c9d0ecffd335ece0c01ca35a4e203eb044a5f4e8dae5a0abef8c25
MD5 45e9e7b27954356952d0422339f4c0fd
BLAKE2b-256 2004a8a4ffe8ec466de57d545cc7f78897bfe5a40ca17dcb5ec36292965cb0a9

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