news 2026/9/19 13:01:14

深入 OpenMed PII 模型卡:pii::small::mlx-fp last-green 指针与 44M 全精度 MLX 端侧脱敏模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深入 OpenMed PII 模型卡:pii::small::mlx-fp last-green 指针与 44M 全精度 MLX 端侧脱敏模型

深入 OpenMed PII 模型卡:pii::small::mlx-fp last-green 指针与 44M 全精度 MLX 端侧脱敏模型

【免费下载链接】openmedLocal-first healthcare AI: clinical NER & HIPAA PII de-identification that runs 100% on-device. 2,200+ medical models, 21 languages, Apple MLX + Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed

导读:本文以 OpenMed 仓库中 pii-small-mlx-fp-last-green.md 这张模型卡为骨架,逐段解读OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx这一 PII 小尺寸全精度 MLX 检查点的清单元数据、注册表槽位与 last-green 指针语义、tokenizer 脚本覆盖审计、50 个规范实体标签以及本地接入方法。读完本文,你将掌握"如何读懂一张 manifest 驱动的 OpenMed 模型卡",并能在设备端(Apple Silicon)正确选用与验证这款 44M 的 HIPAA PII 脱敏模型。

模型卡的由来:manifest 驱动的注册表发布面

这张卡片本身是一份生成产物,而非手写文档。卡片开头的注释写得很明确:

  • Generated from models.jsonl. Do not edit this file directly.
  • Registry pointer: pii::small::mlx-fp/last_green -> OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx

也就是说,仓库根目录下的 models.jsonl 是 OpenMed 模型目录(model manifest)的唯一事实来源,每一行是一个按repo_id键控的 JSON 对象,注册表无需网络即可加载它。模型卡由发布步骤从 manifest 行渲染生成,模型清单 中明确说明了各字段含义与更新方式。

完整的发布流程分为四步:

# 1. 从 Hugging Face 组织刷新基础 manifest(保留已有 enrichment 字段) python scripts/manifest/generate_manifest.py --output models.jsonl # 2. 对 PII 家族执行 11 脚本 tokenizer 覆盖审计(新加入的 PII 行必须完成审计才能通过校验) uv pip install -e ".[dev,hf]" .venv/bin/python scripts/audit_pii_tokenizer_coverage.py --update-manifest --resume # 3. 合并基准与设备测量结果(下载体积、延迟、内存、benchmark) python scripts/manifest/enrich_manifest.py \ --manifest models.jsonl \ --results benchmark-results.json \ --output models.enriched.jsonl # 4. 重新生成所有提交的发布面(README 计数、注册表卡片、MkDocs 目录表) python scripts/manifest/regenerate_surfaces.py

第 4 步 regenerate_surfaces.py 只读取本地已提交的输入、不访问网络,CI 会以相同命令校验生成结果是否有 diff。因此修改模型元数据的正确姿势是改models.jsonl后重新生成,而不是手改 docs/model-cards/registry 下的卡片——这也是本文所分析的卡片与它的姊妹卡片 pii-small-mlx-fp-latest.md 在内容上同构的原因。

Manifest 摘要逐项解读

模型卡中的 Manifest Summary 表格完整对应 models.jsonl 中第 1887 行OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx的行数据,逐项含义如下:

字段说明
RepositoryOpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlxHugging Face 模型 ID,-mlx后缀表示 MLX 转换检查点
FamilyPII模型家族,manifest 中还包括NERVisionZeroShotGeneral
Tasktoken-classification管道任务类型,即逐 token 打标签的序列标注
LanguagesenBCP 47 风格语言码,本模型仅宣称英语
TierSmall发布尺寸层级,另有 Tiny / Base / Large 等
Parameters44M (44,000,000)param_count整数,44,000,000
Architecturedeberta-v2骨干架构;其上游 models.jsonl 第 1886 行显示 PyTorch 基座OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1的 base model 为microsoft/deberta-v3-small
Base modelOpenMed/OpenMed-PII-SuperClinical-Small-44M-v1本次 MLX 转换的源检查点
Formatsmlx-fp, pytorch可用产物格式;mlx-fp为 Apple Silicon 全精度 MLX 权重
Licenseapache-2.0声明许可
arXivarXiv:2508.01630关联论文编号(卡片声明值;注意 manifest 行的arxiv字段当前为 null)
Reproducibility hashsha256:4818bdef580eb406f5cc665cc0892aefab1fd90c8743822d843dd48f135bde34仓库/来源哈希,将目录行绑定到某个仓库修订与文件清单
Released2026-04-14发布日期YYYY-MM-DD

