发布时间:2026/9/7 20:05:50
Transformers 安全加载指南:safetensors 权重校验、trust_remote_code 远程代码风险与漏洞报告机制 Transformers 安全加载指南safetensors 权重校验、trust_remote_code 远程代码风险与漏洞报告机制【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers本文基于 Transformers 仓库的 SECURITY.md 安全策略文档展开系统讲解从 Hugging Face Hub 加载他人上传的模型权重与模型代码时存在的两类核心风险——不安全格式的权重文件如 pickle和可执行任意逻辑的远程建模代码并结合src/transformers/modeling_utils.py、src/transformers/dynamic_module_utils.py的源码实现说明use_safetensors、trust_remote_code、revision三个关键参数的实际行为帮助你在生产环境中构建一套可复制的安全模型加载流程并掌握 Transformers 项目漏洞的正确报告渠道。安全策略总览模型与代码都来自远端SECURITY.md 开宗明义地指出Transformers 是开源软件且与 Hugging Face Hub 深度耦合。虽然你可以离线使用预先下载的模型权重但该库最大的便利正是一行代码从远端下载、使用和管理模型。文档对此给出了明确的安全前提When downloading artefacts that have been uploaded by others on any platform, you expose yourself to risks.从源码结构看这一风险分为两条独立的链路权重链路Remote artefactsfrom_pretrained解析并反序列化他人上传的权重文件。若权重以 pickle 等可执行序列化格式存储加载即意味着执行其中任意字节码可能导致任意的代码执行。代码链路Remote code对于 Transformers 尚未内置的架构模型仓库会附带自定义的modeling.py等模块文件加载时会动态下载并 import 到当前 Python 进程中执行。下面的章节分别沿这两条链路展开先给出 SECURITY.md 的官方建议再用仓库源码印证参数在不同取值下的真实行为。远程权重工件为什么必须优先 safetensors官方建议SECURITY.md 的 Remote artefacts 一节给出的核心建议是上传和下载模型时强烈推荐使用safetensors格式。文档特别说明这是 the default prioritized by the transformers library且该格式被专门开发以防止在你的系统上执行任意代码为避免从不安全格式例如 pickle加载模型应使用use_safetensors参数设置为该模式后若仓库中不存在.safetensors文件transformers 会在加载模型时直接报错而不是静默回退到不安全的.bin文件。源码印证use_safetensors的三种取值与解析优先级在from_pretrained的参数文档中use_safetensors被定义为bool类型、默认值为None见 modeling_utils.py。真正的解析发生在权重解析函数_get_resolved_checkpoint_files中modeling_utils.py其行为可以概括为取值本地目录场景的行为远端仓库场景的行为use_safetensorsTrue只查找model.safetensors/model.safetensors.index.json找不到即抛出OSError同上仓库完全没有 safetensors 文件时抛出 cannot be loaded withsafetensors. Please do not setuse_safetensorsTrue 的错误use_safetensorsFalse只查找pytorch_model.bin及其分片索引只查找pytorch_model.bin绝不触碰 safetensors 文件use_safetensorsNone默认优先查找 safetensors 文件找不到再回退到.bin优先下载 safetensors若远端仓库根本没有 safetensors 文件会自动回退到pytorch_model.bin关键代码路径如下modeling_utils.py本地目录加载时use_safetensors is not False分支先检查model.safetensors与分片索引model.safetensors.index.jsonnot use_safetensors分支才检查pytorch_model.bin而当use_safetensors显式为True且两种 safetensors 文件都不存在时直接raise OSError(...)modeling_utils.py——这正是 SECURITY.md 所说no .safetensors file is present, transformers will error when loading the model的实现。远端仓库加载时modeling_utils.py先按model.safetensors请求缓存文件未命中再试分片索引仍找不到且use_safetensorsTrue时抛出OSError。值得注意的是在use_safetensorsNone的默认模式下如果仓库只有 PyTorch 权重代码会触发auto_conversion定义于 safetensors_conversion.py尝试请求自动转换转换失败才回退到pytorch_model.bin。也就是说默认优先 safetensors 在实现层面是双重的既优先请求 safetensors 文件也在可行时把旧格式权重转换为 safetensors 缓存。可复制的安全加载示例结合文档建议与上述实现一个符合官方安全推荐的加载方式如下from transformers import AutoModelForCausalLM # 仅接受 safetensors仓库中没有 .safetensors 文件时直接报错 # 从机制上杜绝加载 picklepytorch_model.bin带来的反序列化风险 model AutoModelForCausalLM.from_pretrained( some-user/some-model, use_safetensorsTrue, # 若为 None默认则会回退到 .bin 权重 revisionv1.0.0, # 锁定特定版本见下文 )需要说明的适用前提use_safetensorsTrue只保证不会加载 pickle 权重它无法防护模型仓库中携带的自定义建模代码——那属于下面一节的远程代码风险。远程代码trust_remote_codeTrue的使用纪律官方建议SECURITY.md 的 Remote code / Modeling 一节指出Transformers 支持大量模型架构但它同时也是你的 Python 运行时与 Hub 上模型仓库之间的桥梁。对于这类携带自定义代码的模型必须设置trust_remote_codeTrue才能使用在使用该参数时务必always核验建模文件的内容官方推荐同时指定revision以确保你受到保护免受仓库后续更新的影响。源码印证远程代码的判定与执行链路仓库中处理远程代码的入口集中在 dynamic_module_utils.py。整条链路可以概括为判定是否信任 → 下载并缓存模块 → 动态 import 执行判定层resolve_trust_remote_codedynamic_module_utils.py该函数解析trust_remote_code参数默认值为None。其逻辑是当检测到模型带有远程代码has_remote_code但本地无对应代码not has_local_code且用户未显式传trust_remote_codeTrue时抛出错误提示 Please pass the argumenttrust_remote_codeTrueto allow custom code to be run.dynamic_module_utils.py在交互式终端且未显式设置时会打印警告并弹出Do you wish to run the custom code? [y/N]提示用户拒绝则按False处理dynamic_module_utils.py。从源码结构看这意味着默认行为是拒绝执行远程代码——安全性靠的是显式 opt-in而不是默认放行。下载与执行层get_cached_module_file/get_class_from_dynamic_moduleget_cached_module_filedynamic_module_utils.py负责把仓库中的模块文件如modeling_xxx.py经cached_file下载到模块缓存目录HF_MODULES_CACHE随后动态导入。get_class_from_dynamic_moduledynamic_module_utils.py的文档警告写得非常直白Calling this function will execute the code in the module file found locally or downloaded from the Hub. It should therefore only be called on trusted repos.也就是说一旦信任链被打开仓库里的.py文件会在你的进程中原样执行——这正是 SECURITY.md 要求always verify the content of the modeling files的底层原因。此外get_cached_module_file在下载后还会执行check_imports(resolved_module_file)dynamic_module_utils.py检查该模块引入的第三方依赖这也是审计自定义代码时需要留意的一个环节。revision锁定层get_cached_module_file与get_class_from_dynamic_module均接受revision参数dynamic_module_utils.py且其文档明确 revision can be a branch name, a tag name, or a commit id。权重解析侧同样以revision默认main见 modeling_utils.py作为下载基准。指定 revision 后权重与建模代码都被固定到同一提交点避免了 main 分支被上游修改导致行为漂移或被篡改 的风险——这与 SECURITY.md 的推荐一一对应。可复制的远程代码加载流程综合 SECURITY.md 的纪律与源码行为加载含自定义代码的模型建议按以下步骤操作from transformers import AutoModelForCausalLM, AutoTokenizer repo some-user/custom-arch-model # 第 1 步在 Hub 页面上人工审查仓库中的 modeling_*.py / configuration_*.py 内容 # 第 2 步以锁定 revision 的方式显式信任加载 model AutoModelForCausalLM.from_pretrained( repo, trust_remote_codeTrue, # 必须先审查建模文件再开启 revisionmain, # 或某个 commit id / tag防止仓库更新影响复现 )要点复述trust_remote_codeTrue不是随便传一下而是在确认建模代码无害之后才允许的显式授权而revision是抵御仓库事后被改的唯一版本锚点两者应配套使用。漏洞报告渠道SECURITY.md 的 Reporting a Vulnerability 一节给出了两条官方渠道通用漏洞提交至securityhuggingface.co由 Hugging Face 安全团队审阅并给出后续步骤建议开源软件专项漏洞注意Huntr是面向开源软件的漏洞披露项目vulnerability disclosure program针对开源部分的漏洞可走该渠道报告。如果你的问题是某个模型仓库中的自定义代码可疑更恰当的做法是不加载该代码不设置trust_remote_codeTrue并向该仓库/平台报告而不是在生产环境中执行后再排查。安全检查清单把 SECURITY.md 的建议浓缩为一张可执行的加载前检查表检查项官方依据实现位置仓库权重是否为 safetensors 格式加载时传use_safetensorsTrue以拒绝 pickle 权重Remote artefacts 一节_get_resolved_checkpoint_filesmodeling_utils.py是否包含自定义建模代码若包含是否已逐行审查modeling_*.pyRemote code 一节get_class_from_dynamic_module执行警告dynamic_module_utils.py开启trust_remote_code前是否理解执行任意模块代码的含义源码文档警告dynamic_module_utils.py是否通过revision锁定权重与代码版本抵御仓库更新We recommend setting a revisionrevision参数dynamic_module_utils.py发现疑似漏洞时的上报路径Reporting a Vulnerability 一节SECURITY.md一句话总结在 Transformers 中安全不是单一参数能解决的而是safetensors 权重 拒绝默认 pickle 回退use_safetensorsTrue 人工审查远程代码 显式trust_remote_codeTruerevision版本锁定这五件事的组合上述组合在当前仓库的加载实现中均有对应的代码路径可以逐条验证。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/7 20:05:50

