machineuser
Sync widgets demo
8b752ac
raw
history blame
12.7 kB
import type { PipelineType } from "../pipelines";
import { PIPELINE_DATA } from "../pipelines";
import audioClassification from "./audio-classification/data";
import audioToAudio from "./audio-to-audio/data";
import automaticSpeechRecognition from "./automatic-speech-recognition/data";
import documentQuestionAnswering from "./document-question-answering/data";
import featureExtraction from "./feature-extraction/data";
import fillMask from "./fill-mask/data";
import imageClassification from "./image-classification/data";
import imageFeatureExtraction from "./image-feature-extraction/data";
import imageToImage from "./image-to-image/data";
import imageToText from "./image-to-text/data";
import imageSegmentation from "./image-segmentation/data";
import maskGeneration from "./mask-generation/data";
import objectDetection from "./object-detection/data";
import depthEstimation from "./depth-estimation/data";
import placeholder from "./placeholder/data";
import reinforcementLearning from "./reinforcement-learning/data";
import questionAnswering from "./question-answering/data";
import sentenceSimilarity from "./sentence-similarity/data";
import summarization from "./summarization/data";
import tableQuestionAnswering from "./table-question-answering/data";
import tabularClassification from "./tabular-classification/data";
import tabularRegression from "./tabular-regression/data";
import textToImage from "./text-to-image/data";
import textToSpeech from "./text-to-speech/data";
import tokenClassification from "./token-classification/data";
import translation from "./translation/data";
import textClassification from "./text-classification/data";
import textGeneration from "./text-generation/data";
import textToVideo from "./text-to-video/data";
import unconditionalImageGeneration from "./unconditional-image-generation/data";
import videoClassification from "./video-classification/data";
import visualQuestionAnswering from "./visual-question-answering/data";
import zeroShotClassification from "./zero-shot-classification/data";
import zeroShotImageClassification from "./zero-shot-image-classification/data";
import zeroShotObjectDetection from "./zero-shot-object-detection/data";
export type * from "./audio-classification/inference";
export type * from "./automatic-speech-recognition/inference";
export type {
ChatCompletionInput,
ChatCompletionInputMessage,
ChatCompletionOutput,
ChatCompletionOutputChoice,
ChatCompletionFinishReason,
ChatCompletionOutputChoiceMessage,
ChatCompletionStreamOutput,
ChatCompletionStreamOutputChoice,
ChatCompletionStreamOutputDelta,
} from "./chat-completion/inference";
export type * from "./document-question-answering/inference";
export type * from "./feature-extraction/inference";
export type * from "./fill-mask/inference";
export type {
ImageClassificationInput,
ImageClassificationOutput,
ImageClassificationOutputElement,
ImageClassificationParameters,
} from "./image-classification/inference";
export type * from "./image-to-image/inference";
export type { ImageToTextInput, ImageToTextOutput, ImageToTextParameters } from "./image-to-text/inference";
export type * from "./image-segmentation/inference";
export type * from "./object-detection/inference";
export type * from "./depth-estimation/inference";
export type * from "./question-answering/inference";
export type * from "./sentence-similarity/inference";
export type * from "./summarization/inference";
export type * from "./table-question-answering/inference";
export type { TextToImageInput, TextToImageOutput, TextToImageParameters } from "./text-to-image/inference";
export type { TextToAudioParameters, TextToSpeechInput, TextToSpeechOutput } from "./text-to-speech/inference";
export type * from "./token-classification/inference";
export type {
Text2TextGenerationParameters,
Text2TextGenerationTruncationStrategy,
TranslationInput,
TranslationOutput,
} from "./translation/inference";
export type {
ClassificationOutputTransform,
TextClassificationInput,
TextClassificationOutput,
TextClassificationOutputElement,
TextClassificationParameters,
} from "./text-classification/inference";
export type {
TextGenerationFinishReason,
TextGenerationPrefillToken,
TextGenerationInput,
TextGenerationOutput,
TextGenerationOutputDetails,
TextGenerationParameters,
TextGenerationOutputSequenceDetails,
TextGenerationOutputToken,
TextGenerationStreamDetails,
TextGenerationStreamOutput,
} from "./text-generation/inference";
export type * from "./video-classification/inference";
export type * from "./visual-question-answering/inference";
export type * from "./zero-shot-classification/inference";
export type * from "./zero-shot-image-classification/inference";
export type {
BoundingBox,
ZeroShotObjectDetectionInput,
ZeroShotObjectDetectionInputData,
ZeroShotObjectDetectionOutput,
ZeroShotObjectDetectionOutputElement,
} from "./zero-shot-object-detection/inference";
import type { ModelLibraryKey } from "../model-libraries";
/**
* Model libraries compatible with each ML task
*/
export const TASKS_MODEL_LIBRARIES: Record<PipelineType, ModelLibraryKey[]> = {
"audio-classification": ["speechbrain", "transformers", "transformers.js"],
"audio-to-audio": ["asteroid", "fairseq", "speechbrain"],
"automatic-speech-recognition": ["espnet", "nemo", "speechbrain", "transformers", "transformers.js"],
"depth-estimation": ["transformers", "transformers.js"],
"document-question-answering": ["transformers", "transformers.js"],
"feature-extraction": ["sentence-transformers", "transformers", "transformers.js"],
"fill-mask": ["transformers", "transformers.js"],
"graph-ml": ["transformers"],
"image-classification": ["keras", "timm", "transformers", "transformers.js"],
"image-feature-extraction": ["timm", "transformers"],
"image-segmentation": ["transformers", "transformers.js"],
"image-text-to-text": ["transformers"],
"image-to-image": ["diffusers", "transformers", "transformers.js"],
"image-to-text": ["transformers", "transformers.js"],
"image-to-video": ["diffusers"],
"video-classification": ["transformers"],
"mask-generation": ["transformers"],
"multiple-choice": ["transformers"],
"object-detection": ["transformers", "transformers.js"],
other: [],
"question-answering": ["adapter-transformers", "allennlp", "transformers", "transformers.js"],
robotics: [],
"reinforcement-learning": ["transformers", "stable-baselines3", "ml-agents", "sample-factory"],
"sentence-similarity": ["sentence-transformers", "spacy", "transformers.js"],
summarization: ["transformers", "transformers.js"],
"table-question-answering": ["transformers"],
"table-to-text": ["transformers"],
"tabular-classification": ["sklearn"],
"tabular-regression": ["sklearn"],
"tabular-to-text": ["transformers"],
"text-classification": ["adapter-transformers", "setfit", "spacy", "transformers", "transformers.js"],
"text-generation": ["transformers", "transformers.js"],
"text-retrieval": [],
"text-to-image": ["diffusers"],
"text-to-speech": ["espnet", "tensorflowtts", "transformers", "transformers.js"],
"text-to-audio": ["transformers", "transformers.js"],
"text-to-video": ["diffusers"],
"text2text-generation": ["transformers", "transformers.js"],
"time-series-forecasting": [],
"token-classification": [
"adapter-transformers",
"flair",
"spacy",
"span-marker",
"stanza",
"transformers",
"transformers.js",
],
translation: ["transformers", "transformers.js"],
"unconditional-image-generation": ["diffusers"],
"visual-question-answering": ["transformers", "transformers.js"],
"voice-activity-detection": [],
"zero-shot-classification": ["transformers", "transformers.js"],
"zero-shot-image-classification": ["transformers", "transformers.js"],
"zero-shot-object-detection": ["transformers", "transformers.js"],
"text-to-3d": [],
"image-to-3d": [],
};
/**
* Return the whole TaskData object for a certain task.
* If the partialTaskData argument is left undefined,
* the default placholder data will be used.
*/
function getData(type: PipelineType, partialTaskData: TaskDataCustom = placeholder): TaskData {
return {
...partialTaskData,
id: type,
label: PIPELINE_DATA[type].name,
libraries: TASKS_MODEL_LIBRARIES[type],
};
}
// To make comparisons easier, task order is the same as in const.ts
// Tasks set to undefined won't have an associated task page.
// Tasks that call getData() without the second argument will
// have a "placeholder" page.
export const TASKS_DATA: Record<PipelineType, TaskData | undefined> = {
"audio-classification": getData("audio-classification", audioClassification),
"audio-to-audio": getData("audio-to-audio", audioToAudio),
"automatic-speech-recognition": getData("automatic-speech-recognition", automaticSpeechRecognition),
"depth-estimation": getData("depth-estimation", depthEstimation),
"document-question-answering": getData("document-question-answering", documentQuestionAnswering),
"feature-extraction": getData("feature-extraction", featureExtraction),
"fill-mask": getData("fill-mask", fillMask),
"graph-ml": undefined,
"image-classification": getData("image-classification", imageClassification),
"image-feature-extraction": getData("image-feature-extraction", imageFeatureExtraction),
"image-segmentation": getData("image-segmentation", imageSegmentation),
"image-text-to-text": undefined,
"image-to-image": getData("image-to-image", imageToImage),
"image-to-text": getData("image-to-text", imageToText),
"image-to-video": undefined,
"mask-generation": getData("mask-generation", maskGeneration),
"multiple-choice": undefined,
"object-detection": getData("object-detection", objectDetection),
"video-classification": getData("video-classification", videoClassification),
other: undefined,
"question-answering": getData("question-answering", questionAnswering),
"reinforcement-learning": getData("reinforcement-learning", reinforcementLearning),
robotics: undefined,
"sentence-similarity": getData("sentence-similarity", sentenceSimilarity),
summarization: getData("summarization", summarization),
"table-question-answering": getData("table-question-answering", tableQuestionAnswering),
"table-to-text": undefined,
"tabular-classification": getData("tabular-classification", tabularClassification),
"tabular-regression": getData("tabular-regression", tabularRegression),
"tabular-to-text": undefined,
"text-classification": getData("text-classification", textClassification),
"text-generation": getData("text-generation", textGeneration),
"text-retrieval": undefined,
"text-to-image": getData("text-to-image", textToImage),
"text-to-speech": getData("text-to-speech", textToSpeech),
"text-to-audio": undefined,
"text-to-video": getData("text-to-video", textToVideo),
"text2text-generation": undefined,
"time-series-forecasting": undefined,
"token-classification": getData("token-classification", tokenClassification),
translation: getData("translation", translation),
"unconditional-image-generation": getData("unconditional-image-generation", unconditionalImageGeneration),
"visual-question-answering": getData("visual-question-answering", visualQuestionAnswering),
"voice-activity-detection": undefined,
"zero-shot-classification": getData("zero-shot-classification", zeroShotClassification),
"zero-shot-image-classification": getData("zero-shot-image-classification", zeroShotImageClassification),
"zero-shot-object-detection": getData("zero-shot-object-detection", zeroShotObjectDetection),
"text-to-3d": getData("text-to-3d", placeholder),
"image-to-3d": getData("image-to-3d", placeholder),
} as const;
export interface ExampleRepo {
description: string;
id: string;
}
export type TaskDemoEntry =
| {
filename: string;
type: "audio";
}
| {
data: Array<{
label: string;
score: number;
}>;
type: "chart";
}
| {
filename: string;
type: "img";
}
| {
table: string[][];
type: "tabular";
}
| {
content: string;
label: string;
type: "text";
}
| {
text: string;
tokens: Array<{
end: number;
start: number;
type: string;
}>;
type: "text-with-tokens";
};
export interface TaskDemo {
inputs: TaskDemoEntry[];
outputs: TaskDemoEntry[];
}
export interface TaskData {
datasets: ExampleRepo[];
demo: TaskDemo;
id: PipelineType;
canonicalId?: PipelineType;
isPlaceholder?: boolean;
label: string;
libraries: ModelLibraryKey[];
metrics: ExampleRepo[];
models: ExampleRepo[];
spaces: ExampleRepo[];
summary: string;
widgetModels: string[];
youtubeId?: string;
}
export type TaskDataCustom = Omit<TaskData, "id" | "label" | "libraries">;