candle/candle-wasm-examples/t5
Nicolas Patry 403680f17d
Quantized GGUF style (#1523)
* Metal quantized modifications proposal.

- Add a device param, wherever needed.
- Create new QMetal storage thing that implements QuantizedType.
- Update everywhere needed.

Fix Python.

Fixing examples.

Fix: fmt + clippy + stub.

Moving everything around.

Only missing the actual implems.

Fixing everything + adding dequantized kernels.

More work.

Fixing matmul.

Fmt + Clippy

Some clippy fixes.

Working state.

Q2K Metal -> Bugged (also present in GGML).
Q4K CPU -> Bugged (present previously, new test catch it).
Q5K CPU -> Bugged (present previously).
Q8_1 Both -> Never really implemented it seems
Q8K metal -> Never implemented in metal

Fixing Q2K bug (present in ggml).

* Cleanup.

* Fix the rebase.

* Removing the fences speeds everything up and *is* correct this time...

* Cleanup the fence.

* After rebase.

* Bad code removal.

* Rebase after phi2 merge + fix replit default to CPU.

* Making the CI happy.

* More happy tests.

---------

Co-authored-by: Nicolas Patry <nicolas@Nicolass-MacBook-Pro.local>
2024-01-17 10:27:58 +01:00
..
src Quantized GGUF style (#1523) 2024-01-17 10:27:58 +01:00
Cargo.toml Update gloo requirement from 0.8 to 0.11 (#1558) 2024-01-10 16:27:20 +01:00
README.md T5 Wasm (#918) 2023-09-22 15:31:10 +01:00
T5ModelConditionalGeneration.js T5 Wasm (#918) 2023-09-22 15:31:10 +01:00
T5ModelEncoderWorker.js T5 Wasm (#918) 2023-09-22 15:31:10 +01:00
build-lib.sh T5 Wasm (#918) 2023-09-22 15:31:10 +01:00
index.html Quant t5: Add coedit model to wasm demo and readme (#1031) 2023-10-04 20:57:33 +01:00
utils.js Quant t5: Add coedit model to wasm demo and readme (#1031) 2023-10-04 20:57:33 +01:00

README.md

Running T5 with Candle and WASM

Here, we provide two examples of how to run Bert using a Candle-compiled WASM binary and runtime.

Vanilla JS and WebWorkers

To build and test the UI made in Vanilla JS and WebWorkers, first we need to build the WASM library:

sh build-lib.sh

This will bundle the library under ./build and we can import it inside our WebWorker like a normal JS module:

import init, { ModelConditionalGeneration, ModelEncoder } from "./build/m.js";

For the quantized version, we need to import the quantized module:

import init, { ModelConditionalGeneration, ModelEncoder } from "./build/m-quantized.js";

The full example can be found under ./index.html. All needed assets are fetched from the web, so no need to download anything. Finally, you can preview the example by running a local HTTP server. For example:

python -m http.server

Then open http://localhost:8000/index.html in your browser.