新闻详情

新闻详情

首页 / 资讯中心 / 详情

PaddleHub 多语言 BERT 预训练模型 bert-base-multilingual-uncased 使用指南:推理、微调与服务化部署

发布时间:2026/9/25 3:09:52来源:尧图网络
PaddleHub 多语言 BERT 预训练模型 bert-base-multilingual-uncased 使用指南:推理、微调与服务化部署
人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载本文以 PaddleFormers 仓库中bert-base-multilingual-uncased模块的官方 READMEmodules/text/language_model/bert-base-multilingual-uncased/README.md为主体结合其 module.py 实现与 PaddleHub 训练、服务化组件源码系统讲解该多语言 BERT 模型在 PaddleHub 2.0 动态图体系下的安装方式、任务化 APIseq-cls/token-cls/text-matching/ 特征抽取、Fine-tune 微调流程以及 Serving 在线部署方法。读完本文你将掌握用 PaddleHub 加载多语言预训练模型并完成文本分类、序列标注、文本匹配三大任务从训练到上线服务的完整实战链路。模型概述bert-base-multilingual-uncased是 PaddleHub 提供的一个多语言MultilingualBERT 预训练语义模型。根据模块注册信息module.py 中的moduleinfo其基础配置为bert_multi_uncased_L-12_H-768_A-12即12 层 Transformer 编码层L-12隐藏层维度 768H-76812 个注意力头A-12参数量约 110M模块类型为nlp/semantic_model版本号为2.0.2在 Paddle 动态图paddle.dygraph模式下执行是 PaddleNLPBertModel、BertForSequenceClassification、BertForTokenClassification等在 PaddleHub 侧的封装。得益于多语言预训练该模型可作为跨语言 NLP 任务的语义底座在中文、英文等多语种文本的分类、标注与匹配任务上复用。环境要求与安装模块的运行依赖如下见原 README「依赖」一节paddlepaddle 2.0.0paddlehub 2.0.0使用hub install命令安装指定版本的模块$ hub install bert-base-multilingual-uncased2.0.2安装完成后即可通过hub.Module按名称加载。PaddleHub 在Module.__new__见 paddlehub/module/module.py中会根据name查找本地模块若本地不存在或版本不满足要求则会自动从服务器下载对应资源因此首次使用需保持网络可达。核心 API 详解该模块的动态图组网版本提供三个核心接口__init__构建任务化模型、predict预测、get_embedding抽取特征。init创建任务化 Moduledef __init__( taskNone, load_checkpointNone, label_mapNone, num_classes2, suffixFalse, **kwargs, )各参数含义如下参数类型默认值说明taskstrNone任务名称支持seq-cls文本分类、token-cls序列标注、text-matching文本匹配None表示纯语义特征抽取。原sequence_classification任务名已更名为seq-cls未来会被弃用load_checkpointstrNone使用 PaddleHub Fine-tune API 训练保存的模型参数文件路径加载后可直接预测label_mapdictNone预测时的类别映射表如{0: negative, 1: positive}指定后会自动以len(label_map)确定分类数num_classesint2分类任务的类别数指定了label_map时可不传suffixboolFalse序列标注任务的标签格式开关True表示标签以-B、-I、-E或-S结尾BIOES 体系**kwargsdict—用户额外指定的关键字参数会透传给底层 PaddleNLP 模型构造从源码实现module.py可以看到label_map与num_classes的优先级逻辑若传入label_map则num_classes直接取len(label_map)因此类别数由映射表自动推导。不同任务对应的底层模型结构为seq-clsBertForSequenceClassification损失为CrossEntropyLoss评估指标为paddle.metric.Accuracytoken-clsBertForTokenClassification评估指标为ChunkEvaluator来自paddlenlp.metrics并按suffix决定标签体系text-matchingBertModel基础上叠加Dropout(0.1)与Linear(hidden_size * 3, 2)分类头taskNone仅加载BertModel用于特征抽取。若传入的task不在支持列表中模块会抛出RuntimeError提示合法取值。predict执行任务预测def predict( data, max_seq_len128, batch_size1, use_gpuFalse )data待预测数据格式为[[sample_a_text_a, sample_a_text_b], [sample_b_text_a, sample_b_text_b], ...]每个元素是一个样例样例可包含 1 个或 2 个文本text_a / text_b每个样例的文本数量需与训练时保持一致max_seq_len模型处理文本的最大长度batch_size批处理大小use_gpu是否使用 GPU默认为FalseGPU 用户建议开启。返回resultslist 类型文本分类seq-cls每个句子的预测标签列表格式为[label_1, label_2, ...]序列标注token-cls每个句子每个 token 的预测标签格式为[[token_1, token_2, ...], [...], ...]文本匹配text-matching每对文本的匹配类别标签列表。预测逻辑在 PaddleHub 的TransformerModule.predictpaddlehub/module/nlp_module.py中实现先按use_gpu调用paddle.set_device设置运行设备再通过_batchify将文本分词、编码并按batch_size切批随后切换至eval()模式逐批前向计算对seq-cls/text-matching取argmax(probs, axis1)、对token-cls取argmax(probs, axis2)最后按label_map映射为可读标签返回。get_embedding抽取句子与字粒度特征def get_embedding( data, use_gpuFalse )用于获取输入文本的句子粒度特征pooled_feature与字粒度特征seq_featuredata输入文本列表格式同predict的data每个样例可含 text_a 与 text_buse_gpu是否使用 GPU默认为False。返回resultslist 类型格式为[[sample_a_pooled_feature, sample_a_seq_feature], [sample_b_pooled_feature, sample_b_seq_feature], ...]每个样例都包含pooled_feature句子粒度与seq_feature字粒度两组特征。需要特别说明的是源码中get_embedding仅在taskNone时有效nlp_module.py若实例化时指定了任务调用该方法会抛出RuntimeError。其底层直接复用predict模型前向返回(sequence_output, pooled_output)二元组分别对应字粒度与句子粒度特征。完整代码示例加载模型并预测原 README 给出了一个文本分类预测的完整示例中文情感二分类可直接复制运行import paddlehub as hub data [ [这个宾馆比较陈旧了特价的房间也很一般。总体来说一般], [怀着十分激动的心情放映可是看着看着发现在放映完毕后出现一集米老鼠的动画片], [作为老的四星酒店房间依然很整洁相当不错。机场接机服务很好可以在车上办理入住手续节省时间。], ] label_map {0: negative, 1: positive} model hub.Module( namebert-base-multilingual-uncased, version2.0.2, taskseq-cls, load_checkpoint/path/to/parameters, label_maplabel_map) results model.predict(data, max_seq_len50, batch_size1, use_gpuFalse) for idx, text in enumerate(data): print(Data: {} \t Lable: {}.format(text, results[idx]))示例要点通过nameversion精确定位模块版本对应上文hub install ...2.0.2安装的版本taskseq-cls指定分类任务label_map定义了 0/1 与negative/positive的映射load_checkpoint指向微调产出的参数文件若使用官方预训练权重可直接省略该参数predict按批返回预测标签results[idx]与data[idx]一一对应。任务模式与底层实现原理在 module.py 的forward中四种模式的分支逻辑清晰可见seq-clsBertForSequenceClassification输出 logits经softmax(axis1)得到概率训练模式下返回(probs, loss, {acc: acc})推理模式仅返回probstoken-cls输出每个 token 的 logitssoftmax(axis-1)后取argmax得到标签序列训练时通过ChunkEvaluator统计 chunk 级 F1text-matchingquery 与 title 分别过BertModel对 token 隐层做平均池化mean pooling剔除 pad token 后求和取均值再拼接[query_mean, title_mean, |query_mean - title_mean|]三个向量维度为hidden_size * 3送入分类头最终 softmax 输出 2 分类概率。这也是Linear(hidden_size * 3, 2)输入维度的由来taskNone返回(sequence_output, pooled_output)供get_embedding使用。分词与编码统一由get_tokenizer提供静态方法返回BertTokenizer.from_pretrained(bert-base-multilingual-uncased)模型前向所需的input_ids、token_type_ids等输入在TransformerModule._convert_text_to_input中生成token-cls还会借助reseg_token_label对原始 token 与 BERT 子词切分结果做对齐。基于 PaddleHub Fine-tune API 微调load_checkpoint指向的正是 Fine-tune API 训练保存的参数。仓库中的 PaddleHub 示例展示了三种任务的完整微调写法可直接对照复用示例均位于 demo 目录文本分类demo/text_classification/train.py加载hub.Module(nameernie_tiny, version2.0.1, taskseq-cls)配合ChnSentiCorp数据集paddlehub/datasets/chnsenticorp.py训练序列标注demo/sequence_labeling/train.py加载tasktoken-cls模块必须传入由MSRA_NER.label_list构造的label_map配合MSRA_NER数据集paddlehub/datasets/msra_ner.py训练文本匹配demo/text_matching/train.py加载tasktext-matching模块配合LCQMC数据集paddlehub/datasets/lcqmc.py训练。以文本分类为例标准训练脚本结构如下import paddle import paddlehub as hub from paddlehub.datasets import ChnSentiCorp model hub.Module(nameernie_tiny, version2.0.1, taskseq-cls) train_dataset ChnSentiCorp(tokenizermodel.get_tokenizer(), max_seq_len128, modetrain) dev_dataset ChnSentiCorp(tokenizermodel.get_tokenizer(), max_seq_len128, modedev) test_dataset ChnSentiCorp(tokenizermodel.get_tokenizer(), max_seq_len128, modetest) optimizer paddle.optimizer.AdamW(learning_rate5e-5, parametersmodel.parameters()) trainer hub.Trainer(model, optimizer, checkpoint_dir./checkpoint, use_gpuTrue) trainer.train( train_dataset, epochs3, batch_size32, eval_datasetdev_dataset, save_interval1, ) trainer.evaluate(test_dataset, batch_size32)其中hub.Trainer的实现位于 paddlehub/finetune/trainer.py训练过程中按checkpoint_dir保存epoch_*检查点与best_model支持 VisualDLuse_vdlTrue时在checkpoint_dir/visualization下写入日志与多卡并行nranks 1时自动DataParallel。训练完成后将best_model/model.pdparams等路径传入load_checkpoint即可加载微调权重做预测参考 demo/sequence_labeling/predict.py 与 demo/text_matching/predict.py。服务化部署PaddleHub ServingPaddleHub Serving 可以将模块部署为在线服务以便 HTTP 方式获取预训练词向量embedding。Step 1启动 PaddleHub Serving$ hub serving start -m bert-base-multilingual-uncased执行后即完成获取预训练词向量的服务化 API 部署默认端口号为8866。NOTE如需 GPU 预测须在启动服务前设置CUDA_VISIBLE_DEVICES环境变量否则无需设置。Step 2发送预测请求服务端启动后以下代码即可发送预测请求并获取结果import requests import json # 指定用于获取 embedding 的文本 [[text_1], [text_2], ...] text [[今天是个好日子], [天气预报说今天要下雨]] # 以 key 的方式指定 text 传入预测方法时的参数此例中为 data # 对应本地部署则为 module.get_embedding(datatext) data {data: text} # 发送 post 请求content-type 类型应指定 json 方式url 中的 ip 地址需改为对应机器的 ip url http://127.0.0.1:8866/predict/bert-base-multilingual-uncased # 指定 post 请求的 headers 为 application/json 方式 headers {Content-Type: application/json} r requests.post(urlurl, headersheaders, datajson.dumps(data)) print(r.json())请求要点请求体以 key 方式指定传给预测方法的参数名此例为data服务端等价于调用module.get_embedding(datatext)URL 路径为/predict/{module_name}127.0.0.1需替换为实际部署机器的 IPContent-Type必须为application/json请求体通过json.dumps序列化。从服务端实现看PaddleHub 的TextServing.predict_methodpaddlehub/module/nlp_module.py以serving装饰器注册为可服务化方法当task为seq-cls/token-cls等任务时返回预测标签当taskNone时返回 embedding 结果。对于token-cls服务端还会自动去除[CLS]标签与 pad token 对应的预测只保留真实 token 的标签。版本与更新历史该模块版本演进记录了其能力迭代见原 README「更新历史」1.0.0初始发布1.1.0支持get_embedding与get_params_layer2.0.0全面升级为动态图接口发生变化2.0.1任务名称调整增加序列标注任务token-cls同时保留了对旧名sequence_classification的兼容与弃用告警2.0.2增加文本匹配任务text-matching。当前仓库内该模块的注册版本即为2.0.2与 README 中的安装命令一致。使用时应确保本机paddlehub与paddlepaddle满足版本要求均不低于 2.0.0并以安装时的版本号在hub.Module中显式指定避免版本漂移导致接口不匹配。赞分享人工智能大模型微调模型推理服务【免费下载链接】PaddleFormersPaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle.项目地址https://gitcode.com/gh_mirrors/pa/PaddleFormers点击查看免费下载相关推荐PaddleFormers 多语言 BERT 预训练模型模块bert-base-multilingual-cased使用指南Fine-tune、预测与服务化部署PaddleFormers 多语言 BERT 预训练模型模块bert base multilingual cased使用指南Fine tune、预测与服务人工智能大模型微调模型推理服务PaddleHub 中 bert-base-cased 预训练模型模块使用指南API 调用、特征抽取与在线服务部署PaddleHub 中 bert base cased 预训练模型模块使用指南API 调用、特征抽取与在线服务部署 导读 bert base cased 是人工智能大模型微调模型推理服务PaddleHub 中文预训练模型 chinese-bert-wwm-ext 实战指南安装、预测 API、微调与服务化部署PaddleHub 中文预训练模型 chinese bert wwm ext 实战指南安装、预测 API、微调与服务化部署 导读 chinese bert w人工智能大模型微调模型推理服务创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

