【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计

·请参考本系列目录:【mT5多语言翻译】之一——实战项目总览

[1] 模型翻译推理

  在分别使用全量参数微调和PEFT微调训练完模型之后,我们来测试模型的翻译效果。推理代码如下:

# 导入模型
if conf.is_peft:
    model = AutoModelForSeq2SeqLM.from_pretrained(conf.peft_save)
else:
    model = AutoModelForSeq2SeqLM.from_pretrained(conf.pretrained_path)
    model.load_state_dict(torch.load(conf.save_path))
model.to(conf.device)
model.eval()
sentences = [
    "kor:我要去健身了",
    "jpn:我要去健身了",
    "kor:他说他会爱我一辈子",
    "jpn:他说他会爱我一辈子",
]

tokenizer = AutoTokenizer.from_pretrained(conf.pretrained_path)

ids = tokenizer.batch_encode_plus(
    batch_text_or_text_pairs=sentences,
    return_tensors='pt',
    padding='max_length',
    truncation=True,
    max_length=conf.max_seq_len,
    return_attention_mask=False
)
input_ids = ids['input_ids'].to(conf.device)


output_tokens = model.generate(input_ids, num_beams=10, num_return_sequences=3)

for token_set in output_tokens:
    print(tokenizer.decode(token_set, skip_special_tokens=True))

  因为训练方式有全量参数微调和PEFT微调两种,不同方式保存的模型不同。前者是全量参数,后者是PEFT添加的少量参数。

【注】直接加载PEFT保存的少量参数,也可以加载到mT5模型本身的预训练参数。这是因为在peft模型保存的文件夹中有一个adapter_config.json文件,里面保存了基座模型的地址。

  最终,可以观察到上述代码的输出为:

나는 피트니스에 가고 싶
나는 피트니스 클럽에 가
나는 피트니스 센터에 가
ジムに行きます。
ジムに行きたいです。
ジムに行くわ
그는 평생을 나를 사랑할
그는 평생 나를 사랑할 것
그는 평생 나를 사랑할 거
彼は私を愛してくれると言っていた。
彼は私を愛してくれると言った。
彼は私を愛してくれると言っていました。

[2] 第三方接口设计

  我们把模型推理简单地设计成一个GET请求的接口,代码如下:

# coding: UTF-8
import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, BertModel, T5Model
from conf import conf
from flask import Flask, request, jsonify

app = Flask(__name__)

# 导入模型
if conf.is_peft:
    model = AutoModelForSeq2SeqLM.from_pretrained(conf.peft_save)
else:
    model = AutoModelForSeq2SeqLM.from_pretrained(conf.pretrained_path)
    model.load_state_dict(torch.load(conf.save_path))
model.to(conf.device)
model.eval()
tokenizer = AutoTokenizer.from_pretrained(conf.pretrained_path)


@app.route('/translate', methods=['GET'])
def translate():
    # 从GET请求中获取参数
    sentences = request.args.getlist('sentence')
    if not sentences:
        return jsonify({"error": "No sentences provided."}), 400

    # 对句子进行编码
    ids = tokenizer.batch_encode_plus(
        batch_text_or_text_pairs=sentences,
        return_tensors='pt',
        padding='max_length',
        truncation=True,
        max_length=conf.max_seq_len,
        return_attention_mask=False
    )
    input_ids = ids['input_ids'].to(conf.device)

    # 生成翻译结果
    output_tokens = model.generate(input_ids, num_beams=10, num_return_sequences=3)

    # 解码翻译结果
    translations = [tokenizer.decode(token_set, skip_special_tokens=True) for token_set in output_tokens]

    # 返回结果
    return jsonify({"translations": translations})


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

  然后就能去浏览器快乐地测试玩耍了。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/533307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何设置端口映射?

端口映射是一种网络技术,通过在网络路由器或防火墙上设置规则,将外部网络请求转发到内部特定设备或服务的端口上。这样可以实现不同地区电脑与电脑、设备与设备、电脑与设备之间的信息远程通信,提供更加便捷的网络连接。 2. 天联组网 天联是…

【环境搭建】(五)Ubuntu22.04安装cuda_11.8.0+cudnn_8.6.0

一个愿意伫立在巨人肩膀上的农民...... 设备配置: 一、安装GCC 安装cuda之前,首先应该安装GCC,安装cuda需要用到GCC,否则报错。可以先使用下方指令在终端查看是否已经安装GCC。 gcc --version 如果终端打印如下则说明已经安装…

K8S容器空间不足问题分析和解决

如上图,今天测试环境的K8S平台出现了一个问题,其中的一个容器报错:Free disk space below threshold. Available: 3223552 bytes (threshold: 10485760B),意思服务器硬盘空间不够了。这个问题怎么产生的,又怎么解决的呢…

性能优化原则

相关链接:【运行环境】加载资源的形式 性能优化 1 性能优化原则 多使用内存、缓存或其他方法 减少CPU计算量,减少网络加载耗时 (适用于所有编程的性能优化----空间换时间) 2 从何入手 性能优化-让加载更快 减少资源体积&#x…

neo4j-01

