告别语言壁垒!用Transformer库一招搞定多语言模型推理,让你的AI全球通!

部署运行你感兴趣的模型镜像

在 Hugging Face 的 transformers 库中,多语言模型(Multilingual Models)是指那些在多种语言的文本数据上进行预训练,能够理解或生成多种语言的模型。它们使得跨语言任务(如翻译、跨语言分类、问答)成为可能,尤其是在目标语言缺乏标注数据时,可以通过迁移学习实现“零样本”或“少样本”应用。

一、XLM

XLM由Facebook提出,旨在通过跨语言预训练实现多语言理解。它结合了单语掩码语言建模和双语翻译语言建模,利用平行语料对不同语言进行对齐。XLM在XNLI等跨语言分类任务上表现优异,是早期重要的多语言模型之一。

XLM 有十个不同的检查点,其中只有一个是单语言的。剩下的九个检查点可以归为两类:使用语言嵌入的检查点和不使用语言嵌入的检查点。

1.1 带有语言嵌入的 XLM

以下 XLM 模型使用语言嵌入来指定推理中使用的语言:

  • FacebookAI/xlm-mlm-ende-1024 (掩码语言建模,英语-德语)
  • FacebookAI/xlm-mlm-enfr-1024 (掩码语言建模,英语-法语)
  • FacebookAI/xlm-mlm-enro-1024 (掩码语言建模,英语-罗马尼亚语)
  • FacebookAI/xlm-mlm-xnli15-1024 (掩码语言建模,XNLI 数据集语言)
  • FacebookAI/xlm-mlm-tlm-xnli15-1024 (掩码语言建模+翻译,XNLI 数据集语言)
  • FacebookAI/xlm-clm-enfr-1024 (因果语言建模,英语-法语)
  • FacebookAI/xlm-clm-ende-1024 (因果语言建模,英语-德语)
    语言嵌入被表示一个张量,其形状与传递给模型的 input_ids 相同。这些张量中的值取决于所使用的语言,并由分词器的 lang2id 和 id2lang 属性识别。

在此示例中,加载 FacebookAI/xlm-clm-enfr-1024 检查点(因果语言建模,英语-法语):

import torchfrom transformers import XLMTokenizer, XLMWithLMHeadModeltokenizer = XLMTokenizer.from_pretrained("FacebookAI/xlm-clm-enfr-1024")model = XLMWithLMHeadModel.from_pretrained("FacebookAI/xlm-clm-enfr-1024")

分词器的 lang2id 属性显示了该模型的语言及其对应的id:

print(tokenizer.lang2id){'en': 0, 'fr': 1}

接下来,创建一个示例输入:

input_ids = torch.tensor([tokenizer.encode("Wikipedia was used to")])  # batch size 为 1

将语言 id 设置为 “en” 并用其定义语言嵌入。语言嵌入是一个用 0 填充的张量,这个张量应该与 input_ids 大小相同。

language_id = tokenizer.lang2id["en"]  # 0langs = torch.tensor([language_id] * input_ids.shape[1])  # torch.tensor([0, 0, 0, ..., 0])# 我们将其 reshape 为 (batch_size, sequence_length) 大小langs = langs.view(1, -1)  # 现在的形状是 [1, sequence_length] (我们的 batch size 为 1)

现在,你可以将 input_ids 和语言嵌入传递给模型:

outputs = model(input_ids, langs=langs)run_generation.py 脚本可以使用 xlm-clm 检查点生成带有语言嵌入的文本。

1.2 不带语言嵌入的 XLM

以下 XLM 模型在推理时不需要语言嵌入:

  • FacebookAI/xlm-mlm-17-1280 (掩码语言建模,支持 17 种语言)
  • FacebookAI/xlm-mlm-100-1280 (掩码语言建模,支持 100 种语言)
    与之前的 XLM 检查点不同,这些模型用于通用句子表示。

二、BERT

BERT是Google提出的基于Transformer编码器的双向语言模型。其多语言版本mBERT在104种语言的混合语料上进行掩码语言建模预训练,无需显式跨语言信号即可学习跨语言表示,在翻译、分类等任务中展现强大迁移能力。

以下 BERT 模型可用于多语言任务:

  • google-bert/bert-base-multilingual-uncased (掩码语言建模 + 下一句预测,支持 102 种语言)
  • google-bert/bert-base-multilingual-cased (掩码语言建模 + 下一句预测,支持 104 种语言)
    这些模型在推理时不需要语言嵌入。它们应该能够从上下文中识别语言并进行相应的推理。