xberg 文档提取元数据访问实战:基于 C FFI 读取通用与格式特定元数据 2026/9/25 5:26:42

xberg 文档提取元数据访问实战:基于 C FFI 读取通用与格式特定元数据

后端AI 应用NLP 【免费下载链接】xberg Polyglot document intelligence with a Rust core: extract text, metadata, images, tables, and structured data from 106 formats across 140 file extensions, plus code intelligence for 371 languages. Fifteen bindings, with …

阅读更多 →
使用 Hugging Face Transformers 在 PyTorch 中训练语言模型:CLM / MLM / PLM 实战指南(基于 FlexGen 仓库) 2026/9/25 5:26:42

使用 Hugging Face Transformers 在 PyTorch 中训练语言模型:CLM / MLM / PLM 实战指南(基于 FlexGen 仓库)

推理引擎大模型 【免费下载链接】FlexGen Running large language models on a single GPU for throughput-oriented scenarios. 项目地址: https://gitcode.com/gh_mirrors/fl/FlexGen 点击查看 免费下载 导读 本指南围绕 FlexGen 仓库 benchmark/third_party/tr…

阅读更多 →
WeiXinMPSDK 企业微信模块安装指南:Senparc.Weixin.Work 源码引用与 NuGet 包接入全流程 2026/9/25 5:26:42

