Spaces:
Running
Running
Yang Gu commited on
Commit ·
51802c2
1
Parent(s): a8ddd77
Polish gallery mode
Browse files- demos.js +5 -10
- demos/ort-phi2-test/index.html +1 -0
- demos/ort-phi3-test/index.html +1 -0
- demos/ort-sdturbo/index.html +4 -4
- demos/tflite-gemma/index.js +3 -3
- demos/tjs-moondream/tjs-moondream.mp4 +3 -0
- gallery.html +7 -8
demos.js
CHANGED
|
@@ -7,49 +7,46 @@ const categoryDemos = [
|
|
| 7 |
name: 'Benchmark',
|
| 8 |
description: `Benchmark by Transformers.js`,
|
| 9 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-embedding-benchmark",
|
| 10 |
-
openInNewTab: true,
|
| 11 |
},
|
| 12 |
'tjs-clip': {
|
| 13 |
name: 'OpenAI Clip',
|
| 14 |
description: `Zero-shot Image Classification with OpenAI's CLIP by Transformers.js`,
|
| 15 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-clip",
|
| 16 |
-
openInNewTab: true,
|
| 17 |
},
|
| 18 |
'tjs-depthAnything': {
|
| 19 |
name: 'Depth Anything',
|
| 20 |
description: `Depth Anything by Transformers.js`,
|
| 21 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-depth-anything",
|
| 22 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 23 |
},
|
| 24 |
'tjs-musicGen': {
|
| 25 |
name: 'Text to Music (WASM)',
|
| 26 |
description: `Text to music by Transformers.js`,
|
| 27 |
filename: "https://huggingface.co/spaces/Xenova/musicgen-web",
|
| 28 |
-
openInNewTab: true,
|
| 29 |
},
|
| 30 |
'tjs-phi3': {
|
| 31 |
name: 'Phi3',
|
| 32 |
description: `Phi3 by Transformers.js`,
|
| 33 |
filename: "https://huggingface.co/spaces/Xenova/experimental-phi3-webgpu",
|
| 34 |
-
openInNewTab: true,
|
| 35 |
},
|
| 36 |
'tjs-removeImageBackground': {
|
| 37 |
name: 'Remove Image Background',
|
| 38 |
description: `Image Background Removal by Transformers.js`,
|
| 39 |
filename: "https://huggingface.co/spaces/Xenova/remove-background-webgpu",
|
| 40 |
-
openInNewTab: true,
|
| 41 |
},
|
| 42 |
'tjs-removeVideoBackground': {
|
| 43 |
name: 'Remove Video Background',
|
| 44 |
description: `Video Background Removal by Transformers.js`,
|
| 45 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-video-background-removal",
|
| 46 |
-
openInNewTab: true,
|
| 47 |
},
|
| 48 |
'tjs-yolo': {
|
| 49 |
name: 'Realtime Video Object Detection',
|
| 50 |
description: `Realtime video object detection by Transformers.js`,
|
| 51 |
filename: "https://huggingface.co/spaces/Xenova/video-object-detection",
|
| 52 |
-
openInNewTab: true,
|
| 53 |
},
|
| 54 |
},
|
| 55 |
},
|
|
@@ -103,13 +100,11 @@ const categoryDemos = [
|
|
| 103 |
name: 'Web Stable Diffusion',
|
| 104 |
description: `Web Stable Diffusion`,
|
| 105 |
filename: "https://websd.mlc.ai/",
|
| 106 |
-
openInNewTab: true,
|
| 107 |
},
|
| 108 |
'tvm-llama3': {
|
| 109 |
name: 'Web LLM Llama3',
|
| 110 |
description: `Web LLM Llama3`,
|
| 111 |
filename: "https://webllm.mlc.ai/",
|
| 112 |
-
openInNewTab: true,
|
| 113 |
},
|
| 114 |
},
|
| 115 |
},
|
|
|
|
| 7 |
name: 'Benchmark',
|
| 8 |
description: `Benchmark by Transformers.js`,
|
| 9 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-embedding-benchmark",
|
|
|
|
| 10 |
},
|
| 11 |
'tjs-clip': {
|
| 12 |
name: 'OpenAI Clip',
|
| 13 |
description: `Zero-shot Image Classification with OpenAI's CLIP by Transformers.js`,
|
| 14 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-clip",
|
|
|
|
| 15 |
},
|
| 16 |
'tjs-depthAnything': {
|
| 17 |
name: 'Depth Anything',
|
| 18 |
description: `Depth Anything by Transformers.js`,
|
| 19 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-depth-anything",
|
| 20 |
+
},
|
| 21 |
+
'tjs-moondream': {
|
| 22 |
+
name: 'Moondream',
|
| 23 |
+
description: `Moondream (Vision-Language Model) by Transformers.js`,
|
| 24 |
+
filename: "https://huggingface.co/spaces/Xenova/experimental-moondream-webgpu",
|
| 25 |
},
|
| 26 |
'tjs-musicGen': {
|
| 27 |
name: 'Text to Music (WASM)',
|
| 28 |
description: `Text to music by Transformers.js`,
|
| 29 |
filename: "https://huggingface.co/spaces/Xenova/musicgen-web",
|
|
|
|
| 30 |
},
|
| 31 |
'tjs-phi3': {
|
| 32 |
name: 'Phi3',
|
| 33 |
description: `Phi3 by Transformers.js`,
|
| 34 |
filename: "https://huggingface.co/spaces/Xenova/experimental-phi3-webgpu",
|
|
|
|
| 35 |
},
|
| 36 |
'tjs-removeImageBackground': {
|
| 37 |
name: 'Remove Image Background',
|
| 38 |
description: `Image Background Removal by Transformers.js`,
|
| 39 |
filename: "https://huggingface.co/spaces/Xenova/remove-background-webgpu",
|
|
|
|
| 40 |
},
|
| 41 |
'tjs-removeVideoBackground': {
|
| 42 |
name: 'Remove Video Background',
|
| 43 |
description: `Video Background Removal by Transformers.js`,
|
| 44 |
filename: "https://huggingface.co/spaces/Xenova/webgpu-video-background-removal",
|
|
|
|
| 45 |
},
|
| 46 |
'tjs-yolo': {
|
| 47 |
name: 'Realtime Video Object Detection',
|
| 48 |
description: `Realtime video object detection by Transformers.js`,
|
| 49 |
filename: "https://huggingface.co/spaces/Xenova/video-object-detection",
|
|
|
|
| 50 |
},
|
| 51 |
},
|
| 52 |
},
|
|
|
|
| 100 |
name: 'Web Stable Diffusion',
|
| 101 |
description: `Web Stable Diffusion`,
|
| 102 |
filename: "https://websd.mlc.ai/",
|
|
|
|
| 103 |
},
|
| 104 |
'tvm-llama3': {
|
| 105 |
name: 'Web LLM Llama3',
|
| 106 |
description: `Web LLM Llama3`,
|
| 107 |
filename: "https://webllm.mlc.ai/",
|
|
|
|
| 108 |
},
|
| 109 |
},
|
| 110 |
},
|
demos/ort-phi2-test/index.html
CHANGED
|
@@ -26,6 +26,7 @@
|
|
| 26 |
csv: 0,
|
| 27 |
max_tokens: 256,
|
| 28 |
local: 1,
|
|
|
|
| 29 |
}
|
| 30 |
let vars = query.split("&");
|
| 31 |
for (var i = 0; i < vars.length; i++) {
|
|
|
|
| 26 |
csv: 0,
|
| 27 |
max_tokens: 256,
|
| 28 |
local: 1,
|
| 29 |
+
ortUrl: "default",
|
| 30 |
}
|
| 31 |
let vars = query.split("&");
|
| 32 |
for (var i = 0; i < vars.length; i++) {
|
demos/ort-phi3-test/index.html
CHANGED
|
@@ -22,6 +22,7 @@
|
|
| 22 |
csv: 0,
|
| 23 |
max_tokens: 256,
|
| 24 |
local: 1,
|
|
|
|
| 25 |
}
|
| 26 |
let vars = query.split("&");
|
| 27 |
for (var i = 0; i < vars.length; i++) {
|
|
|
|
| 22 |
csv: 0,
|
| 23 |
max_tokens: 256,
|
| 24 |
local: 1,
|
| 25 |
+
ortUrl: "default",
|
| 26 |
}
|
| 27 |
let vars = query.split("&");
|
| 28 |
for (var i = 0; i < vars.length; i++) {
|
demos/ort-sdturbo/index.html
CHANGED
|
@@ -261,7 +261,7 @@ fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
|
|
| 261 |
async function load_models(models) {
|
| 262 |
let loadedCount = 0;
|
| 263 |
for (const [name, model] of Object.entries(models)) {
|
| 264 |
-
const model_bytes = await getModelOPFS(model.url,
|
| 265 |
const sess_opt = { ...opt, ...model.opt };
|
| 266 |
// profiling
|
| 267 |
//ort.env.webgpu.profiling = { mode: "default" };
|
|
@@ -279,17 +279,17 @@ fn main(@location(0) fragUV : vec2<f32>) -> @location(0) vec4<f32> {
|
|
| 279 |
|
| 280 |
const models = {
|
| 281 |
"unet": {
|
| 282 |
-
url:
|
| 283 |
// should have 'steps: 1' but will fail to create the session
|
| 284 |
opt: { freeDimensionOverrides: { batch_size: 1, num_channels: 4, height: 64, width: 64, sequence_length: 77, } }
|
| 285 |
},
|
| 286 |
"text_encoder": {
|
| 287 |
-
url:
|
| 288 |
// should have 'sequence_length: 77' but produces a bad image
|
| 289 |
opt: { freeDimensionOverrides: { batch_size: 1, } },
|
| 290 |
},
|
| 291 |
"vae_decoder": {
|
| 292 |
-
url:
|
| 293 |
opt: { freeDimensionOverrides: { batch_size: 1, num_channels_latent: 4, height_latent: 64, width_latent: 64 } }
|
| 294 |
}
|
| 295 |
}
|
|
|
|
| 261 |
async function load_models(models) {
|
| 262 |
let loadedCount = 0;
|
| 263 |
for (const [name, model] of Object.entries(models)) {
|
| 264 |
+
const model_bytes = await getModelOPFS(model.url.split('/').pop(), model.url, false);
|
| 265 |
const sess_opt = { ...opt, ...model.opt };
|
| 266 |
// profiling
|
| 267 |
//ort.env.webgpu.profiling = { mode: "default" };
|
|
|
|
| 279 |
|
| 280 |
const models = {
|
| 281 |
"unet": {
|
| 282 |
+
url: `${getModelsPath()}sdturbo-unet.onnx`, size: 640,
|
| 283 |
// should have 'steps: 1' but will fail to create the session
|
| 284 |
opt: { freeDimensionOverrides: { batch_size: 1, num_channels: 4, height: 64, width: 64, sequence_length: 77, } }
|
| 285 |
},
|
| 286 |
"text_encoder": {
|
| 287 |
+
url: `${getModelsPath()}sdturbo-text-encoder.onnx`, size: 1700,
|
| 288 |
// should have 'sequence_length: 77' but produces a bad image
|
| 289 |
opt: { freeDimensionOverrides: { batch_size: 1, } },
|
| 290 |
},
|
| 291 |
"vae_decoder": {
|
| 292 |
+
url: `${getModelsPath()}sdturbo-vae-decoder.onnx`, size: 95,
|
| 293 |
opt: { freeDimensionOverrides: { batch_size: 1, num_channels_latent: 4, height_latent: 64, width_latent: 64 } }
|
| 294 |
}
|
| 295 |
}
|
demos/tflite-gemma/index.js
CHANGED
|
@@ -14,14 +14,14 @@
|
|
| 14 |
|
| 15 |
// ---------------------------------------------------------------------------------------- //
|
| 16 |
|
| 17 |
-
import {FilesetResolver, LlmInference} from 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai';
|
| 18 |
|
| 19 |
const input = document.getElementById('input');
|
| 20 |
const output = document.getElementById('output');
|
| 21 |
const submit = document.getElementById('submit');
|
| 22 |
const status = document.getElementById('status');
|
| 23 |
|
| 24 |
-
const modelFileName =
|
| 25 |
let startTime;
|
| 26 |
|
| 27 |
/**
|
|
@@ -50,7 +50,7 @@ async function runDemo() {
|
|
| 50 |
const genaiFileset = await FilesetResolver.forGenAiTasks(
|
| 51 |
'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/wasm');
|
| 52 |
let llmInference;
|
| 53 |
-
const modelBuffer = new Int8Array(await getModelOPFS(modelFileName, modelFileName, false));
|
| 54 |
|
| 55 |
submit.onclick = () => {
|
| 56 |
startTime = performance.now();
|
|
|
|
| 14 |
|
| 15 |
// ---------------------------------------------------------------------------------------- //
|
| 16 |
|
| 17 |
+
import {FilesetResolver, LlmInference} from 'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai@0.10.12/wasm/genai_wasm_internal.min.js';
|
| 18 |
|
| 19 |
const input = document.getElementById('input');
|
| 20 |
const output = document.getElementById('output');
|
| 21 |
const submit = document.getElementById('submit');
|
| 22 |
const status = document.getElementById('status');
|
| 23 |
|
| 24 |
+
const modelFileName = `gemma-2b-it-gpu-int4.bin`; /* Update the file name */
|
| 25 |
let startTime;
|
| 26 |
|
| 27 |
/**
|
|
|
|
| 50 |
const genaiFileset = await FilesetResolver.forGenAiTasks(
|
| 51 |
'https://cdn.jsdelivr.net/npm/@mediapipe/tasks-genai/wasm');
|
| 52 |
let llmInference;
|
| 53 |
+
const modelBuffer = new Int8Array(await getModelOPFS(modelFileName.split('/').pop(), modelFileName, false));
|
| 54 |
|
| 55 |
submit.onclick = () => {
|
| 56 |
startTime = performance.now();
|
demos/tjs-moondream/tjs-moondream.mp4
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:ff63f88cd5ad127f34c788482ea19d5c02a2fe04fa425abc1df83f684e2ec5f3
|
| 3 |
+
size 603647
|
gallery.html
CHANGED
|
@@ -65,16 +65,15 @@
|
|
| 65 |
video.controls = true;
|
| 66 |
|
| 67 |
const a = document.createElement('a');
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
a.style.fontSize = 28;
|
| 71 |
-
if (demoInfo.openInNewTab) {
|
| 72 |
-
a.target = '_blank';
|
| 73 |
} else {
|
| 74 |
-
a.
|
| 75 |
-
setSampleIFrameURL(e, demoInfo);
|
| 76 |
-
};
|
| 77 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
|
| 79 |
li.appendChild(video);
|
| 80 |
li.appendChild(a);
|
|
|
|
| 65 |
video.controls = true;
|
| 66 |
|
| 67 |
const a = document.createElement('a');
|
| 68 |
+
if (demoInfo.filename.startsWith('https')) {
|
| 69 |
+
a.href = demoInfo.filename;
|
|
|
|
|
|
|
|
|
|
| 70 |
} else {
|
| 71 |
+
a.href = `demos/${demoInfo.filename}`;
|
|
|
|
|
|
|
| 72 |
}
|
| 73 |
+
a.textContent = `${demoInfo.name || key}`;
|
| 74 |
+
a.title = demoInfo.description;
|
| 75 |
+
a.style.fontSize = 28;
|
| 76 |
+
a.target = '_blank';
|
| 77 |
|
| 78 |
li.appendChild(video);
|
| 79 |
li.appendChild(a);
|