模型简介
模型特点
模型能力
使用案例
🚀 GPT-SW3 模型
GPT-SW3 是一系列仅含解码器的大型预训练变压器语言模型,由 AI Sweden 联合 RISE 和 WASP WARA for Media and Language 开发。该模型能够以 5 种不同语言和 4 种编程语言生成连贯文本,还可通过文本生成任务执行未明确训练过的文本任务。
🚀 快速开始
由于这是一个私有仓库,若要从 Python 访问该模型,你必须使用访问令牌登录。可以使用 huggingface-cli login
命令完成登录,更多信息请参阅 HuggingFace 快速入门指南。
以下代码片段可加载分词器和模型,并在可用时使用 GPU:
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# Initialize Variables
model_name = "AI-Sweden-Models/gpt-sw3-20b-instruct"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
prompt = "Träd är fina för att"
# Initialize Tokenizer & Model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()
model.to(device)
使用 generate
方法生成文本的示例如下:
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
数据预处理期间使用的聊天格式如下:
<|endoftext|><s>
User:
Jag tycker träd är fina
<s>
Bot:
Kul att du tycker det!
<s>
...
生成文本的过程与上述相同:
prompt = """
<|endoftext|><s>
User:
Varför är träd fina?
<s>
Bot:
""".strip()
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
使用 generate
方法生成文本的示例如下:
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generate
方法的一个便捷替代方案是 HuggingFace 管道,它可以为你处理大部分工作:
generator = pipeline('text-generation', tokenizer=tokenizer, model=model, device=device)
generated = generator(prompt, max_new_tokens=100, do_sample=True, temperature=0.6, top_p=1)[0]["generated_text"]
✨ 主要特性
- 多语言支持:能够以瑞典语、挪威语、丹麦语、冰岛语和英语这 5 种语言生成连贯文本。
- 编程代码处理:可以处理 4 种编程语言。
- 指令执行能力:能够执行未明确训练过的文本任务,通过将其转化为文本生成任务来实现。
📦 安装指南
由于这是一个私有仓库,若要从 Python 访问该模型,你必须使用访问令牌登录。可以使用 huggingface-cli login
命令完成登录,更多信息请参阅 HuggingFace 快速入门指南。
💻 使用示例
基础用法
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
# Initialize Variables
model_name = "AI-Sweden-Models/gpt-sw3-20b-instruct"
device = "cuda:0" if torch.cuda.is_available() else "cpu"
prompt = "Träd är fina för att"
# Initialize Tokenizer & Model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()
model.to(device)
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
print(generated_text)
高级用法
# 高级场景说明:使用聊天格式生成文本
prompt = """
<|endoftext|><s>
User:
Varför är träd fina?
<s>
Bot:
""".strip()
input_ids = tokenizer(prompt, return_tensors="pt")["input_ids"].to(device)
generated_token_ids = model.generate(
inputs=input_ids,
max_new_tokens=100,
do_sample=True,
temperature=0.6,
top_p=1,
)[0]
generated_text = tokenizer.decode(generated_token_ids)
print(generated_text)
📚 详细文档
模型描述
AI Sweden 开发了一系列 GPT-SW3 模型,包括不同规模的基础模型、指令模型和量化模型:
- 基础模型:GPT-Sw3 126M、GPT-Sw3 356M、GPT-Sw3 1.3B、GPT-Sw3 6.7B、GPT-Sw3 6.7B v2、GPT-Sw3 20B、GPT-Sw3 40B。
- 指令模型:GPT-Sw3 126M Instruct、GPT-Sw3 356M Instruct、GPT-Sw3 1.3B Instruct、GPT-Sw3 6.7B v2 Instruct、GPT-Sw3 20B Instruct。
- 量化模型:GPT-Sw3 6.7B v2 Instruct 4-bit gptq、GPT-Sw3 20B Instruct 4-bit gptq。
GPT-SW3 是一系列仅含解码器的大型预训练变压器语言模型,在包含 3200 亿瑞典语、挪威语、丹麦语、冰岛语、英语和编程代码标记的数据集上进行了训练。该模型使用因果语言建模(CLM)目标,利用 NeMo Megatron GPT 实现进行预训练。
instruct
模型在指令数据上进行了微调,使用了聊天和原始文本两种格式。
预期用途
GPT-SW3 是一种自回归大型语言模型,能够以 5 种不同语言和 4 种编程语言生成连贯文本。它还可以通过将任务转化为文本生成任务,执行未明确训练过的文本任务。
局限性
与其他大型语言模型一样,由于训练数据的多样性(或缺乏多样性)会对模型质量产生下游影响,GPT-SW3 在偏差和安全性等方面存在局限性。它在生成多样性和幻觉方面也可能存在质量问题。通过发布修改后的 RAIL 许可证,我们希望增加对大型语言模型的沟通、透明度和研究。该模型可能存在以下问题:
- 过度代表某些观点,而忽视其他观点。
- 包含刻板印象。
- 生成仇恨、辱骂、暴力、歧视或偏见性语言。
- 产生错误,包括将不正确的信息当作事实输出。
- 生成无关或重复的输出。
- 生成可能不适用于所有场景的内容,包括色情内容。
合规性
GPT-SW3 的发布包括模型权重、配置文件、分词器文件和词汇文件。这些文件均不包含任何个人身份信息(PII)或受版权保护的材料。
GPT-SW3 模型卡片
我们按照 Mitchell 等人(2018)的建议,为 GPT-SW3 提供了模型卡片。
模型详情
属性 | 详情 |
---|---|
开发人员或组织 | GPT-SW3 由 AI Sweden 联合 RISE 和 WASP WARA for Media and Language 开发。 |
模型发布日期 | 2022 年 12 月 20 日 |
模型版本 | 这是 GPT-SW3 的第二代版本。 |
模型类型 | GPT-SW3 是一种仅含解码器的大型变压器语言模型。 |
训练算法、参数、公平性约束或其他应用方法及特性信息 | GPT-SW3 使用 NeMo Megatron GPT 实现进行训练。 |
更多信息的论文或其他资源 | 无 |
许可证 | LICENSE |
关于模型问题或评论的反馈地址 | nlu@ai.se |
预期用途
- 主要预期用途:我们预发布 GPT-SW3 用于研究和评估大型语言模型在北欧语言方面的能力。这是构建大型语言模型知识、验证模型以及收集关于模型优缺点反馈的重要一步。
- 主要预期用户:北欧自然语言处理生态系统中的组织和个人,他们可以为模型的验证和测试做出贡献,并向社区提供反馈。
- 超出范围的用例:请参阅修改后的 RAIL 许可证。
数据、局限性和建议
- 训练数据选择:GPT-SW3 的训练数据是基于广度和可用性的结合进行选择的。更多详细信息请参阅我们的数据表。
- 评估数据选择:无
- 局限性:与其他大型语言模型一样,由于训练数据的多样性(或缺乏多样性)会对模型质量产生下游影响,GPT-SW3 在偏差和安全性等方面存在局限性。它在生成多样性和幻觉方面也可能存在质量问题。一般来说,GPT-SW3 无法避免困扰现代大型语言模型的诸多问题。通过发布修改后的 RAIL 许可证,我们希望增加对大型语言模型的沟通、透明度和研究。该模型可能存在以下问题:过度代表某些观点,而忽视其他观点;包含刻板印象;生成仇恨、辱骂、暴力、歧视或偏见性语言;产生错误,包括将不正确的信息当作事实输出;生成无关或重复的输出;生成可能不适用于所有场景的内容,包括色情内容。
- 未来工作建议:间接用户应了解他们处理的内容是由大型语言模型生成的。用户应了解风险和局限性,并在必要时包含适当的年龄声明或屏蔽界面。使用大型语言模型预训练的模型应包含更新的模型卡片。模型用户应提供受影响者反馈的机制,例如用于评论的电子邮件地址。
- 我们希望 GPT-SW3 的发布以及我们模型训练过程的相关信息,将增加大型语言模型以及自然语言处理和深度学习领域的开放科学研究。
GPT-SW3 数据表
我们遵循 Gebru 等人(2021)的建议,为用于训练 GPT-SW3 的数据集提供了数据表。
动机
- 数据集创建目的:大型语言模型(LLM)的预训练,如 GPT-3(T. B. Brown 等人,2020)、Gopher(J. W. Rae 等人,2022)、BLOOM(T. L. Scao 等人,2022)等,需要数百甚至数千 GB 的文本数据。最近的研究(Chinchilla: J. Hoffmann 等人,2022)表明,训练数据的规模比以前想象的更为重要。因此,为了训练瑞典语大型语言模型,我们需要一个大规模、高质量的瑞典语数据集。由于在此之前不存在这样的数据集,我们收集了北欧语言和英语的数据。
- 数据集创建者:AI Sweden 的战略倡议自然语言理解团队建立了一个新的研究环境,其中合作是关键。创建数据集的核心团队是 AI Sweden 的 NLU 研究小组,该小组由来自 AI Sweden(Lindholmen Science Park AB)和 RISE 的研究人员和开发人员组成。
- 数据集创建资金来源:瑞典创新局(Vinnova)通过多个不同的资助项目为这项工作提供了资金,包括 2019 - 02996 和 2022 - 00949。
- 其他评论:无
组成
- 数据实例代表内容:数据实例是按语言和文档类型分类的文本文档。数据集是一个经过过滤和去重的集合,包括以下来源:
- 书籍:Litteraturbanken、The Pile
- 文章:Diva、The Pile: PubMed、The Pile: ArXiv
- 代码:Code Parrot: Github code
- 对话:Familjeliv、Flashback、通过 Parlai 收集的数据集(详见数据论文附录)ParlAI、由 Baumgartner 等人(2020)开发并由 Roller 等人(2021)处理的 Pushshift.io Reddit 数据集
- 数学:由 DeepMind 代码生成的英语数学数据集(D. Saxton 等人,2019)、使用手动翻译模板生成的瑞典语数学数据集
- 其他:Summarization data、OPUS, the open parallel corpus、Movie scripts、Natural Instructions、P3 (Public Pool of Prompts)、The Norwegian Colossal Corpus、Danish Gigaword、Icelandic Gigaword、The Pile: Stack Exchange
- 网络通用爬虫数据:来自项目 LES(Linguistic Explorations of Societies)的网络数据 LES、由 AllenAI 从 C4 准备的多语言 C4(MC4)(C. Raffel 等人,2019)、Open Super-large Crawled Aggregated coRpus (OSCAR)、The Pile: Open Web Text
- 网络来源:各种瑞典公共网站的抓取数据(详见数据论文附录)、Familjeliv 文章、瑞典公共招聘广告、维基百科、官方维基百科转储
- 指令数据:dolly、Open Assistant、OIG、Fass:瑞典药品信息,已转换为问答格式。
- 数据实例总数:训练数据由 1.1TB UTF - 8 编码文本组成,包含 6.6 亿个文档,总计 3200 亿个标记。
- 数据集是否包含所有可能实例:我们数据集的多语言通用爬虫数据集(MC4、Oscar)部分按语言进行了过滤,仅包括瑞典语、挪威语、丹麦语和冰岛语。从 The Pile 中,我们仅包含了通常文本质量最高或能补充我们数据集其他来源不足的部分(例如书籍)。数据集的其余部分从上述来源收集。
- 每个实例的数据组成:每个实例由原始文本数据组成。
- 是否有与每个实例关联的标签或目标:否。
- 单个实例是否缺少信息:否。
- 单个实例之间的关系是否明确:否。
- 是否有推荐的数据分割:对于该数据集,没有明确推荐的数据分割。在预训练模型时,训练集、开发集和测试集的随机分割比例分别设置为 99.99%、0.08% 和 0.02%,并根据每个子集的权重和大小进行比例采样。每个子集的权重事先手动确定。这些决策考虑了数据的价值、来源和语言,以形成具有代表性和平衡性的预训练语料库。
- 数据集中是否有错误、噪声源或冗余:数据集是多个来源的集合,其中一些自然会有一些重叠。虽然我们进行了去重处理,但仍可能存在一些重叠。此外,通用爬虫数据集中可能存在一些噪声,在数据过滤过程中被遗漏。除了这些,我们没有发现其他错误、噪声源或冗余。
- 数据集是否自包含:是。
- 数据集是否包含可能令人反感的内容:数据集包含公共通用爬虫、Reddit、Familjeliv 和 Flashback 的子集。这些数据可能包含直接查看时可能令人反感、侮辱性、威胁性或引起焦虑的句子。
- 数据集是否与人物相关:部分数据文档与人物相关,如新闻文章、维基百科描述等。
- 数据集是否识别任何子群体:否,数据集未明确包含子群体识别信息。
- 其他评论:无
收集过程
- 每个实例的数据获取方式:数据集是公开可用数据集和来源的集合。
- 数据收集机制或程序:数据从互联网下载。
- 数据集采样策略:请参阅前面关于数据集部分选择的回答。
- 数据收集人员及补偿方式:数据由机器挖掘、过滤和采样。
- 数据收集时间范围:数据集于 2021 年 6 月至 2022 年 6 月期间收集。收集来源的创建时间各不相同,例如通用爬虫数据已经连续收集了 12 年。
- 数据集是否与人物相关:是,文本由人产生。公开可用数据源中可能存在的任何个人信息,对于数据集的收集和使用并无影响。
- 是否进行了数据集及其使用对数据主体潜在影响的分析:是。
- 其他评论:无
预处理/清理/标注
- 数据是否进行了预处理/清理/标注:数据集在文档级别使用标准程序进行了过滤和重新格式化,灵感来自 The BigScience ROOTS Corpus(H. Laurençon 等人,2022)和 Gopher(J. W. Rae 等人,2022)的工作。这样做的目的是在整个数据集中实现一致的文本格式,并删除不符合我们文本质量要求的文档(例如重复性文档)。此外,使用 MinHash 算法对数据集进行了去重处理,以解决收集子集之间的重叠问题,类似于 GPT - 3 和 The Pile 中使用的方法,并在“Deduplicating Training Data Makes Language Models Better”(K. Lee 等人,2021)中进行了更详细的描述。
指令数据:上述处理未应用于指令数据。指令数据被转换为聊天轮次格式,并相应地使用结束轮次标记进行格式化,同时展开为原始文本形式。Open Assistant 数据也使用 GPT - SW3 自动翻译成了瑞典语、丹麦语、挪威语和冰岛语。
- “原始”数据是否保存:“原始”组件数据集在各自的位置公开可用。
- 其他评论:无
用途
- 数据集是否已用于任何任务:数据集用于预训练 GPT - SW3 模型。
- 是否有链接到使用该数据集的论文或系统的存储库:无。
- 数据集还可用于哪些任务:数据可用于预训练语言模型,这些模型是许多当前和未来语言任务的基础。
- 数据集的组成、收集和预处理/清理/标注方式是否会影响未来使用:数据集可能相当代表瑞典互联网话语和瑞典公共部门,但我们知道这些数据不一定反映整个瑞典人口。
- 数据集不应用于哪些任务:目前我们不知道有哪些任务不适合使用该数据集。
- 其他评论:无
分发
- 数据集是否会分发给第三方:否。
- 数据集的分发方式:无。
- 数据集的分发时间:无。
- 数据集是否会在版权或其他知识产权(IP)许可证下分发:无。
- 数据集或单个实例是否适用出口管制或其他监管限制:无。
- 其他评论:无
维护
- 数据集的支持/托管/维护者:AI Sweden at Lindholmen Science Park AB。
- 数据集所有者/策展人/管理者的联系方式:nlu@ai.se
- 是否有勘误表:无。
- 数据集是否会更新:目前没有更新数据集的计划。
- 如果数据集与人物相关,是否有数据保留限制:请阅读 AI Sweden 的 NLU 倡议隐私政策 此处。
- 旧版本的数据集是否会继续得到支持/托管/维护:无。
- 是否有机制允许他人扩展/增强/基于/贡献数据集:目前没有。
- 其他评论:无
Open LLM Leaderboard 评估结果
详细结果可查看 此处
指标 | 值 |
---|---|
平均值 | 38.19 |
ARC (25-shot) | 43.17 |
HellaSwag (10-shot) | 71.09 |
MMLU (5-shot) | 31.32 |
TruthfulQA (0-shot) | 41.02 |
Winogrande (5-shot) | 66.77 |
GSM8K (5-shot) | 8.79 |
DROP (3-shot) | 5.15 |
🔧 技术细节
GPT-SW3 在包含 3200 亿瑞典语、挪威语、丹麦语、冰岛语、英语和编程代码标记的数据集上进行了训练。该模型使用因果语言建模(CLM)目标,利用 NeMo Megatron GPT 实现进行预训练。instruct
模型在指令数据上进行了微调,使用了聊天和原始文本两种格式。
📄 许可证
本项目采用 LICENSE 许可证。
⚠️ 重要提示
与其他大型语言模型一样,由于训练数据的多样性(或缺乏多样性)会对模型质量产生下游影响,GPT-SW3 在偏差和安全性等方面存在局限性。它在生成多样性和幻觉方面也可能存在质量问题。该模型可能存在过度代表某些观点、包含刻板印象、生成仇恨性语言等问题,还可能产生错误信息、无关或重复输出以及不适用于所有场景的内容。
💡 使用建议
间接用户应了解他们处理的内容是由大型语言模型生成的。用户应了解风险和局限性,并在必要时包含适当的年龄声明或屏蔽界面。使用大型语言模型预训练的模型应包含更新的模型卡片。模型用户应提供受影响者反馈的机制,例如用于评论的电子邮件地址。