Neo4j是: 开源的(社区版开源免费)无模式(不用预设数据的格式,数据更加灵活)noSQL(非关系型数据库,数据更易拓展)图数据库(使用图这种数据结构作为数据存储方…

Edge扩展程序上架流程

代码基本同Chrome扩展,无需改动,具体可以参考文档说明 参考官方文档,注册开发者账号,遇到报错可以参考另一篇文章,Microsoft注册问题 注册完毕后,跳转到 developer dashboard,将左侧导航栏选项…

【案例分享】如何通过甘特图管理项目进度?

我将通过一个实际案例来具体说明我是如何通过甘特图来管理项目进度的。 案例背景: 我负责过一个软件开发项目:一款在线学习APP。项目团队包括项目经理、开发人员、测试人员、UI设计师等多个角色,预计项目周期为6个月。 案例实施过程&…

Redis中的集群(四)

集群 槽指派 CLUSTER ADDSLOTS命令的实现 CLUSTER ADDSLOTS命令接受一个或多个槽作为参数&#xff0c;并将所有输入的槽指派给接收该命令的节点负责: CLUSTER ADDSLOTS <slot> [slot ...]CLUSTER ADDSLOTS命令的实现可以用以下伪代码来表示: def CLUSTER_ADDSLOTS(*…

【MATLAB源码-第5期】基于matlab的BPSK的理论误码率和实际误码率对比仿真。

1、算法描述 BPSK (Binary Phase Shift Keying)-------二进制相移键控。是把模拟信号转换成数据值的转换方式之一&#xff0c;利用偏离相位的复数波浪组合来表现信息键控移相方式。BPSK使用了基准的正弦波和相位反转的波浪&#xff0c;使一方为0&#xff0c;另一方为1&#xf…

机器人路径规划:基于移动机器人路径规划的Q-learning算法,可以自定义地图,修改起始点,提供MATLAB代码

一、Q-learning算法 Q-learning算法是强化学习算法中的一种&#xff0c;该算法主要包含&#xff1a;Agent、状态、动作、环境、回报和惩罚。Q-learning算法通过机器人与环境不断地交换信息&#xff0c;来实现自我学习。Q-learning算法中的Q表是机器人与环境交互后的结果&#…

lvs+keepalived+nginx负载搭建

LVS&#xff1a;&#xff08;linux virtual server&#xff09;是一款网络模型四层的负载软件&#xff0c;即IP端口的转发模式&#xff0c; LVS:提供三种负载方式&#xff1a; VS/NAT:网络地址转化 VS/TUN:端 VS/DR:直接轮询模式 10种调度算法&#xff1a;常用的由一下几种&…

PHP7垃圾回收算法

前提 本文为了梳理PHP GC工作流程&#xff0c;所以从引用计数、部分标记清除算法做引子&#xff0c;然后介绍PHP GC工作流程,最后介绍性能更高的GC算法 引用计数 概述 引用计数算法中引入了一个概念计数器。计数器代表对象被引用的次数 基本原理 为了记录一个对象有没有被…

【Android】【root remount】【3】remount 文件详细信息获取

前言 我们在root & remount 设备后&#xff0c;push相关文件到systm 、vendor、product 等目录进行调试&#xff0c;那么我们push的文件被保存在什么地方呢&#xff1f; 以及我们FWS、app侧如何过去push 的文件信息呢&#xff1f; remount push 文件保存 push 文件保存的…

python 有哪些函数

Python内置的函数及其用法。为了方便记忆&#xff0c;已经有很多开发者将这些内置函数进行了如下分类&#xff1a; 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个) 变量操作(2个) 交互操作(2个) 文件操作(1个) 编译执行(4个) 装饰器(3个) …

硬件 - 施密特比较器

文章目录 1 . 概要2 . 施密特比较器电路3 . 施密特比较器计算4 . 小结 【全文大纲】 : https://blog.csdn.net/Engineer_LU/article/details/135149485 1 . 概要 1 . 比较器主要作用是比较输入的两个信号&#xff0c;而有时候两个信号的值都差不多大的时候一点抖动&#xff0c;…

PHP自助建站系统,小白也能自己搭建网站

无需懂代码&#xff0c;用 自助建站 做企业官网就像做PPT一样简单&#xff0c;您可以亲自操刀做想要的效果&#xff01; 自助建站是一款简单、快捷、高效的工具&#xff0c;可以帮助您制作响应式网站。我们的自助建站系统&#xff0c;将传统的编码工作转化为直观的拖拽操作和文…

【计算机毕业设计】校园网书店系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

Quanto: PyTorch 量化工具包

量化技术通过用低精度数据类型 (如 8 位整型 (int8)) 来表示深度学习模型的权重和激活&#xff0c;以减少传统深度学习模型使用 32 位浮点 (float32) 表示权重和激活所带来的计算和内存开销。 减少位宽意味着模型的内存占用更低&#xff0c;这对在消费设备上部署大语言模型至关…

基于JAVA的校园失物招领平台

采用技术 基于JAVA的校园失物招领平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringMVCMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 管理员功能 论坛管理 失物认领管理 寻物启事管理 用户管理 失物…

如何查询运行的服务器的整机功耗?

要在Linux服务器上安装Powerstat&#xff0c;您可以根据所使用的Linux发行版选择适当的命令。 对于Ubuntu/Debian系统&#xff0c;您可以使用以下命令安装Powerstat&#xff1a; sudo apt-get install powerstat 对于Redhat/CentOS系统&#xff0c;您应该使用以下命令&#x…