bergamot-translator/wasm
Graeme Nail 4b0da8d434
Enables model ensembles (#450)
* Enables model ensembles

Adds the ability to use ensembles of models. This supports ensembles of
binary- or npz-format models, as well as mixtures of both.

When all models in the ensembles are of binary format, the load from
memory path is used. Otherwise, they are loaded via the file system.
Enable log-level debug for output related to this.

* Fix formatting

* Fix WASM bindings for MemoryBundle

For now, this does not support ensembles.

* Remove shared_ptr wrapping the AlignedMemory of models.

* Fix formatting
2023-08-01 19:35:11 +01:00
..
bindings Enables model ensembles (#450) 2023-08-01 19:35:11 +01:00
module More portable WASM demo (#437) 2023-01-18 19:41:39 +00:00
test_page More portable WASM demo (#437) 2023-01-18 19:41:39 +00:00
CMakeLists.txt Upgrade emsdk to 3.1.8 (#414) 2022-04-20 00:39:32 +01:00
import-gemm-module.js JS/WASM: Re-enable importing optimized gemm module for (#336) 2022-02-07 16:55:31 +01:00
node-test.js Expand the node-test.js example code with documentation (#434) 2023-01-18 19:09:47 +00:00
patch-artifacts-enable-wormhole.sh Improved wasm scripts and README (#128) 2021-05-04 10:18:45 +01:00
patch-artifacts-import-gemm-module.sh Import optimized gemm implementation (when available) for wasm target (#265) 2021-11-17 09:18:55 +01:00
project_version.js.in Modified wasm cmake file to include version information in built artifacts 2021-05-17 19:34:58 +02:00
README.md Expand the node-test.js example code with documentation (#434) 2023-01-18 19:09:47 +00:00

Using Bergamot Translator in JavaScript

All the instructions below are meant to run from the current directory.

Using JS APIs

See node-test.js for an annotated example of how to use the WASM module. Most of the code from it can also be used in a browser context.

Alternatively refer to the file test_page/js/worker.js that demonstrates how to use the bergamot translator in JavaScript via a <script> tag.

Demo

  • Download bergamot model files required for translation

    Use following instructions to download model files (make sure that git-lfs is installed and initialized before running these instructions):

    cd test_page
    git clone --depth 1 --branch main --single-branch https://github.com/mozilla/firefox-translations-models/
    mkdir models
    cp -rf firefox-translations-models/registry.json models
    cp -rf firefox-translations-models/models/prod/* models
    cp -rf firefox-translations-models/models/dev/* models
    gunzip models/*/*
    
  • Start the test webserver (ensure you have the latest nodejs installed)

    cd test_page
    bash start_server.sh ../../build-wasm
    

    Provide the folder containing the wasm artifacts as the first argument of start_server.sh script (../../build-wasm in this case).

  • Open any of the browsers below

    • Firefox Nightly +87: make sure the following prefs are on (about:config)

      dom.postMessage.sharedArrayBuffer.bypassCOOP_COEP.insecure.enabled = true
      javascript.options.wasm_simd = true
      javascript.options.wasm_simd_wormhole = true
      
    • Chrome Canary +90: start with the following argument

      --js-flags="--experimental-wasm-simd"
      
  • Browse to the following page:

    http://localhost:80
    
  • Perform translations:

    • Choose the source and target languages using From and To dropdowns.
    • Type a sentence to be translated in the From textbox.
    • See the result in the To textbox.