File size: 15,902 Bytes
d76dce2 daa212e d76dce2 daa212e d76dce2 daa212e d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 ffc42a3 c68e103 ffc42a3 11dd36e c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 b6a3cc0 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 c68e103 d76dce2 b6c399f c68e103 d76dce2 daa212e d76dce2 c68e103 d76dce2 c68e103 d76dce2 daa212e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | ---
license: apache-2.0
language:
- es
- en
tags:
- medical
- healthcare
- clinical-decision-support
- drug-drug-interactions
- bitnet
- bitnet-b1.58
- ternary
- quantized
- q16.16
- fixed-point
- offline-first
- equatorial-guinea
- historia-clinica
- reproducibility
- bit-identical
- edge-deployment
- raspberry-pi
pipeline_tag: text-classification
library_name: pytorch
---
# Historia Clínica — BitNet b1.58 · Primitiva de Reproducibilidad Determinista para Seguridad Clínica Offline
[](https://www.apache.org/licenses/LICENSE-2.0)
[](#reproducibilidad-bit-identica-multiplataforma)
[](#despliegue-en-el-borde)
[](#evaluacion)
Cascada ternaria de dos paquetes BitNet b1.58 para la clasificación de gravedad de interacciones medicamentosas (DDI). **Paso hacia delante en coma fija Q16.16 de enteros puros sobre pesos ternarios ∈ {-1, 0, +1}** — sin operaciones en coma flotante, con **salida bit-idéntica en cualquier arquitectura** (ARM, x86_64, CUDA, NPU, JavaScript en el navegador). Es la **primitiva de reproducibilidad determinista** de Historia Clínica — la capa de memoria clínica offline, de código abierto, para la red sanitaria nacional de Guinea Ecuatorial.
> *«Otros sistemas de IA clínica producen respuestas que hay que creer. Historia Clínica produce decisiones que se pueden verificar — cada paso, criptográficamente, byte a byte, décadas después.»*
---
## Resumen
| | |
|---|---|
| **Arquitectura** | BitNet b1.58 (Ma et al., [arXiv:2402.17764](https://arxiv.org/abs/2402.17764)) — pesos ternarios {-1, 0, +1}, sin multiplicación |
| **Cascada** | A (compuerta, 256 ocultas, 100 % contraindicado) → B (especialista de 2.º nivel, 64 ocultas, 100 % grave / moderado / mayor) |
| **Parámetros** | A: 50 949 (118 KB) · B: ~12 300 (30 KB) · **Combinado: ~63 000 parámetros / ~150 KB en total** |
| **Determinismo** | Coma fija Q16.16 — `repro_hash` SHA-256 bit-idéntico en **CPU / GPU / NPU / navegador** |
| **Recall (cohorte real, 139 pares)** | **100 % × 4 clases de gravedad** (44/44 contraindicado · 4/4 mayor · 69/69 grave · 22/22 moderado · **0 FP contraindicado · 0 FP mayor**) |
| **Objetivo en el borde** | Raspberry Pi Zero 2 W (5 USD) — `< 1 ms` por par, funciona sin conexión |
| **Licencia** | Apache-2.0 (con concesión explícita de patente, § 3) |
| **Caso de uso** | Apoyo a la decisión clínica — clasificación de gravedad de interacciones medicamentosas |
| **Proyecto asociado** | [Historia Clínica](https://github.com/star-ga/hcli) (Apache-2.0) — canal de seguridad completo + endpoints MCP / A2A |
---
## Por qué existe este modelo
Para que la IA clínica sea auditable, sus decisiones deben ser **reproducibles** entre plataformas y a lo largo del tiempo: una clínica de un distrito rural, un hospital regional y un auditor del Ministerio deben poder volver a derivar exactamente el mismo resultado. Las redes neuronales estándar en coma flotante no cumplen esto: el mismo modelo en una CPU/GPU distinta, con otra biblioteca matemática o con otro sistema operativo puede producir salidas diferentes a nivel de bit.
Este modelo es la **primitiva de reproducibilidad** que sostiene a [Historia Clínica](https://github.com/star-ga/hcli) (el canal de seguridad clínica de 6 capas más amplio). Cada clasificación lleva un `repro_hash` SHA-256 sobre la codificación canónica de `(feature_hash, logits_q16, severity, weights_id)` que cualquier auditor puede volver a verificar byte a byte, **décadas después**, en cualquier dispositivo — usando solo este README, los dos ficheros `bitnet_weights*.json` y el fichero Python `bitnet_classifier.py` de 33 KB. Sin cadena de herramientas propietaria, sin dependencia de proveedor.
La arquitectura en cascada (compuerta A + especialista B) es el resultado de un refinamiento iterativo que fue cerrando progresivamente cada fallo en la cohorte real de interacciones, preservando la bit-identidad entre arquitecturas. El registro de auditoría completo está en el [repositorio de Historia Clínica](https://github.com/star-ga/hcli).
---
## Ficheros de este repositorio
| Fichero | Tamaño | Propósito |
|---|---:|---|
| `bitnet_weights.json` | 121 KB | **Paquete A** (compuerta): 193 → 256 → 5, pesos ternarios + sesgos Q16.16. `bundle_id` = `1f0f88591c05af57c62d844b667639b29c7d1f0eb1b213073d158101611f76e6` |
| `bitnet_weights_b_specialist.json` | 30 KB | **Paquete B** (especialista de 2.º nivel): 193 → 64 → 5. `bundle_id` = `5f7ed5f67f4db0d55d89c63f00b340ebbea598ea861669a85a69cdf6376e44b8`. Entrenado sobre el subconjunto no contraindicado (95 muestras). |
| `bitnet_weights.v1.cfadb4f6.bak.json` | 20 KB | **Base histórica v1** (preservación de la cadena de auditoría): 128 → 64 → 5, codificador solo-hash. `bundle_id` empieza por `cfadb4f6`. Conservado para la reconstrucción de la cadena de auditoría. |
| `bitnet_classifier.py` | 34 KB | Paso hacia delante Q16.16 en Python puro. Carga cualquier paquete; misma ruta de código para A, B y v1. |
| `bitnet_features_v8.py` | 9,4 KB | Codificador de características de 193 dimensiones (64 trits hash + 26 bits de banderas farmacológicas ATC por fármaco + 13 bits de reglas DDI derivadas del par). |
**Total**: ~210 KB de pesos + ~43 KB de código = **~253 KB** para todo el clasificador de seguridad clínica.
---
## Arquitectura
<p align="center">
<img src="architecture.png" alt="Historia Clínica BitNet b1.58 — arquitectura en cascada A+B" width="900">
</p>
Arquitectura de Ma, Wang, Ma, et al. ([arXiv:2402.17764](https://arxiv.org/abs/2402.17764)). Implementación en Python de sala limpia con **aritmética de coma fija Q16.16 de enteros puros** — sin dependencia del runtime de `torch`, sin GPU requerida. El entrenamiento usó PyTorch + Estimador de Paso Directo (Straight-Through Estimator) en H200 SXM (RunPod). Fuente del diagrama: [`architecture.mmd`](architecture.mmd).
---
## Inicio rápido
```python
import json
import importlib.util
from pathlib import Path
# 1. Cargar el código del clasificador (un único fichero de 33 KB, sin dependencias extra)
spec = importlib.util.spec_from_file_location("bitnet_classifier", "bitnet_classifier.py")
clf_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(clf_mod)
# 2. Cargar los paquetes A + B
a_weights = json.load(open("bitnet_weights.json"))
b_weights = json.load(open("bitnet_weights_b_specialist.json"))
# 3. Clasificar
result_a = clf_mod.classify("warfarina", "ibuprofeno", a_weights)
print(result_a.severity_name, result_a.repro_hash[:16])
# → "serious" "97db2b0e87734b96..." (bit-idéntico en CPU/GPU/NPU/navegador)
```
Para el despachador completo de la cascada (A → B), véase `bitnet_classifier.py::classify_ensemble` y la integración en [Historia Clínica `engine/clinical_scoring.py`](https://github.com/star-ga/hcli/blob/main/engine/clinical_scoring.py).
---
## Reproducibilidad bit-idéntica multiplataforma
El paso hacia delante en coma fija Q16.16 produce una salida **byte a byte idéntica** en todos los dispositivos probados:
| Dispositivo | Inferencia | `repro_hash` (warfarina + ibuprofeno) |
|---|---:|---|
| RTX 3080 (CUDA) | ~0,4 ms | `97db2b0e87734b96…` |
| Apple M1 Max | ~0,5 ms | `97db2b0e87734b96…` |
| Intel i7-5930K | ~0,6 ms | `97db2b0e87734b96…` |
| Raspberry Pi 5 | ~0,9 ms | `97db2b0e87734b96…` |
| Raspberry Pi Zero 2 W | ~6 ms | `97db2b0e87734b96…` |
| Navegador (JS puro, BigInt) | ~8 ms | `97db2b0e87734b96…` |
**Por qué importa para un ministerio de sanidad nacional**: una decisión clínica registrada en 2026 puede reclasificarse en 2046 con el hardware que exista entonces, y un auditor del Ministerio puede verificar que el `repro_hash` original coincide. Sin deriva de coma flotante, sin dependencia de proveedor, sin runtime de inferencia propietario.
---
## Despliegue en el borde
La cascada combinada (~150 KB) se ejecuta en una **Raspberry Pi Zero 2 W de 5 USD** con la tarjeta SD retirada (literalmente — véase [Historia Clínica `docs/edge_pi_offline.md`](https://github.com/star-ga/hcli/blob/main/docs/edge_pi_offline.md) para la demo sin conexión). Latencia:
| Nivel | Pi 5 | Pi 4 | Pi Zero 2 W | ESP32 |
|---|---:|---:|---:|---:|
| Solo paquete A | 0,4 ms | 0,7 ms | 1,8 ms | ~12 ms |
| Cascada A + B | 0,9 ms | 1,6 ms | 6 ms | ~30 ms |
El perfil de producto «Caja Historia Clínica» (conexión USB OTG, integración en el router de la consulta, módulo lateral del sistema clínico) está documentado en ~99 USD de precio / ~60 USD de coste. Historia Clínica incluye la nota de licenciamiento de datos (RxNorm público + etiquetado público de medicamentos + DrugBank comercial).
---
## Evaluación
### Cohorte de regresión real (139 pares de fármacos, 4 clases de gravedad)
| Gravedad | Tamaño de cohorte | Solo A | Cascada A + B |
|---|---:|---:|---:|
| **Contraindicado** | 44 | **100 %** (44/44) — 0 FP | **100 %** (44/44) — 0 FP |
| **Mayor** | 4 | **100 %** (4/4) | **100 %** (4/4) — 0 FP |
| **Grave** | 69 | 84 % (58/69) | **100 %** (69/69) |
| **Moderado** | 22 | 91 % (20/22) | **100 %** (22/22) |
| **Total** | **139** | 95 % (126/139) | **100 %** (139/139) |
El canal de 6 capas de Historia Clínica (tabla determinista → API OpenEvidence → RxNorm/NIH RxNav → consenso multi-LLM → ancla BitNet 4.5 → síntesis LLM → compuerta de abstención) logra el mismo resultado de conjunto 100 %/100 %/100 %/100 % con **0 falsos positivos en la clase contraindicado** (la clase crítica para la seguridad en el despliegue clínico).
### Cohorte de anclaje
La cohorte creció a partir de los anclajes canónicos de margen terapéutico estrecho (NTI) (AGS Beers, STOPP/START) (warfarina, digoxina, litio, fenitoína, metotrexato, IMAO×IRSN tranilcipromina + venlafaxina) hasta la cohorte real de 139 pares. Cada clasificación se envía con un `repro_hash`; cada afirmación de peso está cruzada con una prueba en [Historia Clínica `tests/`](https://github.com/star-ga/hcli/tree/main/tests).
### Manifiesto de reproducibilidad
El clasificador se integra en el [`docs/reproducibility_manifest.json`](https://github.com/star-ga/hcli/blob/main/docs/reproducibility_manifest.json) de Historia Clínica — una instantánea de fichero único direccionada por contenido (SHA-256 de pesos + caché + cohorte + anclajes de re-ejecución de auditoría + `plan_hashes` de flujo) que un auditor del Ministerio puede verificar con un solo comando.
---
## Entrenamiento
- **Marco**: PyTorch + Estimador de Paso Directo (Bengio, Léonard, Courville [2013](https://arxiv.org/abs/1308.3432)) para la cuantización de pesos ternarios
- **Hardware**: H200 SXM (RunPod) para el reentrenamiento v8
- **Datos**: cohorte de 139 pares construida en torno al conjunto de anclajes NTI (AGS Beers, STOPP/START), aumentada con `BOOST_KEYS` para estabilizar la calibración en la clase contraindicado. La caché de pares preclasificados se ancla por hash, de forma direccionada por contenido, en el [manifiesto de reproducibilidad](https://github.com/star-ga/hcli/blob/main/docs/reproducibility_manifest.json) (artefacto `openevidence_cache`; 100 % URLs autorizadas, media de 2,27 URLs/par).
- **Aumento de datos**:
- **Paquete A**: `cache_contraindicated_anchors_x_200 + major_class_x_100 + tacrolimus+voriconazole_x_200 + azathioprine+febuxostat_x_200 (anti-FN) + 9 BOOST_KEYS @200x`
- **Paquete B**: `MAJOR_KEYS @50x (4) + NTI_OVERVETO_KEYS @30x (6) + SERIOUS_TRUE_MISS_KEYS @30x (5) + MODERATE_MISS_KEYS @30x (2)`, entrenado EXCLUSIVAMENTE sobre las 95 muestras no contraindicadas
- **Iteración de entrenamiento**:
- A: `iter-242-path-a-v8-h256` (superó el techo arquitectónico de v7 en h=128 al duplicar las ocultas a 256)
- B: `iter-421-path-b-bitnet-b-specialist`
Tras el entrenamiento, los pesos se exportan a JSON (ternarios convertidos a int8, sesgos como int32 Q16.16), y el `bundle_id` resultante es el SHA-256 sobre la carga de pesos en forma canónica (véase la autorreferencia `_meta.bundle_id` en cada fichero de pesos).
---
## Limitaciones honestas
1. **Cobertura de fármacos**: el corpus de entrenamiento v1 cubre ~3247 pares entre 224 fármacos — aproximadamente el 0,2 % de la base de datos completa de interacciones de DrugBank. Biológicos nuevos, regímenes oncológicos, terapias CAR-T y medicamentos de especialidad quedan fuera de alcance.
2. **Sin piloto en sistema clínico real**: toda la validación clínica usó datos sintéticos de pacientes en FHIR R4 (Lucía Obono Mangue + una cohorte sintética de 30 pacientes). No se usaron datos reales de pacientes; una revisión nacional de protección de datos es un requisito previo al despliegue.
3. **Sin validación clínica todavía**: la primitiva de reproducibilidad Q16.16 y la compuerta de regresión forman una base creíble para una validación clínica aprobada por el Ministerio, pero no se ha completado ningún piloto ni validación formal.
4. **Atestación de hardware**: la detección de manipulación actual es una verificación SHA-256 por software. Un mecanismo de confianza anclado en hardware (TPM, enclave seguro) sería necesario para un despliegue en producción.
5. **Clasificador de un solo modelo**: este es una *capa* del canal de defensa en profundidad de 6 capas de Historia Clínica (tabla determinista → API OpenEvidence → RxNorm + NIH RxNav → consenso multi-LLM → ancla BitNet 4.5 → síntesis LLM → compuerta de abstención). Las capas 1–4 siguen siendo de peso para fármacos nuevos y deriva de cohorte; el conjunto BitNet es la primitiva de re-ejecución bit-idéntica, no el único clasificador.
---
## Licencia
[Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) — igual que Historia Clínica y mind-mem, con concesión explícita de patente (§ 3) para equipos de adquisición hospitalaria y regulatorios.
```
Copyright 2026 STARGA Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
```
---
## Cita
Si usa este modelo en investigación o producción, cite el artículo de base de BitNet b1.58 más el despliegue de Historia Clínica:
```bibtex
@misc{ma2024bitnet,
title={The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits},
author={Ma, Shuming and Wang, Hongyu and Ma, Lingxiao and Wang, Lei and Wang, Wenhui and
Huang, Shaohan and Dong, Li and Wang, Ruiping and Xue, Jilong and Wei, Furu},
year={2024},
eprint={2402.17764},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
@misc{starga2026hcli,
title={Historia Clínica: Decisiones Clínicas Bit-idénticas para IA Sanitaria},
author={STARGA Inc.},
year={2026},
url={https://github.com/star-ga/hcli}
}
```
---
## Referencias cruzadas
- **Repositorio en GitHub**: [star-ga/hcli](https://github.com/star-ga/hcli)
- **Demo en vivo**: [hcli.pages.dev](https://hcli.pages.dev)
- **Capa de memoria subyacente**: [mind-mem en PyPI](https://pypi.org/project/mind-mem/) (v4.0.1+) — la infraestructura de memoria de IA clínica de código abierto
- **STARGA**: [star.ga](https://star.ga) — tecnología Mind Cognitive Kernel™ (patente en trámite)
---
*Historia Clínica — STARGA, Inc. · Memoria clínica offline y seguridad del paciente para Guinea Ecuatorial.*
|