专插本考什么科目?

本文由育教大师专插本整理,仅供学生参考学习广东专插本(普通专升本)统一考4门科目,固定为2门公共课1门专业基础课1门专业综合课,整体考试框架稳定、评分标准统一。其中公共课为所有考生必考科目,专业基础课…

2026/9/7 20:05:50

函数独占时间怎么算?用栈轻松解决嵌套调用耗时分析

接手线上系统那天,我对着几千行函数进出日志算了整整一个下午,发现所有函数的耗时加起来比接口总耗时还多出一大截。后来才反应过来,问题出在“嵌套调用”——子函数跑的时间被父函数重复算了一遍。这个场景你只要做过性能分析就一定遇到过&a…

2026/9/7 20:05:50

集成AI的数据库管理工具为何能取代Navicat?迁移实战指南

Navicat这个老朋友,我用了差不多八年。从大学拿它连MySQL做课设,到后来工作里天天对着Oracle、PostgreSQL查慢SQL,它一度是我电脑里永远不关的那几个窗口之一。但最近半年,我把它从主力位置撤下来了,换成了一个集成了A…

2026/9/8 4:47:13

ROS2小车手柄遥控实战:从/joy到/cmd_vel的关键细节

拿到一台 ROS2 小车,很多人第一件事不是跑 SLAM,不是配导航,而是插上手柄,试着让小车往前动一下。这个动作听起来很简单:手柄连接主机,运行 joy 节点,再跑一个 teleop_twist_joy,把摇…

