模型简介
模型特点
模型能力
使用案例
🚀 RigoChat-7b-v2
RigoChat-7b-v2是基于Qwen-2.5的模型,专为准确响应西班牙语查询而设计,在西班牙语任务上有出色表现。
🚀 快速开始
RigoChat-7b-v2是基于Qwen/Qwen2.5-7B-Instruct的模型,经过Direct Preference Optimization (DPO)微调,以提升在西班牙语任务中的性能。该模型仅允许非商业使用。若需商业使用,请联系我们或通过AWS Marketplace提供的服务使用。你可以在此链接找到使用该基础设施的教程。
加载模型和分词器
from transformers import (
AutoModelForCausalLM,
AutoTokenizer,
)
import torch
model_name = "IIC/RigoChat-7b-v2"
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.bfloat16,
device_map="cuda",
trust_remote_code=True,
)
tokenizer = AutoTokenizer.from_pretrained(
model_name,
trust_remote_code=True,
)
示例生成
messages = [
{"role": "user", "content": "¿Cómo puedo transformar un diccionario de listas en una lista de diccionarios, y viceversa, en Python sin utilizar bucles for?"}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024,
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
为获得更好的体验,建议使用以下生成参数。
工具使用
def obtener_temperatura_actual(location: str) -> float:
"""
Obtener la temperatura actual de una localización.
Args:
location: La localización, con el siguiente formato: "Ciudad, País."
Returns:
El tiempo en dicha localización, en grados Celsius.
"""
return 22.
messages = [
{"role": "user", "content": "¿Cuál es el tiempo en Madrid ahora mismo?"}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
tools=[obtener_temperatura_actual],
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
更多信息请查看HuggingFace的工具使用文档。
如果模型生成了工具调用,应按以下方式将其添加到聊天中:
import re
import json
tools = {
"obtener_temperatura_actual" : obtener_temperatura_actual,
}
tool_call = re.search(
r"<tool_call>\s*(\{.*?\})\s*</tool_call>",
response,
)
tool_call = json.loads(tool_call.group(1))
# Add tool metadata to messages
messages.append(
{
"role": "assistant",
"tool_calls": [{"type": "function", "function": tool_call}],
},
)
# Add tool result to messages
messages.append(
{
"role": "tool",
"name": tool_call["name"],
"content": tools[tool_call["name"]](**tool_call["arguments"]),
},
)
上述代码仅适用于模型生成函数调用的情况,如果同时调用多个函数,也可使用相同的逻辑。之后,可以像往常一样继续生成消息:
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
tools=[obtener_temperatura_actual],
add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids = model.generate(
**model_inputs,
max_new_tokens=1024
)
generated_ids = [
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
✨ 主要特性
- 西班牙语任务性能提升:在西班牙语的通用任务上表现更优,尤其在使用西班牙语数据库的RAG(检索增强生成)系统中,能减少幻觉并确保安全响应。
- 硬件适应性强:可在不同硬件要求下使用,特别是计算能力有限的硬件。有关如何在低配置硬件上使用RigoChat-7b-v2的更多信息,请参阅IIC/RigoChat-7b-v2-GGUF。
📦 安装指南
文档未提及具体安装步骤,故跳过此章节。
📚 详细文档
模型详情
模型描述
RigoChat-7b-v2是RigoChat系列大语言模型(LLM)的第二个版本,旨在通过西班牙语指令解决典型的NLP任务,如工具使用、摘要生成、数学计算、代码编写、抽象问答等。该模型基于Qwen/Qwen2.5-7B-Instruct,未针对特定用例进行设计,可应用于广泛的任务。
- 开发者:Instituto de Ingeniería del Conocimiento (IIC)
- 模型类型:生成式微调Transformer
- 语言:西班牙语 (BCP-47 es)
- 许可证:RIGOCHAT NON-COMMERCIAL
- 架构:采用Qwen的架构,未作修改
- 微调基础模型:Qwen/Qwen2.5-7B-Instruct
模型来源
- 论文:https://arxiv.org/abs/2503.08188
用途
直接使用
可以通过AWS Marketplace的模型包将RigoChat-v2用于商业目的。你可以查看此笔记本中的说明。
不适用场景
由于技术和伦理限制,该语言模型在以下情况下不应使用:
- 非法活动:不得用于生成与非法活动相关的内容,如创建恶意软件、欺诈、煽动犯罪或任何非法材料。
- 有害或危险内容:不得用于生成仇恨言论、暴力、骚扰或任何促进歧视、暴力或虐待的内容。
偏差、风险和局限性
尽管该模型经过训练以理解和生成西班牙语文本,但用户应注意以下风险、偏差和局限性:
- 偏差:模型可能反映训练数据中存在的偏差,这些偏差可能与性别、种族、社会阶层、性取向等有关,并可能生成延续刻板印象或歧视的响应。
- 准确性和可靠性:虽然模型在许多上下文中生成连贯且有用的文本,但并不总是100%准确或可靠,特别是在需要高度确定性的技术、科学或法律事务中。
- 知识有限或过时:模型未使用超过其训练截止日期的信息进行训练,因此可能无法反映近期事件、研究或进展。
建议
建议将此模型用作通用聊天机器人,或在为特定任务设计的应用程序中使用,如SQL查询、RAG系统,或作为促进工具使用的自主代理。
训练详情
训练数据
训练数据结合了IIC设计的公共和私有数据集,包含21975个西班牙语对话,采用chatml
格式,结构与Anthropic/hh-rlhf数据集相同。每个对话有chosen
和rejected
两个变体,仅助手的最后一个回答不同,chosen
变体中的最后一个回答被认为比rejected
变体中的更好。生成数据集使用了多种技术,相关研究将在后续发布。
训练过程
使用Transformer Reinforcement Learning (TRL)库,具体应用了他们发布的脚本作为使用DPO对生成的数据集进行训练的示例。
训练超参数
详情
LORA_CONFIG = {
"r": 64,
"lora_alpha": 16,
"lora_dropout": 0.1,
"bias": "none",
"task_type": "CAUSAL_LM",
"target_modules": [
"q_proj",
"k_proj",
"v_proj",
"o_proj",
"up_proj",
"gate_proj",
"down_proj",
],
"use_rslora": True,
}
DPO_CONFIG = {
"num_train_epochs": 2,
"logging_steps": 25,
"eval_steps": 500,
"save_steps": 100,
"save_total_limit": 5,
"per_device_train_batch_size": 1,
"per_device_eval_batch_size": 1,
"gradient_accumulation_steps": 16,
"learning_rate": 5e-6,
"max_length": 8192, # max length in the history chat + latest assistant response.
"max_prompt_length": 6656, # max length in the history chat: user-assistant-...-assistant-user.
"gradient_checkpointing": True,
"weight_decay": 0.001,
"optim": "rmsprop",
"evaluation_strategy": "steps",
"lr_scheduler_type": "cosine",
"bf16": True,
}
速度、大小、时间
以下是显示最新训练日志结果的一些有用参数:
latest_logs = {'loss': 0.3716, 'grad_norm': 4.989994049072266, 'learning_rate': 1.0380020311950844e-10, 'rewards/chosen': 0.534086287021637, 'rewards/rejected': -0.6236276030540466, 'rewards/accuracies': 0.8899999856948853, 'rewards/margins': 1.1577140092849731, 'logps/rejected': -218.88198852539062, 'logps/chosen': -250.0700225830078, 'logits/rejected': -1.6214849948883057, 'logits/chosen': -1.9585875272750854, 'epoch': 1.99}
final_training_results = {'train_runtime': 30825.7138, 'train_samples_per_second': 1.432, 'train_steps_per_second': 0.089, 'train_loss': 0.483570138469306, 'epoch': 2.0}
从使用时间可以看出,在八个半小时内,使用很少的硬件就成功改进了一个最先进的模型,使其在适应西班牙语的任务中表现出色。
评估
测试数据、因素和指标
测试数据
为评估大语言模型(LLM)的性能,开发并使用了几个针对特定评估需求的高质量语料库:
- IIC/AQuAS:由两位计算语言学家手动策划的语料库,用于评估语言模型在西班牙语抽象问答任务中的表现,包括金融、保险、医疗、法律和音乐等领域的示例。
- IIC/RagQuAS:同样由上述语言学家开发的语料库,用于评估完整的RAG系统和语言模型在西班牙语抽象问答任务中的表现,涵盖爱好、语言学、宠物、健康、天文学、客户服务、汽车、日常生活、文档、能源、滑雪、欺诈、美食、语言、游戏、美甲、音乐、滑冰、急救、食谱、回收、投诉、保险、网球、交通、旅游、兽医、旅行和瑜伽等广泛领域。
- CAM:专为所有CAM任务设计,该语料库包含来自马德里社区网站上消费者相关主题的常见问题(FAQ),问题分为三个退化级别(E1、E2和E3),旨在衡量LLM理解和有效响应因拼写错误、不同程度的口语化等问题导致的表述不佳查询的能力,此任务也属于抽象问答类别。
- Shops:一个以各种服装公司政策为中心的多轮对话语料库,涉及多轮抽象问答。
- Insurance:另一个多轮对话语料库,专注于各种保险公司的政策,也涉及多轮抽象问答。
每个语料库包含以下列:问题、答案和包含模型可从中得出答案的相关信息的上下文。在多轮任务中,还提供聊天历史记录。
LLM的评分过程涉及测量原始答案与模型生成答案之间的相似度。除AQuAS和RagQuAS公开可用外,所有语料库均为私有,可作为其他语料库结构和内容的示例。
因素
这些评估非常具体,未涵盖模型可能面临的所有一般场景,因为所有评估都集中在解决非常特定领域的RAG任务上。
指标
评估基于使用Llama-3.1-8B-Instruct对答案进行评分。
结果
模型 | 平均得分 | AQuAS | RagQuAS | CAM | CAM_E1 | CAM_E2 | CAM_E3 | Shops | Insurance |
---|---|---|---|---|---|---|---|---|---|
RigoChat-7b-v2 | 79.55 | 82.52 | 79.10 | 78.91 | 79.17 | 76.73 | 78.23 | 80.79 | 81.04 |
GPT-4o | 78.26 | 85.23 | 77.91 | 78.00 | 74.91 | 73.45 | 77.09 | 78.60 | 80.89 |
stablelm-2-12b-chat | 77.74 | 78.88 | 78.21 | 77.82 | 78.73 | 77.27 | 74.73 | 77.03 | 79.26 |
Mistral-Small-Instruct-2409 | 77.29 | 80.56 | 78.81 | 77.82 | 75.82 | 73.27 | 73.45 | 78.25 | 80.36 |
Qwen2.5-7B-Instruct | 77.17 | 80.93 | 77.41 | 77.82 | 75.09 | 75.45 | 72.91 | 78.08 | 79.67 |
Meta-Llama-3.1-8B-Instruct | 76.55 | 81.87 | 80.50 | 72.91 | 73.45 | 75.45 | 71.64 | 77.73 | 78.88 |
GPT-4o-mini | 76.48 | 82.80 | 75.82 | 76.36 | 74.36 | 72.36 | 71.82 | 78.25 | 80.08 |
Phi-3.5-mini-instruct | 76.38 | 81.68 | 81.09 | 75.82 | 74.73 | 71.45 | 70.36 | 77.43 | 78.45 |
gemma-2-9b-it | 75.80 | 82.80 | 78.11 | 72.91 | 73.45 | 71.09 | 71.27 | 77.08 | 79.72 |
Ministral-8B-Instruct-2410 | 75.19 | 79.63 | 77.31 | 76.00 | 73.45 | 72.36 | 70.18 | 76.44 | 76.14 |
GPT-3.5-turbo-0125 | 74.78 | 80.93 | 73.53 | 76.73 | 72.55 | 72.18 | 69.09 | 75.63 | 77.64 |
Llama-2-7b-chat-hf | 71.18 | 67.10 | 77.31 | 71.45 | 70.36 | 70.73 | 68.55 | 72.07 | 71.90 |
granite-3.0-8b-instruct | 71.08 | 73.08 | 72.44 | 72.36 | 71.82 | 69.09 | 66.18 | 69.97 | 73.73 |
RigoChat-7b-v1 | 62.13 | 72.34 | 67.46 | 61.27 | 59.45 | 57.45 | 57.64 | 62.10 | 59.34 |
salamandra-7b-instruct | 61.96 | 63.74 | 60.70 | 64.91 | 63.27 | 62.36 | 60.55 | 59.94 | 60.23 |
总结
RigoChat-7b-v2在间接设计的任务中,相较于Qwen-2.5显著提高了性能。此外,在这些任务中,它优于大多数最先进的模型,证明了使用少量资源可以使LLM适应特定用例。
🔧 技术细节
环境影响
可使用机器学习影响计算器估算碳排放,该计算器在Lacoste等人 (2019) 中提出。
- 硬件类型:A100 PCIe 80GB
- 使用时长:8.5小时
- 云服务提供商:私有基础设施
- 计算区域:西班牙
- 碳排放:0.92
硬件
NVIDIA A100 GPU,带有Tensor Core和80GB内存。
软件
Ubuntu 22.04.5 LTS
,并需要以下依赖:
python=3.11
flash_attn>=2.5.8
datasets
numpy
trl
peft
huggingface_hub
📄 许可证
该模型采用RIGOCHAT NON-COMMERCIAL许可证,许可证详情请见此处。
📚 引用
@misc {instituto_de_ingeniería_del_conocimiento_2025,
author = { {Instituto de Ingeniería del Conocimiento} },
title = { RigoChat-7b-v2 },
year = 2025,
url = { https://huggingface.co/IIC/RigoChat-7b-v2 },
doi = { 10.57967/hf/4158 },
publisher = { Hugging Face }
}
@misc{gómez2025rigochat2adaptedlanguage,
title={RigoChat 2: an adapted language model to Spanish using a bounded dataset and reduced hardware},
author={Gonzalo Santamaría Gómez and Guillem García Subies and Pablo Gutiérrez Ruiz and Mario González Valero and Natàlia Fuertes and Helena Montoro Zamorano and Carmen Muñoz Sanz and Leire Rosado Plaza and Nuria Aldama García and David Betancur Sánchez and Kateryna Sushkova and Marta Guerrero Nieto and Álvaro Barbero Jiménez},
year={2025},
eprint={2503.08188},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2503.08188},
}
⚠️ 免责声明
请注意,模型可能包含基于训练数据的偏差或其他不良扭曲。当第三方基于此模型实施系统或提供服务,或自行使用该模型时,他们有责任减轻相关风险并确保遵守适用的法规,包括人工智能使用的法规。IIC作为模型的所有者和创建者,不对第三方使用导致的任何结果承担责任。
📞 模型卡片联系信息
contacto.iic@iic.uam.es
©️ 版权声明
- 作者:Instituto de Ingeniería del Conocimiento (IIC)
- 联系方式:如需更多信息,请发送电子邮件至contacto.iic@iic.uam.es
- 版权:Copyright(c) 2024 ADIC



