语言:
- 多语言
- 英语
- 俄语
- 中文
- 德语
- 西班牙语
- 法语
- 日语
- 意大利语
- 葡萄牙语
- 希腊语
- 韩语
- 芬兰语
- 印尼语
- 土耳其语
- 阿拉伯语
- 越南语
- 泰语
- 保加利亚语
- 加泰罗尼亚语
- 印地语
- 爱沙尼亚语
- 孟加拉语
- 泰米尔语
- 乌尔都语
- 斯瓦希里语
- 泰卢固语
- 巴斯克语
- 缅甸语
- 海地克里奥尔语
- 克丘亚语
许可证: mit
缩略图: https://huggingface.co/front/thumbnails/facebook.png
推理: false
XGLM-4.5B
XGLM-4.5B 是一个多语言自回归语言模型(拥有45亿参数),基于134种多样语言的平衡语料库训练而成。该模型由Xi Victoria Lin*、Todor Mihaylov、Mikel Artetxe等人在论文《Few-shot Learning with Multilingual Language Models》(https://arxiv.org/abs/2112.10668)中提出(*表示同等贡献)。原始实现发布于此代码库。
模型卡片
关于模型的预期用途,请参考XGLM-4.5B开发团队发布的模型卡片。
示例(COPA任务)
以下代码片段展示了如何使用英语、中文和印地语示例,以GPT-3风格的零样本方式评估我们的模型在"合理替代选择"(COPA)任务上的表现。
import torch
import torch.nn.functional as F
from transformers import XGLMTokenizer, XGLMForCausalLM
tokenizer = XGLMTokenizer.from_pretrained("facebook/xglm-4.5B")
model = XGLMForCausalLM.from_pretrained("facebook/xglm-4.5B")
data_samples = {
'en': [
{
"premise": "我想节约能源。",
"choice1": "我在空房间里扫地。",
"choice2": "我关掉了空房间的灯。",
"question": "effect",
"label": "1"
},
{
"premise": "蜡烛的火焰熄灭了。",
"choice1": "我吹灭了烛芯。",
"choice2": "我给烛芯点了火。",
"question": "cause",
"label": "0"
}
],
'zh': [
{
"premise": "我想节约能源。",
"choice1": "我在空着的房间里扫了地板。",
"choice2": "我把空房间里的灯关了。",
"question": "effect",
"label": "1"
},
{
"premise": "蜡烛上的火焰熄灭了。",
"choice1": "我吹灭了灯芯。",
"choice2": "我把一根火柴放在灯芯上。",
"question": "cause",
"label": "0"
}
],
'hi': [
{
"premise": "M te vle konsève enèji.",
"choice1": "Mwen te fin baleye chanm lib la.",
"choice2": "Mwen te femen limyè nan chanm lib la.",
"question": "effect",
"label": "1"
},
{
"premise": "Flam bouji a te etenn.",
"choice1": "Mwen te soufle bouji a.",
"choice2": "Mwen te limen mèch bouji a.",
"question": "cause",
"label": "0"
}
]
}
def get_logprobs(prompt):
inputs = tokenizer(prompt, return_tensors="pt")
input_ids, output_ids = inputs["input_ids"], inputs["input_ids"][:, 1:]
outputs = model(**inputs, labels=input_ids)
logits = outputs.logits
logprobs = torch.gather(F.log_softmax(logits, dim=2), 2, output_ids.unsqueeze(2))
return logprobs
def COPA_eval(prompt, alternative1, alternative2):
lprob1 = get_logprobs(prompt + "\n" + alternative1).sum()
lprob2 = get_logprobs(prompt + "\n" + alternative2).sum()
return 0 if lprob1 > lprob2 else 1
for lang in data_samples:
for idx, example in enumerate(data_samples[lang]):
predict = COPA_eval(example["premise"], example["choice1"], example["choice2"])
print(f'{lang}-{idx}', predict, example['label'])