初始化项目,由ModelHub XC社区提供模型

Model: Smith-3/simon-fcyt-umss-v2
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-06-19 04:51:18 +08:00
commit cd15bc0024
16 changed files with 328368 additions and 0 deletions

41
.gitattributes vendored Normal file
View File

@@ -0,0 +1,41 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.Q3_K_M.gguf filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.Q5_K_M.gguf filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.Q6_K.gguf filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.Q8_0.gguf filter=lfs diff=lfs merge=lfs -text
LFM2.5-350M.F16.gguf filter=lfs diff=lfs merge=lfs -text

3
LFM2.5-350M.F16.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:921811fe3655a5f997c99d33c7d9db6684a73fd5728e5a8bad77c7f766922f60
size 711483968

3
LFM2.5-350M.Q3_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce630363b2c59015cf5305d0578c05defaa935b8b32a6de8b07da59c39c1dfe4
size 193151552

3
LFM2.5-350M.Q4_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:021eb5a5241b1ab3dbaec173b465990b0cadd8c65d7babbba41d6ec7d0f6a3e6
size 229311040

3
LFM2.5-350M.Q5_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f336cebd91677eda4f4ffd30ec1431b6d797900b0d3d5823abc3196a0c414cba
size 260375104

3
LFM2.5-350M.Q6_K.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9bf9fe373661c2642af3bccd96ae3705e7bc26169d7ca9c0acf6a9b8afd70ad3
size 293380672

3
LFM2.5-350M.Q8_0.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:476303a70768231f346eadcdf7eec0e984f172addeb3c21833f6422dec500aec
size 379216448

199
README.md Normal file
View File

