## Miscellaneous remarks * Use loss regularization if you train with `bfloat16` (more info below) * Beware of the dropout rate in the config.json file. Check in a model's `config.json` what the dropout rate has been set to. Unless you intend to run many epochs on the same data, its worth to try a training run without dropout. If you want to compare losses, be sure to set the dropout rate equal. The smaller models can probably always be trained without. * For the translation task, I am not sure that a 'deep-narrow' model (e.g. base-nl36) is better than a normal model or even a 'wide-deep' model. * Training with more layers is much slower than you'd expect from the increased model size. It is also more difficult to get batch size and learning rate right. Below is a section about finding the right hyperparameters for the base-36L training. * The 'larger' models are not only harder to pre-train, but also harder to fine-tune. The optimizer eats up a lot of space, and the amount of memory required also depends on the length of source and target sequences. * PyCharms remote debugging features are useful to inspect variables on either a TPU VM or your deep-learning rig. * When increasing the batch size, increase the learning rate. bs * 2 -> lr * sqrt(2) is a good heuristic but mileage may vary. * Translation evaluation: the low score of the 128 seq len models on opus books may be because of the brevity penaly... that books may have sentences longer than 128 tokens. * Dataset quality is a key success factor. Do not expect a model to magically turn mediocre data into magic. This holds for the pre-training data, fine-tuning and also evaluating. * Good Bleu score does not necessarily mean fluent text. Evaluation loss on a large translation dataset might be better suited for model comparison.