Instructions to use macmacmacmac/CLEF-Screen-V2 with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- LiteRT
How to use macmacmacmac/CLEF-Screen-V2 with LiteRT:
# No code snippets available yet for this library. # To use this model, check the repository files and the library's documentation. # Want to help? PRs adding snippets are welcome at: # https://github.com/huggingface/huggingface.js
- Notebooks
- Google Colab
- Kaggle
File size: 5,073 Bytes
e4ba6c4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | """clef-flash on LiteRT: the host in plain Python.
Dependencies: NumPy, `tokenizers` and Pillow, and ai-edge-litert for the graphs (requirements-host.txt; the
safetensors format is read here, the `safetensors` library only checks the table files). No PyTorch, no transformers
and none of the provider's code at run time. The host answers a request of the SystemOne-compatible request shape the way
the checkpoint's own `systemone()` does (Cloudflare/clef-flash at f0b7d3cd, joint_schema_model.py sha256 0e304cf7...),
around two kinds of LiteRT graph that are the caller's: a row graph per length (the Qwen3.5-9B text stack, embeds in,
final-norm hidden states out) and a tower graph per picture tile. The vocabulary tables and the joint schema head stay
on the host.
1. Request: {"model": str, "state": any JSON value, "questions": {id: {"type": "noul" | "choice" | "score",
"instructions": ..., "criteria": ...}}, "images": [one picture] (optional)}. Choice criteria are an object
{option id: description}, score criteria a list of level descriptions (lowest first), noul criteria an optional
object overriding the "true" / "false" descriptions. Checked as `systemone()` checks it (request.validate_request;
the named refusals of errors.py carry the author's messages).
2. Ids (request.encode_record): the author's encode_record on the repository's tokenizer.json, every piece tokenized
on its own without special tokens; with a picture, its block (<|vision_start|>, N x <|image_pad|>, <|vision_end|>,
"\\n") right after the 36-id prefix. usage.input_tokens = the number of ids.
3. Picture (pixels.py): one per request, read at a fixed square tile, 448 (default, 14 x 14 = 196 picture tokens) or
256 (8 x 8 = 64): RGB, Pillow BICUBIC to the tile, (x/255 - 0.5) / 0.5, merge-block-major patches [4 G^2, 1536]
-> the tower graph of that tile -> [G^2, 4096] picture rows. More pictures, videos and media_kwargs are refused
(`UnsupportedMedia`); the author's native resolution is not a tower graph.
4. Row graph inputs (host.ClefHost.row_inputs, at L = the smallest of 256 / 512 / 1024 / 2048 / 4096 that holds the
record; longer records are refused, `RequestTooLong`, never cut):
embeds float32 [1, L, 4096] the bf16 embed_tokens rows of the ids widened to float32, the picture rows at the
<|image_pad|> positions, zeros after the record
valid float32 [1, L] 1 on the record, 0 after it
cos float32 [1, L, 64] the M-RoPE tables of the record's three position planes (positions.py)
sin float32 [1, L, 64]
-> hidden float32 [1, L, 4096] (every position, after the final RMSNorm); the host reads the first T rows.
5. Head (head.py): the author's JointSchemaHead in NumPy float32 on those T rows, the ids, the spans and the bf16
lm_head rows of the option spans -> one logit per option.
6. Response (response.py): per question the float32 softmax, then the author's systemone_answer ->
{"model", "answers": {id: answer}, "usage": {"input_tokens", "output_tokens": 0}}.
Files: tokenizer.json (the repository's, sha256 06b95093...), embed_tokens.safetensors and lm_head.safetensors (one BF16
[248320, 4096] tensor each, the checkpoint's bytes, no metadata), joint_head.safetensors and joint_head_config.json
(the checkpoint's own). contract.json next to this package records names, shapes, files and checks.
The graphs (runtime.py, ai-edge-litert's CompiledModel; imported only when a graph is compiled):
with ClefLiteRT.from_dir("<folder>", accelerator="gpu") as clef: # "gpu" = float32 precision, "cpu" = XNNPACK
body = clef.decide(request, tile=448)"""
from .errors import (BadQuestionType, EmptyCriteria, EmptyRecord, MissingModelOrState, NoQuestions, RequestError,
RequestTooLong, SchemaTooLong, UnsupportedMedia)
from .head import JointHead
from .host import FILES, HIDDEN, ClefHost, Encoded
from .pixels import TILES, tile_patches
from .positions import BUCKETS, mrope_tables, padded_positions, pick_length, record_positions
from .request import EncodedQuestion, EncodedRecord, encode_record, question_options, render, validate_request
from .response import question_probs, response, systemone_answer
from .runtime import FOLDER, ClefGraphs, ClefLiteRT, LiteRTGraph, load_f32_tensor
from .tables import Bf16Table, copy_bf16_tensor, load_bf16_tensors
__version__ = "0.2.0"
__all__ = [
"BUCKETS", "FILES", "FOLDER", "HIDDEN", "TILES", "BadQuestionType", "Bf16Table", "ClefGraphs", "ClefHost",
"ClefLiteRT", "EmptyCriteria", "EmptyRecord", "Encoded", "EncodedQuestion", "EncodedRecord", "JointHead",
"LiteRTGraph", "MissingModelOrState", "NoQuestions", "RequestError", "RequestTooLong", "SchemaTooLong",
"UnsupportedMedia", "copy_bf16_tensor", "encode_record", "load_bf16_tensors", "load_f32_tensor", "mrope_tables",
"padded_positions", "pick_length", "question_options", "question_probs", "record_positions", "render", "response",
"systemone_answer", "tile_patches", "validate_request",
]
|