当前位置: 首页 > news >正文

前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革

除了调用别人的api接口使用transformer技术,你是否想过将大模型在浏览器中运行呢?尤其是WebGPU的出现,性能比WebGL高不少,很多小任务真的不再需要在一个中心运行了。

不少同学买课学python了,但我还是在坚持用js尝试,相信一切都可以用js实现的,下面就介绍下我是如何实现的吧~~

随着人工智能和深度学习的普及,越来越多的应用开始借助强大的预训练模型来处理文本、图像等数据。然而,大多数这类模型需要依赖于云端服务器,用户端必须通过网络调用后端的API,这不仅带来了延迟问题,还可能引发隐私和数据安全的担忧。为了解决这些挑战,Xenova 团队推出了 Transformer.js,一个基于 JavaScript 的库,让开发者可以在浏览器中本地加载和执行预训练模型,摆脱服务器的依赖。

前置知识和准备

  • javascript 相关的web知识,创建一个html文件,引入库
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>网页大模型</title>
</head>
<body><div id="app"><div id="zh"></div><div id="en"></div><div id="info"></div></div><script type="module">import { pipeline, env } from "https://cdn.jsdelivr.net/npm/@xenova/transformers@2.17.2/dist/transformers.min.js";// 后续的代码在这里
</script>
</body>
</html>
  • 国内HF模型镜像站 (如果有代理可忽略)
env.remoteHost = 'https://hf-mirror.com'

什么是 Transformer.js?

Transformer.js 是 Xenova 团队开发的一个 JavaScript 库,旨在让用户能够在浏览器或 Node.js 环境中运行 Transformer 模型,而不需要依赖于后端服务器。这个库的核心功能是使用 WebAssembly(Wasm)和 WebGPU 等技术,将复杂的深度学习任务本地化执行。

Transformer.js 支持的模型涵盖了 Hugging Face 的 Transformers 模型库,包括 GPT、BERT、T5 等,广泛应用于自然语言处理任务,如文本生成、情感分析、翻译等。

Transformer是一种架构,现在很多模型,包括大语言模型,大都基于此构建,这里就不展开了,感兴趣的可以看相关论文,尤其是Attention is all you need。

Xenova系列

Xenova 的核心目标是让机器学习技术更加普及且易于访问。他们的愿景是通过提供开源工具,让每个人都能在任意设备上高效使用 AI 模型,甚至无需依赖强大的后端服务器。Transformer.js 便是这个愿景的关键实现,用户能够直接在浏览器中使用这些强大的 Transformer 模型。

欢迎pr构建生态,因为它是ONNX Runtime 的web/node端实现,所以PyTorch, TensorFlow, JAX 等构建的模型都可以转化成onnx的,想要构建自己的模型参考下面的github仓库说明xenova/transformers.js: State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! (github.com)icon-default.png?t=O83Ahttps://github.com/xenova/transformers.js

Transformer.js 的主要特点

1. 无后端依赖

Transformer.js 使用户可以在浏览器中本地运行 Transformer 模型,不再依赖服务器端的推理服务。所有的计算都在客户端完成,既减少了延迟,又消除了数据传输的隐私隐患。

2. 模型加载和使用便捷

通过简单的几行代码,开发者可以加载和使用 Hugging Face Transformers 模型。例如,以下代码展示了加载一个中文转英文模型:

// 定义要使用的模型和任务类型 const task = "text-classification";const model = "Xenova/opus-mt-zh-en";const infoEl = document.getElementById('info');const pipe = pipeline("text2text-generation", model, {progress_callback: d=>{infoEl.innerHTML = JSON.stringify(d);},});

然后我们调用这个定义好的管道

    const zhEl = document.getElementById('zh');const enEl = document.getElementById('en');const app = document.getElementById('app');const start = Date.now();async function main() {const zh = "你好吗?";zhEl.innerHTML = `中文:${zh}`;const transfer1 = await pipe;const res1 = await transfer1(zh);const en = res1[0].generated_text;enEl.innerHTML = '英文:' + en;infoEl.innerHTML = `耗时:${Date.now() - start}ms`;}main();

