机器翻译
一、示例简介
1. 应用场景
利用计算机将源语言转换为目标语言的过程,可应用于翻译等场景。
2. 实现功能
本示例是以中英互译为背景,基于MLU服务器的机器翻译解决方案,基本功能包括web浏览器前端输入源语言,然后使用MLU服务器进行推理,最后在前端展示翻译结果。
二、方案优势
1. 使用寒武纪智能处理卡,为端、云侧推理提供的强大运算能力支撑,并具备强大的推理功能。
2. 根据寒武纪硬件进行优化,通过多batch等方式,充分利用多个MLU core进行平行处理。
3. 基于MLU加速版本的TensorFlow框架,算力开销由为多batch性能优化过的MLU算子执行,具有很高的执行效率。
三、适配规格
1. 硬件平台
寒武纪MLU270系列智能处理卡
寒武纪 MLU270采用寒武纪MLUv02架构,可支持视觉、语音、自然语言处理以及传统机器学习等多样化的人工智能应用,更为视觉应用集成了充裕的视频和图像编解码硬件单元。
MLU270集成了寒武纪在处理器架构领域的一系列创新性技术,处理非稀疏深度学习模型的理论峰值性能提升至上一代思元100的4倍,达到128TOPS(INT8);同时兼容INT4和INT16运算,理论峰值分别达到256TOPS和64TOPS;支持浮点运算和混合精度运算。
最低配置 |
8张MLU270对应总共不少于16个CPU核心,配置时服务器需采用Balanced拓扑 |
不低于2倍加速卡缓存容量的系统内存,256GB |
建议配置 |
8张MLU270对应总共不少于32个CPU核心,配置时服务器需采用Balanced拓扑 |
不低于3倍加速卡缓存容量的系统内存,384GB |
4张MLU270对应总共不少于16个CPU核心,配置时服务器需采用Balanced拓扑 |
不低于3倍加速卡缓存容量的系统内存,192GB |
案例展示
服务器厂商 |
型号 |
高度 |
CPU平台 |
MLU板卡 |
插卡数 |
Inspur |
NF5468M5 |
4U |
2* Intel Xeon Scalable Processor |
MLU270-X5K |
8 |
NF2180M3 |
2U |
FT2000plus |
MLU270-A4K |
4 |
|
GreatWall |
DF720 |
2U |
FT2000plus |
MLU270-A4K |
2 |
2. 软件环境
依赖寒武纪驱动(Cambricon Driver),寒武纪软件(Cambricon Neuware)中的编解码库(CNCodec)、运行时库(CNRT)、CNDev、CNDrv、CNML、CNPlugin等。
四、功能介绍
机器翻译示例,可以通过运行docker环境中的机器翻译项目,然后根据提示在浏览器中打开提示的网站,体验机器翻译示例。
五、实现方案
1. 整体流程
2. 解释
1) 模型简介
中英互译使用的神经网络模型为Transformer模型。Transformer摒弃了传统的CNN和RNN结构,基于Attention机制和前馈神经网络搭建了Encoder-Decoder结构。
- 实现时间:2017
- 论文地址:https://arxiv.org/abs/1706.03762
- 开源实现:https://github.com/tensorflow/tensor2tensor
基于Transformer的神经网络可以通过堆叠多个Encoder-Decoder的形式进行搭建,如下图所示,左半部分为Encoder,右半部分为Decoder。Transformer-Base模型搭建了Encoder和Decoder各六层。
每一层Encoder由两个子层组成:Multi-head Self Attention层和全连接前馈网络层,每个子层输出都使用残差连接并加上Layer Normalization 。
Self Attention层建立了不同位置词向量之间的依赖关系。每一层Decoder中除了含有Encoder中的两个子层外,还增加了一个Encoder-Decoder Attention层,建立了源语言词向量与目标语言词向量之间的依赖关系。
由于Attention机制中没有包含位置信息,因此引入了Positional Encoding(位置编码)为输入词向量增加了位置信息。
2) 推理实现
实现基于MLU推理的接口,包括网络的前处理、后处理、Transformer网络模型在线运行等。
-
前处理主要包括对源语言文本进行分词、编码等操作,得到适配网络模型的输入。分词实现将一段长文本分解为若干个字词单位,编码是将字词单位映射为词表ID。
-
后处理主要对模型预测得到的词表ID序列进行解码,即将词表ID转换为目标语言文本。
3)前端页面
web服务框架使用Flask 框架搭建,整个流程包括响应用户前端页面操作,调用后端翻译计算,返回翻译结果给前端页面展示给用户。
前端页面主要用来与用户进行交互,提供以下功能:
- 翻译语言选择
- 输入文本与翻译结果显示
前端页面简图如下图所示
模型输入:encoded_txt(输入文本的词表ID序列)
模型输出:目标语言的词表ID序列
六、效果展示
七、相关资源
将在GitHub(https://github.com/Cambricon)上开源,感谢您的关注。