Project Icon

gpt2-small-portuguese

葡萄牙语NLP高效精调模型的详细解析

研究展示了如何在有限资源下使用Hugging Face和fastai v2对英语GPT-2进行精调,构建出葡萄牙语语言模型。该模型基于GPT-2 small,经过一天训练获得37.99%的准确率和23.76的困惑度,显示了其在葡萄牙语文本生成及其他NLP任务中的表现。研究指出,迁移学习可在任何语言的前沿语言模型开发中发挥作用。

项目介绍:gpt2-small-portuguese

简介

GPorTuguese-2(葡萄牙语GPT-2 small)是一个用于葡萄牙语文本生成及其他自然语言处理(NLP)任务的尖端语言模型。它基于GPT-2 small模型,主要针对葡萄牙语维基百科进行训练。通过迁移学习和微调技术,在不到一天的时间内完成了训练,使用的是一块NVIDIA V100 32GB显卡和略高于1GB的训练数据。这一项目证明了即使在低资源的情况下,也能够实现高水平的语言模型。

模型的微调基于英语预训练的GPT-2 small,利用了Hugging Face的Transformers和Tokenizers库,并结合了fastai v2的深度学习框架。详细信息和请求请访问"Faster than training from scratch — Fine-tuning the English GPT-2 in any language with Hugging Face and fastai v2"。

模型信息

模型名参数量模型文件(pt/tf)架构训练/验证数据(文本)
gpt2-small-portuguese124M487M / 475MGPT-2 small葡萄牙语维基百科(1.28 GB / 0.32 GB)

评价结果

在超过一天的时间(我们只使用了一块NVIDIA V100 32GB显卡;通过分布式数据并行训练模式,可将时间缩短至10小时,仅需两块显卡),我们得到了3.17的损失,37.99%的准确率和23.76的困惑度。

经过 ... 轮次损失准确率 (%)困惑度每轮次时间累积时间
09.959.9020950.9400:00:0000:00:00
13.6432.5238.125:48:315:48:31
23.3036.2927.165:38:1811:26:49
33.2137.4624.716:20:5117:47:40
43.1937.7424.216:06:2923:54:09
53.1737.9923.766:16:2230:10:31

GPT-2 基本信息

GPT-2是一个基于Transformer架构的模型,在一个非常大的英语数据集上进行自监督训练。这意味着,模型在没有人工标记的数据集上进行训练,主要任务是预测句子中的下一个词。这种训练方式利用了广泛的公开数据,通过自动化过程生成输入和标签。

GPT-2内部使用了一种掩码机制,确保每个词元的预测仅依赖于它之前的输入而不是以后。通过这种方式,模型学到了英语语言的内部表示法,这对后续的任务提取有益。

如何使用 GPorTuguese-2(PyTorch)

以下代码段展示了如何使用PyTorch:

from transformers import AutoTokenizer, AutoModelWithLMHead
import torch

tokenizer = AutoTokenizer.from_pretrained("pierreguillou/gpt2-small-portuguese")
model = AutoModelWithLMHead.from_pretrained("pierreguillou/gpt2-small-portuguese")

# 获取最大序列长度为1024
tokenizer.model_max_length=1024 

model.eval()  # 禁用dropout(或保留在训练模式以进行微调)

生成一个词

# 输入序列
text = "Quem era Jim Henson? Jim Henson era um"
inputs = tokenizer(text, return_tensors="pt")

# 模型输出
outputs = model(**inputs, labels=inputs["input_ids"])
loss, logits = outputs[:2]
predicted_index = torch.argmax(logits[0, -1, :]).item()
predicted_text = tokenizer.decode([predicted_index])

# 结果
print('输入文本:', text)
print('预测文本:', predicted_text)

# 输入文本: Quem era Jim Henson? Jim Henson era um
# 预测文本:  homem

完整生成一个序列

# 输入序列
text = "Quem era Jim Henson? Jim Henson era um"
inputs = tokenizer(text, return_tensors="pt")

# 使用Top-k采样文本生成方法的模型输出
sample_outputs = model.generate(inputs.input_ids,
                                pad_token_id=50256,
                                do_sample=True, 
                                max_length=50, # 可设置所需的词元数
                                top_k=40,
                                num_return_sequences=1)

# 生成的序列
for i, sample_output in enumerate(sample_outputs):
    print(">> 生成的文本 {}\n\n{}".format(i+1, tokenizer.decode(sample_output.tolist())))

# >> 生成的文本
# Quem era Jim Henson? Jim Henson era um executivo de televisão e diretor de um grande estúdio de cinema mudo chamado Selig,
# depois que o diretor de cinema mudo Georges Seuray dirigiu vários filmes para a Columbia e o estúdio。

使用 GPorTuguese-2(TensorFlow)

以下代码段展示了如何使用TensorFlow:

from transformers import AutoTokenizer, TFAutoModelWithLMHead
import tensorflow as tf

tokenizer = AutoTokenizer.from_pretrained("pierreguillou/gpt2-small-portuguese")
model = TFAutoModelWithLMHead.from_pretrained("pierreguillou/gpt2-small-portuguese")

# 获取最大序列长度为1024
tokenizer.model_max_length=1024 

model.eval()  # 禁用dropout(或保留在训练模式以进行微调)

完整生成一个序列

# 输入序列
text = "Quem era Jim Henson? Jim Henson era um"
inputs = tokenizer.encode(text, return_tensors="tf")

# 使用Top-k采样文本生成方法的模型输出
outputs = model.generate(inputs, eos_token_id=50256, pad_token_id=50256, 
                         do_sample=True,
                         max_length=40,
                         top_k=40)
print(tokenizer.decode(outputs[0]))

# >> 生成的文本
# Quem era Jim Henson? Jim Henson era um amigo familiar da família. Ele foi contratado pelo seu pai 
# para trabalhar como aprendiz no escritório de um escritório de impressão, e então começou a ganhar dinheiro

限制和偏见

该模型的训练数据来自葡萄牙语维基百科,包含了大量未过滤的网络内容,可能存在偏见。正如OpenAI团队在其模型卡中指出的:

由于像GPT-2这样的大规模语言模型不能区分事实与虚构,因此我们不支持需要生成文本为真的用例。此外,它们反映了训练数据中的固有偏见,因此在用于与人类互动的系统前,应开展针对性偏见研究。我们没有发现性别、种族和宗教偏见的显著差异,提示对于所有版本的GPT-2,在敏感偏见的应用场合中应采取警惕态度。

作者

葡萄牙语GPT-2 small由Pierre GUILLOU训练与评估,感谢其所属的巴西利亚大学AI实验室提供的GPU计算能力,以及教授Fabricio Ataides Braz和Nilton Correia da Silva在NLP策略定义方面的参与。

引用

如使用我们的工作,请引用:

@inproceedings{pierre2020gpt2smallportuguese,
  title={GPorTuguese-2 (Portuguese GPT-2 small): a Language Model for Portuguese text generation (and more NLP tasks...)},
  author={Pierre Guillou},
  year={2020}
}
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号