Download conversion/check.py from FilBona/embeddinggemma-2-coreml-ane: direct link, hf CLI and curl.
- Browser
- Download file 1.28 kB
-
https://huggingface.co/FilBona/embeddinggemma-2-coreml-ane/resolve/main/conversion/check.py
- Command line
-
hf download hf://FilBona/embeddinggemma-2-coreml-ane/conversion/check.py
-
curl -L -o check.py https://huggingface.co/FilBona/embeddinggemma-2-coreml-ane/resolve/main/conversion/check.py
1.28 kB
| import sys, time, numpy as np, coremltools as ct | |
| from transformers import AutoTokenizer | |
| path = sys.argv[1] | |
| tok = AutoTokenizer.from_pretrained("google/embeddinggemma-2") | |
| texts = ["task: search result | query: quando finisce la posizione dei QA?", | |
| "title: none | text: Marco: allora il contratto del tester scade il primo gennaio 2027, poi vediamo.", | |
| "title: none | text: Giulia porta il vino alla cena di domenica, Maria Grazia il dolce.", | |
| "task: search result | query: chi porta il dolce?"] | |
| ref = np.load("ref.npy") | |
| for units in [ct.ComputeUnit.CPU_AND_NE]: | |
| m = ct.models.MLModel(path, compute_units=units) | |
| for L in [int(x) for x in sys.argv[2].split(",")]: | |
| outs = [] | |
| for t in texts: | |
| ids = np.zeros((1, L), dtype=np.int32); enc = tok(t)["input_ids"][:L]; ids[0, :len(enc)] = enc | |
| outs.append(m.predict({"input_ids": ids})["embedding"][0]) | |
| outs = np.array(outs) | |
| start = time.time() | |
| for _ in range(20): m.predict({"input_ids": ids}) | |
| ms = (time.time() - start) / 20 * 1000 | |
| print(f"L={L}: coseno con ufficiale {np.round((outs*ref).sum(1),4)} · {ms:.1f} ms per pezzo") | |
| print("similarità QA:", np.round(outs @ outs.T, 3)[0], "dolce:", np.round(outs @ outs.T, 3)[3]) | |