Download example.mjs from join3r/stem-gte-memory: direct link, hf CLI and curl.
- Browser
- Download file 1.28 kB
-
https://huggingface.co/join3r/stem-gte-memory/resolve/main/example.mjs
- Command line
-
hf download hf://join3r/stem-gte-memory/example.mjs
-
curl -L -o example.mjs https://huggingface.co/join3r/stem-gte-memory/resolve/main/example.mjs
1.28 kB
| import { resolve } from 'node:path'; | |
| import { AutoTokenizer, PreTrainedModel, env } from '@huggingface/transformers'; | |
| if (!process.argv[2]) throw new Error('Usage: node example.mjs /path/to/model'); | |
| const directory = resolve(process.argv[2]); | |
| env.allowRemoteModels = false; | |
| const tokenizer = await AutoTokenizer.from_pretrained(directory, { local_files_only: true }); | |
| const model = await PreTrainedModel.from_pretrained(directory, { | |
| dtype: 'q8', local_files_only: true, session_options: { enableCpuMemArena: false } | |
| }); | |
| try { | |
| const query = 'Suggest a vegetarian dinner.'; | |
| const documents = ['The user is vegetarian.', 'The user plays the violin.']; | |
| for (const document of documents) { | |
| const inputs = tokenizer([query], { text_pair: [document], padding: true, truncation: false }); | |
| const [batch, length] = inputs.input_ids.dims; | |
| if (batch !== 1 || length < 1 || length > 8192) throw new Error('Unsupported pair length'); | |
| const { logits } = await model(inputs); | |
| const score = Number(logits.data[0]); | |
| if (logits.data.length !== 1 || logits.dims.some(n => n !== 1) || !Number.isFinite(score)) { | |
| throw new Error('Expected one finite raw logit'); | |
| } | |
| console.log(JSON.stringify({ document, score })); | |
| } | |
| } finally { | |
| await model.dispose(); | |
| } | |