右键html文件,选择打开方式->chrome,首次打开需要等待模型加载,后续就不用了(可以试试别的中文,测试下效果)

3. 跨平台支持 - Web+Nodejs

Transformer.js 在浏览器和 Node.js 环境中都可以无缝运行,适用于各种设备和操作系统。同时,借助 WebAssembly,Transformer.js 可以在大多数现代浏览器中提供原生般的性能表现。 

4. 性能优化

通过使用 WebAssembly 和 WebGPU,Transformer.js 能够显著提高模型推理的速度,尤其是在具有高性能图形处理单元(GPU)的设备上。相比传统的 JavaScript 数学库,它能够更高效地执行深度学习模型。

5. 开源与社区支持

Transformer.js 是一个完全开源的项目,任何人都可以参与贡献或者在项目的 GitHub 仓库中提出问题。Xenova 致力于维护活跃的开发者社区,不断优化和扩展该项目。

Transformer.js 的应用场景

由于 Transformer.js 使得模型推理可以完全在客户端完成,因此它非常适合以下应用场景:

1. 隐私保护

在一些敏感应用中,如医疗数据处理或个人隐私数据的分析,用户的数据无需发送到服务器端进行处理,而是直接在本地完成推理,减少数据泄露的风险。

2. 离线应用

许多应用在没有网络连接的情况下仍然需要处理任务,比如离线聊天机器人、离线翻译工具等。Transformer.js 使得这些离线应用的实现变得更加简单和高效。

3. 低延迟交互

通过消除与服务器的往返延迟,Transformer.js 能够提供实时的推理结果。例如,用户可以在网页上直接使用实时的文本生成或情感分析功能,而不会因为网络延迟而影响体验。

4. 教育与研究

学生和研究人员可以使用 Transformer.js 在本地实验机器学习模型,无需租用昂贵的云计算资源,也不必担心学习过程中的数据外泄问题。

Transformer.js 与 TensorFlow.js 的对比

随着浏览器端机器学习技术的不断发展,多个工具库应运而生。Transformer.jsTensorFlow.js 是其中两个重要的框架,它们都旨在让开发者能够在浏览器或客户端上运行机器学习模型。虽然二者的目标有相似之处,但在设计思路、使用场景和技术实现上却有显著差异。以下章节将对 Transformer.jsTensorFlow.js 进行详细对比,帮助开发者根据具体需求选择适合的工具。

方面Transformer.jsTensorFlow.js
主要用途自然语言处理 (NLP) 推理通用机器学习任务(推理与训练)
支持模型Transformer 模型(GPT、BERT、T5 等)各类神经网络模型(CNN、RNN、强化学习等)
推理与训练能力仅支持推理支持推理和训练
计算加速WebAssembly, WebGPUWebGL, Wasm, WebGPU
生态支持紧密集成 Hugging Face丰富的社区与官方支持,支持 TensorFlow 生态
学习曲线简单易用,适合 NLP 应用较为复杂,适合广泛的机器学习任务

Transformer.js 更适合专注于 NLP 推理的场景,而 TensorFlow.js 则是一个通用性更强的框架,适合涉及不同领域的机器学习任务以及模型训练的需求。根据具体的项目需求和开发者的熟悉程度,选择合适的工具将帮助更高效地实现目标。

未来发展方向-端云结合

随着浏览器技术的不断进步,如 WebGPU 的广泛应用,Transformer.js 的性能和适用范围将进一步提升。Xenova 计划在未来添加更多预训练模型的支持,并优化其在移动设备等低性能环境下的表现。同时,随着 JavaScript 生态的持续扩展,Transformer.js 有潜力成为构建浏览器端 AI 应用的核心工具之一。

