base_model: inceptionai/jais-adapted-70b
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。
- 语言支持: 阿拉伯语(现代标准阿拉伯语)和英语。
- 输入: 仅文本数据。
- 输出: 模型生成文本。
- 模型规模: 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个新阿拉伯语标记加入Llama-2分词器,使生育率和计算效率提升超过3倍。为初始化这些新阿拉伯语标记嵌入,我们首先利用两种词汇表共有的英语标记集合,学习从Jais-30b嵌入空间到Llama嵌入空间的线性投影。随后,应用这一学习到的投影将现有Jais-30b阿拉伯语嵌入转换至Llama-2嵌入空间。
快速开始
以下是使用模型的示例代码。注意该模型需要自定义模型类,因此在加载模型时必须启用trust_remote_code=True
。
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
model_path = "inceptionai/jais-adapted-70b-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万亿个多样化的英语、阿拉伯语和代码标记。数据来源包括:
-
网页: 公开可用的网页、维基百科文章、新闻文章和社交网络内容(阿拉伯语和英语)。
-
代码: 为增强模型推理能力,包含多种编程语言的代码数据。
-
书籍: 精选公开可用的阿拉伯语和英语书籍数据,提升长上下文建模和连贯叙事能力。
-
科学文献: 部分ArXiv论文,提升推理和长上下文能力。
-
合成数据: 通过内部机器翻译系统将高质量英语资源(如英语维基百科和英语书籍)翻译为阿拉伯语,扩充阿拉伯语数据量。
我们对训练数据进行了广泛预处理和去重。针对阿拉伯语,采用定制预处理流程筛选高语言质量数据。更多信息参见Jais论文。
- Jais预训练(
jais-family-*
):延续Jais中的语言对齐混合实验,采用阿拉伯语:英语:代码=1:2:0.4的比例。这一从头预训练方案在解决阿拉伯语数据稀缺问题的同时,提升了两种语言的性能。
- Jais自适应预训练(
jais-adapted-*
):针对Llama-2的自适应预训练,使用约3340亿阿拉伯语标记与英语和代码数据混合。在不同模型规模下调整混合比例,在保持英语性能的同时引入强大的阿拉伯语能力。