Machine LearningΒΆ

This component is an experimental machine learning local inference engine. Currently there is no inference engine actually integrated yet.

Here is an example of the API:

// The engine process manages the life cycle of the engine. It runs in its own process.
// Models can consume large amounts of memory, and this helps encapsulate it at the
// operating system level.
const EngineProcess = ChromeUtils.importESModule("chrome://global/content/ml/EngineProcess.sys.mjs");

// The MLEngineParent is a JSActor that can communicate with the engine process.
const mlEngineParent = await EngineProcess.getMLEngineParent();

 * When implementing a model, there should be a class that provides a `getModel` function
 * that is responsible for providing the `ArrayBuffer` of the model. Typically this
 * download is managed by RemoteSettings.
class SummarizerModel {
   * @returns {ArrayBuffer}
  static getModel() { ... }

// An engine can be created using a unique name for the engine, and the function
// to get the model. This class handles the life cycle of the engine.
const summarizer = mlEngineParent.getEngine(

// In order to run the model, use the `run` method. This will initiate the engine if
// it is needed, and return the result. The messaging to the engine process happens
// through a MessagePort.
const result = await"A sentence that can be summarized.")

// The engine can be explicitly terminated, or it will be destroyed through an idle
// timeout when not in use, as the memory requirements for models can be quite large.