js-pytorch

GitHub
1.2k 56 非常简单 1 次阅读 今天MIT开发框架
AI 解读 由 AI 自动生成,仅供参考

js-pytorch 是一款专为 JavaScript 环境打造的深度学习库,旨在让开发者能在前端或 Node.js 中体验类似 PyTorch 的开发流程。它从零构建,高度还原了 PyTorch 的语法风格,使得熟悉 Python 深度学习框架的用户能够无缝切换至 JavaScript 生态,无需重新学习复杂的 API 设计。

该工具主要解决了传统深度学习模型难以直接在浏览器或纯 JavaScript 项目中运行与训练的痛点。通过集成 GPU.js,js-pytorch 支持 GPU 加速计算,显著提升了张量运算和神经网络训练的效率,让复杂的数学运算不再完全依赖 CPU。

js-pytorch 非常适合 Web 全栈开发者、希望在浏览器端进行模型原型的算法研究人员,以及对前端人工智能感兴趣的学习者。无论是构建交互式 AI 演示,还是在服务端利用 JS 技术栈进行轻量级模型训练,它都能提供强有力的支持。

在技术特性上,js-pytorch 不仅实现了加减乘除、矩阵乘法、转态等基础张量操作,还涵盖了线性层(nn.Linear)等核心深度学习模块,并提供了完整的文档与在线演示供用户快速上手。作为一个开源项目,它为 JavaScript 社区填补了原生高性能深度学习框架的空白,让 AI 开发变得更加触手可及。

使用场景

某前端团队希望在浏览器端直接运行轻量级图像分类模型,让用户上传照片后无需等待服务器响应即可实时获得分析结果。

没有 js-pytorch 时

  • 架构复杂成本高:必须搭建独立的 Python 后端服务来承载 PyTorch 模型,前端需通过 HTTP 请求往返传输图片数据,增加了服务器运维成本和网络延迟。
  • 技术栈割裂:前端开发人员不熟悉 Python 生态,无法直接参与模型推理逻辑的优化或调试,必须依赖后端同事协作,沟通效率低下。
  • 隐私与离线受限:用户图片必须上传至云端处理,无法满足对数据隐私敏感的场景需求,且在无网络环境下功能完全不可用。
  • GPU 加速难实现:纯 JavaScript 手动实现矩阵运算极其缓慢,无法利用客户端显卡资源,导致在浏览器中运行复杂模型时页面卡顿甚至崩溃。

使用 js-pytorch 后

  • 全栈 JS 一体化:直接复用熟悉的 PyTorch 语法在 JavaScript 中构建和运行模型,前端团队可独立闭环完成从数据处理到推理的全流程,无需维护额外后端。
  • 原生 GPU 加速:借助内置的 GPU.js 支持,自动调用用户设备的显卡进行并行计算,将原本秒级的推理过程缩短至毫秒级,确保交互流畅。
  • 隐私安全且离线可用:所有计算均在用户浏览器本地完成,图片数据不出设备,既满足了严格的隐私合规要求,也实现了真正的离线智能应用。
  • 开发体验无缝迁移:支持线性层、矩阵乘法等核心算子与 PyTorch 高度一致,降低了算法工程师向 Web 端迁移模型的学习门槛和代码重构工作量。

js-pytorch 成功打破了深度学习框架的语言壁垒,让高性能 AI 推理能像普通前端功能一样轻松嵌入网页。

运行环境要求

操作系统
  • macOS
  • Windows
  • Ubuntu
GPU
  • 非必需
  • 支持通过 GPU.js 进行 GPU 加速,未指定具体显卡型号、显存大小或 CUDA 版本要求(基于 WebGL/WebGPU 或 OpenCL 实现)
内存

未说明

依赖
notes1. 该工具是纯 JavaScript 深度学习库,无需 Python 环境。2. 在 Windows 上若安装报错,可能需要安装包含'C++ 桌面开发'工作负载的 Visual Studio。3. 可直接在浏览器中通过 CDN 引入使用,也可在 Node.js 环境中通过 npm 安装使用。4. 实例化模块时需传入 'gpu' 或 'cpu' 字符串来指定设备。
python不需要 (这是一个 JavaScript/TypeScript 库)
gpu.js
js-pytorch hero image

快速开始

js-torch

PyTorch 在 JavaScript 中

  • JS-PyTorch 是一个从零开始构建的深度学习 JavaScript 库,其语法与 PyTorch 非常接近。
  • 该库支持 GPU 加速,使用 GPU.js 实现。
  • 如果您想亲自运行它,请查看 文档
  • 试试 在线演示吧!

注意: 您可以通过 npm install js-pytorch 在本地安装该包。


已实现的张量 操作
已实现的深度学习

1.目录

2. 安装

  • MacOSWindowsUbuntu 上,你可以使用 npm install js-pytorch 来安装该库。
  • Windows 上,如果遇到错误,你可能需要安装最新版本的 Visual Studio,并确保包含“使用 C++ 的桌面开发”工作负载。
  • 若要在 浏览器 中运行,请将以下标签粘贴到你的 HTML 文件的 <head> 部分:
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-pytorch/0.7.2/js-pytorch-browser.js"
        integrity="sha512-l22t7GnqXvHBMCBvPUBdFO2TEYxnb1ziCGcDQcpTB2un16IPA4FE5SIZ8bUR+RwoDZGikQkWisO+fhnakXt9rg=="
        crossorigin="anonymous"
        referrerpolicy="no-referrer"></script>
  • 安装完成后,你可以在 HTML 文件中的任何 <script> 标签内自由使用 JS-PyTorch:
