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

Uploaded Python 3Windows x86-64

weed_loader-0.6.1-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.1-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.1-py3-none-macosx_15_0_arm64.whl (1.9 MB view details)

Uploaded Python 3macOS 15.0+ ARM64

weed_loader-0.6.1-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.1.tar.gz.

File metadata

  • Download URL: weed_loader-0.6.1.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.1.tar.gz
Algorithm Hash digest
SHA256 38c32991517c2b7c0c05bd5bd2b2bc0e4f3ab999faa36e3c895b49ad5e13a29b
MD5 c3c9b664c8f77ab8e27638d23d78648c
BLAKE2b-256 0cd8f009259da2f792840c44ff04e50a452e1818ff3b9ff34cf966405e57e690

See more details on using hashes here.

File details

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

File metadata

  • Download URL: weed_loader-0.6.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a8b237f358a740a0e9141fc4977c2b6b0d84cc1c791a6d3d934018b75d9c9535
MD5 a2f2d742601ebf729a3bad50d23bf808
BLAKE2b-256 37b928095153c22a2fa9e5254b60ad6d17cb62307685a7f5d49149768fd5d810

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.1-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 4d4e06e4577f92d895a5da44ee16118e279a1ee08ecd48f1a27858e846e35734
MD5 030abc9f4cd83bc01f601701f79c293a
BLAKE2b-256 6c1554b4780b8644d80b60ef371c75498a86cfaeae9a3ff9b6ac52bf3b6d7f46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.1-py3-none-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6f08bb4e861de3c43979175b3c2d1898f452025d435b2aa49b298637908ee306
MD5 c7522fb852c65dabfea48c2a10deac0b
BLAKE2b-256 69e856b2a5fb9d2d21e162e7f97e36628e24855221045bca8de48f4cb910865e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.1-py3-none-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 64238fb7b1ce30a7ef8cdfae444af63d6a6aa68fd43f053a38520af94c40bfdf
MD5 d7940cb9ede99aeb8b9c51443fb1b56e
BLAKE2b-256 af20c1e4dcbd7f393e0a2b4f25da52846d6f1de25f2b2574ba4dfacf5813b5b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for weed_loader-0.6.1-py3-none-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 6122194129d0a7e496835104d4142aedebf10f53cfe15a354a7f96fd7b1aa2b2
MD5 12bd7b6f650c67e70586eefba82aa37e
BLAKE2b-256 a24e3de83f5ace61d239240b9911dd09699e71cb85b8dc037b62fd53d837324a

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