值得注意的是,同一条模型族谱还有第三个兄弟检查点OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-onnx-android(models.jsonl 第 1888 行),它走onnx格式、面向 Android 端侧,formats只列onnx,与本文的 MLX 检查点形成"同一基座、多运行时不发"的格局。

last-green 指针:注册表槽位与回滚语义

模型卡标题中的 "last-green" 不是模型名的一部分,而是**发布通道指针(pointer)**的名称。OpenMed 的注册表状态存放在 gates/registry_state.json(schema v2),按family::tier::format归一化键划分稀疏发布槽位。本文模型对应的槽位内容如下:

{ "schema_version": 2, "slots": { "pii::small::mlx-fp": { "checkpoints": { "OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx": "1.0.0" }, "lineage": [], "pointers": { "canary": null, "last_green": "OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx", "latest": "OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx" } } } }

结合 模型注册表 的说明可以读出三层语义:

  • 槽位键pii::small::mlx-fp(family, tier, format) = (PII, Small, mlx-fp),只有当检查点以 RELEASABLE 门禁报告晋升、且其 manifest 行坐标匹配时才创建该通道;
  • SemVer 分配:每个检查点在槽位内被分配1.0.0(首个目标),后续新目标做 minor 递增;版本从不从 repo id 解析-v1是上游模型名的一部分而非版本序列;
  • 三个指针canary(金丝雀,当前为 null)、latest(当前对外发货目标)、last_green(最近一次绿灯回滚目标)。本检查点同时占据latestlast_green,说明它既是当前首选、也是安全的回滚点;模型注册表 中同时发布了 latest 卡片 与其 last-green 回滚卡片。

基准证据:从 "Not reported" 到 golden 套件

模型卡中的 Benchmark 小节如实写道:

DatasetMicro F1Recall
Not reportedNot reportedNot reported

这与 manifest 行中的benchmark字段(dataset/micro_f1/recall均为 null)一致——即清单层未登记聚合指标,卡片照实渲染,没有编造数字。

但仓库中存在更细粒度的基准证据链,可以作为补充参考:

  • docs/benchmarks/golden.md 中的 golden 基准卡,针对的正是OpenMed/OpenMed-PII-SuperClinical-Small-44M-v1-mlx,设备mlx-fp,报告时间戳2026-06-14T00:00:00Zexact_span_f1各项(precision/recall/F1)均为 1,leakage.overall为 0;
  • docs/eval/benchmark-leaderboard/leaderboard.json 中该模型位列 PII 分组第一名,f1: 1.0recall: 1.0leakage: 0.0release_tag: v2.0.0run_date: 2026-06-14,reproducibility hash 与卡片完全一致。

需要指出的是,golden 基准卡标注Fixtures 1、总字符 4,从源码结构看这是发布门禁级的冒烟样例,而非大规模评测集;引用时应保持这一谨慎口径。manifest 支持的 benchmark 形态有两种:旧的{"dataset": "...", "micro_f1": ..., "recall": ..., "leakage": ...}对象,以及包含suite字段的套件列表,二者在 模型清单 中都有示例。

Tokenizer 脚本覆盖审计:11 个脚本的 unclaimed 判定

卡片用一整张表记录了该模型在 11 个脚本目标上的 tokenizer 覆盖审计结果,这是 PII 家族清单行的强制要求

ScriptUNK rateByte fallback rateTokens / graphemeVerdict
Han Simplified100.00%0.00%0.1000unclaimed
Han Traditional100.00%0.00%0.1096unclaimed
Devanagari100.00%0.00%0.3425unclaimed
Bengali100.00%0.00%0.3151unclaimed
Tamil100.00%0.00%0.3108unclaimed
Telugu100.00%0.00%0.3286unclaimed
Kannada100.00%0.00%0.3582unclaimed
Malayalam100.00%0.00%0.3158unclaimed
Gujarati100.00%0.00%0.3151unclaimed
Gurmukhi100.00%0.00%0.3108unclaimed
Odia100.00%0.00%0.2933unclaimed

