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

Uploaded Python 3Windows x86-64

weed_loader-0.6.3-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.3-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.3-py3-none-macosx_15_0_arm64.whl (2.0 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

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

File metadata

  • Download URL: weed_loader-0.6.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-0.6.3.tar.gz
Algorithm Hash digest
SHA256 5e5ed3c4041f6920bbcde8c6e4b95bbf4f05cb8868d8fdb9e2076f6513790a6a
MD5 694d06ec63dfeb709cb2b9c9ec2dacf1
BLAKE2b-256 0073f86c7f382d57cc8d26d5517dccbe50b49fdb3c4023efb57f7c2cff80d3dd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.6.3-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.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 214966b3c1c2a384092a7a78f3336ec220bb140ace6f79d16029c78e1515815f
MD5 12f2006d3801201f331ec282b22497fc
BLAKE2b-256 3528297f1e7b896838a8e2c715b48790464568c4a75dd15de90784639968d539

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.3-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e0e78cfe9fc2d0e18527e4f737d229d0c953491231deedad7336ae9792334650
MD5 bcba389e5e608d6a57e3138562400a04
BLAKE2b-256 fa26fad168a75472ce1c39afde1f9e192a0f1e82311b2b27670de7be122b415c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.3-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 504269955a391e0b95f1248a033f7b3791754e2c9d367fb0cec37d6f6b543e54
MD5 c25cc41cde3b62dec1fe6d37977b3be2
BLAKE2b-256 992df300266e5b59e36595558c761c7d037ab8c6879e39aad79fd06b8f148f1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.3-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 867665efbdd1ee04393699f0fee0ee8dd57a536f11ddf99eeb9a122da7edab7d
MD5 0eea44490d2587972dab94656965aee3
BLAKE2b-256 6c1705b629d0d446485e53d6480ee735d766617486c10bdc52bf4d0c83857c8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.3-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 812138c7cd5b33aca919617958c62f7a989e5c0b18e8b1e3a86a1d4269514db5
MD5 16aaa0d468442c63d19ac218dc373730
BLAKE2b-256 9da13745e8db265aed38adb88e9e78358c8c963a38f175b2790679d3c29a92ad

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