尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何在 Node.js 项目安装 onnxruntime-node 并在 Linux x64 上启用 CUDA EP
如何在 Node.js 项目安装 onnxruntime-node 并在 Linux x64 上启用 CUDA EP【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntime如果你的 Node.js 服务运行在 Linux x64 机器上需要用 ONNX Runtime 跑推理并希望把计算放到 GPU 上那么要完成两件事安装onnxruntime-node包让它在安装时自动拉取 CUDA EP 二进制然后在创建推理会话时把cuda传给executionProviders。onnxruntime 的 Node.js 绑定预构建二进制中CUDA 执行提供商只在 Linux x64 平台提供且基于 CUDA v12见 js/node/README.md。准备条件根据 js/node/README.md 的 Requirements 一节Node.js v16.x 及以上官方推荐 v20.x 及以上或 Electron v15.x 及以上推荐 v28.x 及以上平台必须是 Linux x64。预构建二进制的支持矩阵中CUDA 一列只有 Linux x64 打勾Windows、MacOS、Linux arm64 均不提供 CUDA EP该 CUDA EP 二进制对应 CUDA v12。自 v1.22 起CUDA v11 已不再支持README 中用删除线标注了旧说明。仓库中 Node.js 绑定的当前版本为 1.31.0见 js/node/package.json。安装 onnxruntime-node让 CUDA EP 二进制随包安装在项目目录下执行npm install onnxruntime-node安装 nightly 版本则使用npm install onnxruntime-nodedev关键点在linux/x64平台上CUDA EP 的运行时文件libonnxruntime_providers_cuda.so、libonnxruntime_providers_shared.so、libonnxruntime_providers_tensorrt.so不包含在 npm 包内因为体积太大无法放入 npm registry。包内postinstall脚本会在安装时从 NuGet feed 下载这些文件。这一行为的实现见 js/node/script/install.js 与 js/node/script/install-metadata.jsrequirements中linux/x64对应[cuda12]元数据清单linux/x64:cuda12列出了上述三个.so文件下载来源为 NuGet 包Microsoft.ML.OnnxRuntime.Gpu.Linux。需要注意的副作用postinstall会从网络下载二进制因此安装该包需要可访问 NuGet feed 的网络环境。下载走global-agent可通过GLOBAL_AGENT_HTTPS_PROXY等环境变量设置代理见 install.js 顶部注释。与安装行为相关的控制项均在 install.js 中实现用法效果不传参数默认行为检查缺失文件缺什么补什么--onnxruntime-node-installskip跳过非内置文件的安装例如npm install onnxruntime-node --onnxruntime-node-installskip--onnxruntime-node-installcuda12强制安装 CUDA 12 的 EP 二进制--onnxruntime-node-install强制安装清单中的文件环境变量ONNXRUNTIME_NODE_INSTALL等价于上述命令行参数README 明确给出的跳过命令是npm install onnxruntime-node --onnxruntime-node-installskip如果传入了显式安装值脚本会校验该值是否为当前平台支持的安装项否则抛出Invalid installation: ... for platform: ...错误本地仓库内直接安装时未传参数脚本会提前退出不触发下载。验证 CUDA EP 二进制已就位安装脚本将文件放到绑定包内的bin/napi-v6/linux/x64/目录代码中BIN_FOLDER path.join(__dirname, .., bin/napi-v6, PLATFORM)PLATFORM 为linux/x64。安装完成后在项目目录下检查ls node_modules/onnxruntime-node/bin/napi-v6/linux/x64/应能看到libonnxruntime_providers_cuda.so以及libonnxruntime_providers_shared.so、libonnxruntime_providers_tensorrt.so和绑定文件onnxruntime_binding.node。如果之前用了skip可以再用npm install --onnxruntime-node-installcuda12之类的强制安装参数补齐。创建推理会话时启用 CUDA EPNode.js 绑定通过InferenceSession.create的executionProviders选项选择执行提供商。该选项接受 EP 名字符串或对象形式必须含name属性这一点由单元测试 js/node/test/unittests/lib/inference-session.ts 覆盖例如InferenceSession.create(modelPath, { executionProviders: [cpu] })与非法 EP 名会报错的行为。启用 CUDA 的写法是const ort require(onnxruntime-node); const session await ort.InferenceSession.create( your_model.onnx, { executionProviders: [{ name: cuda, deviceId: 0 }], } );其中your_model.onnx替换为你自己的模型文件路径deviceId指定 GPU 设备编号。CUDA EP 在 Node.js 绑定中目前只解析deviceId这一选项——原生侧 js/node/src/session_options_helper.cc 中name cuda时创建OrtCUDAProviderOptionsV2并只赋值device_id再调用AppendExecutionProvider_CUDA_V2。传入不认识的 EP 名会抛出TypeError: ... executionProviders[... ] must be either a string or an object with property name一类的错误。推理流程可直接参照仓库自带的独立示例 js/node/test/standalone/main.ts它用一个内嵌的 MatMul 测试模型输入a为[3, 4]float32 张量输入b为[4, 3]演示了完整调用链按示例原样使用const tensorA new ort.Tensor(float32, Float32Array.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]), [3, 4]); const tensorB new ort.Tensor(float32, Float32Array.from([10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]), [4, 3]); const results await session.run({ a: tensorA, b: tensorB }); console.log(Result: ${results.c.data}); await session.release();返回结果是按输出名索引的对象results.c是输出张量。该示例运行成功后会打印SUCCESS: Inference completed和Result: ...文档示例输出。如需查看运行时日志绑定支持通过env.logLevel设置日志级别可选值见 js/node/lib/binding.tsverbose、info、warning、error、fatal。另外绑定导出listSupportedBackends()见 js/node/lib/index.ts返回当前绑定支持的 backend 列表每项含name与bundled字段可用于确认运行时实际加载了哪些后端。已知限制预构建二进制只在 Linux x64 提供 CUDA EP其余平台Windows x64/arm64、MacOS x64/arm64、Linux arm64不可用README 同时说明 Linux x64 还可用 TensorRTWindows 侧 GPU 支持的是 WebGPU 与 DirectML。CUDA EP 二进制只对应 CUDA v12CUDA v11 自 v1.22 起不再支持不要再使用已废弃的--onnxruntime-node-install-cuda/--onnxruntime-node-install-cudaskip参数改用--onnxruntime-node-installcuda12/skip。在没有预构建二进制的平台上README 给出的路径是从源码构建 Node.js 绑定后用npm install onnxruntime_repo_root/js/node/消费本地构建结果。Node.js 绑定侧 CUDA EP 目前只暴露deviceIdC API 中更完整的 CUDA 选项如 GPU 内存模式等未在此绑定中开放见 session_options_helper.cc。完成以上步骤后可以以js/node/test/standalone/main.ts作为基准会话创建不抛错、session.run返回预期输出的张量即说明 onnxruntime-node 与 CUDA EP 在你的 Linux x64 环境中已经可用。【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Wagtail 5.2 LTS 版本全解析:图片性能优化、OpenSearch 支持、ModelViewSet 增强与升级指南