@@ -0,0 +1,199 @@
---
language:
- es
license: other
base_model: LiquidAI/LFM2.5-350M
library_name: peft
pipeline_tag: text-generation
tags:
- base_model:adapter:LiquidAI/LFM2.5-350M
- lora
- sft
- transformers
- trl
- unsloth
---
# simon-fcyt-umss-v2
Modelo de IA ajustado para la Facultad de Ciencias y Tecnología de la Universidad Mayor de San Simón (UMSS), diseñado para la aplicación **TecnoTime**. Su objetivo es ayudar a estudiantes a mantenerse organizados, motivados y conectados con sus actividades académicas mediante respuestas breves, consistentes y parseables.
Este modelo es un fine-tuning de `LiquidAI/LFM2.5-350M` con SFT + LoRA usando Unsloth. Está orientado a producir salidas compatibles con la estructura `SimonResponse` usada por el sistema Android.
Repositorio destino:
```text
Smith-3/simon-fcyt-umss-v2
```
## Propósito Académico
El modelo está orientado a:
- Recordatorios de clases y horarios.
- Mensajes motivacionales para mejorar continuidad académica.
- Check-ins cortos para acompañamiento del progreso diario.
- Estímulo positivo en momentos clave del semestre.
Está pensado para reforzar hábitos de constancia, asistencia, estado de ánimo y autocuidado académico.
## Formato Estructurado de Respuesta
La salida esperada no es texto libre. El modelo debe generar un único objeto JSON válido, sin Markdown alrededor, con campos compatibles con TecnoTime.
Campos base:
```json
{
"why": "...",
"opening_tag": "...",
"icon_tag": "..."
}
```
Campos por tipo de notificación:
| Tipo de notificación | Requiere | No debe incluir |
| --- | --- | --- |
| `MOTIVATIONAL_CHECK_IN` | `question`, `choices` con 2 opciones | - |
| `CLASS_REMINDER` | `question`, `choices` con 2 opciones | - |
| `CHECK_IN_CLOSURE` | `message` o `reminder_copy` | `choices` |
| `REMINDER_CLOSURE` | `reminder_copy` | `choices` |
## Ejemplos Reales Usados en TecnoTime
### Recordatorio de Clase
```json
{
"why": "Para que no pierdas tu ritmo académico",
"opening_tag": "¡Atención, estudiante FCyT!",
"question": "¿Listo para tu clase de hoy?",
"icon_tag": "info",
"choices": [
{"id": "yes", "label": "Llego en un momento"},
{"id": "no", "label": "Estoy terminando algo"}
]
}
```
### Check-in Motivacional
```json
{
"why": "Para reforzar tu constancia",
"opening_tag": "¡Vamos con toda, ingeniería!",
"question": "¿Cómo te sientes con lo que has avanzado hoy?",
"icon_tag": "focus",
"choices": [
{"id": "yes", "label": "Bien, sigo avanzando"},
{"id": "no", "label": "Hoy fue complicado"}
]
}
```
## Modelo Base y Entrenamiento
- Modelo base: `LiquidAI/LFM2.5-350M`
- Tokenizer usado en el notebook: `unsloth/LFM2.5-1.2B-Instruct`
- Método: SFT + LoRA
- Framework: Unsloth + TRL + PEFT
- Dataset: `data/processed/train_data.jsonl`
- Formato del dataset: LiquidAI `messages`
Configuración de entrenamiento v2:
| Parámetro | Valor |
| --- | --- |
| Épocas | 3 |
| Batch por dispositivo | 4 |
| Acumulación de gradiente | 4 |
| Batch efectivo | 16 |
| Learning rate | `2e-4` |
| Scheduler | `cosine` |
| Warmup ratio | `0.03` |
| LoRA rank | `16` |
| LoRA alpha | `32` |
| LoRA dropout | `0.05` |
## Archivos Esperados
Este repositorio está preparado para incluir:
| Archivo o variante | Uso recomendado |
| --- | --- |
| Adaptadores LoRA | Respaldo reproducible del fine-tuning |
| Modelo fusionado 16-bit | Versión principal para despliegue o conversión |
| `F16` GGUF | Referencia de mayor tamaño |
| `Q8_0` GGUF | Alta calidad, requiere más RAM |
| `Q6_K` GGUF | Buen equilibrio con alta calidad |
| `Q5_K_M` GGUF | Mejor equilibrio calidad/rendimiento |
| `Q4_K_M` GGUF | Equipos de bajos recursos, laboratorios o laptops modestas |
| `Q3_K_M` GGUF | Variante más liviana |
## Uso con llama.cpp
Ejemplo con una cuantización GGUF:
```bash
llama-cli -m simon-fcyt-umss-v2-Q5_K_M.gguf -p "GENERAR: CLASS_REMINDER para clase de Física"
```
## Uso con Transformers
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
repo_id = "Smith-3/simon-fcyt-umss-v2"
tokenizer = AutoTokenizer.from_pretrained(repo_id)
model = AutoModelForCausalLM.from_pretrained(repo_id, torch_dtype="auto")
messages = [
{
"role": "user",
"content": "GENERAR: MOTIVATIONAL_CHECK_IN para estudiante de Ingeniería de Sistemas"
}
]
prompt = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(**inputs, max_new_tokens=180)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
## Uso Previsto
Uso previsto:
- Integración en TecnoTime.
- Generación de respuestas JSON para notificaciones académicas.
- Apoyo motivacional breve para estudiantes.
- Inferencia local o de bajo costo con GGUF.
Fuera de alcance:
- Información académica oficial sin validación externa.
- Consejería psicológica, médica o legal.
- Decisiones administrativas o académicas automatizadas.
## Licencia
Este modelo deriva de `LiquidAI/LFM2.5-350M`. Revisa la licencia del modelo base en Hugging Face antes de redistribuir o usar comercialmente:
https://huggingface.co/LiquidAI/LFM2.5-350M
## Estado
- Adaptadores LoRA v2: preparados para publicación.
- Modelo fusionado: debe generarse desde el notebook antes de subir.
- GGUF completo: debe generarse desde el notebook antes de subir.
- Próxima etapa: publicación e integración final en TecnoTime.
### Framework versions
- PEFT 0.17.1

47
adapter_config.json Normal file
View File

@@ -0,0 +1,47 @@
{
"alpha_pattern": {},
"auto_mapping": {
"base_model_class": "Lfm2ForCausalLM",
"parent_library": "transformers.models.lfm2.modeling_lfm2",
"unsloth_fixed": true
},
"base_model_name_or_path": "LiquidAI/LFM2.5-350M",
"bias": "none",
"corda_config": null,
"eva_config": null,
"exclude_modules": null,
"fan_in_fan_out": false,
"inference_mode": true,
"init_lora_weights": true,
"layer_replication": null,
"layers_pattern": null,
"layers_to_transform": null,
"loftq_config": {},
"lora_alpha": 32,
"lora_bias": false,
"lora_dropout": 0.05,
"megatron_config": null,
"megatron_core": "megatron.core",
"modules_to_save": null,
"peft_type": "LORA",
"qalora_group_size": 16,
"r": 16,
"rank_pattern": {},
"revision": null,
"target_modules": [
"out_proj",
"v_proj",
"w3",
"w1",
"k_proj",
"in_proj",
"w2",
"q_proj"
],
"target_parameters": null,
"task_type": "CAUSAL_LM",
"trainable_token_indices": null,
"use_dora": false,
"use_qalora": false,
"use_rslora": false
}

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:043af753d7a457c238203ff164306be1b95ccc4ae7398febdbf736a02881502e
size 24010560

