b10c545479
Funciones nuevas en python/functions/datascience/: - gliner_load_model: carga + cachea modelo GLiNER por (name, device). device='auto' resuelve a cuda/cpu segun torch.cuda.is_available, sin fallar si torch no esta instalado. ImportError claro si falta gliner. - extract_entities_gliner: contrato drop-in de extract_entities_llm (mismo entity_schema, mismo list[EntityCandidate]). El caller inyecta el modelo (cargado UNA vez por proceso). Anota offsets start/end en attributes para reconciliar con extract_iocs (issue 0040). Diferencias vs LLM extractor: - 50-200x mas rapido en GPU, 0 USD/token. - Malo con IoCs tecnicos (lo cubre 0037). - Threshold y flat_ner ajustables por dominio. pyproject.toml: gliner como extra opcional `[nlp]` para no inflar el .venv de quien no use NER. Instalacion: `uv pip install -e '.[nlp]'`. Refs #0038 — Desbloquea 0039 (GLiREL) y 0040 (pipeline hibrido). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| gliner_load_model | function | py | datascience | 1.0.0 | impure | def gliner_load_model(model_name: str = 'urchade/gliner_multi-v2.1', device: str = 'auto') -> Any | Carga (y cachea por (model_name, device)) un modelo GLiNER zero-shot NER. La primera llamada descarga ~200 MB desde HuggingFace; sucesivas devuelven la instancia cacheada. device='auto' usa CUDA si esta disponible, o CPU. |
|
false | error_go_core |
|
instancia GLiNER lista para predict_entities, cacheada por (model_name, device) | true |
|
python/functions/datascience/tests/test_extract_entities_gliner.py | python/functions/datascience/gliner_load_model.py |
Ejemplo
from python.functions.datascience import gliner_load_model
# Primera llamada descarga el modelo (~200 MB, una vez)
model = gliner_load_model(device="auto")
# Llamadas sucesivas con mismos params devuelven el cache
model_again = gliner_load_model(device="auto")
assert model is model_again
Instalacion
GLiNER no esta en las dependencias principales del registry. Para usarlo:
cd python && uv pip install gliner # solo gliner
cd python && uv pip install -e '.[nlp]' # extra completo
Tamaño y latencia
urchade/gliner_multi-v2.1: ~210 MB en disco (modelo + tokenizer).- Primera carga: 5-15 s en CPU, depende del disco y red.
- Inferencia CPU: 1-5 KB texto/s con 8 labels (Apple M2 / i7 moderno).
- Inferencia GPU (CUDA T4): 50-200 KB texto/s — 50-200x mas rapido.
Notas
- El cache es por (model_name, device): cargar el mismo modelo en CPU y CUDA crea dos instancias. Es intencional para permitir A/B.
- Si
torchno esta instalado ydevice='auto', cae a'cpu'sin error. - Para limpiar el cache (memoria GPU): borrar entradas de
_MODEL_CACHEdirectamente o reiniciar el proceso. - impure: lee disco/red la primera vez y mantiene estado en
_MODEL_CACHE.