三个指标的含义与判定规则(详见 模型清单 与 PII Tokenizer 脚本覆盖审计):

  • UNK rate:该脚本样本中被映射为 UNK token 的比例。此处全部为 100.00%,说明该模型的 DeBERTa 词表对中文/印地语系脚本完全没有覆盖;
  • Byte fallback rate:回退到字节级编码的比例,本模型为 0.00%;
  • Tokens / grapheme:每个字素平均消耗的 token 数,数值都远小于 1,反映脚本字符无法被正常分词;
  • Verdict:判定结果。规则是"UNK 率严格大于 1% 且该脚本被模型所宣称语言认领"时标记为unsupported;而本模型只宣称en,这 11 个 Han/Indic 脚本不属于认领范围,因此审计保留其指标但标记为unclaimed,不会把模型从英语检索中排除。

整个仓库级审计覆盖 654 个 PII 家族模型 × 11 个脚本目标,其中 4114 对超过 UNK 阈值、76 对"已认领但 unsupported"(docs/model-tokenizer-script-coverage.md)。在注册表层面,get_pii_models_by_language会把"宣称语言脚本被明确判定 unsupported"的模型从结果中剔除,UNK/字节回退/每字素 token 数等原始指标仍保留在ModelInfo.script_coverage上供 UI 告警与诊断使用。

Canonical Labels:50 个规范 PII 实体类型

卡片最后列出了该模型支持的全部规范实体标签,它们是 OpenMed 跨模型统一的实体命名空间(manifest 行canonical_labels字段),可按语义归类:

  • 身份PERSONFIRST_NAMELAST_NAMEMIDDLE_NAMEPREFIXUSERNAMEGENDER
  • 联系方式EMAILPHONEURLIP_ADDRESSMAC_ADDRESSUSER_AGENT
  • 位置LOCATIONSTREET_ADDRESSBUILDING_NUMBERZIPCODEGPS_COORDINATESORDINAL_DIRECTION
  • 时间DATEDATE_OF_BIRTHTIMEAGE
  • 证件与金融ID_NUMSSNACCOUNT_NUMBERPASSWORDPINAPI_KEYCREDIT_CARDCREDIT_CARD_ISSUERCVVIBANBICAMOUNTCURRENCYBITCOIN_ADDRESSETHEREUM_ADDRESSLITECOIN_ADDRESSMASKED_NUMBERVINVEHICLE_REGISTRATIONIMEI
  • 职业/组织ORGANIZATIONJOB_TITLEJOB_DEPARTMENTOCCUPATION
  • 生理特征EYE_COLORHEIGHT
  • 兜底OTHER

合计 50 个标签,覆盖了 HIPAA Safe Harbor 常见的直接标识符(姓名、SSN、电话、日期、地址等)以及当代隐私风险点(API Key、加密货币地址、MAC 地址、VIN、IMEI 等),可作为前端筛选器(filter chips)或下游审计逻辑的枚举来源。

选择与使用:如何在本地接入该模型

技能:选择 PII 模型 给出了离线选型的标准流程:先识别输入语言与脚本 → 选择运行时(pytorch用于 CPU/导出源,mlx-fpmlx-8bit用于 Apple Silicon)→ 以get_default_pii_model(language)为基线 → 按运行时与设备预算过滤 → 上线前必须做召回验证。其可运行的离线短名单代码如下:

from openmed import get_default_pii_model, get_pii_models_by_language LANGUAGE = "en" TARGET_FORMAT = "mlx-fp" # Use "pytorch" for CPU or as an export source. MAX_PARAMETERS_M = 150 baseline_id = get_default_pii_model(LANGUAGE) models = get_pii_models_by_language(LANGUAGE) shortlist = [ (key, info) for key, info in models.items() if TARGET_FORMAT in info.formats and info.size_mb is not None and info.size_mb <= MAX_PARAMETERS_M ] shortlist.sort( key=lambda item: ( item[1].model_id != baseline_id, item[1].size_mb, item[0], ) ) if not shortlist: raise RuntimeError("No compatible PII model fits the requested budget") registry_key, selected = shortlist[0]

