base_model: inceptionai/jais-family-6p7b
language:
- ar
- en
thumbnail: null
tags:
- 阿拉伯语
- 英语
- 大语言模型
- 解码器
- 因果语言模型
- jais家族
license: apache-2.0
pipeline_tag: text-generation
Jais家族模型卡
Jais系列模型是一组全面的英阿双语大语言模型(LLMs),专为阿拉伯语优化同时具备强大的英语能力。我们发布了两类基础模型变体:
- 从头预训练的模型(
jais-family-*
)
- 基于Llama-2自适应预训练的模型(
jais-adapted-*
)
本次发布包含8种规模共20个模型,参数量从5.9亿到700亿不等,训练数据涵盖1.6万亿个阿拉伯语、英语及代码标记。所有预训练模型都经过指令微调(*-chat
),使用精心筛选的阿拉伯语和英语指令数据进行对话优化。
我们希望通过此次大规模发布加速阿拉伯语NLP研究,并为阿拉伯语及双语社区赋能。我们为阿拉伯语模型验证的训练与自适应技术,可扩展应用于其他低资源和中资源语言。
Jais家族详情
- 开发机构:Inception, Cerebras Systems
- 支持语言:阿拉伯语(MSA)和英语
- 输入:纯文本数据
- 输出:文本生成
- 模型规模:5.9亿/13亿/27亿/67亿/70亿/130亿/300亿/700亿参数
- 演示:访问在线演示
- 许可协议:Apache 2.0
模型架构:
本系列所有模型均采用基于Transformer的解码器架构(GPT-3)的自回归语言模型。
Jais原生模型(jais-family-*
)采用从头训练方式,集成SwiGLU非线性激活函数和ALiBi位置编码。这些架构增强使模型能够处理长序列,提升上下文处理能力和精度。
Jais自适应模型(jais-adapted-*
)基于Llama-2构建,采用RoPE位置嵌入和分组查询注意力机制。我们通过添加32,000个来自Jais-30b词汇表的阿拉伯语新标记来扩展分词器,使计算效率提升3倍以上。新阿拉伯语标记的嵌入初始化分为两步:首先利用共享英语标记学习从Jais-30b到Llama嵌入空间的线性投影,然后将该投影应用于现有Jais-30b阿拉伯语嵌入。
快速开始
以下是使用模型的示例代码。注意该模型需要自定义模型类,加载时必须启用trust_remote_code=True
。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "inceptionai/jais-family-6p7b-chat"
prompt_eng = "### Instruction:Your name is 'Jais', and you are named after Jebel Jais, the highest mountain in UAE. You were made by 'Inception' in the UAE. You are a helpful, respectful, and honest assistant. Always answer as helpfully as possible, while being safe. Complete the conversation between [|Human|] and [|AI|]:\n### Input: [|Human|] {Question}\n[|AI|]\n### Response :"
prompt_ar = "### Instruction:اسمك \"جيس\" وسميت على اسم جبل جيس اعلى جبل في الامارات. تم بنائك بواسطة Inception في الإمارات. أنت مساعد مفيد ومحترم وصادق. أجب دائمًا بأكبر قدر ممكن من المساعدة، مع الحفاظ على البقاء أمناً. أكمل المحادثة بين [|Human|] و[|AI|] :\n### Input:[|Human|] {Question}\n[|AI|]\n### Response :"
device = "cuda" if torch.cuda.is_available() else "cpu"
tokenizer = AutoTokenizer.from_pretrained(model_path)
model = AutoModelForCausalLM.from_pretrained(model_path, device_map="auto", trust_remote_code=True)
def get_response(text, tokenizer=tokenizer, model=model):
input_ids = tokenizer(text, return_tensors="pt").input_ids
inputs = input_ids.to(device)
input_len = inputs.shape[-1]
generate_ids = model.generate(
inputs,
top_p=0.9,
temperature=0.3,
max_length=2048,
min_length=input_len + 4,
repetition_penalty=1.2,
do_sample=True,
)
response = tokenizer.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0]
response = response.split("### Response :")[-1]
return response
ques = "ما هي عاصمة الامارات؟"
text = prompt_ar.format_map({'Question': ques})
print(get_response(text))
ques = "What is the capital of UAE?"
text = prompt_eng.format_map({'Question': ques})
print(get_response(text))
训练详情
预训练数据
Jais系列模型训练使用了多达1.6万亿个英语、阿拉伯语及代码标记的多样化数据,包含以下来源:
- 网页:公开可用的阿拉伯语和英语网页、维基百科文章、新闻及社交媒体内容
- 代码:多种编程语言代码数据以增强推理能力
- 书籍:精选阿拉伯语和英语公开书籍数据,提升长上下文建模和连贯叙事
- 科研文献:ArXiv论文子集提升推理和长上下文能力
- 合成数据:通过内部机器翻译系统将高质量英语资源(如维基百科)译为阿拉伯语
我们进行了严格的数据预处理和去重。阿拉伯语数据采用定制预处理流程筛选高质量语言数据,详见Jais论文。
- Jais原生预训练(
jais-family-*
):采用阿拉伯语:英语:代码=1:2:0.4的混合比例,解决阿拉伯语数据稀缺问题
- Jais自适应预训练(
jais-adapted-*
):使用约3340亿阿拉伯语标记与英语/代码数据混合,不同规模模型采用不同混合比例
微调数据
所有Jais聊天模型使用约1000万英语和400万阿拉伯语单轮/多轮提示-响应对进行微调,数据来源包括开源数据集和内部人工标注数据,辅以机器翻译、蒸馏和模型自对话生成的合成内容。
训练流程
原生预训练:文档用EOS标记分隔打包,自回归训练对所有标记计算损失。Jais-30b模型通过逐步融入长上下文文档,将上下文长度从2K扩展到8K再到16K。
自适应预训练:分两阶段:第一阶段冻结主干仅训练嵌入;第二阶段解冻主干进行全参数持续预训练。
指令微调:将多个训练示例打包到单个序列中,仅在响应标记上计算损失,提升训练效率。
训练超参数
Jais-family-6p7b-chat