base_model: inceptionai/jais-adapted-13b
language:
- 阿拉伯语
- 英语
thumbnail: null
tags:
- 阿拉伯语
- 英语
- 大语言模型
- 解码器
- 因果语言模型
- jais系列
license: apache-2.0
pipeline_tag: 文本生成
Jais系列模型卡
Jais系列模型是一组全面的双语(英语-阿拉伯语)大语言模型(LLMs)。这些模型在阿拉伯语方面表现卓越,同时具备强大的英语能力。我们发布了两种基础模型变体:
- 从头预训练的模型(
jais-family-*
)
- 基于Llama-2自适应预训练的模型(
jais-adapted-*
)
本次发布包含8种规模共20个模型,参数量从5.9亿到700亿不等,训练数据涵盖高达1.6万亿token的阿拉伯语、英语和代码数据。所有预训练模型都经过指令微调(*-chat
),使用精心筛选的阿拉伯语和英语指令数据进行对话优化。
我们希望通过这次大规模发布加速阿拉伯语NLP研究,并为阿拉伯语社区及双语用户开启众多下游应用。我们为阿拉伯语模型成功展示的训练和自适应技术,可扩展至其他低资源和中资源语言。
Jais系列详情
- 开发团队: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加入Llama-2分词器,使计算效率提升3倍以上。为初始化这些新阿拉伯语token嵌入,我们首先利用两种词汇表共有的英语token集合,学习从Jais-30b嵌入空间到Llama嵌入空间的线性投影,然后将该投影应用于转换现有的Jais-30b阿拉伯语嵌入。
快速开始
以下是使用模型的示例代码。注意该模型需要自定义模型类,加载时必须启用trust_remote_code=True
。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "inceptionai/jais-adapted-13b-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-*
):采用阿拉伯语:英语:代码=1:2:0.4的混合比例,解决阿拉伯语数据稀缺问题同时提升双语表现
- Jais自适应预训练(
jais-adapted-*
):使用约3340亿阿拉伯语token与英语、代码数据混合,在不同模型规模下调整混合比例,在保持英语性能的同时增强阿拉伯语能力
微调数据
所有Jais系列聊天模型都使用阿拉伯语和英语的单轮及多轮提示-响应对进行微调。数据源包括经过主题和风格多样性筛选的开源微调数据集,以及内部策划的人工数据以增强文化适应性,辅以机器翻译、蒸馏和模型自对话生成的合成内容。总体而言,我们的指令微调数据集包含约1000万英语和400万阿拉伯语提示-响应对。