Files
fn_registry/python/functions/datascience/glirel_load_model.md
T
egutierrez 09f7f0ba1c feat(datascience): GLiREL relation extractor (zero-shot triplets) drop-in con LLM
- glirel_load_model: cache por (model_name, device); device='auto' resuelve via torch
- extract_relations_glirel: tokeniza por whitespace, mapea spans char->token,
  llama predict_relations y devuelve RelationCandidate; fallback text.find si la
  entidad llega sin offsets; max_pairs=N -> top-N por score
- pyproject.toml: glirel en extra nlp

Closes #0039

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 16:41:09 +02:00

2.8 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
glirel_load_model function py datascience 1.0.0 impure def glirel_load_model(model_name: str = 'jackboyla/glirel-large-v0', device: str = 'auto') -> Any Carga (y cachea por (model_name, device)) un modelo GLiREL zero-shot relation extraction. La primera llamada descarga ~500 MB desde HuggingFace; sucesivas devuelven la instancia cacheada. device='auto' usa CUDA si esta disponible, o CPU.
glirel
relation
nlp
model
huggingface
zero-shot
datascience
python
false error_go_core
name desc
model_name ID del modelo en HuggingFace Hub (defecto: jackboyla/glirel-large-v0)
name desc
device 'auto' (CUDA si disponible, sino CPU), 'cpu', 'cuda', 'cuda:N'
instancia GLiREL lista para predict_relations, cacheada por (model_name, device) true
ImportError si glirel no esta instalado
Cache devuelve la misma instancia con los mismos parametros
device='auto' resuelve a cpu o cuda segun torch.cuda.is_available
python/functions/datascience/tests/test_extract_relations_glirel.py python/functions/datascience/glirel_load_model.py

Ejemplo

from python.functions.datascience import glirel_load_model

# Primera llamada descarga el modelo (~500 MB, una vez)
model = glirel_load_model(device="auto")

# Llamadas sucesivas con mismos params devuelven el cache
model_again = glirel_load_model(device="auto")
assert model is model_again

Instalacion

GLiREL no esta en las dependencias principales del registry. Para usarlo:

cd python && uv pip install glirel             # solo glirel
cd python && uv pip install -e '.[nlp]'        # extra completo (gliner + glirel)

Tamaño y latencia

  • jackboyla/glirel-large-v0: ~500 MB en disco (modelo + tokenizer).
  • Primera carga: 8-20 s en CPU, depende del disco y red.
  • Inferencia CPU: depende del numero de pares entidad x relation_types. 5-20 pares/s con esquema pequeño (5 relation types).
  • Inferencia GPU (CUDA T4): 50-200x mas rapido que CPU.

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 torch no esta instalado y device='auto', cae a 'cpu' sin error.
  • Para limpiar el cache (memoria GPU): borrar entradas de _MODEL_CACHE directamente o reiniciar el proceso.
  • impure: lee disco/red la primera vez y mantiene estado en _MODEL_CACHE.
  • GLiREL es bueno para relaciones explicitas en el texto (X trabaja en Y, A llamo a B), malo para razonamiento implicito ("CEO de la empresa"). Para razonamiento implicito seguir usando extract_relations_llm.