You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu VPS运行依赖@tensorflow/tfjs-node的应用报非法指令如何解决

问题根因

你遇到的Illegal instruction报错核心原因是官方预编译的@tensorflow/tfjs-node包默认启用了AVX、AVX2等现代指令集优化,但你使用的QEMU Virtual CPU version 2.5+未开启这些指令集支持,加载原生扩展时触发指令异常。

无需编译的快速解决方案

优先尝试以下方案,落地成本最低:

  • 切换纯JS后端的TensorFlow.js
    放弃依赖原生扩展的@tensorflow/tfjs-node,改用纯JS实现的@tensorflow/tfjs包,@vladmandic/face-api完全兼容该后端。修改项目依赖后,在初始化代码中添加tf.setBackend('cpu')指定CPU后端即可正常运行。该方案仅会损失部分计算性能,请求量不大的场景完全可用。
  • 安装低版本兼容包
    TensorFlow.js 2.7.0及更早版本的官方预编译包未强制要求AVX指令集,可直接安装适配:
    npm install @tensorflow/tfjs-node@2.7.0
    
    再安装对应兼容2.x版本tfjs的@vladmandic/face-api版本即可。
自定义编译适配版本的方案

如果必须使用高版本tfjs-node,可按以下步骤完成编译:

服务器本地编译(推荐)

你的VPS内存不足的问题可通过添加交换分区解决:

  1. 创建4G交换分区,执行以下命令:
    sudo fallocate -l 4G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile
    
    如需开机自动挂载交换分区,将/swapfile none swap sw 0 0追加到/etc/fstab文件中即可。
  2. 安装编译依赖:build-essential、python3、对应tf版本要求的bazel、git、和项目Node版本一致的Node.js运行环境。
  3. 克隆tfjs仓库,进入tfjs-node目录,编译时添加禁用AVX相关的参数:
    yarn build --config=opt --copt=-march=x86-64 --copt=-mno-avx --copt=-mno-avx2 --copt=-mno-fma
    
  4. 编译完成后会生成对应架构的npm安装包,直接在你的项目中本地安装该包即可。

Windows本地交叉编译

如需在Windows上编译,不要直接使用Windows原生环境,安装WSL2并运行Ubuntu 20.04子系统,在子系统中按照上述服务器编译步骤操作即可,生成的二进制可直接在VPS上使用。

内容的提问来源于stack exchange,提问作者Joseph.Botros

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 00:57:00