【mT5多语言翻译】之一——实战项目总览

2024-04-11 09:36

本文主要是介绍【mT5多语言翻译】之一——实战项目总览,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[1] 总览

  【mT5多语言翻译】系列共六篇文章:

  【mT5多语言翻译】之一——实战项目总览
  【mT5多语言翻译】之二——模型:T5模型与mT5模型与前置知识
  【mT5多语言翻译】之三——数据集:多语言翻译数据集与预处理
  【mT5多语言翻译】之四——加载:加载数据集与模型
  【mT5多语言翻译】之五——训练:中央日志、训练可视化、PEFT微调
  【mT5多语言翻译】之六——推理:多语言翻译与第三方接口设计


  出海业务场景下,多语言翻译成为必不可少的工具。然而,使用谷歌翻译接口不仅需要支付费用,还存在数据泄露的风险。因此我们训练一个自己的翻译模型是有必要的。

  mT5支持102种语言,有:

Afrikaans, Albanian, Amharic, Arabic, Armenian, Azerbaijani, Basque, Belarusian, Bengali, Bulgarian, Burmese, Catalan, Cebuano, Chichewa, Chinese, Corsican, Czech, Danish, Dutch, English, Esperanto, Estonian, Filipino, Finnish, French, Galician, Georgian, German, Greek, Gujarati, Haitian Creole, Hausa, Hawaiian, Hebrew, Hindi, Hmong, Hungarian, Icelandic, Igbo, Indonesian, Irish, Italian, Japanese, Javanese, Kannada, Kazakh, Khmer, Korean, Kurdish, Kyrgyz, Lao, Latin, Latvian, Lithuanian, Luxembourgish, Macedonian, Malagasy, Malay, Malayalam, Maltese, Maori, Marathi, Mongolian, Nepali, Norwegian, Pashto, Persian, Polish, Portuguese, Punjabi, Romanian, Russian, Samoan, Scottish Gaelic, Serbian, Shona, Sindhi, Sinhala, Slovak, Slovenian, Somali, Sotho, Spanish, Sundanese, Swahili, Swedish, Tajik, Tamil, Telugu, Thai, Turkish, Ukrainian, Urdu, Uzbek, Vietnamese, Welsh, West Frisian, Xhosa, Yiddish, Yoruba, Zulu.

  只要是上述102种语言之间的翻译任务,mT5都可以训练。本次项目实战演示了中文——韩文、中文——日文之间的多语言翻译,先来看看模型的效果:

  输入如下:

sentences = ["kor:我要去健身了","jpn:我要去健身了","kor:他说他会爱我一辈子","jpn:他说他会爱我一辈子",
]

  设置波束为10,每条输入文本返回3条输出文本。翻译输出如下:

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

[2] 代码获取地址

  如果需要本项目的源代码,请扫描关注我的公众号,回复“多语言翻译”。

在这里插入图片描述

  代码结构如图所示:本项目使用pytorch+transformers库实现。

在这里插入图片描述

[3] 项目及资源要求介绍

  本项目基于mT5模型的base版进行翻译训练。mT5的详细情况请参考:https://huggingface.co/google/mt5-base。

【注】官方只提供了mT5模型的无监督训练参数,并没有放出微调任务的参数,因此我们想直接开箱使用是不可以的,必须要自己微调一下才可以输出正常的文本。这一点和T5模型比较不同。

项目功能介绍

  一、项目集成了中央日志,可以完成同时将所有文件产生的日志信息同时输出到控制台并记录为日志文件。

  二、项目集成了全量参数训练方式和PEFT微调方式,只需要在配置文件中简单修改一个参数即可完成训练方式的切换。

  三、项目集成了tensorBoard训练日志,可以实时的绘制模型的loss、准确率等指标。

  四、项目提供了数据集预处理代码,并开放了在600万条日文数据和600万条韩文数据上全量参数训练和PEFT微调2轮后的模型参数。

  五、项目提供了模型翻译的demo写法,并封装成了api接口方便外部调用。

项目运行时所占资源说明

  mT5-base的模型大小为2.3GB。

  设置文本长度为10,batch为32时:全量参数微调大约需要占13GB显存;PEFT微调时大约只需要5GB显存。

【注】我的显卡是8GB显存的4060,现在电脑好像都有GPU专用内存(在内存里划nGB专门给显卡使用),我的GPU专用内存是8GB,所以算下来可以提供16GB显存,即使是全量参数微调电脑也是可以跑的,大家可以试一下。
————————————————————
PEFT需要的显存资源更少,训练起来比全量参数微调快非常多。但是最终效果肯定是会逊色一些。到底怎么训练还是要看大家自身的资源情况。

[4] 进行下一篇实战

  【mT5多语言翻译】之二——模型:T5模型与mT5模型与前置知识

其他实战项目

  您还可以浏览我的其他实战项目:

  1、单标签文本分类(bert英文)

  2、多标签文本分类(bert英文)

  3、五子棋开发实战

  4、古诗生成AI实战

这篇关于【mT5多语言翻译】之一——实战项目总览的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893709

相关文章

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

从原理到实战深入理解Java 断言assert

《从原理到实战深入理解Java断言assert》本文深入解析Java断言机制,涵盖语法、工作原理、启用方式及与异常的区别,推荐用于开发阶段的条件检查与状态验证,并强调生产环境应使用参数验证工具类替代... 目录深入理解 Java 断言(assert):从原理到实战引言:为什么需要断言?一、断言基础1.1 语

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