embeddinggemma-300m β€” Core AI (.aimodel)

google/embeddinggemma-300m exported as a single static Core AI graph for Apple silicon by visible-cx. The whole embedding pipeline is in the graph: transformer β†’ mean pooling β†’ dense stack β†’ L2 normalise, one call in, one 768-d unit vector out. There is no host-side pooling to implement.

Two variants ship here: an fp32 bundle and an int8 bundle produced by compressing that graph in place. Their status is not the same β€” read the Status table before choosing.

Provenance

Base checkpoint google/embeddinggemma-300m
Recipe (fp32) coreai-model-zoo/conversion/export_embeddinggemma.py --dtype float32 --seq-len 256
Recipe index models/qwen3-embedding/recipe.toml β†’ ["embeddinggemma-300m"], status = "verified"
Upstream reference bundle mlboydaisuke/embeddinggemma-300m-CoreAI @ d9a60a18d384484a8dab809b3070b82fb41458ce
Producer fingerprint coreai-core 1.0.0b2 on both inner asset metadata.json files
Asset creation dates 20260817T201458Z (fp32), 20260817T212021Z (int8)
Toolchain coreai-torch 0.4.1, coreai-core 1.0.0b2, coreai-opt 0.2.1, torch 2.9.0
Asset metadata author: "Google DeepMind", license: "Gemma" (fp32 bundle)

The int8/ bundle is not a second export. It is the fp32 bundle put through coreai_opt.coreai_utils.quantize_weights(dtype=DType.INT8) β€” the Core AI graph compression path, which rewrites an existing program's weight constants in place. There was no PyTorch round-trip and no re-trace: the graph, the input signature and the tokenizer are the fp32 bundle's, unchanged.

Contents

Path Bytes Weights Sequence length
model/embeddinggemma-300m_float32_static.aimodel + model/reference.json + model/tokenizer/ 1,277,545,730 fp32 256
int8/embeddinggemma-300m_int8_static.aimodel + int8/reference.json + int8/tokenizer/ 356,639,960 int8 (graph-compressed) 256
File fp32 (model/) int8 (int8/)
main.mlirb 1,244,157,766 323,252,231 (0.26Γ—)
main.hash 32 32
asset metadata.json 340 105
reference.json 1,615 1,615
tokenizer/tokenizer.json 33,385,272 33,385,272
tokenizer/tokenizer_config.json 705 705

reference.json and tokenizer/ in int8/ are byte-identical copies of the fp32 bundle's, carried so the folder is self-contained. reference.json is the exporter's torch oracle: four reference texts and their pairwise cosines, for checking the source pipeline end to end.

Requirements

  • Apple silicon Mac, Core AI runtime, macOS 27+.
  • Static input signature: input_ids [1, 256] int32, attention_mask [1, 256] int32 β†’ embedding [1, 768] fp32, L2-normalised. Sequence length 256 is baked into the graph β€” pad or truncate to it; there is no dynamic-length variant.
  • Weights β‰ˆ 1.24 GB resident (fp32) or β‰ˆ 0.32 GB (int8). No KV cache; this is an encoder, so there is no per-token memory growth and no context ladder. Minimum practical machine memory: 8 GB.

Note the sequence-length difference from the Core ML artifact in this org, which is seq 128. The two are not drop-in substitutes for each other.

Performance

None measured, from either bundle. No embedding vector has been computed from either artifact on Apple silicon. Everything below the Provenance table is a build-and-bytes result, not a runtime result.

Status

Artifact Status
model/ (fp32, seq 256) UNQUALIFIED β€” built and fingerprinted, runtime-unverified. The recipe is the zoo's status = "verified" entry, the producer fingerprint passes, and the exporter's pre-export gate (wrapper vs sentence_transformers.encode, cosine > 0.999) passed. No vector has been computed from the exported graph on Apple silicon.
int8/ (graph-compressed) EXPERIMENTAL. Gate: cross-runtime vector parity against the fp32 bundle on Apple silicon β€” cosine similarity per vector and retrieval-rank agreement on a fixed corpus, not a spot-check of output shapes. Do not use for production embeddings until that passes.

The int8 caveat is not boilerplate: fp16 embeddinggemma is already known to fail vector-precision parity, because a full .to(float16) overflows Gemma3 activations and emits NaN embeddings. A 4Γ— compression passing parity is a hypothesis, not an expectation.

Verification

  • Torch oracle agrees to ~6e-8. reference.json's pairwise cosines from an independent rebuild match the published values to roughly seven decimal places (largest deviation ~6e-8). That is CPU float nondeterminism across machines, not a different model. It validates the source pipeline β€” checkpoint β†’ prompts β†’ pooling β†’ dense β†’ L2 β€” and explicitly does not validate the exported graph's execution.
  • Not byte-reproducible. Rebuilt from the same recipe, main.mlirb differed from the published upstream bundle by +262 bytes, and two runs on the same host with an identical command differed from each other by +32 bytes. The tokenizer half is identical in every comparison. Integrity rests on per-file SHA-256 of the exact published bytes. (The sibling visible-cx/embeddinggemma-300m-CoreML repo is bit-reproducible β€” a different supply-chain argument for the same model.)
  • No ANE-residency measurement exists for either bundle. export_embeddinggemma.py exposes only --dtype, --seq-len, --output-dir, --overwrite; there is no compute-unit flag.

License

EmbeddingGemma is Gemma-family. These bundles are a derivative of google/embeddinggemma-300m, and use is subject to the Gemma Terms of Use and the Gemma Prohibited Use Policy. The fp32 bundle's own asset metadata carries license: "Gemma" and author: "Google DeepMind". Those terms travel with the artifact and with any redistribution of it; the contribution here is the conversion, not the weights.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for visible-cx/embeddinggemma-300m-CoreAI

Finetuned
(271)
this model