2026/9/8 4:47:13

Word文件损坏修复全指南:从原理到实操与数据恢复

简介:专门用于修复Word文档损坏、无法打开或乱码问题的工具包,面向日常办公中因文件损坏、病毒感染或软件兼容性而丢失数据的用户,也适合不熟悉修复流程的普通学习者应急使用。压缩包共3个文件,核心为wordwendanxiuf.exe修复程序&…

2026/9/8 4:47:13

嵌入式工具链选型:从“好用”到“专业”的目标导向实践

“好用”和“专业”,这两个词放在一起,搞嵌入式的人多少都纠结过。早些年我刚开始做单片机开发时,觉得能用Keil把LED点亮就是好用;后来做了几年产品,发现调试复杂问题、压榨芯片性能、搞定量产一致性时,工具…

2026/9/8 4:47:12

接口测试自学指南:从HTTP基础到自动化实战

接口测试自学这件事,我太有发言权了。当年没人带,靠着抓包、读接口文档、翻网上零散教程,硬生生从对着 Postman 里一串 JSON 发懵,到能把一个完整的服务端接口测试链路搭起来跑自动化,中间踩的坑是真的多。这篇东西我憋…

2026/9/8 4:42:12

前端一键导出Word:用jquery.wordexport.js实现网页内容转Word

简介:一个轻量级jQuery插件,用于将网页中指定HTML元素或部分内容一键导出为Word文档。它基于浏览器Blob对象与URL.createObjectURL方法,通过简单调用即可生成可下载的doc文件,适合需要在后台管理、报表展示、内容编辑或在线文档生…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/8 0:01:49

踩多轮坑才跑通|OpenClaw 3.1.0 双平台本地 AI 自动化搭建实操实录

🔹 工具简述 OpenClaw 是一款备受开发者与办公人群青睐的开源本地智能工具,凭借离线本地运行、可视化图形面板、全流程自主任务处理三大核心特点,积累了众多忠实用户。与普通对话类 AI 产品不同,它能够直接调用电脑的软硬件操作权…

2026/9/8 0:01:50

拒绝复杂命令行,Hermes Agent 一键包快速解锁智能办公能力

🔍前言 不少想要体验 Hermes Agent 办公能力的使用者,往往会被复杂的环境配置拦住使用脚步。手动下载匹配依赖、反复调整系统目录、处理命令行持续报错、修复权限异常、补全丢失核心文件等一系列操作,对普通使用者而言门槛较高,很…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/7 22:46:00

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/7 22:45:59

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…