NodeJS zsh:非法硬件指令npm运行启动服务器

nnsrf1az  于 2023-03-17  发布在  Node.js
关注(0)|答案(2)|浏览(150)

目标:使用TensorFlow.js在服务器端构建用于训练和分类模型的Node.jsWeb服务器我正在尝试执行this tutorial以学习TensorFlow. js。
预期成果:服务器应该在本地运行在一个适当的端口上,如所示。

$ npm run start-server
...
  > Running socket on port: 8001
Epoch 1 / 1
eta=0.0 ========================================================================================================>
2432ms 34741us/step - acc=0.429 loss=1.49

实际结果:服务器未运行

@MacBook-Pro baseball % npm run start-server

> tfjs-examples-baseball-node@0.2.0 start-server
> node server.js

zsh: illegal hardware instruction  npm run start-server

我的硬件和软件配置:

  • MacBook Pro(13英寸,M1,2020年)
  • 芯片:苹果M1
  • macOS大苏尔版本11.4
  • @tensorflow /tfjs节点:第1.3.2节
  • Node.js版本:版本14.17.5
  • Xcode 12.5.1 /构建版本12 E507

在这个阶段,我已经记不起我读过多少个Github问题和Stackoverflow问题来解决这个问题,但没有成功。
1.尝试使用之前版本的@tensorflow/tfjs-node,如1.2.0和1.0.0。
1.已尝试最新版本的@tensorflow/tfjs-node,即3.8.0
1.检查我的Mac电脑上是否安装了Python 2.7.16和Python 3.9.6。
1.已删除node_modules和package-lock. json并运行npm安装
1.已将Node.js更新为最新版本。
1.已确保安装了Xcode。
这似乎是一个硬件兼容性问题,但我无法找到解决方案。请注意,我正在尝试使用TensorFlow的Javascript实现,而不是Python。

62o28rlo

62o28rlo1#

首先,tfjs-node包括二进制tensorflow实现(与python相同),JS部分只是一个 Package 器(tfjs-node安装程序实际上构建了到二进制的NAPI绑定)
第二,这是M1 CPU,不模拟x86指令集-并且根本不支持高级指令(例如AVX)。
由于您已经尝试过旧的tfjs-node v1.2(AVX之前的最后一个版本),唯一合适的解决方案是在M1硬件上从头构建tfjs-node-这是一个相当痛苦的过程,但并非不可能
如果你在github上搜索别人的端口,你可能会很幸运

更新日期:

苹果已经创建了一个TF分支,它使用苹果基于TF 2.4RC的ML库(以及可选的Metal库),
但看起来维护得不好--最后一次更新是在2021年3月。

第一步是让TF在Python中工作
那么就需要重新构建@tensorflow/tfjs-node包以使用该库,而不是预先绑定的库

pcww981p

pcww981p2#

好吧,如果你用的是Mac或者Linux,

然后尝试npm start或任何您希望的操作。
我的问题就是这样解决的。希望它也能从你的Angular 解决这个问题。谢谢。

相关问题