Papers › Google's Neural Machine Translation System: Bridging the Gap between Human and Machine...

Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation

26 Sep 2016arXiv:1609.08144archive 2025-07-28

Yonghui Wu, Mike Schuster, Zhifeng Chen, Quoc V. Le, Mohammad Norouzi, Wolfgang Macherey, Maxim Krikun, Yuan Cao, Qin Gao, Klaus Macherey, Jeff Klingner, Apurva Shah, Melvin Johnson, Xiaobing Liu, Łukasz Kaiser, Stephan Gouws, Yoshikiyo Kato, Taku Kudo, Hideto Kazawa, Keith Stevens, George Kurian, Nishant Patil, Wei Wang, Cliff Young, Jason Smith, Jason Riesa, Alex Rudnick, Oriol Vinyals, Greg Corrado, Macduff Hughes, Jeffrey Dean

Neural Machine Translation (NMT) is an end-to-end learning approach for automated translation, with the potential to overcome many of the weaknesses of conventional phrase-based translation systems. Unfortunately, NMT systems are known to be computationally expensive both in training and in translation inference. Also, most NMT systems have difficulty with rare words. These issues have hindered NMT's use in practical deployments and services, where both accuracy and speed are essential. In this work, we present GNMT, Google's Neural Machine Translation system, which attempts to address many of these issues. Our model consists of a deep LSTM network with 8 encoder and 8 decoder layers using attention and residual connections. To improve parallelism and therefore decrease training time, our attention mechanism connects the bottom layer of the decoder to the top layer of the encoder. To accelerate the final translation speed, we employ low-precision arithmetic during inference computations. To improve handling of rare words, we divide words into a limited set of common sub-word units ("wordpieces") for both input and output. This method provides a good balance between the flexibility of "character"-delimited models and the efficiency of "word"-delimited models, naturally handles translation of rare words, and ultimately improves the overall accuracy of the system. Our beam search technique employs a length-normalization procedure and uses a coverage penalty, which encourages generation of an output sentence that is most likely to cover all the words in the source sentence. On the WMT'14 English-to-French and English-to-German benchmarks, GNMT achieves competitive results to state-of-the-art. Using a human side-by-side evaluation on a set of isolated simple sentences, it reduces translation errors by an average of 60% compared to Google's phrase-based production system.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="1609.08144")

Code

Syntology Ran 23 of 46 code samples harvested from 7 repositories linked to this paper; 23 have no recorded run. Of those that ran: 1 ran · honoured contract; 2 ran · violated contract; 8 ran · our draft was wrong; 12 ran with no contract checked.

By repository: community (archive-listed): 46 samples from 7 repositories, 23 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

28 repositories listed; official and paper-mentioned ones first.

Automattic/wp-translate mentioned on GitHubtf report
Liut2016/stackedResBiLSTM mentioned on GitHubtf report
Nirvanabc/seq2seq-rnn mentioned on GitHubtf report
SunbowLiu/CopyingPenalty mentioned on GitHubpytorch report
ThAIKeras/bert mentioned on GitHubtf report
ZHANG45/multi_gpu_seq2seq mentioned on GitHubpytorch report
davidsvaughn/dts-tf mentioned on GitHubtf report
facebookresearch/vizseq mentioned on GitHub report
google/sentencepiece mentioned on GitHubtfApache-2.0 report
kh-kim/simple-nmt mentioned on GitHubpytorch report
macco3k/deepstories mentioned on GitHub report
microsoft/BlingFire mentioned on GitHubtfMIT report
psunlpgroup/xsemplr mentioned on GitHubpytorch report
sfu-natlang/SFUTranslate mentioned on GitHubpytorchGPL-3.0 report
vchopin/GNMT_v2 mentioned on GitHubmindsporeApache-2.0 report
cui0523/Code6 mindspore report
dmlc/gluon-nlp mxnetApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

46 samples harvested; 23 ran; 1 honoured the contract we drafted; 23 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · honoured contract
2ran · violated contract
8ran · our draft was wrong
12ran
23unverified

