如何在React Webpack JS中使用WASM Tiktoken

构建问题是由于wasm未能实例化或未导入wasm引起的。

wasm.__wbindgen_add_to_stack_pointer 不是一个函数


回答:

为了在React中使用tiktoken wasm以获得更好的性能,请按照以下步骤进行webpack 5的配置。

在webpack配置中添加以下覆盖。你也可以直接从js cdn使用wasm。如果你想使用cdn,可以跳过这一步:

module.exports = (config, env) => {  config.experiments = {    asyncWebAssembly: true,    layers: true,  };}

使用配置覆盖来使用tiktoken:

import { get_encoding, init } from 'tiktoken/init';import wasm from 'tiktoken/tiktoken_bg.wasm';  let tikInit = false;  const countTokens= (str) =>{    if (!tikInit) {    tikInit = true;      const wasmFile = await fetch(wasm);      const buffer = await wasmFile.arrayBuffer();      await init((imports) => WebAssembly.instantiate(buffer, imports));    }    const e = get_encoding('cl100k_base');    const t = e.encode(str);    e.free();    return t.length;  }

使用js cdn来获取wasm并在不使用配置覆盖的情况下使用tiktoken:

import { get_encoding, init } from 'tiktoken/init';import wasm from 'tiktoken/tiktoken_bg.wasm';  let tikInit = false;  const countTokens= (str) =>{    if (!tikInit) {    tikInit = true;}   const wasmFile = await fetch(      'https://cdn.jsdelivr.net/npm/[email protected]/tiktoken_bg.wasm'    );       const buffer = await wasmFile.arrayBuffer();      await init((imports) => WebAssembly.instantiate(buffer, imports));    }    const e = get_encoding('cl100k_base');    const t = e.encode(str);    e.free();    return t.length;  }

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注