<head>
    <title>我的项目</title>
    <!-- 新的脚本放在这里 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/js-pytorch/0.7.2/js-pytorch-browser.js" 
            integrity="sha512-l22t7GnqXvHBMCBvPUBdFO2TEYxnb1ziCGcDQcpTB2un16IPA4FE5SIZ8bUR+RwoDZGikQkWisO+fhnakXt9rg=="
            crossorigin="anonymous" 
            referrerpolicy="no-referrer">
    </script>
    <!---->
</head>
<body>
    <script>
        let x = torch.randn([10,5])
        let linear = new torch.nn.Linear(5,1,'gpu',true)
        let z = linear.forward(x)
        console.log(z.data)
    </script>
</body>

3. 自行运行

简单的 autograd 示例:

// 如果在 Node.js 中运行,需引入库(浏览器中无需):
const { torch } = require("js-pytorch");

// 将设备作为参数传递给 Tensor 或 nn.Module(与 PyTorch 相同):
const device = 'gpu';

// 实例化张量:
let x = torch.randn([8, 4, 5]);
let w = torch.randn([8, 5, 4], true, device);
let b = torch.tensor([0.2, 0.5, 0.1, 0.0], true);

// 进行计算:
let out = torch.matmul(x, w);
out = torch.add(out, b);

// 计算整个图的梯度:
out.backward();

// 获取特定张量的梯度:
console.log(w.grad);
console.log(b.grad);

复杂的 autograd 示例(Transformer):

// 如果在 Node.js 中运行,需引入库(浏览器中无需):
const { torch } = require("js-pytorch");
const nn = torch.nn;
const optim = torch.optim;

const device = 'gpu';

// 定义训练超参数:
const vocab_size = 52;
const hidden_size = 32;
const n_timesteps = 16;
const n_heads = 4;
const dropout_p = 0;
const batch_size = 8;

// 创建 Transformer 解码器模块:
class Transformer extends nn.Module {
  constructor(vocab_size, hidden_size, n_timesteps, n_heads, dropout_p, device) {
    super();
    // 实例化 Transformer 的各层:
    this.embed = new nn.Embedding(vocab_size, hidden_size);
    this.pos_embed = new nn.PositionalEmbedding(n_timesteps, hidden_size);
    this.b1 = new nn.Block(hidden_size, hidden_size, n_heads, n_timesteps, dropout_p, device);
    this.b2 = new nn.Block(hidden_size, hidden_size, n_heads, n_timesteps, dropout_p, device);
    this.ln = new nn.LayerNorm(hidden_size);
    this.linear = new nn.Linear(hidden_size, vocab_size, device);
  }

  forward(x) {
    let z;
    z = torch.add(this.embed.forward(x), this.pos_embed.forward(x));
    z = this.b1.forward(z);
    z = this.b2.forward(z);
    z = this.ln.forward(z);
    z = this.linear.forward(z);
    return z;
  }
}

// 实例化自定义的 nn.Module:
const model = new Transformer(vocab_size, hidden_size, n_timesteps, n_heads, dropout_p, device);

// 定义损失函数和优化器:
const loss_func = new nn.CrossEntropyLoss();
const optimizer = new optim.Adam(model.parameters(), (lr = 5e-3), (reg = 0));

// 实例化样本输入和输出:
let x = torch.randint(0, vocab_size, [batch_size, n_timesteps, 1]);
let y = torch.randint(0, vocab_size, [batch_size, n_timesteps]);
let loss;

// 训练循环:
for (let i = 0; i < 40; i++) {
  // 前向传播通过 Transformer:
  let z = model.forward(x);

  // 计算损失:
  loss = loss_func.forward(z, y);

  // 使用 torch.tensor 的 backward() 方法反向传播损失:
  loss.backward();

  // 更新权重:
  optimizer.step();

  // 每次训练步骤后将梯度重置为零:
  optimizer.zero_grad();

  // 每次迭代打印损失:
  console.log(`第 ${i} 次迭代 - 损失 ${loss.data[0].toFixed(4)}`)
}

保存和加载模型:

// 实例化你的模型:
const model = new Transformer(vocab_size, hidden_size, n_timesteps, n_heads, dropout_p);

// 训练模型:
trainModel(model);

// 将模型保存为 JSON 文件:
torch.save(model, 'model.json')

// 加载时,先用原始模型的架构实例化占位符:
const placeHolder = new Transformer(vocab_size, hidden_size, n_timesteps, n_heads, dropout_p);

// 将权重加载到占位符中:
const newModel = torch.load(placeHolder, 'model.json')

4. 发布与开发工具

  • 通过运行 npm run build 可以构建用于发布的代码。CJS 和 ESM 模块以及 index.d.ts 文件将会输出到 dist/ 文件夹中。
  • 随时可以使用 ESLint 检查代码,运行 npm run lint
  • 运行测试:npm test
  • 使用 prettier 改善代码格式,运行 npm run prettier
  • 性能基准测试也包含在 tests/benchmarks/ 目录中。使用 npm run bench 运行所有基准测试,并使用 npm run bench:update 保存新的基准测试。

5. 未来工作

  • 该包目前尚未像 PyTorch 那样经过高度优化,但我已尽力使其更易于理解。效率方面的改进即将到来!
  • 欢迎大家 贡献代码!请创建一个指向 develop 分支的合并请求,或者直接与我联系。我会尽快回复。
  • 希望你喜欢!

版本历史

v0.7.22024/10/30
v0.4.72024/07/20
v0.3.02024/04/02
v0.1.12024/03/26

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|3天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

147.9k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|昨天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|3天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|3天前
语言模型图像Agent