• [问题求助] 华为云 机器翻译服务,一次支持最多翻译多长(多少个字符 或 单词)
    华为云 机器翻译服务,一次支持最多翻译多长(多少个字符 或 单词)
  • [其他] 诗歌
    利用AI进行诗歌写作
  • [热门活动] 技术云诗句编写与查看............
    技术云诗句编写与查看............
  • [指令翻译工具] 安装exagear后,执行exagear报错:Segmentation fault
    硬件环境:华为泰山2280服务器,cpu是鲲鹏920,内存64G操作系统:centos7.8(4.18.0-193.28.1.el7.aarch64)因系统默认的PAGE_SIZE为64K所以下载了内核进行重新编译,内核源码地址:https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.18.tar.gz按照官网指导:https://www.hikunpeng.com/document/detail/zh/kunpengdevps/ug-exagear/usermanual/kunpengexagear_06_0019.html下载工具地址:https://mirrors.huaweicloud.com/kunpeng/archive/ExaGear/ExaGear_2.0.0.1.tar.gz进行安装后,无异常!但执行exagear 命令后提示如下Segmentation fault问题,请各位大神帮忙指点,多谢![root@HAWEI-TAISHAN02 centos-7-x86_64]# exagear /bin/exagear: line 111: 14286 Segmentation fault      ${EXAGEAR_WRAPPER} /bin/echo "Starting ${COMMAND} ${ARGS} in the guest image ${IMAGE_DIR}" Failed to start Exagear. Please check that file  exists and has executable permission /bin/exagear: line 113: 14305 Segmentation fault      /opt/exagear/bin/ubt-wrapper /bin/bash [root@HAWEI-TAISHAN02 centos-7-x86_64]# getconf PAGE_SIZE 4096
  • [AI大赛] 华为AI绘画比赛进行中
    生命有裂缝,阳光才能照进来
  • 已完成
    已完成啦,超棒的欸!
  • [其他] 落日的思念
    落日下,少女遥望远方
  • 皮卡丘AI绘图
    皮卡丘角色的艺术插图
  • [技术干货] Transformer-机器翻译
    Transformer机器翻译,是指使用计算机将一种自然语言转换为另一种自然语言的过程。这里,自然语言是指日常使用的人类语言(如中文、英语),区别于人工为特定目的创造的语言(如计算机编程语言)。 机器翻译是自然语言处理(NLP)的一个研究分支,是人工智能的终极目标之一,具有重要的科学研究价值。 2017年,谷歌在论文《Attention Is All You Need》中提出了Transformer模型。这种基于自注意力机制的模型能够很好地解决序列模型的问题,比如机器翻译。Transformer应用在机器翻译任务中,不仅提高了翻译的效果,由于其高度并行化的设计,还大幅提高了训练的效率。本案例是《Attention Is All You Need》论文复现的体验案例,数据集为WMT2014 英语-德语数据集 具体算法介绍:cid:link_0注意事项:1.本案例使用框架:PyTorch1.4.02.本案例使用硬件:GPU: 1*NVIDIA-V100NV32(32GB) | CPU: 8 核 64GB3.运行代码方法: 点击本页面顶部菜单栏的三角形运行按钮或按Ctrl+Enter键 运行每个方块中的代码4.JupyterLab的详细用法: 请参考《ModelAtrs JupyterLab使用指导》5.碰到问题的解决办法**:** 请参考《ModelAtrs JupyterLab常见问题解决办法》1.下载代码和数据import moxing as mox mox.file.copy_parallel('obs://obs-aigallery-zc/algorithm/Transformer_translate','./Transformer_translate')INFO:root:Using MoXing-v1.17.3-43fbf97f INFO:root:Using OBS-Python-SDK-3.20.72.模型训练2.1依赖库的加载与安装# -*- coding: utf-8 -*- from __future__ import print_function import os root_path = './Transformer_translate' os.chdir(root_path) os.system('pip install --upgrade numpy') os.system('pip install --ignore-installed PyYAML==5.4.1') os.system('pip install fairseq') os.system('pip install sacremoses') os.system('pip install nltk') os.system('pip install subword-nmt') os.system('pip install tqdm')02.2参数设置import tqdm import argparse parser = argparse.ArgumentParser(description='Training') parser.add_argument('--resume_net', default='no', type=str, help='resume net for retraining') parser.add_argument('--training_dataset', default='./data/data-bin', help='Training dataset directory') parser.add_argument('--save_folder', default='./outputs', help='Location to save checkpoint models') parser.add_argument('--max_tokens', default=4096, type=int) parser.add_argument('--optimizer', default='adam', type=str) parser.add_argument('--weight_decay', default=0.0, type=float) parser.add_argument('--lr', default=0.0007, type=float) parser.add_argument('--clip_norm', default=0, type=float) parser.add_argument('--load_weights', type=str, default='./model/model.pth', metavar='PATH') parser.add_argument('--eval', default='False', type=str, choices=['True', 'False']) parser.add_argument('--restore', default='True', type=str, choices=['True', 'False']) # For evaluation parser.add_argument('--eval_result_path', default='./outputs/eval') args, unknown = parser.parse_known_args() import shutil def get_files_tree(src="src_path"): req_files = [] for r, d, files in os.walk(src): for file in files: src_file = os.path.join(r, file) src_file = src_file.replace('\\', '/') if src_file.endswith('.db'): continue req_files.append(src_file) return req_files def copy_tree_force(src_path="",dest_path=""): """ make sure that all the paths has correct slash characters. """ for cf in get_files_tree(src=src_path): df= cf.replace(src_path, dest_path) if not os.path.exists(os.path.dirname(df)): os.makedirs(os.path.dirname(df)) shutil.copy2(cf, df) train_input_dir = args.training_dataset if not os.path.exists(train_input_dir): os.makedirs(train_input_dir) else: print(train_input_dir, 'already exists') if not os.path.exists(args.eval_result_path): os.makedirs(args.eval_result_path) model_path=args.load_weights # Train command=''' CUDA_VISIBLE_DEVICES=0 fairseq-train '''+ train_input_dir +''' \ --restore-file '''+ model_path +''' \ --save-dir '''+ args.save_folder +''' \ --optimizer '''+ args.optimizer +''' \ --adam-betas '(0.9, 0.98)' \ --clip-norm '''+ str(args.clip_norm) +''' \ --lr-scheduler inverse_sqrt \ --warmup-init-lr 1e-07 \ --warmup-updates 4000 \ --lr '''+ str(args.lr) +''' \ --min-lr 1e-09 \ --criterion label_smoothed_cross_entropy \ --label-smoothing 0.1 \ --weight-decay '''+ str(args.weight_decay) +''' \ --max-tokens '''+ str(args.max_tokens) +''' \ --save-interval-updates 50 \ --max-update 50 \ --keep-interval-updates 20 \ --decoder-attention-heads 16 \ --decoder-embed-dim 1024 \ --decoder-ffn-embed-dim 4096 \ --decoder-layerdrop 0 \ --decoder-layers 6 \ --decoder-output-dim 1024 \ --encoder-attention-heads 16 \ --encoder-embed-dim 1024 \ --encoder-ffn-embed-dim 4096 \ --encoder-layerdrop 0 \ --encoder-layers 6 \ --source-lang en \ --share-decoder-input-output-embed \ --target-lang de \ --optimizer adam \ --optimizer-overrides {} \ --reset-optimizer \ --save-interval 0 \ --keep-last-epochs 1 \ --max-epoch 31 \ --max-source-positions 1024 \ --max-target-positions 1024 \ --max-tokens 3584 \ --min-loss-scale 0.0001 \ --min-lr 1e-09 \ --stop-time-hours 0.1 \ --arch transformer_wmt_en_de '''./data/data-bin already exists2.3开始训练print(command) ret = os.system(command) copy_tree_force('./model', args.save_folder) print('training end')CUDA_VISIBLE_DEVICES=0 fairseq-train ./data/data-bin --restore-file ./model/model.pth --save-dir ./outputs --optimizer adam --adam-betas '(0.9, 0.98)' --clip-norm 0 --lr-scheduler inverse_sqrt --warmup-init-lr 1e-07 --warmup-updates 4000 --lr 0.0007 --min-lr 1e-09 --criterion label_smoothed_cross_entropy --label-smoothing 0.1 --weight-decay 0.0 --max-tokens 4096 --save-interval-updates 50 --max-update 50 --keep-interval-updates 20 --decoder-attention-heads 16 --decoder-embed-dim 1024 --decoder-ffn-embed-dim 4096 --decoder-layerdrop 0 --decoder-layers 6 --decoder-output-dim 1024 --encoder-attention-heads 16 --encoder-embed-dim 1024 --encoder-ffn-embed-dim 4096 --encoder-layerdrop 0 --encoder-layers 6 --source-lang en --share-decoder-input-output-embed --target-lang de --optimizer adam --optimizer-overrides {} --reset-optimizer --save-interval 0 --keep-last-epochs 1 --max-epoch 31 --max-source-positions 1024 --max-target-positions 1024 --max-tokens 3584 --min-loss-scale 0.0001 --min-lr 1e-09 --stop-time-hours 0.1 --arch transformer_wmt_en_de 0 [] training end3.模型测试# -*- coding: utf-8 -*- from tqdm import tqdm from fairseq.models.transformer import TransformerModel from nltk.translate.bleu_score import sentence_bleu import os import torch import numpy as np from PIL import Image from io import BytesIO from collections import OrderedDict import torch.backends.cudnn as cudnn cudnn.benchmark = True class ModelClass(): def __init__(self, model_path): self.model_path = model_path # 本行代码必须保留,且无需修改 self.device = torch.device("cpu") print(self.model_path) path=os.getcwd() self.model= TransformerModel.from_pretrained( model_name_or_path= './', checkpoint_file='outputs/model.pth', data_name_or_path='outputs/newstest2014', bpe='subword_nmt', bpe_codes='outputs/bpecodes' ) self.model.eval() self.model = self.model.to(self.device) print('load model success') def translate(self, data): pre_text = self.model.translate(data) return pre_text 需要翻译的自然语言需要是英语,输出为德语,可自行修改成想要翻译的话text_input = "I am lucky." Translator = ModelClass('./outputs/model.pth') result = Translator.translate(text_input) print(result)INFO:fairseq.file_utils:loading archive file ./ INFO:fairseq.file_utils:loading archive file outputs/newstest2014 ./outputs/model.pth INFO:fairseq.tasks.translation:[en] dictionary: 32768 types INFO:fairseq.tasks.translation:[de] dictionary: 32768 types INFO:fairseq.models.fairseq_model:Namespace(activation_dropout=0.0, activation_fn='relu', adam_betas='(0.9, 0.98)', adam_eps=1e-08, adaptive_input=False, adaptive_softmax_cutoff=None, adaptive_softmax_dropout=0, arch='transformer_wmt_en_de_big', attention_dropout=0.1, batch_size=None, bpe='subword_nmt', bpe_codes='outputs/bpecodes', bpe_separator='@@', clip_norm=0.0, criterion='label_smoothed_cross_entropy', cross_self_attention=False, data='outputs/newstest2014', decoder_attention_heads=16, decoder_embed_dim=1024, decoder_embed_path=None, decoder_ffn_embed_dim=4096, decoder_input_dim=1024, decoder_layerdrop=0, decoder_layers=6, decoder_layers_to_keep=None, decoder_learned_pos=False, decoder_normalize_before=False, decoder_output_dim=1024, device_id=0, distributed_backend='nccl', distributed_init_method='tcp://learnfair0487:59946', distributed_port=59946, distributed_rank=0, distributed_world_size=128, dropout=0.3, encoder_attention_heads=16, encoder_embed_dim=1024, encoder_embed_path=None, encoder_ffn_embed_dim=4096, encoder_layerdrop=0, encoder_layers=6, encoder_layers_to_keep=None, encoder_learned_pos=False, encoder_normalize_before=False, eval_bleu_detok='space', eval_bleu_remove_bpe=None, eval_tokenized_bleu=False, fp16=True, ignore_prefix_size=0, label_smoothing=0.1, layernorm_embedding=False, left_pad_source=True, left_pad_target=False, log_format='json', log_interval=10, lr=[0.001], lr_scheduler='inverse_sqrt', lr_shrink=0.1, max_epoch=0, max_sentences=None, max_sentences_valid=None, max_source_positions=1024, max_target_positions=1024, max_tokens=3584, max_update=300000, min_lr=1e-09, momentum=0.99, no_cross_attention=False, no_epoch_checkpoints=False, no_progress_bar=False, no_save=False, no_scale_embedding=False, no_token_positional_embeddings=False, num_batch_buckets=0, optimizer='adam', quant_noise_pq=0, quant_noise_pq_block_size=8, quant_noise_scalar=0, relu_dropout=0.0, restore_file='checkpoint_last.pt', sample_without_replacement=256000, save_dir='/checkpoint02/myleott/2018-05-18/paracrawl_en_de.fp16.maxupd300000.upsamplewmt31.samp_wo_repl256000.transformer_wmt_en_de_big.shareemb.adam.beta0.9,0.98.initlr1e-07.warmup4000.lr0.001.clip0.0.drop0.3.wd0.0.ls0.1.maxtok3584.seed2.ngpu128', save_interval=1, secondary_train_data='/private/home/myleott/data/paracrawl/en-de/paracrawl-release1.en-de.no_url.shuf_uniq_norm.scored.filtered.preprocessed', seed=2, sentence_avg=False, share_all_embeddings=True, share_decoder_input_output_embed=True, skip_invalid_size_inputs_valid_test=False, source_lang='en', target_lang='de', task='translation', tie_adaptive_weights=False, train_subset='train', truncate_source=False, update_freq=[1.0], upsample_primary=31, use_old_adam=False, valid_subset='valid', validate_interval=1, warmup_init_lr=1e-07, warmup_updates=4000, weight_decay=0.0) load model success Ich bin Glück .
  • [技术干货] 自然语言处理有没有术语定制或者术语库的功能?
    机器翻译有没有术语定制或者术语库的功能?在api文档和控制台都没找到。
  • [其他] 时空数据挖掘:综述
    时空数据挖掘的目的是在大的空间和时空数据中发现有趣的、有用的但非平凡的模式。应用于公共安全、生态学、流行病学、地球科学等领域。这个问题是具有挑战性的,因为虚假模式的高社会成本和过高的计算成本。近年来的时空数据挖掘研究因其快速增长而需要更新。此外,他们没有充分研究时空数据挖掘的并行技术。本文介绍了时空数据挖掘方法的最新进展。其次,对时空数据挖掘的并行计算方法进行了详细的综述;时空数据挖掘是在大规模的时空数据中发现新的、非平凡的但潜在有用的模式的过程。时空(ST)数据包括地理参考的气候变量、流行病爆发、犯罪事件、社交媒体、交通、交通动态等。由于其跨学科性质,分析和挖掘这些数据对于推进许多科学问题和现实世界应用的最先进技术是非常重要的。因此ST数据在公共安全、生态学、流行病学等多个领域的应用尤为突出。图1展示了时空数据挖掘的整体过程。输入数据经过预处理去除噪声、误差等后进行时空分析,了解其时空分布。采用合适的时空数据挖掘算法产生输出模式,然后由领域专家进行研究和验证,发现新的见解,并相应地改进数据挖掘算法。图2显示了时空(ST)模式的一个示例。该图描述了一个城市犯罪数据集输出的级联时空模式[45],涉及几种事件类型(酒吧倒闭、醉驾、袭击)。图2(a) -2 (c)显示了每个事件类型的实例及其时间和位置,图2(e)显示了相同的事件实例。检测到的ST模式提出了一个有趣的假设,即酒吧在关闭时是附近地区醉酒驾驶和攻击犯罪的潜在发生期。这些信息可以帮助执法机构、公共安全组织和决策者确定适当的减轻犯罪行动。通过算法挖掘时空数据带来了独特的计算挑战。例如,由于数据量大,由于数据的多样性,用户可能会经历不可接受的运行时间或花费大量的精力进行预处理。除了数量和种类,相对于吸收容量的高数据速度是另一个计算挑战,用户经常体验到数据丢失。例如,数百万条推文的实时处理涉及到对某些信息的实时预处理和挖掘。COVID 19安全数据[1]通过全国各地的附近信息(如poi、企业类别)每分钟记录人类流动情况。这涉及到信息的实时更新,例如对不同POI的访问数量,导致大量的数据量(tb),这是不可能在本地机器上存储和处理的。此外,US Census[2]包括保存在不同表和模式中的数百万条记录,跨越TB级的数据空间.查询这样的数据可能非常耗时,而且在科学或地理计算平台上,进一步应用算法在大规模计算时的性能通常很差。这样的计算需要一个可扩展和可靠的软件生态系统来解决广泛的研究问题,并有效地帮助社会的决策者。因此,重要的是要让广大的科学家和用户了解高性能、可扩展和开源的软件工具,这些工具可以通过并行计算促进时空数据分析,从而显著推进领域研究。然而,这些工作在最近的空间和时空数据挖掘研究中却很少受到重视。在这里,我们提供了一个全面的时空数据挖掘技术,并简要描述了它们的统计基础和主要输出模式家族(例如,异常值,预测,热点等)。我们还提供了在顺序处理和并行处理环境中被广泛研究的最近方法的最新文献。与Shekhar等人[62]类似,本次调研首先回顾了以往的综述,然后陈述了我们对本次综述的贡献(第2节)。第3节提供了与空间和时空数据相关的关键术语,描述了它们的统计基础,并简要陈述了时空数据挖掘中并行处理的社会重要性。第4节描述了六个主要的输出模式家族(即时空异常值、遥耦、预测、划分和总结、热点和变化检测)以及它们各自在顺序和并行框架下的检测方法。第5节将讨论一些当前的研究工具,包括最先进的并行工具、框架和库,它们正在许多应用程序中使用。第六部分总结了本章的研究现状和未来的研究方向。
  • [基础知识] 【MindSpore易点通】Transformer的编码和解码
    简介在上一篇【MindSpore易点通】Transformer的注意力机制帖子中,跟大家分享了注意力机制的结构和原理。基于上篇内容,本次再和大家一起解锁下Transformer中的Encoder和Decoder以及Softmax部分。Encoder结构图中红框内就是Transformer的Encoder block结构,从下到上是由Multi-Head Attention-->Add & Norm-->Feed Forward-->Add & Norm组成的。因为Multi-Head Attention部分比较复杂,所以单独有分享:【MindSpore易点通】Transformer的注意力机制,了解了Multi-Head Attention的结构和计算过程,现在重点解析下Add & Norm和Feed Forward部分。Add & Norm:Add & Norm层由有两个输入的路径,一个是经过了Multi-Head Attention处理,一个是直接输入。并且Add和Norm两部分组成,其结构和计算公式如下:Add的计算:X+MultiHeadAttention(X)。这是一种残差结构,对于网络层数较多的常用此结构,可以让网络只关注当前差异的部分,我们所熟悉的ResNet网络中就包含这种结构:Norm指Layer Normalization,通常用于RNN结构,Layer Normalization会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。Feed Forward层比较简单,是一个两层的全连接层,第一层的激活函数为Relu,第二层不使用激活函数,对应的公式如下通过以上几层计算就可以构造出一个Encoder block,Encoder block接收输入矩阵X(n*d),并输出一个矩阵O(n*d)。通过多个 Encoder block 叠加就可以组成 Encoder。第一个 Encoder block 的输入为句子单词的表示向量矩阵,后续 Encoder block 的输入是前一个Encoder block的输出,最后一个Encoder block输出的矩阵就是编码信息矩阵C,这一矩阵后续会用到Decoder中。Decoder结构图中蓝框部分为Transformer的Decoder block结构,包含两个Multi-Head Attention层。第一个Multi-Head Attention层采用了Masked操作。第二个Multi-Head Attention层的K, V矩阵使用 Encoder 的编码信息矩阵C进行计算,而Q使用上一个 Decoder block 的输出计算。最后有一个 Softmax 层计算下一个翻译单词的概率。第一层Multi-Head Attention:Decoder block的第一个Multi-Head Attention采用了Masked操作,因为在翻译的过程中是顺序翻译的,即翻译完第i个单词,才可以翻译第i+1个单词。通过Masked操作可以防止第i个单词知道i+1个单词之后的信息。Masked计算:是Decoder的输入矩阵和Mask矩阵,输入矩阵包含词的表示向量,Mask是一个n×n的矩阵。下图就是计算过程首先得到输入X矩阵,通过输入矩阵X计算得到Q,K,V矩阵,计算得出Q矩阵与K转置矩阵的乘积。在得到乘积之后需要进行Softmax,计算注意力分数,因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可以翻译第 i+1 个单词。通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。所以在Softmax之前需要使用Mask矩阵遮挡住每一个单词之后的信息。然后与矩阵V相乘,得出输出Z,这样第m个单词的输出向量Zm只包含单词m的信息。根据上述的计算过程得到一个Mask Self-Attention的输出矩阵,然后通过Multi-Head Attention拼接多个输出,得到第一个Multi-Head Attention的输出Z,Z与输入X维度一样。第二层Multi-Head Attention与第一层的区别在于其中Self-Attention的K, V矩阵不是使用上一个Decoder block的输出计算的,而是使用Encoder的编码信息矩阵计算的。这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息。Softmax预测在图中的绿色框中是最终的预测输出,按照矩阵行的顺序进行预测,预测完成,输出最终的翻译结果。总结本篇分享中将Transformer分成了Encoder、Decoder和Softmax三个部分进行了分析。Transformer注意力机制和残差结构的设计,在NLP领域中是将任意两个单词的距离是1,对解决NLP中棘手的长期依赖问题是非常有效,从而也有效提高模型性能。
  • [API集成编排] 个人中心已配置用户时区,翻译器UTC2LOCAL未生效
    RT,后台数据库存储的时间未 01-25 08:47前台展示也是:服务已添加翻译器:用户时区已配置:
  • [技术干货] 智慧园区业务资产说明之——多语言字段翻译(translate)
    多语言字段翻译函数。注意事项无。基本信息接口名称translate接口路径/service/Common/0.1.0/Common/translate接口协议HTTPS接口方法POST请求参数请求参数如表1所示。表1 请求参数说明参数名称类型必选(M)/可选(O)参数位置参数含义access-tokenStringMCookie | Header授权TOKEN。localeStringOHeader当前界面语言。如zh_CN。objectNameStringMBody对象名称。referenceStringMBody翻译源语言类型。referenceValueStringMBody待翻译源参数值。targetStringMBody翻译目标语言类型。请求样例 { "objectName": "SmartCampus__paramConfig__CST", "reference": "SmartCampus__paramNameCn__CST", "referenceValue": "最高供水温度", "target": "en_US" }响应参数响应参数如表2所示。表2 响应参数说明参数名称类型必选(M)/可选(O)位置参数含义resCodeStringMBody接口的返回码。resMsgStringOBody接口的返回消息。resultOutputs[]OBody接口的响应参数。表3 Outputs参数说明参数名称类型必选(M)/可选(O)位置参数含义valueStringMBody翻译目标值。响应样例{ "resCode": "0", "resMsg": "成功", "result": [ { "value": "" } ] }
  • [技术干货] AI文本翻译系统质量提升44%,利用超500亿参数翻译200种语言
    Meta Platforms今天开放了NLLB-200的系统代码,NLLB-200是Meta内部开发的一个人工智能系统,可以翻译200种语言的文本。Meta Platforms今天开放了NLLB-200的系统代码,NLLB-200是Meta内部开发的一个人工智能系统,可以翻译200种语言的文本。Meta还公布了一套工具,旨在帮助研究人员更轻松地将NLLB-200应用于软件项目。根据Meta的说法,NLLB-200可以理解的200种语言中,许多语言都没有得到其他AI翻译系统的良好支持。目前被广泛使用的翻译工具支持的非洲语言不到25种,而NLLB-200 支持多达55种非洲语言。Meta表示,翻译准确性是NLLB-200优于其他工具的另一个方面。Meta采用的是BLEU评估系统的准确性标准,BLEU是一种用于衡量机器翻译文本质量的算法。Meta称,NLLB-200的BLEU评分比之前平均高出44%。Meta首席执行官Mark Zuckerberg表示:“我们刚刚开源了一个自主开发的AI模型,该模型可以翻译200种不同的语言——其中许多语言未得到当前翻译系统的支持。我们把这个项目称之为No Language Left Behind,我们使用的人工智能建模技术正在为全球数十亿人所使用的语言进行高质量的翻译。”NLLB-200有超过500亿个参数,这些配置决定了AI系统处理数据的方式。人工智能系统参数越多,准确性就越高。NLLB-200具有如此大量的参数,并不是它能够以高精度支持200种语言的唯一因素,因为NLLB-200系统还借鉴了Meta工程师开发的很多其他AI创新。Meta使用内部开发的LASER工具包为机器学习相关研究提供支持。研究人员使用该工具包可以对神经网络进行训练,以一种语言执行某个特定的任务,然后相对轻松地使神经网络适应其他语言,这对于翻译这一用途来说是很有用处的。Meta开发了新的NLLB-200系统,支持改进版LASER——LASER3。LASER的原始版本包括一个名为LSTM的神经网络,这是一个将文本转换为AI系统可以理解的、以数学方式表示的专用组件。这种数学表示有助于生成更准确的翻译结果。在LASER3中,Meta用Transformer代替了LSTM神经网络,前者是一种高级自然语言处理模型,可以更有效地执行相同的任务。Meta还使用了其他几种方法来改进NLLB-200的功能,例如Meta升级了用于收集训练数据的系统,并对AI训练工作流程进行了更改。Meta使用内部开发的Research SuperCluster超级计算机(如图)来训练NLLB-200。今年1月Meta首次介绍Research SuperCluster的时候称,该系统配备了6080个Nvidia最新的A100数据中心GPU,最终将升级到配置16000个GPU。Meta计划使用NLLB-200在Facebook、Instagram和其他平台上提供更好的自动翻译功能,预计该系统每天将支持超过250亿次翻译。Meta在内部努力推广NLLB-200的同时,还计划帮助其他企业组织将该系统应用到他们自己的软件项目中。除了NLLB-200之外,Meta还开源了可用于训练AI的代码,以及一个名为FLORES-200的数据集,用于评估翻译的准确性。Meta将提供高达200000美元的资金,以帮助非营利组织采用NLLB-200。除此之外,Meta还将与Wikimedia Foundation展开合作,将自动翻译技术应用于维基百科文章。责任编辑:未丽燕    来源: 至顶网