Releases: Bornholm/indecis
Releases · Bornholm/indecis
Release list
v0.3.0
Changelog
- 339e191 Merge pull request #1 from Bornholm/feat/siglip2
- 9930c7d ci: pin goreleaser to v2 and move its action to node 24
- d608c17 docs(siglip): record why the text tower collects after each layer
- 16f6f1f feat(cli): cache image features and read several files in train-vision
- d2bea48 feat(decision): answer learned image questions with the trained head
- a053501 feat(decision): serve SigLIP image models behind the decision API
- b668103 feat(linalg): add tanh GELU and vector addition, SIMD and scalar
- 7c2facb feat(linalg): split massive input channels off int8 products
- d00f0ad feat(siglip): add SigLIP image and text encoders with transformers parity
- 38413f1 feat(siglip): resize images exactly as PIL's bilinear filter
- ade1ff1 feat(tokenizer): support the original Gemma pipeline used by SigLIP 2
- c7ba1c6 feat(tools): add zero-shot image classification eval on Imagenette
- 15b0343 feat(vision): decide on images with SigLIP, options described in text
- 270daed feat(vision): heads that read an intermediate layer, the encoder stopping there
- c8ee19b feat(vision): save and load trained heads, train them with indecis train-vision
- 642c4ad feat(vision): score an option with its examples as well as its description
- 28d34aa feat(vision): train spatial heads on frozen patch features
- 5cf6165 fix(decision): bound decoded images at 16 megapixels and read them once
- 13ff42e fix(decision): bound progressive JPEGs to a quarter of the pixel limit
- f2d2328 fix(decision): load models outside the client lock and accept image models in New
- 122b2f9 fix(decision): name Server.MaxRequestSize in the 413 message
- 31e880b fix(decision): release waiting requests when a model load panics
- f2ca7f2 fix(decision): size the request body for images, pass image options to New, accept wrapped base64
- c4702f1 fix(siglip): refuse a text tower with a different MLP size
- bdc2a7d fix(siglip): refuse a text tower with a different head count
- 7203c19 fix(siglip): refuse a text tower with a different layer norm epsilon
- 3529cf6 fix(siglip): resize in bounded memory and bound image sides
- eb7b651 fix(siglip): return load errors instead of panicking on a missing tensor
- 0dc0e67 fix(vision): answer open yes/no questions by opposing the two criteria
- 6af8f30 fix(vision): refuse duplicate options and empty head dimensions, average the loss over labels
- c706b36 fix(vision): replace a saved head atomically and refuse training without examples
- c51bf6d fix(vision): report evaluation and cache errors, check the head's layer, honor contexts
- af86d42 fix(vision): retry a failed lazy load of the tokenizer or the text tower
- 940a963 fix(vision): sync saved heads, validate train-vision epochs and rate
- 7b05405 fix(vision): validate train-vision flags, write heads atomically, report evaluation errors
- c2edc9b perf(linalg): hand out parallel slices dynamically
- 6afca41 perf(siglip): collect garbage after each layer while loading
- 9f08d1f perf(siglip): compute fc2 in int8 with outlier channels split off
- 31d2791 perf(siglip): resize images row by row, without an RGB copy
- 1c959b7 perf(siglip): reuse the working memory of each pass
- d599696 perf(vision): one core per image by default, WithThreads to spread it
- 68a3097 perf(vision): reuse the softmax buffer while training a head
- f867046 perf(vision): share the embedding of a text requested by simultaneous calls
- 03f9348 perf(vision): skip patch features when no learned question is asked
- f69c6f2 perf: load SigLIP's text tower on first use and collect garbage near the models' size
- 44605e8 test(siglip): allow the int8 gap of the 64-token caption
- 434d72a test(siglip): bound int8 caption logits at 0.75 again, the truncated text apart
- 494aabc test(siglip): check Pad against the processor, beyond 64 tokens included
- b71d2e6 test(tokenizer): check the raw pipeline in CI with a small SigLIP tokenizer