正如我在最新llama3.2小参数版本1B的古董机测试中说的那样,端云结合才是趋势。

结论

Transformer.js 通过让 Transformer 模型直接在浏览器或 Node.js 环境中运行,解决了传统机器学习应用中的许多痛点。无论是出于隐私保护、实时性需求,还是离线应用的需求,Transformer.js 都为开发者提供了新的可能性

后续会出应用类的文章,切记住本文的那一定点内容,后续的大模型进阶,基本上都是基于这个库,也默认你配置了国内镜像源

相关文章:

前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革

除了调用别人的api接口使用transformer技术&#xff0c;你是否想过将大模型在浏览器中运行呢&#xff1f;尤其是WebGPU的出现&#xff0c;性能比WebGL高不少&#xff0c;很多小任务真的不再需要在一个中心运行了。 不少同学买课学python了&#xff0c;但我还是在坚持用js尝试&a…...

计算机性能指标之MFLOPS

1. MFLOPS的定义与计算方式 定义&#xff1a;MFLOPS&#xff0c;全称Million Floating-point Operations Per Second&#xff0c;即每秒百万次浮点运算&#xff0c;是衡量计算机系统浮点运算能力的一个重要技术指标。 计算方式&#xff1a;MFLOPS的计算公式为“浮点操作次数 /…...

Sharp.js:简单而又实用的图像处理库

前言 在现代Web开发中&#xff0c;图像处理是一个不可或缺的部分。 前端开发者经常需要处理图像&#xff0c;以确保它们在不同的设备和分辨率上都能保持良好的显示效果。 sharp.js是一个高性能的Node.js模块&#xff0c;它利用了libvips库&#xff0c;提供了快速且高效的图像…...

Rust环境安装配置

要加速安装 Rust 和 git-cliff&#xff0c;可以配置国内的镜像源。特别是在国内访问 Rust 官方的安装源时&#xff0c;可能会遇到速度较慢的问题。通过配置 TUNA&#xff08;清华大学开源软件镜像站&#xff09;的镜像源&#xff0c;可以大幅提升安装速度。 1. 配置国内镜像加…...

衡石分析平台系统管理手册-功能配置之全局 JS 设置

全局 JS 设置​ 衡石系统提供了全局 JS 设置功能&#xff0c;用户可以通过自定义 JS 代码实现系统的个性化需求&#xff0c;如使用第三方统计工具对系统平台的 PV 、UV 进行监测。 使用场景​ 场景1&#xff1a;增加百度统计​ 下图示例中使用 js 代码引用了百度网站统计功…...

OpenHarmony(鸿蒙南向)——平台驱动开发【MIPI DSI】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 DSI&#xff08;Display Serial Interface&#x…...

C++_一篇文章让你弄懂各类(运算符)

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 本章将逐一介绍算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和…...

顺序表算法题 —— 移除元素、删除有序数组中的重复项、合并两个有序数组

目录 一、顺序表算法题 1、移除元素 2、删除有序数组中的重复项 3、 合并两个有序数组 二、顺序表问题与思考 一、顺序表算法题 1、移除元素 移除元素 - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a; 思路一&#xff1a;创建一个新数组&#xff0c;开辟…...

配置ssh后又报错git@github.com: Permission denied (publickey)

再添加一次ssh有用 ssh-add ~/.ssh/你的id_rsa的名字可以先运行 eval "$(ssh-agent -s)"再添加&#xff0c;Jesus每次重启terminal都要输入一遍 报错 gitgithub.com: Permission denied (publickey) 通常是由于 SSH 公钥没有正确配置或者 GitHub 上未能识别你的公钥…...

yolov10安装体验

按照官网 conda create -n yolov10 python=3.9 conda activate yolov10 pip install -r requirements.txt pip install -e . 一路安装,运行yolov10的问题,初次接触的同学可以注意。 Set arbitrary_types_allowed=True in the model_config to ignore this error f you got th…...

