CoolFace
Modelpublic

somosnlp-hackathon-2026/mombeu-LFM2-1.2B

sourceHugging Faceapache-2.0updated 3mo agoView on Hugging Face
0likes17downloads
Model Card

Mombeu — LFM2 1.2B (Cultural Alignment)

Mombeu ("contar, narrar" en guaraní) es una capa de inserción narrativa ajustada sobre LiquidAI/LFM2-1.2B. No es un chatbot ni un modelo de propósito general: recibe la respuesta de otro LLM y, cuando la temática lo permite, agrega al final un cierre narrativo basado en la cosmovisión guaraní.

El usuario sigue usando el LLM de siempre. Mombeu trabaja en el fondo.

En Paraguay, la mayoría de las personas crecieron escuchando o hablando guaraní, pero no siempre desarrollaron un vínculo con la cosmovisión que hay detrás de la lengua. No es falta de interés; muchas veces faltan canales cotidianos, educativos y digitales para que ese conocimiento circule sin quedar encerrado en la academia, la comunidad o la nostalgia.

Mombeu propone que los LLMs sean uno de esos canales: que cada respuesta sea una oportunidad de transmitir memoria colectiva, no como lección, sino como la tradición oral guaraní lo hace naturalmente - por evocación, por asociación, sin pedirlo.


Flujo de uso

usuario → [ otro LLM ] → texto base → [ Mombeu ] → continuación cultural

Mombeu siempre corre localmente vía transformers. El texto base puede venir de cualquier fuente: otro modelo local, una API externa, o texto escrito a mano.


Ejemplo

Texto base (salida del otro LLM):

El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas que sobrevuelan
el lago en busca de peces, un mundo de aves que conviven en distintos estratos del bosque.

Continuación generada por Mombeu:

Detente un segundo antes de seguir.

El bosque de Camp Clover alberga desde colibríes iridiscentes hasta águilas que sobrevuelan
el lago en busca de peces, un mundo de aves que conviven en distintos estratos del bosque.

Ese canto que llena los árboles tiene un eco en la cultura guaraní que pocos conocen.

El Pájaro de Campana es uno de los pájaros más raros de nuestros bosques — parecido a una
paloma blanca con cola cenicienta, su canto tiene la misma vibración metálica de una campana
que toca a duelo.

Uso

Con otro modelo local (transformers → Mombeu)

python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline

# Paso 1 — generar texto base con pipeline
base_pipe = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.3")
base_text = base_pipe(
    "Describí la fauna del Chaco paraguayo en dos oraciones.",
    max_new_tokens=150,
    do_sample=False,
)[0]["generated_text"]

# Paso 2 — cargar Mombeu con AutoModelForCausalLM
MODEL_ID = "somosnlp-hackathon-2026/mombeu-LFM2-1.2B"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto")
device = next(model.parameters()).device

# Paso 3 — generar la continuación cultural
inputs = tokenizer(
    tokenizer.apply_chat_template(
        [{"role": "user", "content": base_text}],
        tokenize=False,
        add_generation_prompt=True,
    ),
    return_tensors="pt",
).to(device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=512,
        do_sample=True,
        temperature=0.7,
        top_p=0.9,
        repetition_penalty=1.1,
        pad_token_id=tokenizer.eos_token_id,
    )

print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

Con API externa (OpenAI → Mombeu)

python
import torch
from openai import OpenAI
from transformers import AutoModelForCausalLM, AutoTokenizer

# Paso 1 — generar texto base vía API
client = OpenAI(api_key="TU_API_KEY")
base_text = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Describí la fauna del Chaco paraguayo en dos oraciones."}],
).choices[0].message.content

# Paso 2 — cargar Mombeu con AutoModelForCausalLM
MODEL_ID = "somosnlp-hackathon-2026/mombeu-LFM2-1.2B"
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(MODEL_ID, torch_dtype=torch.bfloat16, device_map="auto")
device = next(model.parameters()).device

# Paso 3 — generar la continuación cultural
inputs = tokenizer(
    tokenizer.apply_chat_template(
        [{"role": "user", "content": base_text}],
        tokenize=False,
        add_generation_prompt=True,
    ),
    return_tensors="pt",
).to(device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=512,
        do_sample=True,
        temperature=0.7,
        top_p=0.9,
        repetition_penalty=1.1,
        pad_token_id=tokenizer.eos_token_id,
    )

print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:], skip_special_tokens=True))

Entrenamiento

Pipeline

liquid/lfm2-1.2b
       ↓  SFT (2,700 ejemplos — config sft)
mombeu-sft
       ↓  DPO (1,500 pares — config dpo)
mombeu-LFM2-1.2B  ✓

Dataset

Entrenado sobre somosnlp-hackathon-2026/paraguay-cultural-alignment:

FaseConfigEjemplos
SFTsft2,700 train · 300 val
DPOdpo1,500 train · 200 val · 300 test

Limitaciones

  • —La calidad de la continuación depende directamente del texto base recibido.
  • —La relevancia del fragmento cultural depende de la cobertura del corpus guaraní (100 IDs).
  • —No está diseñado para generación libre ni instrucción general.

Cita

bibtex
@misc{mombeu2026,
  title        = {Mombeu: Cultural Alignment for Paraguayan Heritage via LFM2},
  author       = {thinkPy},
  year         = {2026},
  howpublished = {Hugging Face},
  url          = {https://huggingface.co/somosnlp-hackathon-2026/mombeu-LFM2-1.2B},
  note         = {SomosNLP Hackathon 2026}
}

Licencia

Apache 2.0 — derivado de fuentes de acceso público. Uso académico y de investigación.