45
chat_template.jinja Normal file
View File

@@ -0,0 +1,45 @@
{{- bos_token -}}
{%- set keep_past_thinking = keep_past_thinking | default(false) -%}
{%- set ns = namespace(system_prompt="") -%}
{%- if messages[0]["role"] == "system" -%}
{%- set ns.system_prompt = messages[0]["content"] -%}
{%- set messages = messages[1:] -%}
{%- endif -%}
{%- if tools -%}
{%- set ns.system_prompt = ns.system_prompt + ("\n" if ns.system_prompt else "") + "List of tools: [" -%}
{%- for tool in tools -%}
{%- if tool is not string -%}
{%- set tool = tool | tojson -%}
{%- endif -%}
{%- set ns.system_prompt = ns.system_prompt + tool -%}
{%- if not loop.last -%}
{%- set ns.system_prompt = ns.system_prompt + ", " -%}
{%- endif -%}
{%- endfor -%}
{%- set ns.system_prompt = ns.system_prompt + "]" -%}
{%- endif -%}
{%- if ns.system_prompt -%}
{{- "<|im_start|>system\n" + ns.system_prompt + "<|im_end|>\n" -}}
{%- endif -%}
{%- set ns.last_assistant_index = -1 -%}
{%- for message in messages -%}
{%- if message["role"] == "assistant" -%}
{%- set ns.last_assistant_index = loop.index0 -%}
{%- endif -%}
{%- endfor -%}
{%- for message in messages -%}
{{- "<|im_start|>" + message["role"] + "\n" -}}
{%- set content = message["content"] -%}
{%- if content is not string -%}
{%- set content = content | tojson -%}
{%- endif -%}
{%- if message["role"] == "assistant" and not keep_past_thinking and loop.index0 != ns.last_assistant_index -%}
{%- if "</think>" in content -%}
{%- set content = content.split("</think>")[-1] | trim -%}
{%- endif -%}
{%- endif -%}
{{- content + "<|im_end|>\n" -}}
{%- endfor -%}
{%- if add_generation_prompt -%}
{{- "<|im_start|>assistant\n" -}}
{%- endif -%}

62
config.json Normal file
View File

@@ -0,0 +1,62 @@
{
"architectures": [
"Lfm2ForCausalLM"
],
"block_auto_adjust_ff_dim": true,
"block_dim": 1024,
"block_ff_dim": 6656,
"block_ffn_dim_multiplier": 1.0,
"block_mlp_init_scale": 1.0,
"block_multiple_of": 256,
"block_norm_eps": 1e-05,
"block_out_init_scale": 1.0,
"block_use_swiglu": true,
"block_use_xavier_init": true,
"bos_token_id": 1,
"conv_L_cache": 3,
"conv_bias": false,
"conv_dim": 1024,
"conv_use_xavier_init": true,
"torch_dtype": "bfloat16",
"eos_token_id": 7,
"hidden_size": 1024,
"initializer_range": 0.02,
"intermediate_size": 6656,
"layer_types": [
"conv",
"conv",
"full_attention",
"conv",
"conv",
"full_attention",
"conv",
"conv",
"full_attention",
"conv",
"full_attention",
"conv",
"full_attention",
"conv",
"full_attention",
"conv"
],
"max_position_embeddings": 128000,
"model_type": "lfm2",
"norm_eps": 1e-05,
"num_attention_heads": 16,
"num_heads": 16,
"num_hidden_layers": 16,
"num_key_value_heads": 8,
"pad_token_id": 0,
"rope_parameters": {
"rope_theta": 1000000.0,
"rope_type": "default"
},
"rope_theta": 1000000.0,
"tie_embedding": true,
"transformers_version": "4.57.3",
"unsloth_version": "2025.10.9",
"use_cache": true,
"use_pos_enc": true,
"vocab_size": 65536
}

3
model.safetensors Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7bef2bbe1b8dd3f6b94f038625449d50c2de0a38a0bf72e9c6f0a9b9cede00a8
size 708984464

23
special_tokens_map.json Normal file
View File

@@ -0,0 +1,23 @@
{
"bos_token": {
"content": "<|startoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"eos_token": {
"content": "<|im_end|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
},
"pad_token": {
"content": "<|pad|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false
}
}

323830
tokenizer.json Normal file

File diff suppressed because it is too large Load Diff

4097
tokenizer_config.json Normal file

File diff suppressed because it is too large Load Diff