WeiXinMPSDK 企业微信模块安装指南:Senparc.Weixin.Work 源码引用与 NuGet 包接入全流程

后端即时通讯金融科技 【免费下载链接】WeiXinMPSDK 微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 …

阅读更多 →
使用 Moto 模拟 Amazon Bedrock Agents 与 Knowledge Base:完整指南 2026/9/25 5:26:42

使用 Moto 模拟 Amazon Bedrock Agents 与 Knowledge Base:完整指南

Mock测试 【免费下载链接】moto A library that allows you to easily mock out tests based on AWS infrastructure. 项目地址: https://gitcode.com/gh_mirrors/mo/moto 点击查看 免费下载 Amazon Bedrock Agents(bedrock-agent)是 AWS 上…

阅读更多 →
opencodex V2 跨 Provider 子代理任务加密载荷丢失(NEW_TASK encrypted_content)根因分析与责任边界判定 2026/9/25 5:26:42

opencodex V2 跨 Provider 子代理任务加密载荷丢失(NEW_TASK encrypted_content)根因分析与责任边界判定

【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code 项目地址: https://gitcode.com/gh_mirrors/ope/opencodex 点击…

阅读更多 →
深入理解 TypeScript 字面量类型:用单元素集合精确建模你的类型系统 2026/9/25 5:26:36

深入理解 TypeScript 字面量类型:用单元素集合精确建模你的类型系统

文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本文基于开源项目《…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