pth的模型格式怎么变成SafeTensors了?

news2025/5/13 7:08:08

文章目录

  • 背景
  • 传统模型格式的安全隐患
  • 效率与资源瓶颈
  • 跨框架兼容性限制
  • Hugging Face 的解决方案:SafeTensors
  • 行业与社区的推动
  • SafeTensors 的意义
  • 总结

背景

最近要找一些适合embedding的模型,在huggingface模型库上看到一些排名比较靠前的,准备down下来,然后通过ollama在本地启动,一看格式怎么是SafeTensors? ollama好像不支持啊,因此先研究以下这个格式的由来。
Hugging Face 推出的 SafeTensors 格式是为了解决传统模型序列化方法(如 PyTorch 的 .pt/.pth 或 TensorFlow 的 .ckpt)在安全性、效率和跨框架兼容性等方面的痛点。其背景可以从以下几个关键问题和技术需求来理解:


传统模型格式的安全隐患

问题:反序列化漏洞
• PyTorch 默认使用 pickle 库序列化模型,而 pickle 在反序列化时会执行任意代码。攻击者可以通过篡改模型文件注入恶意代码,导致用户加载模型时触发攻击(如远程代码执行、数据泄露等)。

• 案例:2022 年发现多个 PyTorch 模型因 pickle 漏洞被恶意利用(CVE 编号 CVE-2022-8926)。

• 这一漏洞在开源社区和模型共享场景中尤其危险,用户无法信任来源不明的模型文件。

安全需求
• 需要一种仅存储张量数据、不执行代码的格式,从根本上消除反序列化攻击的风险。


效率与资源瓶颈

问题:加载速度与内存占用
• 传统格式(如 PyTorch 的 torch.save)在加载时需要将整个文件读入内存,导致大模型加载缓慢且内存占用高。

• 对于边缘设备(如手机、IoT 设备)或低资源环境,传统格式的加载效率成为瓶颈。

效率需求
• 支持零拷贝加载(Zero-copy):直接从磁盘映射张量数据到内存,避免冗余内存复制。

• 分块加载:仅加载部分权重(如大型语言模型的某几层),减少内存压力。


跨框架兼容性限制

问题:框架绑定的模型格式
• PyTorch 的 .pt 和 TensorFlow 的 .ckpt 格式彼此不兼容,导致多框架协作困难。

• 开发者需要为不同框架重复转换模型,增加了维护成本。

兼容性需求
• 定义一种框架无关的标准化格式,支持 PyTorch、TensorFlow、JAX 等多种框架直接加载。


Hugging Face 的解决方案:SafeTensors

为应对上述问题,Hugging Face 设计并开源了 SafeTensors 格式,其核心设计原则包括:
• 安全性优先:仅存储张量数据,不含可执行代码。

• 高效加载:通过内存映射(Memory-mapping)实现零拷贝加载,大幅减少内存占用。

• 跨框架支持:统一格式可被 PyTorch、TensorFlow、JAX 等框架直接读取。

• 轻量化:文件体积更小,传输和存储成本更低。

技术实现
• 数据存储:使用二进制格式存储张量元数据(形状、数据类型)和原始字节。

• 元信息标准化:通过 JSON 头文件记录模型结构信息,支持快速索引。

• 签名验证:可选添加哈希签名,确保文件完整性。


行业与社区的推动

• 开源社区需求:Hugging Face Hub 上托管了数十万个公开模型,用户需要安全可靠的共享方式。

• 企业安全合规:金融、医疗等领域对模型部署有严格的安全要求,传统格式无法满足审计标准。

• 边缘计算兴起:物联网和移动端设备需要轻量、高效的模型格式。


SafeTensors 的意义

• 安全性:消除反序列化漏洞,成为模型分发的安全标准。

• 性能优化:零拷贝加载使百亿参数模型的加载时间从分钟级降至秒级。

• 生态整合:推动多框架协作,简化模型部署流程。

• 行业影响:被 Hugging Face Hub、Stability AI 等平台采纳为默认格式,逐步替代传统方法。


总结

