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

Uploaded Python 3Windows x86-64

weed_loader_cpu-0.5.3-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.3-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.3-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.3-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader_cpu-0.5.3-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.3.tar.gz.

File metadata

  • Download URL: weed_loader_cpu-0.5.3.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.3.tar.gz
Algorithm Hash digest
SHA256 fc6252bad91fe90d6fbe85b2f1e05e576335c454d00032803ac8534fed083835
MD5 cda2fb525a00f72fd3dd31ec6110098d
BLAKE2b-256 82841e52282092e07b9c463a2da8d4a54a8d66c3bf4d5eb23da3a790cb9b156e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 f617a291990629edbfdbdbbe34e308099d73799582e16a6f18a60d80ea4cc3ee
MD5 4554c00658ca88cc26b4859cadee2bb4
BLAKE2b-256 a4fc53c2adacaf6972c99d884b77de775776f33a6cee688c0f68158717d3b12f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e8a658167ecfbd8e1cd239fd8bd65c0adf67f53962166fa6f3464a80b77b4d81
MD5 14c50337f93f71a3e462ba532075c8b0
BLAKE2b-256 c6dfc1cf6295f3de64c04c772dc71bfc5c74954702d58b58168b0bc4c82f91af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 7b0ac114e11a06ff534fa40ae8347d806da44850518967e2fab20885a81f285e
MD5 65387b909edbf80032e9d3783c961215
BLAKE2b-256 12e69bfdef07a18959e106571f62f5ec579903963397c1679e90002e5275a53c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f03c94a8b1801b7b2e123cf7829eec88224d2ed4c0b694146b8951e960b3def0
MD5 94f757f31f743c5bb140a113680c39d4
BLAKE2b-256 d4c564a044c05d50bd6d7bf43bd527891c49c88de69954b617f279497b3a12c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 40ad35ac63a0b6027013dc563a55f1d0a276cf55e015ac274ef60ce0f71acb3d
MD5 0bb5cb208118fb01241821e116311950
BLAKE2b-256 5ea95694f392a4005c1c7220cdc6b929191ea8faa3a09e4fcee034b19f44bc75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader_cpu-0.5.3-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0a09d2a7ce9555b77d4dfd5d9a0138aae80f46b0e0d20443d58e447e51364ea1
MD5 c1c7d63656c70fde9208383c5add2f86
BLAKE2b-256 bba011e4cc3227737472eed67013d16f4e2fc79551b38d0b84a404c1e4f912d5

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