Welvet examples
5. quant — 20 pack formats
Part: II · Foundation
Package: github.com/openfluke/welvet/quant
Status: ok — ✅
When
You need the quant foundation package.
Where
import "github.com/openfluke/welvet/quant"
cd 05-quant && source ../env.sh && go run .
Why
Inference, storage, and train need classic Q-packs, k-quants, IQ, Ternary/Binary, and Affine without a separate QAT mode or retained f32 master. Format is storage truth.
What
Pack / Unpack / MatVec / MatVecT for FormatNone…AffinePacked. Dense SIMD once-projects codes into Int8QS + scales (EnsureQ* / EnsureK/IQ/AffineSIMDCache) — no full-matrix F32 inflate for k/IQ/Affine. SGD on packed stores: short-lived unpack scratch → update → re-Pack; Packed stays truth.
Sample output (captured)
rows 2 cols 4 y [0.6857143 -1.4901161e-08]
Live capture from go run ./cmd/runall on local ../../welvet (exit 0).
Source
Copied from the Welvet feature book examples (openfluke.github.io/welvet/examples/05-quant).
main.go
Download source ↓package main
import (
"fmt"
"github.com/openfluke/welvet/quant"
)
func main() {
w := []float32{0.1, -0.2, 0.3, 0.4, -0.5, 0.6, 0.05, -0.15}
b, err := quant.Pack(quant.FormatQ4_0, w, 2, 4)
if err != nil {
panic(err)
}
y := make([]float32, 2)
if err := quant.MatVec(b, []float32{1, 1, 1, 1}, y); err != nil {
panic(err)
}
fmt.Println("rows", b.Rows, "cols", b.Cols, "y", y)
}