模型简介
模型特点
模型能力
使用案例
许可证: gemma 库名称: transformers 流水线标签: 文本生成 额外授权按钮内容: 确认许可 标签:
- 对话式 语言:
- 阿拉伯语
- 英语
模型索引:
- 名称: SILMA-9B-Instruct-v1.0
结果:
- 任务:
类型: 文本生成
数据集:
名称: MMLU (阿拉伯语)
类型: OALL/阿拉伯语_MMLU
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 52.55 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: AlGhafa
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-原生
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 71.85 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: ARC挑战赛(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 78.19 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: ACVA
类型: OALL/ACVA
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 78.89 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: Arabic_EXAMS
类型: OALL/阿拉伯语_EXAMS
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 51.4 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: ARC简易版
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 86 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: BOOLQ(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 64.05 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: COPA(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 78.89 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: HELLASWAG(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 47.64 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: OPENBOOK QA(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 72.93 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: PIQA(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 71.96 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: RACE(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 75.55 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: SCIQ(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 91.26 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
数据集:
名称: TOXIGEN(阿拉伯语)
类型: OALL/AlGhafa-阿拉伯语-LLM-基准测试-翻译版
指标:
- 名称: 标准化准确率 类型: 对数似然标准化准确率 值: 67.59 来源: 名称: 阿拉伯语开放大模型排行榜 网址: https://huggingface.co/spaces/OALL/Open-Arabic-LLM-Leaderboard-v1
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: IFEval(零样本)
类型: HuggingFaceH4/ifeval
参数:
少样本数量: 0
指标:
- 类型: 实例级严格准确率和提示级严格准确率 值: 58.42 名称: 严格准确率 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: BBH(三样本)
类型: BBH
参数:
少样本数量: 3
指标:
- 类型: 标准化准确率 值: 30.71 名称: 标准化准确率 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: MATH五级(四样本)
类型: hendrycks/竞赛数学
参数:
少样本数量: 4
指标:
- 类型: 精确匹配 值: 0.0 名称: 精确匹配 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: GPQA(零样本)
类型: Idavidrein/gpqa
参数:
少样本数量: 0
指标:
- 类型: 标准化准确率 值: 7.38 名称: 标准化准确率 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: MuSR(零样本)
类型: TAUR-Lab/MuSR
参数:
少样本数量: 0
指标:
- 类型: 标准化准确率 值: 17.26 名称: 标准化准确率 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
名称: 文本生成
数据集:
名称: MMLU-PRO(五样本)
类型: TIGER-Lab/MMLU-Pro
配置: 主要
分割: 测试
参数:
少样本数量: 5
指标:
- 类型: 准确率 值: 32.44 名称: 准确率 来源: 网址: https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard?query=silma-ai/SILMA-9B-Instruct-v1.0 名称: 开放大模型排行榜
- 任务:
类型: 文本生成
数据集:
名称: MMLU (阿拉伯语)
类型: OALL/阿拉伯语_MMLU
指标:
- 名称: SILMA-9B-Instruct-v1.0
结果:
SILMA AI
SILMA.AI是一家领先的生成式人工智能初创公司,致力于为阿拉伯语用户提供最先进的人工智能解决方案。
🚀 我们的旗舰模型: SILMA 1.0 🚀
- SILMA 1.0 曾是排名第一的开源权重阿拉伯语大语言模型(截至2025年2月),拥有令人印象深刻的90亿参数规模,超越了规模超过其七倍的模型🏆
重要提示: 💡 对于RAG(检索增强生成)用例,请使用SILMA Kashif v1.0,因为它专门针对问答任务进行了训练。
SILMA有何独特之处?
- SILMA是一个小型语言模型,在大多数阿拉伯语任务中表现优于720亿参数的模型,因此更适合商业应用场景
- SILMA基于谷歌Gemma的强大基础模型构建,结合了两者的优势,提供无与伦比的性能
- SILMA是一个开源权重模型,根据我们的开放许可证可免费使用
👥 我们的团队
我们是一支经验丰富的阿拉伯语人工智能专家团队,深刻理解语言的细微差别和文化考量,使我们能够构建真正与阿拉伯语用户产生共鸣的解决方案。
作者: silma.ai
使用方法
下面我们分享一些代码片段,展示如何快速开始使用该模型。首先,安装Transformers库:
pip install -U transformers sentencepiece
然后,根据您的用例复制相关部分的代码片段。
使用pipeline
API运行
import torch
from transformers import pipeline
pipe = pipeline(
"text-generation",
model="silma-ai/SILMA-9B-Instruct-v1.0",
model_kwargs={"torch_dtype": torch.bfloat16},
device="cuda", # 在Mac设备上替换为"mps"
)
messages = [
{"role": "user", "content": "اكتب رسالة تعتذر فيها لمديري في العمل عن الحضور اليوم لأسباب مرضية."},
]
outputs = pipe(messages, max_new_tokens=256)
assistant_response = outputs[0]["generated_text"][-1]["content"].strip()
print(assistant_response)
- 响应:
السلام عليكم ورحمة الله وبركاته
أودّ أن أعتذر عن عدم الحضور إلى العمل اليوم بسبب مرضي. أشعر بالسوء الشديد وأحتاج إلى الراحة. سأعود إلى العمل فور تعافيي.
شكراً لتفهمكم.
مع تحياتي،
[اسمك]
在单/多GPU上运行模型
pip install accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.bfloat16,
)
messages = [
{"role": "system", "content": "أنت مساعد ذكي للإجابة عن أسئلة المستخدمين."},
{"role": "user", "content": "أيهما أبعد عن الأرض, الشمس أم القمر؟"},
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True).to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=256)
print(tokenizer.decode(outputs[0]))
- 响应:
الشمس
您可以使用tokenizer.apply_chat_template
确保应用正确的聊天模板:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.bfloat16,
)
messages = [
{"role": "system", "content": "أنت مساعد ذكي للإجابة عن أسئلة المستخدمين."},
{"role": "user", "content": "اكتب كود بايثون لتوليد متسلسلة أرقام زوجية."},
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True).to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=256)
print(tokenizer.decode(outputs[0]).split("<start_of_turn>model")[-1])
- 响应:
def generate_even_numbers(n):
"""
This function generates a list of even numbers from 1 to n.
Args:
n: The upper limit of the range.
Returns:
A list of even numbers.
"""
return [i for i in range(1, n + 1) if i % 2 == 0]
# Example usage
n = 10
even_numbers = generate_even_numbers(n)
print(f"The first {n} even numbers are: {even_numbers}")
通过bitsandbytes
量化版本
使用8位精度(int8)
pip install bitsandbytes accelerate
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
quantization_config = BitsAndBytesConfig(load_in_8bit=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=quantization_config,
)
messages = [
{"role": "system", "content": "أنت مساعد ذكي للإجابة عن أسئلة المستخدمين."},
{"role": "user", "content": "اذكر خمس انواع فواكه بها نسب عالية من فيتامين ج."},
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True).to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=256)
print(tokenizer.decode(outputs[0]).split("<start_of_turn>model")[-1])
- 响应:
الليمون، البرتقال، الموز، الكيوي، الفراولة
使用4位精度
# pip install bitsandbytes accelerate
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
quantization_config = BitsAndBytesConfig(load_in_4bit=True)
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
quantization_config=quantization_config,
)
messages = [
{"role": "system", "content": "أنت مساعد ذكي للإجابة عن أسئلة المستخدمين."},
{"role": "user", "content": "في أي عام توفى صلاح الدين الأيوبي؟"},
]
input_ids = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True).to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=256)
print(tokenizer.decode(outputs[0]).split("<start_of_turn>model")[-1])
- 响应:
1193
高级用法
Torch编译
Torch编译是一种加速PyTorch模块推理的方法。通过利用torch编译,Silma模型的运行速度可提高6倍。
注意:在实现完整的推理速度之前,需要进行两个预热步骤:
import os
os.environ["TOKENIZERS_PARALLELISM"] = "false"
from transformers import AutoTokenizer, Gemma2ForCausalLM
from transformers.cache_utils import HybridCache
import torch
torch.set_float32_matmul_precision("high")
# 加载模型和分词器
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = Gemma2ForCausalLM.from_pretrained(model_id, torch_dtype=torch.bfloat16)
model.to("cuda")
# 应用torch编译转换
model.forward = torch.compile(model.forward, mode="reduce-overhead", fullgraph=True)
# 预处理输入
messages = [
{"role": "system", "content": "أنت مساعد ذكي للإجابة عن أسئلة المستخدمين."},
{"role": "user", "content": "من الرئيس الذي تولى المنصب في أمريكا بعد دونالد ترامب؟"},
]
model_inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", return_dict=True).to("cuda")
input_text = "من الرئيس الذي تولى المنصب في أمريكا بعد دونالد ترامب؟"
model_inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
prompt_length = model_inputs.input_ids.shape[1]
# 设置k/v缓存
past_key_values = HybridCache(
config=model.config,
max_batch_size=1,
max_cache_len=model.config.max_position_embeddings,
device=model.device,
dtype=model.dtype
)
# 启用将kv缓存传递给generate
model._supports_cache_class = True
model.generation_config.cache_implementation = None
# 两个预热步骤
for idx in range(2):
outputs = model.generate(**model_inputs, past_key_values=past_key_values, do_sample=True, temperature=1.0, max_new_tokens=128)
past_key_values.reset()
# 快速运行
outputs = model.generate(**model_inputs, past_key_values=past_key_values, do_sample=True, temperature=1.0, max_new_tokens=128)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
- 响应:
جو بايدن
更多详情,请参阅Transformers文档。
聊天模板
指令调优模型使用必须遵守的聊天模板进行对话使用。 最简单的方法是使用分词器内置的聊天模板,如下面的代码片段所示。
让我们加载模型并将聊天模板应用于对话。在这个例子中,我们将从单个用户交互开始:
from transformers import AutoTokenizer, AutoModelForCausalLM
import transformers
import torch
model_id = "silma-ai/SILMA-9B-Instruct-v1.0"
dtype = torch.bfloat16
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="cuda",
torch_dtype=dtype,)
chat = [
{ "role": "user", "content": "ما اشهر اطارات العمل في البايثون لبناء نماذج الذكاء الاصطناعي؟" },
]
prompt = tokenizer.apply_chat_template(chat, tokenize=False, add_generation_prompt=True)
此时,提示包含以下文本:
<bos><start_of_turn>user
ما اشهر اطارات العمل في البايثون لبناء نماذج الذكاء الاصطناعي؟<end_of_turn>
<start_of_turn>model
如您所见,每个回合前面都有一个<start_of_turn>
分隔符,然后是实体角色(用户提供内容的user
或LLM响应的model
)。回合以<end_of_turn>
标记结束。
如果需要在不使用分词器的聊天模板的情况下构建提示,可以按照此格式手动构建。
提示准备就绪后,可以像这样执行生成:
inputs = tokenizer.encode(prompt, add_special_tokens=False, return_tensors="pt")
outputs = model.generate(input_ids=inputs.to(model.device), max_new_tokens=150)
print(tokenizer.decode(outputs[0]))
输入和输出
- 输入: 文本字符串,如问题、提示或需要总结的文档。
- 输出: 响应输入的生成阿拉伯语或英语文本,如问题的答案或文档的摘要。
GPU要求
以下是运行推理的最低/推荐GPU要求:
-
推荐
- 至少一块具有48GB GPU内存的GPU
- 示例: Nvidia A40, L40, RTX A6000
-
最低要求
- 至少一块具有16-24GB GPU内存的GPU
- 示例: Nvidia RTX 4090, RTX 4000, L4
- 假设模型以8位或4位量化模式加载
引用
@article{silma_01_2024,
title={Silma},
url={https://www.silma.ai},
publisher={Silma},
author={Silma Team},
year={2024}
}
使用和限制
这些模型存在一些用户应该注意的限制。
预期用途
开放大语言模型(LLMs)在各个行业和领域有广泛的应用。以下潜在用途列表并不全面。本列表的目的是提供有关模型创建者在模型训练和开发过程中考虑的可能的用例的背景信息。
- 内容创作和沟通
- 文本生成: 这些模型可用于生成创意文本格式,如诗歌、剧本、代码、营销文案和电子邮件草稿。
- 聊天机器人和对话式AI: 为客服、虚拟助手或交互式应用程序提供对话界面。
- 文本摘要: 生成文本语料库、研究论文或报告的简明摘要。
- 研究和教育
- 自然语言处理(NLP)研究: 这些模型可以作为研究人员实验NLP技术、开发算法和推动该领域进步的基础。
- 语言学习工具: 支持交互式语言学习体验,帮助语法纠正或提供写作练习。
- 知识探索: 通过生成摘要或回答特定主题的问题,帮助研究人员探索大量文本。
限制
- 训练数据
- 训练数据的质量和多样性显著影响模型的能力。训练数据中的偏见或空白可能导致模型响应的限制。
- 训练数据集的范围决定了模型可以有效处理的学科领域。
- 上下文和任务复杂性
- LLMs更擅长可以用清晰提示和指令框架化的任务。开放式或高度复杂的任务可能具有挑战性。
- 模型的性能可能受到提供的上下文量的影响(更长的上下文通常会导致更好的输出,达到一定程度)。
- 语言歧义和细微差别
- 自然语言本质上是复杂的。LLMs可能难以把握微妙的细微差别、讽刺或比喻语言。
- 事实准确性
- LLMs基于从训练数据集中学习的信息生成响应,但它们不是知识库。它们可能生成不正确或过时的事实陈述。
- 常识
- LLMs依赖于语言中的统计模式。它们可能缺乏在某些情况下应用常识推理的能力。
伦理考量和风险
大语言模型(LLMs)的开发引发了一些伦理问题。在创建开放模型时,我们仔细考虑了以下几点:
- 偏见和公平性
- 在大规模真实世界文本数据上训练的LLMs可以反映训练材料中嵌入的社会文化偏见。
- 错误信息和滥用
- LLMs可能被滥用来生成虚假、误导性或有害的文本。
- 提供了负责任使用模型的指南,参见[负责任生成AI工具包][rai-toolkit]。
- 透明度和问责制:
- 本模型卡总结了模型架构、能力、限制和评估过程的详细信息。
- 负责任开发的开放模型通过使LLM技术对AI生态系统中的开发人员和研究人员可访问,提供了共享创新的机会。
已识别的风险和缓解措施:
- 偏见的延续: 鼓励持续监控(使用评估指标、人工审查)和在模型训练、微调和其他用例中探索去偏见技术。
- 有害内容的生成: 内容安全机制和指南至关重要。鼓励开发人员根据其特定产品政策和应用用例谨慎行事并实施适当的内容安全防护措施。
- 隐私侵犯: 模型在过滤去除PII(个人身份信息)的数据上进行训练。鼓励开发人员遵守隐私法规,采用隐私保护技术。


