【发布时间】:2021-05-07 07:41:58
【问题描述】:
我正在使用以下代码启动 Webworker,它使用 Universal Sentence Encoder 创建嵌入
const initEmbeddingWorker = (filePath) => {
let worker = new Worker(filePath);
worker.postMessage({init: 'init'})
worker.onmessage = (e) => {
worker.terminate();
}
}
网络工作者代码
onmessage = function (e) {
if(e.data.init && e.data.init === 'init') {
fetchData();
}
}
const fetchData = () => {
//fetches data from indexeddb
createEmbedding(data, storeEmbedding);
}
const createEmbedding = (data, callback) => {
use.load().then(model => {
model.embed(data).then(embeddings => {
callback(embeddings);
})
});
}
const storeEmbedding = (matrix) => {
let data = matrix.arraySync();
//store data in indexeddb
}
使用同时运行的 10 个 Webworkers 创建 100 个嵌入需要 3 分钟,每个 worker 创建 10 个句子的嵌入。创建嵌入所花费的时间太大,因为我需要为 1000 多个句子创建嵌入,这大约需要 25 到 30 分钟。 每当此代码运行时,它都会占用所有资源,从而使机器变得非常缓慢且几乎无法使用。
是否缺少任何性能优化?
【问题讨论】:
-
应该已经用this issue修复了,你运行的是什么版本的TFJS?您可以尝试升级到最新版本吗?
-
更新库以使用 tensorflowjs 3.0 性能提升大约 10 秒。性能还必须取决于代码运行时 CPU、GPU 和 RAM 的当前利用率
标签: javascript web-worker tensorflow.js word-embedding