这段代码只读取打包进仓库的 manifest,不会下载权重,因此天然离线安全。此外还可以用 CLI 在落地数据前规划下载体积与内存预算(默认路径不访问 Hugging Face):

OPENMED_OFFLINE=1 openmed models size disease_detection_tiny openmed models size --budget-mb 100 openmed models size --budget-mb 100 --format json openmed models size disease_detection_tiny --remote # 显式选择时才联网刷新估算

ModelInfo上的size_categorysize_mblatency_mspeak_ram_mbrecommended_tier可用来判断模型是否适配 CPU-only 或目标设备层级;recommended_confidence可作为 API 调用的默认阈值传入analyze_text。注意尺寸单位是十进制 MB(1 MB = 1,000,000 字节),联网刷新需要可选依赖openmed[hf]

许可、可复现性与供应链

该检查点声明apache-2.0许可,与仓库整体许可一致。卡片中的 reproducibility hashsha256:4818bdef...不是权重字节的哈希,而是把目录行绑定到仓库修订与文件清单的稳定性哈希;模型工件字节本身由独立的缓存完整性清单(cache integrity manifest)校验,相关机制见 供应链控制 中的模型工件完整性一节。

另一个值得注意的约束来自 manifest 规范:基准与设备结果文件中只允许存放聚合指标,严禁写入原始 PHI、提示词、文档或样例(模型清单),这保证了这张面向 HIPAA 场景的模型卡在发布链路上也不会泄露患者数据。

小结

从 pii-small-mlx-fp-last-green.md 一张卡片出发,可以完整看到 OpenMed 模型治理的闭环:models.jsonl清单 → 强制 tokenizer 审计 → 门禁晋升与 SemVer 分配 →latest/last_green指针管理 → 模型卡等发布面自动生成。OpenMed-PII-SuperClinical-Small-44M-v1-mlx作为pii::small::mlx-fp槽位的唯一检查点,是一款面向英语临床文本、基于 DeBERTa-v2 的 44M token 分类 PII 模型,支持 50 个规范实体,以全精度 MLX 格式面向 Apple Silicon 设备端部署;其"未认领 11 个非英语脚本"的审计结果既是诚实的边界声明,也为多语言场景下改用其他 PII 模型提供了依据。

【免费下载链接】openmedLocal-first healthcare AI: clinical NER & HIPAA PII de-identification that runs 100% on-device. 2,200+ medical models, 21 languages, Apple MLX + Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 12:59:01

Cocos Creator构建Windows桌面版:从exe到安装包全流程实战指南

最近项目要发布Windows桌面版&#xff0c;产品那边要求给客户一个能双击安装的exe安装包&#xff0c;而不是让用户自己解压文件夹去点运行。我本来以为Cocos Creator构建个Windows平台也就点两下的事&#xff0c;真正走了一遍才发现&#xff0c;从编辑器构建出exe到做出一个合格…

作者头像 李华
网站建设 2026/9/19 12:52:51

Visual Studio 2022 实战安装指南:工作负载、版本选型与故障排查

1. 这不是“点下一步”的安装指南&#xff0c;而是你真正需要的 Visual Studio 2022 实战部署手册Visual Studio 2022 是目前 Windows 平台上最成熟、最完整的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它远不止是一个“写 C# 的工具”。如果你正在为一个新项目搭建…

作者头像 李华
网站建设 2026/9/19 12:51:09

比特币自托管终极安全指南:用松鼠备份构建防自己资产备份体系

1. 先聊透&#xff1a;为什么我持有比特币&#xff0c;最怕的却是自己很多人一听到“比特币 holder”这个词&#xff0c;第一反应是这人肯定天天盯盘、追涨杀跌、在币圈群里吹水。但说实话&#xff0c;真正的老 holder&#xff0c;尤其是从 312、519 那几轮大波动里活下来的人&…

作者头像 李华