```html 模型文件安全:pickle风险与审查 模型文件安全:pickle风险与审查
任务很小。试一个别人分享在网上的微调模型,看它在客服邮件分类上能不能打赢我们自己的。下载文件,加载,跑二十个样例。
样例根本没派上用场。文件在加载的那一刻就干完了它的活,那时还没有一封邮件靠近过它。
很多模型文件不只是数字。多年来,保存 PyTorch 模型的默认方式是 Python 的 pickle 格式,用 joblib 保存的 scikit learn 模型也一样。pickle 不像表格那样存数据,它存的是重建对象的指令。而对象在重建过程中可以说的一件事就是:用这些参数调用这个函数。任何函数,包括执行 shell 命令的那个。
所以加载一个 pickle 不是读文件,是运行一段别人写的小程序。Python 文档写得很直白:只反序列化你信任的数据。
我们信任的是经过审查的代码。我们不会去审查一个四百兆字节的权重文件。而那行加载代码躺在一台笔记本的 notebook 里,这台笔记本上放着一把云密钥、一个仓库令牌,还有一条通往客户数据库的会话。笔记本能碰到的东西,文件都能碰到。
核心原则:把模型文件当安装包对待。优先选无法携带代码的格式,safetensors 只装张量,别的什么都不装。如果非用 torch.load 不可,用较新的 PyTorch,它现在默认只加载权重,对陌生人给的文件永远别把这个开关关掉。
查清楚是谁发布的,把你测过的那个确切版本钉死,用哈希钉,不是用名字钉。新模型先在沙箱里打开,没有凭证,没有网络,没有任何值得拿走的东西。
把模型文件放进和依赖项同一套审查流程里,因为它们本来就是依赖项。我们花几周时间决定要不要信任一个模型的回答,先决定要不要信任它的文件。
– Serguey Asael Shinder
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.