whitphx's picture
whitphx HF Staff
Per-task benchmarks
5d65665
raw
history blame
5.33 kB
/**
* Task-specific input generation for benchmarking
* Based on Transformers.js usage examples
*/
export interface TaskInput {
inputs: any;
options?: any;
}
/**
* Generate appropriate input for a given task type
*/
export function getTaskInput(task: string, batchSize: number = 1): TaskInput {
// Normalize task name
const normalizedTask = task.toLowerCase().trim();
// Text tasks
if (normalizedTask === "fill-mask") {
const inputs = Array(batchSize).fill("The goal of life is [MASK].");
return { inputs };
}
if (normalizedTask === "question-answering") {
const question = "Who was Jim Henson?";
const context = "Jim Henson was a nice puppet.";
// For batch, repeat the same question-context pair
const inputs = Array(batchSize).fill({ question, context });
return { inputs: batchSize === 1 ? { question, context } : inputs };
}
if (normalizedTask === "summarization") {
const text =
"The tower is 324 metres (1,063 ft) tall, about the same height as an 81-storey building, " +
"and the tallest structure in Paris. Its base is square, measuring 125 metres (410 ft) on each side. " +
"During its construction, the Eiffel Tower surpassed the Washington Monument to become the tallest " +
"man-made structure in the world, a title it held for 41 years until the Chrysler Building in New " +
"York City was finished in 1930.";
const inputs = Array(batchSize).fill(text);
return { inputs, options: { max_new_tokens: 100 } };
}
if (normalizedTask === "sentiment-analysis" || normalizedTask === "text-classification") {
const inputs = Array(batchSize).fill("I love transformers!");
return { inputs };
}
if (normalizedTask === "text-generation") {
const inputs = Array(batchSize).fill("Once upon a time, there was");
return { inputs, options: { max_new_tokens: 10 } };
}
if (normalizedTask === "text2text-generation") {
const inputs = Array(batchSize).fill("how can I become more healthy?");
return { inputs, options: { max_new_tokens: 100 } };
}
if (normalizedTask === "token-classification" || normalizedTask === "ner") {
const inputs = Array(batchSize).fill("My name is Sarah and I live in London");
return { inputs };
}
if (normalizedTask === "translation") {
const inputs = Array(batchSize).fill("Life is like a box of chocolate.");
return { inputs, options: { src_lang: "eng_Latn", tgt_lang: "fra_Latn" } };
}
if (normalizedTask === "zero-shot-classification") {
const text = "I love transformers!";
const labels = ["positive", "negative"];
// For batching, would need to handle differently - for now use single input
return { inputs: batchSize === 1 ? [text, labels] : Array(batchSize).fill([text, labels]) };
}
if (normalizedTask === "feature-extraction") {
const inputs = Array(batchSize).fill("This is a simple test.");
return { inputs };
}
// Vision tasks - use public image URLs
if (normalizedTask === "background-removal") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/portrait-of-woman_small.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "depth-estimation") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/cats.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "image-classification") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/tiger.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "image-segmentation") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/cats.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "image-to-image") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/tiger.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "object-detection") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/cats.jpg";
const inputs = Array(batchSize).fill(url);
return { inputs, options: { threshold: 0.9 } };
}
if (normalizedTask === "image-feature-extraction") {
const url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/cats.png";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
// Audio tasks
if (normalizedTask === "audio-classification") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/jfk.wav";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
if (normalizedTask === "automatic-speech-recognition") {
const url = "https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/jfk.wav";
const inputs = Array(batchSize).fill(url);
return { inputs };
}
// Default fallback for unknown tasks - use text
console.warn(`Unknown task type: ${task}, using default text input`);
const inputs = Array(batchSize).fill("The quick brown fox jumps over the lazy dog.");
return { inputs };
}