Hugging Face 推出 SafeTensors 的背景是传统模型格式在安全性、效率和兼容性上的严重缺陷。通过设计一种安全、高效、跨框架的标准化格式,它不仅解决了模型共享中的安全风险,还提升了大规模模型部署的效率,成为现代机器学习工程中的重要基础设施。

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

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

相关文章

c语言第一个小游戏:贪吃蛇小游戏03

我们为贪吃蛇的节点设置为一个结构体,构成贪吃蛇的身子的话我们使用链表,链表的每一个节点是一个结构体 显示贪吃蛇身子的一个节点 我们这边node就表示一个蛇的身体 就是一小节 输出结果如下 显示贪吃蛇完整身子 效果如下 代码实现 这个hasSnakeNode(…

​​​​​​​大规模预训练范式(Large-scale Pre-training)

大规模预训练指在巨量无标注数据上,通过自监督学习训练大参数量的基础模型,使其具备通用的表征与推理能力。其重要作用如下: 一 跨任务泛化 单一模型可在微调后处理多种NLP(自然语言处理)、CV(计算机视觉…

WPF之高级绑定技术

文章目录 引言多重绑定(MultiBinding)基本概念实现自定义IMultiValueConverterMultiBinding在XAML中的应用示例使用StringFormat简化MultiBinding 优先级绑定(PriorityBinding)基本概念PriorityBinding示例实现PriorityBinding的后…

调出事件查看器界面的4种方法

方法1. 方法2. 方法3. 方法4.

使用vite重构vue-cli的vue3项目

一、修改依赖 首先修改 package.json,修改启动方式与相应依赖 移除vue-cli并下载vite相关依赖,注意一些peerDependency如fast-glob需要手动下载 # 移除 vue-cli 相关依赖 npm remove vue/cli-plugin-babel vue/cli-plugin-eslint vue/cli-plugin-rout…

数据治理域——数据治理体系建设

摘要 本文主要介绍了数据治理系统的建设。数据治理对企业至关重要,其动因包括应对数据爆炸增长、提升内部管理效率、支撑复杂业务需求、加强风险防控与合规管理以及实现数字化转型战略。其核心目的是提升数据质量、统一数据标准、优化数据资产管理、支撑业务发展和…

onGAU:简化的生成式 AI UI界面,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。

​一、软件介绍 文末提供程序和源码下载 onGAU:简化的生成式 AI UI界面开源程序,一个非常简单的 AI 图像生成器 UI 界面,使用 Dear PyGui 和 Diffusers 构建。 二、Installation 安装 文末下载后解压缩 Run install.py with python to setup…

【第52节】Windows编程必学之从零手写C++调试器下篇(仿ollydbg)

目录 一、引言 二、调试器核心功能设计与实现 三、断点功能 四、高级功能 五、附加功能 六、开发环境与实现概要 七、项目展示及完整代码参考 八、总结 一、引言 在软件开发领域,调试器是开发者不可或缺的工具。它不仅能帮助定位代码中的逻辑错误&#xff0…

uni-app学习笔记五--vue3插值表达式的使用

vue3快速上手导航&#xff1a;简介 | Vue.js 模板语法 插值表达式 最基本的数据绑定形式是文本插值&#xff0c;它使用的是“Mustache”语法 (即双大括号)&#xff1a; <span>Message: {{ msg }}</span> 双大括号标签会被替换为相应组件实例中 msg 属性的值。同…

C++类与对象(二):六个默认构造函数(一)

在学C语言时&#xff0c;实现栈和队列时容易忘记初始化和销毁&#xff0c;就会造成内存泄漏。而在C的类中我们忘记写初始化和销毁函数时&#xff0c;编译器会自动生成构造函数和析构函数&#xff0c;对应的初始化和在对象生命周期结束时清理资源。那是什么是默认构造函数呢&…

从逻辑学视角探索数学在数据科学中的系统应用:一个整合框架

声明&#xff1a;一家之言&#xff0c;看个乐子就行。 图表采用了两个维度组织知识结构&#xff1a; 垂直维度&#xff1a;从上到下展示了知识的抽象到具体的演进过程&#xff0c;分为四个主要层级&#xff1a; 逻辑学基础 - 包括数理逻辑框架和证明理论数学基础结构 - 涵盖…

Matplotlib 完全指南:从入门到精通

前言 Matplotlib 是 Python 中最基础、最强大的数据可视化库之一。无论你是数据分析师、数据科学家还是研究人员&#xff0c;掌握 Matplotlib 都是必不可少的技能。本文将带你从零开始学习 Matplotlib&#xff0c;帮助你掌握各种图表的绘制方法和高级技巧。 目录 Matplotli…

如何有效追踪需求的实现情况

有效追踪需求实现情况&#xff0c;需要清晰的需求定义、高效的需求跟踪工具、持续的沟通反馈机制&#xff0c;其中高效的需求跟踪工具尤为关键。 使用需求跟踪工具能确保需求实现进度可视化、提高团队协作效率&#xff0c;并帮助识别和管理潜在风险。例如&#xff0c;使用专业的…

自动驾驶技术栈——DoIP通信协议

一、DoIP协议简介 DoIP&#xff0c;英文全称是Diagnostic communication over Internet Protocol&#xff0c;是一种基于因特网的诊断通信协议。 DoIP协议基于TCP/IP等网络协议实现了车辆电子控制单元(ECU)与诊断应用程序之间的通信&#xff0c;常用于汽车行业的远程诊断、远…

C++ 与 Go、Rust、C#:基于实践场景的语言特性对比

目录 ​编辑 一、语法特性对比 1.1 变量声明与数据类型 1.2 函数与控制流 1.3 面向对象特性 二、性能表现对比​编辑 2.1 基准测试数据 在计算密集型任务&#xff08;如 10⁷ 次加法运算&#xff09;中&#xff1a; 在内存分配测试&#xff08;10⁵ 次对象创建&#xf…

如何更改默认字体:ONLYOFFICE 协作空间、桌面编辑器、文档测试示例

在处理办公文件时&#xff0c;字体对提升用户体验至关重要。本文将逐步指导您如何在 ONLYOFFICE 协作空间、桌面应用及文档测试示例中自定义默认字体&#xff0c;以满足个性化需求&#xff0c;更好地掌控文档样式。 关于 ONLYOFFICE ONLYOFFICE 是一个国际开源项目&#xff0c…

设计模式之工厂模式(二):实际案例

设计模式之工厂模式(一) 在阅读Qt网络部分源码时候&#xff0c;发现在某处运用了工厂模式&#xff0c;而且编程技巧也用的好&#xff0c;于是就想分享出来&#xff0c;供大家参考&#xff0c;理解的不对的地方请多多指点。 以下是我整理出来的类图&#xff1a; 关键说明&#x…

基于VeRL源码深度拆解字节Seed的DAPO

1. 背景与现状&#xff1a;从PPO到GRPO的技术演进 1.1 PPO算法的基础与局限 Proximal Policy Optimization&#xff08;PPO&#xff09;作为当前强化学习领域的主流算法&#xff0c;通过重要性采样比率剪裁机制将策略更新限制在先前策略的近端区域内&#xff0c;构建了稳定的…

zst-2001 历年真题 软件工程

软件工程 - 第1题 b 软件工程 - 第2题 c 软件工程 - 第3题 c 软件工程 - 第4题 b 软件工程 - 第5题 b 软件工程 - 第6题 0.未完成&#xff1a;未执行未得到目标。1.已执行&#xff1a;输入-输出实现支持2.已管理&#xff1a;过程制度化&#xff0c;项目遵…

基于WSL用MSVC编译ffmpeg7.1

在windows平台编译FFmpeg&#xff0c;网上的大部分资料都是推荐用msys2mingw进行编译。在win10平台&#xff0c;我们可以采用另一种方式&#xff0c;即wslmsvc 实现window平台的ffmpeg编译。 下面将以vs2022ubuntu22.04 为例&#xff0c;介绍此方法 0、前期准备 安装vs2022 &…