Licence: 12 of the 46 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 7 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

Attention kh-kim/simple-nmt/simple_nmt/models/seq2seq.py community (archive-listed) ran · metamorphic tier: invariant no licence file found · pointer only · efc311adeb93a786 · report
AverageSpanExtractor psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran fingerprinted MIT (permissive) · 95b1f6bdad5fb67b · report
BeamSearchNode psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran fingerprinted MIT (permissive) · 229cf6fba4062cd9 · report
Decoder ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 1657da8312de365d · report
Encoder ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 50db89833b87dbe3 · report
Encoder kh-kim/simple-nmt/simple_nmt/models/seq2seq.py community (archive-listed) ran no licence file found · pointer only · 2662a03f14c86a67 · report
Generator ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 0094511a1c6f0800 · report
Generator psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · metamorphic tier: invariant MIT (permissive) · 78edbd2119371df3 · report
Generator kh-kim/simple-nmt/simple_nmt/models/seq2seq.py community (archive-listed) ran no licence file found · pointer only · f7231b6041ba6ab3 · report
LabelSmoothing psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · metamorphic tier: invariant MIT (permissive) · 73e4f0852349e7bc · report
Seq2Seq ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) ran · metamorphic tier: deterministic no licence file found · pointer only · 92bf320d3ebcecdb · report
SimpleLossCompute psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · metamorphic tier: invariant MIT (permissive) · 1475ad8d2eb28cde · report
_inverse_indices ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) ran · violated contract no licence file found · pointer only · b9cb323bd3d025b6 · report
attention psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 51522955ae4c222d · report
batched_index_select psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · our draft was wrong MIT (permissive) · a2dd9c360300df18 · report
convert_to_unicode microsoft/BlingFire/ldbsrc/bert_base_tok/tokenization.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · 1923fc05163d207d · report
define_model virsagothethird/Korean-English-translator/src/helpme_spa.py community (archive-listed) ran · our draft was wrong no licence file found · pointer only · cb8ba397b1c9bfd6 · report
flatten_and_batch_shift_indices psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · aacb87756629bdb1 · report
get_range_vector psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · honoured contract MIT (permissive) · 68cef9d2b09ab819 · report
masked_softmax psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · 42fb56ded96dd10a · report
relu_fc Liut2016/stackedResBiLSTM/lstm_architecture.py community (archive-listed) ran · our draft was wrong Apache-2.0 (permissive) · c8d5e6a10689e5b6 · report
subsequent_mask psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · violated contract fingerprinted MIT (permissive) · 2d9b2960c6f86b29 · report
weighted_sum psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) ran · our draft was wrong fingerprinted MIT (permissive) · d3a5188111b2f502 · report
Attention ZHANG45/multi_gpu_seq2seq/seq2seq2.py community (archive-listed) unverified no licence file found · pointer only · e60bd6d0b1cb5dc5 · report
Decoder kh-kim/simple-nmt/simple_nmt/models/seq2seq.py community (archive-listed) unverified no licence file found · pointer only · 5a04587ca39fc628 · report
PtrBART psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) unverified MIT (permissive) · b896419ba0888f61 · report
Seq2Seq kh-kim/simple-nmt/simple_nmt/models/seq2seq.py community (archive-listed) unverified no licence file found · pointer only · 14b02b13476db551 · report
batch_norm Liut2016/stackedResBiLSTM/lstm_architecture.py community (archive-listed) unverified Apache-2.0 (permissive) · a30358b17cf7f25f · report
beam_decode_spider psunlpgroup/xsemplr/model/seq2seqPTR/src/ptrbert.py community (archive-listed) unverified MIT (permissive) · 9adcd571f14c4937 · report
bi_LSTM_cell Liut2016/stackedResBiLSTM/lstm_architecture.py community (archive-listed) unverified Apache-2.0 (permissive) · 3847ef05ef574aca · report
is_bert_chinese microsoft/BlingFire/ldbsrc/bert_multi_cased/generate_letters_from_vocab.py community (archive-listed) unverified MIT (permissive) · 74356079aa5fa20e · report
is_letter microsoft/BlingFire/ldbsrc/bert_multi_cased/generate_letters_from_vocab.py community (archive-listed) unverified MIT (permissive) · a02d7706aacf6eee · report
load_vocab microsoft/BlingFire/ldbsrc/bert_base_tok/tokenization.py community (archive-listed) unverified MIT (permissive) · ff83ccc8b0b6462d · report
my_hex microsoft/BlingFire/ldbsrc/bert_multi_cased/generate_letters_from_vocab.py community (archive-listed) unverified MIT (permissive) · 0297d56cefe7364c · report
norm_shape guillaume-chevalier/HAR-stacked-residual-bidir-LSTMs/sliding_window.py community (archive-listed) unverified Apache-2.0 (permissive) · 2b8a63bd4c5ab5e4 · report
parse_range microsoft/BlingFire/ldbsrc/bert_base_tok/range_minus.py community (archive-listed) unverified MIT (permissive) · 6e673eab8521b6e5 · report
parse_range microsoft/BlingFire/ldbsrc/bert_multi_cased/regexrangeparse.py community (archive-listed) unverified MIT (permissive) · 0ab68692161c1470 · report
printable_text microsoft/BlingFire/ldbsrc/bert_base_tok/tokenization.py community (archive-listed) unverified MIT (permissive) · 0e5615f8994003cf · report
residual_bidirectional_LSTM_layers Liut2016/stackedResBiLSTM/lstm_architecture.py community (archive-listed) unverified Apache-2.0 (permissive) · c39c0d4e280c8846 · report
serialize_range microsoft/BlingFire/ldbsrc/bert_base_tok/range_minus.py community (archive-listed) unverified MIT (permissive) · 4ef5a73a2f158b4e · report
serialize_range microsoft/BlingFire/ldbsrc/bert_multi_cased/regexrangeparse.py community (archive-listed) unverified MIT (permissive) · 1355f61e60faddd2 · report
single_LSTM_cell Liut2016/stackedResBiLSTM/lstm_architecture.py community (archive-listed) unverified Apache-2.0 (permissive) · 317abb01a23f7133 · report
sliding_window guillaume-chevalier/HAR-stacked-residual-bidir-LSTMs/sliding_window.py community (archive-listed) unverified Apache-2.0 (permissive) · ffb489e2974384e9 · report
subtract_range microsoft/BlingFire/ldbsrc/bert_base_tok/range_minus.py community (archive-listed) unverified MIT (permissive) · 4293ac7fb9af9f5a · report
subtract_range microsoft/BlingFire/ldbsrc/bert_multi_cased/regexrangeparse.py community (archive-listed) unverified MIT (permissive) · c1e5731a39dcacd5 · report
token2regexp microsoft/BlingFire/ldbsrc/bert_base_cased_tok/vocab_to_fa_lex.py community (archive-listed) unverified MIT (permissive) · ff133510dfb28e8a · report

Tasks

DecoderMachine TranslationNMTSentenceTranslation

Results from the paper archive 2025-07-28

TaskDatasetModelMetricValueRank at snapshotLeaderboardReport
Machine Translation WMT2014 English-French GNMT+RL BLEU score 39.9 #36 of 57 Archive leaderboard report
Machine Translation WMT2014 English-French GNMT+RL Hardware Burden 279G #36 of 57 Archive leaderboard report
Machine Translation WMT2014 English-German GNMT+RL BLEU score 26.3 #61 of 91 Archive leaderboard report

Ranks are positions in the archive's leaderboards as they stood at the 2025-07-28 snapshot. Results published since then are not among these rows, so a rank here is not a current standing.

Methods

LSTMSPEEDSigmoid ActivationTanh ActivationWordPiece

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections