
OpenMed 中/印地语/泰米尔语去标识吞吐量基准与发布门禁i18n-throughput 从实测到基线守护的完整实践【免费下载链接】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本指南围绕仓库文档 docs/benchmarks/i18n-throughput.md 展开系统讲解 OpenMed 如何为中文zh、印地语hi、泰米尔语ta三类非拉丁文字建立稳态吞吐量基准segmentation 字符/秒 与deidentify()脱敏跨度/秒并通过20% 回归阈值门禁把多语言性能退化拦截在发布之前。读完本文你将掌握如何本地复现该基准、理解合成语料的确定性生成与哈希校验机制、读懂 gates/baseline.json 中基线条目的全部字段以及如何在评审制流程下安全刷新基线与再生成语料。为什么需要 i18n 吞吐量门禁OpenMed 是本地优先local-first的医疗 AI 脱敏引擎宣称支持 21 种语言与 2,200 医疗模型。在全部本地运行、患者数据不出网络的前提下多语言文字处理性能直接决定端侧体验中文需要分词器segmenter印地语/泰米尔语这类 Indic 文字需要处理连字簇grapheme cluster而脱敏管线还要在这些文本上运行正则与模式检测器。为避免性能回归在用户设备上才暴露OpenMed 在发布候选release candidate阶段设置了两类稳态测量见 i18n-throughput.md分词吞吐量segmentation_chars_per_second每秒处理字符数端到端脱敏吞吐量deidentify_spans_per_second每秒产出去标识化跨度数。测量覆盖三个提交到仓库的全合成语料中文、印地语、泰米尔语每个语料至少 100,000 字符。值得注意的是该基准刻意运行在pattern-only 模式——不加载任何模型权重、不访问网络只测分词器与确定性模式检测器的纯本地路径因此结果稳定、可复现、适合作为发布门禁而非模型推理性能评估。指标定义与源码实现基准的完整实现在 openmed/eval/i18n_throughput.py。其核心常量明确了测试口径I18N_THROUGHPUT_LANGUAGES (zh, hi, ta) I18N_THROUGHPUT_MIN_CHARS 100_000 # 每个语料最小字符数 I18N_THROUGHPUT_MAX_SECONDS 300.0 # 完整基准 5 分钟时限 I18N_THROUGHPUT_DEID_CHUNK_CHARS 4_096 # 脱敏分块大小benchmark_language()对每个语言执行两类测量冷启动cold start在第一个按换行对齐的分块_iter_corpus_chunks默认 4096 字符上记录首次调用延迟中文侧包含词典初始化耗时记为segmentation_cold_start_ms与deidentify_cold_start_ms稳态steady state对完整语料运行iterations轮默认 1计算segmentation_chars_per_second 总字符数 × 迭代数 / 耗时与deidentify_spans_per_second 总跨度数 / 耗时。不同语言的分词后端在run_benchmark()的backend字段中明示backend: { segmentation: { zh: jieba, hi: grapheme-safe-indic, ta: grapheme-safe-indic, }, deidentify: pattern-only, model_weights_required: False, }中文走create_chinese_segmenter(jieba)工厂函数位于 openmed/processing/zh_segmentation.py支持jieba/pkuseg/hanlp三种后端本基准固定jieba印地语与泰米尔语走indic_word_tokenize()位于 openmed/processing/tokenization.py按 Unicode 字素簇grapheme cluster分组字母、保留数字内的日期/号码分隔符、标点独立成 token保证 Span 索引与原文严格对齐绝不切断 Indic 连字。Pattern-only 脱敏路径零模型、零网络基准刻意使用_PatternOnlyLoader适配器同文件第 47–69 行它故意不产生任何模型预测class _PatternOnlyLoader: Model-loader adapter that deliberately produces no model predictions. def create_pipeline(self, model_name, **kwargs): def empty_pipeline(text, **call_kwargs): if isinstance(text, list): return [[] for _ in text] return [] return empty_pipeline_deidentifier_factory随后以model_namepattern-only调用 openmed.core.pii 的 deidentifymethodmask、use_smart_mergingFalse、use_safety_sweepTrue并按 4096 字符的换行对齐分块处理语料——这样句子切分复杂度不会随语料规模呈二次增长。报告只统计len(result.pii_entities)即被识别的跨度数量。合成语料确定性、可复现、无真实 PHI语料由generate_synthetic_corpus()i18n_throughput.py生成关键设计点维度取值生成器Faker按语言设置 localezh_CN/hi_IN/ta_IN种子每语言固定zh698001、hi698002、ta698003访问日期窗口固定为2021-07-23至2026-07-23_VISIT_DATE_START/_VISIT_DATE_END与日历无关保证跨年份稳定最小规模至少 100,000 个字符记录结构中文含合成病例前缀 患者姓名、身份证号、手机号、就诊日期、地址印地语/泰米尔语含कृत्रिम मामला/செயற்கை பதிவு前缀 姓名、Aadhaar、电话、日期、地址全部带纯合成测试数据声明元数据schema_version、Faker 版本与 locale、seed、char_count、record_count、全文sha256生成的 JSON fixture 提交在 tests/fixtures/i18n/zh_throughput.json、tests/fixtures/i18n/hi_throughput.json、tests/fixtures/i18n/ta_throughput.json。load_synthetic_corpus()在加载时会做严格校验schema 版本、语言标签、syntheticTrue、generated_onlyTrue、生成器必须是 Faker、字符数不小于 100,000、char_count与sha256必须与文本匹配——任何一项不符直接抛ValueError从机制上防止真实 PHI 混入或语料被篡改。基准报告只输出聚合指标、语料规模与哈希绝不复制 fixture 文本或检测到的表面surface内容这也与仓库整体的no raw PHI logging安全基线一致。本地复现从安装到出报告按 i18n-throughput.md 的Run locally章节完整命令如下# 1. 安装开发与语言相关 extrasjieba 中文分词、Indic 语言依赖 uv sync --extra dev --extra zh --extra indic # 2. 运行完整基准产出机器可读 JSON 报告 .venv/bin/python -m openmed.eval.i18n_throughput \ --output i18n-throughput-report.json # 3. 用候选报告对基线执行发布门禁判定 .venv/bin/python -m openmed.eval.release_gates \ --throughput-candidate i18n-throughput-report.json \ --baseline-store gates/baseline.json \ --output i18n-throughput-gate.jsonopenmed.eval.i18n_throughput模块的 CLImain()i18n_throughput.py还支持以下参数便于定向测试参数默认值说明--fixtures-dirtests/fixtures/i18n语料 JSON 所在目录--language全部zh/hi/ta可重复传入只跑指定语言--iterations1每个操作/语言的稳态迭代次数--max-duration-seconds300.0超出该时限整个基准直接失败--output无打印 stdout机器可读报告输出路径整个基准被I18N_THROUGHPUT_MAX_SECONDS 300.0硬性约束run_benchmark()在循环结束后检查duration_seconds max_duration_seconds则抛出RuntimeError。报告结构包含artifact_type: openmed.eval.i18n_throughput、generated_atUTC、backend、python、platform、每个语料的corpora摘要路径、seed、char_count、sha256与languages指标明细。门禁判定逻辑20% 回归阈值门禁核心是evaluate_i18n_throughput_gate()release_gates.py判定规则基线存储校验先对gates/baseline.json执行validate_baseline_store非法即判定失败报告类型校验候选artifact_type必须是openmed.eval.i18n_throughput否则拒绝逐语言比对对 zh/hi/ta 三个语言按baseline_key(i18n-throughput, language, pattern-only)查找基线条目校验regression_threshold必须精确等于0.2I18N_THROUGHPUT_REGRESSION_THRESHOLD 0.20release_gates.py双指标判定对segmentation_chars_per_second与deidentify_spans_per_second两个指标计算minimum baseline * (1 - 0.2)任一指标低于该下限即记录 violation含 baseline、observed、minimum、drop_fraction并输出throughput regression: 详情作为失败原因决策输出_run_i18n_throughput_gate_cli()release_gates.py打包为openmed.eval.i18n_throughput_gate报告passedTrue时decisionRELEASABLE退出码 0否则QUARANTINED退出码 1。一个重要设计决策冷启动指标cold start不参与门禁。函数 docstring 明确说明——进程与文件系统缓存状态使冷启动延迟不适合作为稳定的发布阈值它只在报告中可见供人工排查。基线数据解读当前各语言稳态值gates/baseline.json 中三个i18n-throughput::lang::pattern-only条目记录了当前基准值GitHub Hosted Ubuntu x86_64 runner 上六次连续运行的中位数更新于 2026-08-12语言 (tier)segmentation_chars_per_seconddeidentify_spans_per_secondzh320,459.236624.1955hi135,093.340537.4975ta138,784.672552.22每个条目的元数据还记录了校准方式{ family: i18n-throughput, format: pattern-only, tier: zh, metadata: { benchmark_schema_version: 1, calibration_artifact_set_sha256: sha256:5c794707..., calibration_method: median, calibration_run_ids: [31149389732, 31239595555, 31295013051, 31357054005, 31459311593, 31565474523], calibration_sample_count: 6, corpus_sha256: sha256:eb9a1ff6..., iterations: 1, recorded_platform: GitHub-hosted Ubuntu x86_64, regression_threshold: 0.2 }, metrics: { ... }, reproducibility_hash: sha256:5c794707..., updated_at: 2026-08-12T00:00:0000:00 }其中reproducibility_hash与calibration_artifact_set_sha256相同其定义为按 run_id 排序的{run_id, report}对象列表的紧凑、按键排序 JSON 的 SHA-256评审者可以凭命名的 workflow 构件复算验证。基线刷新评审制、不自动更新文档强调基线永远不会自动更新。发布工作流跑在 GitHub 托管的 Ubuntu x86_64 runner 上因此提交的基线必须来自同一 runner 类别而非开发者工作站否则跨硬件比较没有意义。当前值取自六次连续 hosted 运行的中位数每次条目标注运行 ID 与聚合校准哈希。刷新基线只能通过评审过的 Pull Request完成流程如下i18n-throughput.md 原文五步从指定的 GitHub Hosted Ubuntu x86_64 workflow 收集至少六个完成的基准构件排查双峰bimodal或不稳定结果对每个稳态指标取中位数而非单次快跑值仅更新gates/baseline.json中的六个稳态指标及其测量元数据来源运行 ID、样本数、聚合可复现哈希将 JSON diff 与基准报告一起评审不允许仅为了让门禁通过而接受无法解释的更低基线合并前运行吞吐量门禁与完整测试套件。语料再生成同样是评审制.venv/bin/python scripts/benchmarks/generate_i18n_throughput_fixtures.py该脚本generate_i18n_throughput_fixtures.py支持--output-dir与--target-chars两个参数内部复用write_synthetic_corpora()。提交再生成的语料前需评审 fixture 元数据、哈希、规模并确认所有测试均基于合成数据。测试验证门禁行为有据可查openmed/eval/i18n_throughput.py 的行为由 tests/unit/eval/test_i18n_throughput.py 覆盖关键断言包括语料合法性每个提交语料 ≥100,000 字符、syntheticTrue、generated_onlyTrue、生成器为 Faker、哈希以sha256:开头test_committed_corpora_are_large_deterministic_faker_fixtures指标完备性冷启动与稳态四项指标均非负且稳态值大于 0test_benchmark_emits_cold_start_and_steady_state_metrics访问日期窗口固定用 StubFaker 验证date_between的窗口精确等于2021-07-23到2026-07-23且记录中出现2021-07-23test_synthetic_records_use_a_calendar_independent_visit_window阈值边界候选值恰好为基线的 80%即恰好允许 20% 下降时门禁通过test_throughput_gate_allows_exactly_twenty_percent_drop基线一致性提交的gates/baseline.json与 hosted runner 校准值匹配test_committed_baseline_matches_hosted_runner_calibration。这些测试确保基准可复现、门禁可判定、基线可审计三项承诺不会在后续改动中被破坏。小结一条从实测到发布的完整守护链OpenMed 的 i18n 吞吐量基准是一条设计严谨的发布守护链确定性 Faker 合成语料含哈希校验→ 零模型 pattern-only 测量分词/脱敏双指标→ 5 分钟时限约束 → 20% 回归阈值门禁RELEASABLE / QUARANTINED→ 评审制基线刷新。它既保证了中、印地、泰米尔三种非拉丁文字在端侧的核心路径不会静默劣化又通过仅提交聚合指标与哈希、绝不携带 PHI的报告格式守住隐私底线。如果你要为本仓库做性能回归排查或发布前验证推荐按以下顺序行动先跑uv sync --extra dev --extra zh --extra indic复现基准再以--language定向复测可疑语言最后用release_gates --throughput-candidate对照 gates/baseline.json 判定是否可发布任何基线刷新都必须走评审制 PR并保留六次 hosted 运行的中位数证据。【免费下载链接】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),仅供参考