使用Docker-Compose部署SpringBoot项目的案例

Docker-Compose是Docker官方的一个开源项目&#xff0c;主要用于实现对Docker容器集群的快速编排和管理。该项目由Python编写&#xff0c;通过调用Docker服务提供的API来管理容器。只要所操作的平台支持Docker API&#xff0c;就可以利用Docker-Compose进行编排管理。Docker-Co…...

大话 RCU (read copy update)

还得是看官方文档。kernel/Document/RCU/WhatisRCU.rst. 首先&#xff0c;我们要搞清楚一件事&#xff0c;指针它是一个变量&#xff0c;他在内存上也是占了空间的&#xff0c;然后他里面的值&#xff0c;是你申请的内存块的首地址。文档开篇就讲咱们的基本原理&#xff0c;就…...

vue项目npm run serve 报错,Error: read ECONNRESET at TCP.onStreamRead

背景&#xff1a;vue2的项目&#xff0c;之前npm run serve一直可以正常使用&#xff0c;突然每次启动都会报错了&#xff0c;报错信息如下&#xff1a; node:events:492 throw er; // Unhandled error event ^ Error: read ECONNRESET at TCP.onStreamRead (n…...

十二、MySQL数据类型精讲

文章目录 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择&#xff1f; 3. 浮点类型3.1 类型介绍3.2 数据精度说明3.3 精度误差说明 4. 定点数类型4.1 类型介绍4.2 开发中经验 5. 位类型&#xff1a;BI…...

不同参数对分类精度的影响以及思考

1 问题 探索不同的batch_size对分类精度的影响探索不同的损失函数对分类精度的影响 2 方法 问题一 要知道的是Batch_size的作用&#xff1a;决定了下降的方向。在合理范围内&#xff0c;增大Batch_size的好处&#xff1a; 一是提高了内存利用率以及大矩阵乘法的并行化效率&…...

开源AI智能名片小程序源码:私域电商构建独特竞争力的新机遇

摘要&#xff1a;本文旨在探讨私域电商如何利用开源AI智能名片小程序源码构建独特竞争力。在强调独特性是通向成功的必要条件的基础上&#xff0c;分析开源AI智能名片小程序源码在私域电商发展独特性方面的作用及相关策略。 一、引言 在竞争激烈的商业环境中&#xff0c;让自己…...

从Web2到Web3:探索下一代互联网的无限可能性

互联网经历了从Web1到Web2的重大变革&#xff0c;现在正迈向Web3。Web2通过社交媒体、电子商务和内容平台改变了我们的数字生活&#xff0c;但同时也伴随着中心化平台的垄断和用户数据被广泛控制的问题。而Web3的出现&#xff0c;则试图通过去中心化技术解决这些挑战&#xff0…...

POE供电支持画中画的摄像头解决方案

首先他的主芯片由嵌入式操作系统和高性能硬件处理平台&#xff0c;具有较高稳定性和可靠性&#xff0c;有丰富的接口&#xff0c;可以支持二次开发定制的. 首先&#xff0c;什么是poe供电呢&#xff1f;Poe供电是通过网络线&#xff08;网线&#xff09;供电的一种技术&#x…...

Python 3 字典

Python 3 字典 引言 Python 字典(Dictionary)是一种非常有用的内置数据类型,用于存储键值对。在 Python 3 中,字典保持了一些基本特性,同时也有一些新的改进和特性。本文将详细介绍 Python 3 中的字典,包括其基本操作、常用方法以及一些高级特性。 字典的基本操作 创…...

CFR( Java 反编译器)

一、安装教程 CFR&#xff08;Class File Reader&#xff09;是一个流行的Java反编译器&#xff0c;它可以将编译后的.class文件或整个.jar文件转换回Java源代码。以下是CFR的下载和使用教程&#xff1a; 下载CFR 访问CFR的官方网站或GitHub仓库&#xff1a;CFR的最新版本和所…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...