Wagtail 5.2 LTS 版本全解析:图片性能优化、OpenSearch 支持、ModelViewSet 增强与升级指南

Wagtail 5.2 LTS 版本全解析:图片性能优化、OpenSearch 支持、ModelViewSet 增强与升级指南 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wagtai…

📅 2026/9/14 9:46:19
Zephyr 中 ElemRV Flask-N 开发板支持详解:开源 RISC-V MCU 的时钟、UART、GPIO 与设备树剖析

Zephyr 中 ElemRV Flask-N 开发板支持详解:开源 RISC-V MCU 的时钟、UART、GPIO 与设备树剖析

Zephyr 中 ElemRV Flask-N 开发板支持详解:开源 RISC-V MCU 的时钟、UART、GPIO 与设备树剖析 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware arch…

📅 2026/9/14 9:46:19
PixelFlow:macOS原生级屏幕增强工具链

PixelFlow:macOS原生级屏幕增强工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/14 9:46:19
MORE NEWS

更多资讯

📰

二自由度机械臂欧拉-拉格朗日建模与MATLAB仿真验证

简介:针对二自由度机械臂的逆动力学分析需求,一套MATLAB源码包给出了欧拉-拉格朗日动力学模型的完整实现,适合机器人控制、机械工程及自动化相关专业学生与研究人员学习和二次开发。代码以关节位置、速度、加速度为输入,利用拉格朗…

📰

C++多态深度解析:虚函数表、vptr与工程实战避坑指南

先抛一个我经常在面试和带新人的时候会问的问题:为什么把子类对象交给父类指针,调用一个虚函数却会执行子类的版本?很多人能背出“运行时多态”四个字,但真到了项目里,遇到虚函数表、纯虚函数、析构函数要不要加virtua…

📰

IP6537U:45W快充降压SOC芯片深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

蜡烛燃烧优化:材料科学与环境控制技术解析

1. 项目背景与挑战解析"点蜡烛最长时间"这个看似简单的行为艺术项目,实际上蕴含着对材料科学、燃烧原理和环境控制的深度探索。蜡烛燃烧持续时间的世界纪录目前由美国团队保持(约127小时),但普通家用蜡烛通常只能持续4-…

📰

AIGC短剧工业化:全链路生产方案实操指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Wagtail 4.0.1 补丁版本深度解析:四个关键 Bug 修复的技术内幕

Wagtail 4.0.1 补丁版本深度解析:四个关键 Bug 修复的技术内幕 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wagtail Wagtail 4.0.1 发布于…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