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

news2024/9/27 10:39:15

除了调用别人的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 都为开发者提供了新的可能性

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2169715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux实践】实验九:Shell流程控制语句

【Linux实践】实验九&#xff1a;Shell流程控制语句 实验目的实验内容实验步骤及结果1. 变量的定义和使用2. 条件3. 运算4. if 语句5. case 语句6. for 语句7. while 语句8. until 语句9. 遍历复制10. 计算平方 实验目的 1、掌握条件判断语句&#xff0c;如if语句、case语句。…

tomcat的安装,管理与配置

目录 Tomcat 服务部署 1.关闭防火墙&#xff0c;将安装 Tomcat 所需软件包上传到虚拟机 2.安装JDK 3.设置JDK环境变量 4.安装启动Tomcat 5.启动tomcat 6.优化tomcat启动速度 Tomcat 服务管理 systemd 管理控制 supervisor 管理控制 Tomcat 虚拟主机配置 1.创建 sun…

EE trade:黄金 999 和黄金 9999 的区别

黄金&#xff0c; 作为一种珍贵的金属&#xff0c; 一直是人们投资和收藏的对象。 在购买黄金时&#xff0c; 您可能会遇到两种纯度的黄金 —— 黄金 999 和黄金 9999。 这两种黄金有什么区别? 消费者应该如何选择呢? 一、 黄金 999 和黄金 9999 的区别 含金量&#xff1a;…

OCR 行驶证识别 离线识别

目录 正页识别 副页识别 全部识别 OCR 行驶证识别 离线识别 正页识别 副页识别 全部识别

C语言实现归并排序(Merge Sort)

目录 一、递归实现归并排序 1. 归并排序的基本步骤 2.动图演示 3.基本思路 4.代码 二、非递归实现 1.部分代码 2.代码分析 修正后代码&#xff1a; 归并过程打印 性能分析 复杂度分析 归并排序是一种高效的排序算法&#xff0c;采用分治法&#xff08;Divide and Con…

中电金信:“源启”金融级数字底座

01方案简介 金融级数字底座是中电金信依托中国电子自主安全计算产业链&#xff0c;采用新一代技术架构&#xff0c;为金融及重点行业打造的数字化新型基础设施。 “源启”面向金融等重点行业场景&#xff0c;依照系统工程方法论&#xff0c;进行全栈技术产品的验证、适配和调…

word2vector训练数据集整理(代码实现)

import math import os import random import torch import dltools from matplotlib import pyplot as plt #读取数据集 def read_ptb():"""将PTB数据集加载到文本行的列表中"""with open(./ptb/ptb.train.txt) as f:raw_text f.read()return…

【深度学习基础模型】双向循环神经网络(Bidirectional Recurrent Neural Networks, BiRNN)详细理解并附实现代码。

【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09; 【深度学习基础模型】双向循环神经网络&#xff08;Bidirectional Recurrent Neural Networks, BiRNN&#xff09;详细理解并附实现代码。 文章目录 【深度学习…

使用 Llama 3.1 和 Qdrant 构建多语言医疗保健聊天机器人的步骤

长话短说&#xff1a; 准备好深入研究&#xff1a; 矢量存储的复杂性以及如何利用 Qdrant 进行高效数据摄取。掌握 Qdrant 中的集合管理以获得最佳性能。释放上下文感知响应的相似性搜索的潜力。精心设计复杂的 LangChain 工作流程以增强聊天机器人的功能。将革命性的 Llama …

虚幻蓝图Ai随机点移动

主要函数: AI MoveTo 想要AI移动必须要有 导航网格体边界体积 (Nav Mesh Bounds Volume) , 放到地上放大 , 然后按P键 , 可以查看范围 然后创建一个character类 这样连上 AI就会随机运动了 为了AI移动更自然 , 取消使用控制器旋转Yaw 取消角色移动组件 的 使用控制器所需的…

风扇模块(直流5V STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 三、程序设计 main.c文件 fan.h文件 fan.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 直流风扇(Fan)&#xff0c;具有高转速、大风量、低噪音、低能耗和低震动的特点&#xff0c;有DC5V和12V两种型号可供…

【HarmonyOS】Web组件同步与异步数据获取

Web组件交互同步与异步获取数据的方式示例 【html测试文件】src/main/resources/rawfile/Page04.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><script>let isEnvSupported CSS in window &&…

云上攻防 | AWS中的常见 Cognito 配置错误

引言 AWS Cognito 是由亚马逊网络服务&#xff08;AWS&#xff09;提供的全托管服务&#xff0c;旨在简化 Web 和移动应用程序的用户认证和授权过程。它提供了一整套功能来处理用户注册、登录和用户管理&#xff0c;免去了开发人员从头构建这些功能的需求。 尽管本文讨论的攻…

8.11 矢量图层线要素单一符号使用二(箭头)

8.11 矢量图层线要素单一符号使用二(箭头)_qgis箭头-CSDN博客 目录 前言 箭头&#xff08;Arrow&#xff09; QGis设置线符号为箭头(Arrow) 二次开发代码实现 总结 前言 本章介绍矢量图层线要素单一符号中箭头&#xff08;Arrow&#xff09;的使用说明&#xff1a;文章中…

等保2.0数据库测评之达梦数据库测评

一、达梦数据库介绍 达梦数据库管理系统属于新一代大型通用关系型数据库&#xff0c;全面支持 ANSI SQL 标准和主流编程语言接口/开发框架。行列融合存储技术&#xff0c;在兼顾 OLAP 和 OLTP 的同时&#xff0c;满足 HTAP 混合应用场景。 本次安装环境为Windows10专业版操作…

华夏ERP3.1权限绕过代码审计

POC: /jshERP-boot/user/getAllList;.ico 调试分析poc: 这是poc很明显就是绕过权限&#xff0c;我们分析filter里面的代码。 Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {Htt…

基于Spring Boot的校园管理系统

目录 前言 功能设计 系统实现 获取源码 博主主页&#xff1a;百成Java 往期系列&#xff1a;Spring Boot、SSM、JavaWeb、python、小程序 前言 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自…

使用API有效率地管理Dynadot域名,设置域名服务器(NS)

前言 Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮箱&…

SQL Server的文本和图像函数

新书速览|SQL Server 2022从入门到精通&#xff1a;视频教学超值版_sql server 2022 出版社-CSDN博客 《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;&#xff08;数据库技术丛书&#xff09;》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) SQL Se…

【Python】Ajenti:轻量级、强大的服务器管理面板

在现代服务器管理中&#xff0c;管理员们经常需要通过命令行执行各种任务&#xff0c;这不仅耗时&#xff0c;而且对不熟悉 Linux 系统的用户来说并不友好。为了更高效地管理服务器、网站和应用&#xff0c;借助一个功能强大的管理面板是非常有必要的。Ajenti 就是这样一款轻量…