【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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题

《Python爬虫HTTPS使用requests,httpx,aiohttp实战中的证书异步等问题》在爬虫工程里,“HTTPS”是绕不开的话题,HTTPS为传输加密提供保护,同时也给爬虫带来证书校验、... 目录一、核心问题与优先级检查(先问三件事)二、基础示例:requests 与证书处理三、高并发选型:

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块