基础模型:inceptionai/jais-adapted-7b
支持语言:
- 阿拉伯语
- 英语
缩略图:无
标签:
- 阿拉伯语
- 英语
- 大语言模型
- 解码器
- 因果语言模型
- jais系列
许可证:apache-2.0
任务类型:文本生成
Jais系列模型卡
Jais系列模型是一组全面支持英语-阿拉伯语的双语大语言模型(LLMs)。这些模型专为阿拉伯语优化,同时具备强大的英语能力。我们发布的基础模型包含两种变体:
- 从头预训练的模型(
jais-family-*
)
- 基于Llama-2自适应预训练的模型(
jais-adapted-*
)
本次发布包含8种规模共20个模型,参数量从5.9亿到700亿不等,训练数据涵盖高达1.6万亿token的阿拉伯语、英语和代码数据。所有预训练模型均通过精选的阿拉伯语和英语指令数据进行了对话微调(*-chat
)。
我们希望通过这次大规模发布加速阿拉伯语NLP研究,并为阿拉伯语社区及双语用户开启丰富的下游应用场景。我们为阿拉伯语模型成功验证的训练和自适应技术,可扩展至其他低资源和中资源语言。
模型详情
- 开发团队:Inception, Cerebras Systems
- 支持语言:阿拉伯语(现代标准阿拉伯语)和英语
- 输入:仅文本数据
- 输出:文本生成
- 模型规模: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位置嵌入和分组查询注意力机制。我们通过添加Jais-30b词汇表中的32,000个阿拉伯语新token扩展了分词器,使计算效率提升3倍以上。新阿拉伯语token嵌入的初始化分为两步:首先利用两种词汇表共有的英语token学习从Jais-30b嵌入空间到Llama嵌入空间的线性投影,再将此投影应用于转换现有的Jais-30b阿拉伯语嵌入。
快速开始
以下是使用模型的示例代码。注意该模型需要自定义模型类,加载时需设置trust_remote_code=True
。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "inceptionai/jais-adapted-7b-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)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
def get_response(text, tokenizer=tokenizer, model=model):
tokenized = tokenizer(text, return_tensors="pt")
input_ids, attention_mask = tokenized['input_ids'].to(device), tokenized['attention_mask'].to(device)
input_len = input_ids.shape[-1]
generate_ids = model.generate(
input_ids,
attention_mask=attention_mask,
top_p=0.9,
temperature=0.3,
max_length=2048,
min_length=input_len + 4,
repetition_penalty=1.2,
do_sample=True,
pad_token_id=tokenizer.pad_token_id
)
response = tokenizer.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0]
response = response.split("### Response :")[-1].lstrip()
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万亿token的多样化英语、阿拉伯语和代码数据,包含以下来源:
- 网页:公开可用的阿拉伯语和英语网页、维基百科文章、新闻内容及社交媒体内容
- 代码:多种编程语言代码数据以增强模型推理能力
- 书籍:精选阿拉伯语和英语公开书籍数据,提升长上下文建模和连贯叙事能力
- 学术:ArXiv论文子集以增强推理和长上下文处理能力
- 合成数据:通过内部机器翻译系统将高质量英语资源(如维基百科和书籍)翻译为阿拉伯语以扩充数据量
我们对训练数据进行了严格预处理和去重。阿拉伯语数据采用定制预处理流程筛选高质量语言数据,详见Jais论文。
- Jais原生预训练(
jais-family-*
):沿用Jais中的语言混合策略,采用阿拉伯语:英语:代码=1:2:0.4的比例,在解决阿拉伯语数据稀缺问题的同时提升双语表现。
- Jais自适应预训练(
jais-adapted-*
):基于Llama-2的适配训练使用约3340亿阿拉伯语token与英语、代码数据混合。针对不同模型规模调整混合比例,在保持英语能力的同时强化阿拉伯语表现。
预训练模型 |
英语数据(token) |
阿拉伯语数据(token) |
代码数据(token) |
总数据量(token) |
jais-family-30b-16k |
9800亿 |
4900亿 |
1960亿 |
1.666万亿 |
jais-family-30b-8k |
8820亿 |
4410亿 |
1770亿 |
1.500万亿 |
jais-family-13b |
2830亿 |
1410亿 |
560亿 |
4800亿 |
jais-family-6p7b |
2830亿 |
1410亿 |
560亿 |
4800亿 |
jais-family-2p7b |
2830亿 |
1410亿 |
560亿 |
4800亿 |
jais-family-1p3b |
2830亿 |
1410亿 |
560亿 |
4800亿 |
jais-family-590m |
2830亿 |
1410亿 |
560亿 |
4800亿 |
jais-adapted-70b |
330亿 |
3340亿 |
40亿 |
3710亿 |
jais-adapted-13b |
1270亿 |
1400亿 |
130亿 |
2800亿 |
jais-adapted-7b |
180亿 |
190亿 |
20亿 |
390亿 |
微调数据
所有Jais系列对话模型均使用阿拉伯语和英语的单轮/多轮提示-响应对进行微调。数据来源包括经过主题和风格多样性筛选的开源微调数据集,以及增强文化适应性的内部人工标注数据,辅以机器翻译、蒸馏和模型自对话生成的合成内容。总计包含约1000万英语和400万阿拉伯语提示-响应对。
训练流程
在原生预训练(jais-family-*
)中,文档被打包成以EOS token分隔的序列,模型通过自回归方式训练并对所有token计算损失。jais-30b模型通过逐步引入长上下文文档,将上下文长度从2k逐步扩展至8K再到16K,利用短上下文训练的初始速度优势,最终支持更大上下文窗口。
在自适应预训练(jais-adapted-*
)中,我们首先按模型架构所述初始化新分词器和阿拉伯语嵌入。训练采用两阶段策略:第一阶段冻结模型主干,使用约150亿token的双语语料训练嵌入;第二阶段解冻主干,进行全参数持续预训练。
指令微调时,每个训练样本包含单轮或多轮提示及其响应