三、XLM-RoBERTa

XLM-RoBERTa是Facebook对XLM的改进版,基于RoBERTa架构。它在2.5TB的100种语言过滤文本上大规模预训练,仅使用掩码语言建模目标,不依赖平行语料。XLM-R在跨语言理解任务上显著超越mBERT,成为强大的多语言编码器。

以下 XLM-RoBERTa 模型可用于多语言任务:

  • FacebookAI/xlm-roberta-base (掩码语言建模,支持 100 种语言)
  • FacebookAI/xlm-roberta-large (掩码语言建模,支持 100 种语言)
    XLM-RoBERTa 使用 100 种语言的 2.5TB 新创建和清理的 CommonCrawl 数据进行了训练。与之前发布的 mBERT 或 XLM 等多语言模型相比,它在分类、序列标记和问答等下游任务上提供了更强大的优势。

四、M2M100

M2M100是Facebook推出的多语言机器翻译模型,支持100种语言间的直接翻译,无需经由英语中转。它采用Transformer架构,通过去偏采样和语言特定参数提升低资源语言表现,在多对多翻译任务中性能突出。

以下 M2M100 模型可用于多语言翻译:

  • facebook/m2m100_418M (翻译)
  • facebook/m2m100_1.2B (翻译)
    在此示例中,加载 facebook/m2m100_418M 检查点以将中文翻译为英文。你可以在分词器中设置源语言:
from transformers import M2M100ForConditionalGeneration, M2M100Tokenizeren_text = "Do not meddle in the affairs of wizards, for they are subtle and quick to anger."chinese_text = "不要插手巫師的事務, 因為他們是微妙的, 很快就會發怒."tokenizer = M2M100Tokenizer.from_pretrained("facebook/m2m100_418M", src_lang="zh")model = M2M100ForConditionalGeneration.from_pretrained("facebook/m2m100_418M")

对文本进行分词:

encoded_zh = tokenizer(chinese_text, return_tensors="pt")

M2M100 强制将目标语言 id 作为第一个生成的标记,以进行到目标语言的翻译。在 generate 方法中将 forced_bos_token_id 设置为 en 以翻译成英语:

generated_tokens = model.generate(**encoded_zh, forced_bos_token_id=tokenizer.get_lang_id("en"))tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)'Do not interfere with the matters of the witches, because they are delicate and will soon be angry.'

五、MBart

mBART是Facebook将BART模型扩展到多语言场景的成果。它在25种语言的大规模单语语料上进行去噪自编码预训练,能同时处理多语言文本重建、翻译和理解任务。mBART在预训练和微调中均使用多语言输入,增强了跨语言泛化能力。

以下 MBart 模型可用于多语言翻译:

  • facebook/mbart-large-50-one-to-many-mmt (一对多多语言机器翻译,支持 50 种语言)
  • facebook/mbart-large-50-many-to-many-mmt (多对多多语言机器翻译,支持 50 种语言)
  • facebook/mbart-large-50-many-to-one-mmt (多对一多语言机器翻译,支持 50 种语言)
  • facebook/mbart-large-50 (多语言翻译,支持 50 种语言)
  • facebook/mbart-large-cc25
    在此示例中,加载 facebook/mbart-large-50-many-to-many-mmt 检查点以将芬兰语翻译为英语。 你可以在分词器中设置源语言:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLMen_text = "Do not meddle in the affairs of wizards, for they are subtle and quick to anger."fi_text = "Älä sekaannu velhojen asioihin, sillä ne ovat hienovaraisia ja nopeasti vihaisia."tokenizer = AutoTokenizer.from_pretrained("facebook/mbart-large-50-many-to-many-mmt", src_lang="fi_FI")model = AutoModelForSeq2SeqLM.from_pretrained("facebook/mbart-large-50-many-to-many-mmt")

对文本进行分词:

encoded_en = tokenizer(en_text, return_tensors="pt")

MBart 强制将目标语言 id 作为第一个生成的标记,以进行到目标语言的翻译。在 generate 方法中将 forced_bos_token_id 设置为 en 以翻译成英语:

generated_tokens = model.generate(**encoded_en, forced_bos_token_id=tokenizer.lang_code_to_id["en_XX"])tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)"Don't interfere with the wizard's affairs, because they are subtle, will soon get angry."

如果你使用的是 facebook/mbart-large-50-many-to-one-mmt 检查点,则无需强制目标语言 id 作为第一个生成的令牌,否则用法是相同的。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值