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

Uploaded Python 3Windows x86-64

weed_loader-0.6.2-py3-none-manylinux_2_39_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

weed_loader-0.6.2-py3-none-manylinux_2_35_x86_64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.35+ x86-64

weed_loader-0.6.2-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.6.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.6.2.tar.gz.

File metadata

  • Download URL: weed_loader-0.6.2.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-0.6.2.tar.gz
Algorithm Hash digest
SHA256 e837db70bf17663ad0c821204c9d1d588fd8ecbd515660a5eacce6f6b7d4b7db
MD5 c638a11a3a82df5cf0119b5f15b90d6f
BLAKE2b-256 fec9ec854bb1f7f3e00bf327fce64f7da839cf797094f9d07e33810c88cdcb17

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.6.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.6.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 2a038fe07abd4b413ee282b785037362efdae566aceb743155194ac6bddec459
MD5 6553dcc39fb906ef9c08dd2543ad6180
BLAKE2b-256 c804327be48a816cd1377f6339547d099efeaa18221a4ad88009111fa8a63a59

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.2-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 22ef50fbe0b84e41aecd81ae05c104aa68cda71e7ba49cc3b1163f6bfcda54eb
MD5 5d74f4362c07a1141463ed01cb36904a
BLAKE2b-256 71a2c28bce0589f84ae642324262534b10fb26f515554f10a1238c50f7791c7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.2-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6f2d03b0c8c52d7dd958da60a3b448974381cad06ec7cbf8324991e8fb4ff9b8
MD5 5c53e3ab245179f0504719b774759b04
BLAKE2b-256 a82d4972883d6be5fba3ae21615f99344c0cbe27d75b6de4b772b900158d80ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.2-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cf012574a9f092c5930b34ab8f5399335364dbc82b64902f6bd2778611b753dd
MD5 56cb96a42394f3806ae27891ba6f5317
BLAKE2b-256 085eb80f6c0ce7e67bca7dcf3ccf7a6f7229c30939f2bc68f5946d3914329c9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.2-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 08a58e485a232843fe95b16a189898dbc29fd1661aab76997d86343b1cff2f01
MD5 e897da36c200f92a39b6de73658a8156
BLAKE2b-256 4c9c1da207902e2d6e088c178fd307fde7886068ec1998ffcf2be3186ee462ca

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