Paper · 2022-11-09 · cs.CL
BLOOM: A 176B-Parameter Open-Access Multilingual Language Model
BLOOM is a 176B-parameter open-access decoder-only multilingual LLM trained on the ROOTS corpus (46 natural and 13 programming languages). It uses ALiBi positions and an embedding LayerNorm, and was trained in bfloat16 on 384 A100 GPUs. Author-reported: competitive benchmark results, stronger after multitask finetuning (BLOOMZ).
Language model pretrainingIn-context learningDataset curationPositional encodinglanguage-modelmultilingualdecoder-onlypretrainingopen-weights
arXivPDFCodeMarkdown10 min read
AI-compiled by claude-haiku-5-5 on 2026-10-18, not yet reviewed by a human. Every claim cites its source; check it when a detail matters.
In plain words
BLOOM is a very large text-prediction model, the kind that writes or answers questions when you give it a few example sentences or an instruction. Most models this large are built inside companies and kept closed. This paper describes a project in which hundreds of researchers built one and released it openly. It was trained on a deliberately multilingual collection of text covering dozens of human languages and some programming languages.
The model works like most modern chatbots' base models: it reads text from left to right and predicts the next word. The team made a few small, deliberate changes to the standard design, mainly in how the model keeps track of word order, and used a number format that is more forgiving of very large numbers. The paper reports that the model does well on many tasks, and that a second version trained further on instructions does better still.
TL;DR
BLOOM is a 176B-parameter causal decoder-only Transformer trained on ROOTS, a multilingual corpus with 46 natural and 13 programming languages §1 §3.1. It uses ALiBi positional biases and an extra LayerNorm after the embeddings §3.2. Training ran in bfloat16 mixed precision on 384 A100 80GB GPUs for about 3.5 months §3.4. The paper reports competitive zero- and few-shot results across benchmarks, and better results after multitask finetuning (BLOOMZ) §4. All numbers below are author-reported.
Problem
Large language models were mostly built by a few well-resourced organisations and not released §1. The authors aim for an openly available model at this scale that is also multilingual, since the existing large models were concentrated on English and a few other languages §1 §3.1. The design goal is zero-shot and few-shot prompt performance, because finetuning a model of this size is described as unwieldy §4.1.
Method
BLOOM is a standard causal decoder-only Transformer §3.2 with four departures from the original design, argued from the authors' own ablations §3.2:
- Causal (left-to-right) language modelling objective, chosen over encoder-decoder and prefix objectives §3.2, "Architecture and Pretraining Objective".
- ALiBi attention biases instead of learned or rotary position embeddings §3.2, "ALiBi Positional Embeddings". The bias is added to the attention scores and grows with key-query distance; the per-head slopes are given in the architecture figure caption as 2^(-8i/n) for head index i in 1..n, where n is the number of heads fig. caption in §3.2.
- An extra LayerNorm directly after the token embedding table, which the authors kept to avoid training instability although it hurt zero-shot results in their ablation §3.2, "Embedding LayerNorm".
- Tied input and output embeddings §3.5 table: "Tied emb. True".
The tokenizer is a multilingual subword tokenizer with a vocabulary of 250,680 entries §3.5 table; the paper's tokenizer section describes how it was trained with the Hugging Face Tokenizers library §3.3. The authors check it with fertility (subwords per word) against monolingual tokenizers on Universal Dependencies and OSCAR, with the target of not degrading any language by more than 10 percentage points §3.3.
The forward pass in outline. Only the ALiBi bias, the embedding LayerNorm and the tied output are stated in the paper; the internal order of each block is not given in prose, so it is left out here.
# BLOOM forward pass [§3.2] [§3.5 table]
# Input: token_ids (B, T) with T <= 2048
# Output: next-token logits (B, T, 250680)
def bloom_forward(token_ids):
# Look up token embeddings; vocabulary 250,680 [§3.3] [§3.5 table]
hidden = embedding[token_ids] # (B, T, 14336)
# Extra LayerNorm after the embedding table [§3.2 "Embedding LayerNorm"]
hidden = embedding_layer_norm(hidden) # (B, T, 14336)
# ALiBi biases are added to attention logits, not to the embeddings
# [§3.2 "ALiBi Positional Embeddings"]
alibi = alibi_bias(112, T) # (112, T, T)
# 70 transformer layers [§3.5 table]
for block in transformer_blocks:
hidden = block(hidden, alibi)
hidden = final_layer_norm(hidden)
# Output projection reuses the input embedding [§3.5 table]
return hidden @ embedding.T # (B, T, 250680)Slope definition for ALiBi used in the paper's figure caption, per head i in 1..n with n heads fig. caption in §3.2:
# ALiBi slopes as stated in the architecture figure caption [§3.2]
# Input: num_heads n
# Output: one slope per head, shape (n,)
def alibi_slopes_from_caption(num_heads):
# Head i (1-based) gets slope 2^(-8 i / n) [§3.2 figure caption]
return [2 ** (-8 * i / num_heads) for i in range(1, num_heads + 1)]The reference implementation does not use this formula for head counts that are not powers of two; see Paper vs code.
Training objective and schedule:
# Pretraining loop [§3.5]
# Next-token cross-entropy on ROOTS; Adam with decoupled-style weight decay,
# warmup then cosine learning-rate decay
def train(model, batches):
# Warmup then cosine decay of the learning rate [§3.5]
for step, batch in enumerate(batches):
# Mean next-token cross-entropy over the batch [§3.5]
loss = cross_entropy(model(batch.inputs), batch.targets)
loss.backward()
# Clip the global gradient norm to 1.0 [§3.5 table]
clip_grad_norm(model.parameters(), max_norm=1.0)
# Adam with betas (0.9, 0.95), weight decay 0.1 [§3.5 table]
optimizer.step(lr=lr_schedule(step))
optimizer.zero_grad()Multitask finetuning (BLOOMZ) keeps the architecture and changes only the training data and optimiser settings §3.5 "Multitask Finetuning" §4.7. Its data is the xP3 corpus described in the paper §4.7. Contrastive finetuning of the 1.3B and 7.1B models with the SGPT bi-encoder recipe gives text-embedding variants §3.5 "Contrastive Finetuning".
Hyperparameters
Values for the 176B model unless noted. Source: §3.5 hyperparameter table (columns BLOOM-560M to BLOOM-7.1B are the ablation-scale family).
| Name | Value | Where | Notes |
|---|---|---|---|
| Parameters | 176,247M | §3.5 table | |
| Layers | 70 | §3.5 table | |
| Hidden dimension | 14336 | §3.5 table | |
| Attention heads | 112 | §3.5 table | Not a power of two (see Pitfalls) |
| Sequence length | 2048 | §3.5 table | |
| Vocabulary size | 250,680 | §3.5 table | |
| Activation | GELU | §3.5 table | |
| Position embedding | ALiBi | §3.2 §3.5 table | |
| Tied embeddings | True | §3.5 table | |
| Precision | bfloat16 | §3.5 table §3.4 | Mixed precision; float16 for earlier 104B runs §3.2 |
| Global batch size | 2048 | §3.5 table | Sequences per step |
| Peak learning rate | 6e-5 | §3.5 table | Smaller models use higher rates, e.g. 3e-4 at 560M |
| Min. learning rate | 6e-6 | §3.5 table | Cosine decay target |
| Warmup tokens | 375M | §3.5 table | |
| Decay tokens | 410B | §3.5 table | Paper: the end of decay was never reached §3.5 |
| Total tokens | 366B | §3.5 table | Paper: includes extra 25B on repeated data §3.5 |
| Decay style | cosine | §3.5 table | |
| Adam (β1, β2) | (0.9, 0.95) | §3.5 table | Code default differs; see Paper vs code |
| Weight decay | 0.1 | §3.5 table | |
| Gradient clipping | 1.0 | §3.5 table | |
| Dropout | none | §3.5 | "no dropout" §3.5; see Pitfalls |
| Multitask finetune: global batch | 2048 | §3.5 table | 560M and 1.1B variants use 1024 |
| Multitask finetune: learning rate | 2e-5 | §3.5 table | Constant schedule |
| Multitask finetune: tokens | 13B | §3.5 table | Best checkpoint on validation set §3.5 |
| Multitask finetune: weight decay | 1e-4 | §3.5 table | |
| Adam ε, init std, TP/PP degrees | not stated | §3.5 §3.4 | Set in the launch script (see Paper vs code) |
| Hardware | 384 A100 80GB (48 nodes × 8) + 4 spare nodes | §3.4 | |
| Training time | ~3.5 months, 1,082,990 compute hours | §3.4 | |
| Carbon | ~25 t CO2eq for training | §3.4 | Estimate, author-reported |
Results
Author-reported. Setup: zero- and few-shot prompting; benchmarks and baselines as stated in each section. The paper's evaluation focuses on prompt-based zero- and one-shot settings rather than finetuning §4. The setup of the HumanEval runs (prompting, number of samples, decoding) is not restated in the table; check §4.5 before comparing numbers.
Code generation (HumanEval, pass@k) §4.5. The paper states that non-BLOOM numbers come from prior work.
| Model | pass@1 | pass@10 | pass@100 |
|---|---|---|---|
| GPT-NeoX 20B | 15.4% | 25.6% | 41.2% |
| Codex-12B | 28.81% | 46.81% | 72.31% |
| BLOOM-560M | 0.82% | 3.02% | 5.91% |
| BLOOM-7.1B | 7.73% | 17.38% | 29.47% |
| BLOOM (176B) | 15.52% | 32.20% | 55.45% |
| BLOOMZ (176B) | 12.06% | 26.53% | 48.44% |
Source: §4.5 table. The paper says BLOOM is similar to GPT models of comparable size trained on code.
SuperGLUE (zero- and one-shot) §4.2. Figure-only results; the paper reports that on entailment tasks (BoolQ, CB) BLOOM is well above chance, that average performance over prompts is near chance on most other tasks, and that BLOOM improves more than comparable models from zero- to one-shot. Exact numbers are in the figure and are not transcribed here. fig. superglue
Multitask finetuning (BLOOMZ) §4.7. The paper reports that multilingual multitask finetuning on xP3 significantly increases zero-shot performance, and compares against pretrained BLOOM and T0 on held-out tasks fig. taskgen. Plateau after 1 to 6 billion finetuning tokens §3.5.
Machine translation, summarization, embeddings, probing, bias [§4.3, §4.4, §4.8, §4.9, §4.10]. Reported in the paper's tables and figures. Not transcribed here; check the source section before relying on any number.
Paper vs code
Code: Megatron-DeepSpeed
at commit 8387ae17c4704f6579f88a84500b535d19d7fbbf. The owner is the
BigScience Workshop, which is the author collective named first in the author
list. Code and launch scripts for the 176B run live in a second repository,
bigscience-workshop/bigscience (train/tr11-176B-ml/tr11-176B-ml.slurm). It is
not in the local clone; its values below were read from the GitHub file, so
they are cited as external and not as local lines. Its license was not checked.
- Adam β2. Paper: 0.95 §3.5 table. Megatron default is 0.999
arguments.py. The launch script sets
--adam-beta2 0.95(external). The paper value is what the run used; the default would be wrong for BLOOM. - Dropout. Paper: no dropout §3.5. Megatron defaults are 0.1 for both attention and hidden dropout arguments.py. The launch script does not pass either flag (external). The code default would apply, which contradicts the paper. No discrepancy can be confirmed without the training commit used.
- Embedding LayerNorm. Paper: used §3.2. Code: applied only when
--embed-layernormis set arguments.py, inside the vocabulary-parallel embedding forward layers.py and layers.py. The launch script sets the flag (external). - ALiBi slopes. Paper caption: 2^(-8i/n) §3.2 figure caption. Code computes the power-of-two case as that same formula, but for non-powers of two it takes the slopes of the nearest lower power of two plus every other slope of the next power, truncated transformer.py. BLOOM has 112 heads, so the code's interpolation applies, and the paper's formula is not what the reference implementation computes. Which one the trained model used is a question for the authors.
- ZeRO stage. Paper: ZeRO stage 1 §3.4. Launch script:
ZERO_STAGE=0(external). This is a direct discrepancy. - Synchronous kernel launches. Paper: asynchronous CUDA launches disabled
§3.4. Launch script:
CUDA_LAUNCH_BLOCKING=1(external). Consistent. - Schedule units. Paper: warmup 375M tokens, decay 410B tokens §3.5 table.
Launch script:
--lr-warmup-samples 183105and--lr-decay-samples 200000000(external). At sequence length 2048, these are about 375M and 410B tokens, so the paper's figures match the script's sample counts. Arithmetic is ours. - Total budget. Paper: 366B total tokens §3.5 table. Launch script:
--train-samples 220000000(external). At 2048 tokens per sample that is about 450B tokens. The paper does not say where the run stopped. - Initialisation std. Megatron default 0.02 arguments.py. Launch script: 0.0048 (external). The paper does not state the value ("not stated" in the paper).
- Parallel degrees. Paper describes 3D parallelism without degrees §3.4. Launch script: tensor parallel 4, pipeline parallel 12 (external). The paper does not state this.
- Micro-batch size. Paper: not stated. Launch script: 2 (external).
No other discrepancies were checked; the rest of the codebase was not compared line by line against the paper.
Pitfalls
- Non-power-of-two heads and ALiBi. The paper's caption formula and the reference code differ for 112 heads (see Paper vs code). Implement the code's rule if you want to reproduce the released weights; document it if you follow the caption.
- Dropout is ambiguous. The paper says no dropout; Megatron's default is 0.1 and the launch script does not override it. Set dropout to zero explicitly, since the paper is the stated design.
- ZeRO stage and bf16. The paper says stage 1 and the launch script says stage 0. Stage affects memory and communication, not the math of the optimiser, but the two disagree.
- Float16 vs bfloat16. Earlier 104B experiments with float16 showed divergence on V100 GPUs. The final run used bfloat16 mixed precision with float32 for gradient accumulation and softmax §3.4. The embedding LayerNorm was introduced for the float16 experiments, and the paper says bfloat16 may make it unnecessary but it was kept §3.2.
- Schedule never reaches its end. The paper states the cosine decay was never completed because warmup plus decay tokens exceed the total §3.5. Plan a schedule that stops at the actual step count; the minimum learning rate is not reached.
- Hardware failures. On average 1 to 2 GPU failures per week, handled with spare nodes and checkpoints every three hours. A data-loader deadlock and disk issues caused 5 to 10 hour downtimes §3.4. One loss spike was recovered from §3.4.
- Throughput. The fastest configuration reached 156 TFLOPs per A100 GPU, about half the theoretical peak §3.4. Use this as a reference when estimating your own run.
- Ablations at small scale. Architecture decisions were tested at 1.3B and pretraining objectives at 6.7B. The paper itself notes that outlier features appear above 6.7B, so small-scale conclusions may not transfer §3.2.
- Carbon numbers are estimates. The 25 t CO2eq is the authors' estimate of training emissions, and some values in their comparison table for other models are inferred rather than reported §3.4.
- Licenses differ. This paper is CC BY 4.0. The released model is under the BigScience Responsible AI License (RAIL), which restricts some uses; the code is Apache-2.0 per the paper §3.6. Check the model's license before reusing its weights. Our code license field records the repository's mixed notices.
- Prompt sensitivity. The paper reports that per-prompt SuperGLUE results vary widely and that the average over prompts sits near chance on most tasks §4.2. Report results per prompt, not only the best one.
Lineage
- Builds on: Megatron-LM (tensor parallelism, fused kernels) §3.4; DeepSpeed and ZeRO (optimizer sharding, pipeline) §3.4; ALiBi positional biases §3.2; the architecture ablations of the same project §3.2; GPT-3-style causal LM training §3.2.
- Compared against: GPT-3, OPT, GPT-J, Codex, T0 and GPT-NeoX §3.4 §4.
- Superseded by: not stated in this wiki.
- Related concept pages: language-model-pretraining, in-context-learning, dataset-curation, positional-encoding.
Source and license
Adapted from “BLOOM: A 176B-Parameter Open-Access Multilingual Language Model” by BigScience Workshop, Teven Le Scao, Angela Fan, Christopher Akiki, Ellie Pavlick, Suzana Ilić, Daniel Hesslow, Roman Castagné, Alexandra Sasha Luccioni, François Yvon, Matthias Gallé, Jonathan Tow, Alexander M. Rush, Stella Biderman, Albert Webson, Pawan Sasanka Ammanamanchi, Thomas Wang, Benoît Sagot, Niklas Muennighoff, Albert Villanova del Moral, Olatunji Ruwase, Rachel Bawden, Stas Bekman, Angelina McMillan-Major, Iz Beltagy, Huu Nguyen, Lucile Saulnier, Samson Tan, Pedro Ortiz Suarez, Victor Sanh, Hugo Laurençon, Yacine Jernite, Julien Launay, Margaret Mitchell, Colin Raffel, Aaron Gokaslan, Adi Simhi, Aitor Soroa, Alham Fikri Aji, Amit Alfassy, Anna Rogers, Ariel Kreisberg Nitzav, Canwen Xu, Chenghao Mou, Chris Emezue, Christopher Klamm, Colin Leong, Daniel van Strien, David Ifeoluwa Adelani, Dragomir Radev, Eduardo González Ponferrada, Efrat Levkovizh, Ethan Kim, Eyal Bar Natan, Francesco De Toni, Gérard Dupont, Germán Kruszewski, Giada Pistilli, Hady Elsahar, Hamza Benyamina, Hieu Tran, Ian Yu, Idris Abdulmumin, Isaac Johnson, Itziar Gonzalez-Dios, Javier de la Rosa, Jenny Chim, Jesse Dodge, Jian Zhu, Jonathan Chang, Jörg Frohberg, Joseph Tobing, Joydeep Bhattacharjee, Khalid Almubarak, Kimbo Chen, Kyle Lo, Leandro Von Werra, Leon Weber, Long Phan, Loubna Ben allal, Ludovic Tanguy, Manan Dey, Manuel Romero Muñoz, Maraim Masoud, María Grandury, Mario Šaško, Max Huang, Maximin Coavoux, Mayank Singh, Mike Tian-Jian Jiang, Minh Chien Vu, Mohammad A. Jauhar, Mustafa Ghaleb, Nishant Subramani, Nora Kassner, Nurulaqilla Khamis, Olivier Nguyen, Omar Espejel, Ona de Gibert, Paulo Villegas, Peter Henderson, Pierre Colombo, Priscilla Amuok, Quentin Lhoest, Rheza Harliman, Rishi Bommasani, Roberto Luis López, Rui Ribeiro, Salomey Osei, Sampo Pyysalo, Sebastian Nagel, Shamik Bose, Shamsuddeen Hassan Muhammad, Shanya Sharma, Shayne Longpre, Somaieh Nikpoor, Stanislav Silberberg, Suhas Pai, Sydney Zink, Tiago Timponi Torrent, Timo Schick, Tristan Thrush, Valentin Danchev, Vassilina Nikoulina, Veronika Laippala, Violette Lepercq, Vrinda Prabhu, Zaid Alyafeai, Zeerak Talat, Arun Raja, Benjamin Heinzerling, Chenglei Si, Davut Emre Taşar, Elizabeth Salesky, Sabrina J. Mielke, Wilson Y. Lee, Abheesht Sharma, Andrea Santilli, Antoine Chaffin, Arnaud Stiegler, Debajyoti Datta, Eliza Szczechla, Gunjan Chhablani, Han Wang, Harshit Pandey, Hendrik Strobelt, Jason Alan Fries, Jos Rozen, Leo Gao, Lintang Sutawika, M Saiful Bari, Maged S. Al-shaibani, Matteo Manica, Nihal Nayak, Ryan Teehan, Samuel Albanie, Sheng Shen, Srulik Ben-David, Stephen H. Bach, Taewoon Kim, Tali Bers, Thibault Fevry, Trishala Neeraj, Urmish Thakker, Vikas Raunak, Xiangru Tang, Zheng-Xin Yong, Zhiqing Sun, Shaked Brody, Yallow Uri, Hadar Tojarieh, Adam Roberts, Hyung Won Chung, Jaesung Tae, Jason Phang, Ofir Press, Conglong Li, Deepak Narayanan, Hatim Bourfoune, Jared Casper, Jeff Rasley, Max Ryabinin, Mayank Mishra, Minjia Zhang, Mohammad Shoeybi, Myriam Peyrounette, Nicolas Patry, Nouamane Tazi, Omar Sanseviero, Patrick von Platen, Pierre Cornette, Pierre François Lavallée, Rémi Lacroix, Samyam Rajbhandari, Sanchit Gandhi, Shaden Smith, Stéphane Requena, Suraj Patil, Tim Dettmers, Ahmed Baruwa, Amanpreet Singh, Anastasia Cheveleva, Anne-Laure Ligozat, Arjun Subramonian, Aurélie Névéol, Charles Lovering, Dan Garrette, Deepak Tunuguntla, Ehud Reiter, Ekaterina Taktasheva, Ekaterina Voloshina, Eli Bogdanov, Genta Indra Winata, Hailey Schoelkopf, Jan-Christoph Kalo, Jekaterina Novikova, Jessica Zosa Forde, Jordan Clive, Jungo Kasai, Ken Kawamura, Liam Hazan, Marine Carpuat, Miruna Clinciu, Najoung Kim, Newton Cheng, Oleg Serikov, Omer Antverg, Oskar van der Wal, Rui Zhang, Ruochen Zhang, Sebastian Gehrmann, Shachar Mirkin, Shani Pais, Tatiana Shavrina, Thomas Scialom, Tian Yun, Tomasz Limisiewicz, Verena Rieser, Vitaly Protasov, Vladislav Mikhailov, Yada Pruksachatkun, Yonatan Belinkov, Zachary Bamberger, Zdeněk Kasner, Alice Rueda, Amanda Pestana, Amir Feizpour, Ammar Khan, Amy Faranak, Ana Santos, Anthony Hevia, Antigona Unldreaj, Arash Aghagol, Arezoo Abdollahi, Aycha Tammour, Azadeh HajiHosseini, Bahareh Behroozi, Benjamin Ajibade, Bharat Saxena, Carlos Muñoz Ferrandis, Daniel McDuff, Danish Contractor, David Lansky, Davis David, Douwe Kiela, Duong A. Nguyen, Edward Tan, Emi Baylor, Ezinwanne Ozoani, Fatima Mirza, Frankline Ononiwu, Habib Rezanejad, Hessie Jones, Indrani Bhattacharya, Irene Solaiman, Irina Sedenko, Isar Nejadgholi, Jesse Passmore, Josh Seltzer, Julio Bonis Sanz, Livia Dutra, Mairon Samagaio, Maraim Elbadri, Margot Mieskes, Marissa Gerchick, Martha Akinlolu, Michael McKenna, Mike Qiu, Muhammed Ghauri, Mykola Burynok, Nafis Abrar, Nazneen Rajani, Nour Elkott, Nour Fahmy, Olanrewaju Samuel, Ran An, Rasmus Kromann, Ryan Hao, Samira Alizadeh, Sarmad Shubber, Silas Wang, Sourav Roy, Sylvain Viguier, Thanh Le, Tobi Oyebade, Trieu Le, Yoyo Yang, Zach Nguyen, Abhinav Ramesh Kashyap, Alfredo Palasciano, Alison Callahan, Anima Shukla, Antonio Miranda-Escalada, Ayush Singh, Benjamin Beilharz, Bo Wang, Caio Brito, Chenxi Zhou, Chirag Jain, Chuxin Xu, Clémentine Fourrier, Daniel León Periñán, Daniel Molano, Dian Yu, Enrique Manjavacas, Fabio Barth, Florian Fuhrimann, Gabriel Altay, Giyaseddin Bayrak, Gully Burns, Helena U. Vrabec, Imane Bello, Ishani Dash, Jihyun Kang, John Giorgi, Jonas Golde, Jose David Posada, Karthik Rangasai Sivaraman, Lokesh Bulchandani, Lu Liu, Luisa Shinzato, Madeleine Hahn de Bykhovetz, Maiko Takeuchi, Marc Pàmies, Maria A Castillo, Marianna Nezhurina, Mario Sänger, Matthias Samwald, Michael Cullan, Michael Weinberg, Michiel De Wolf, Mina Mihaljcic, Minna Liu, Moritz Freidank, Myungsun Kang, Natasha Seelam, Nathan Dahlberg, Nicholas Michio Broad, Nikolaus Muellner, Pascale Fung, Patrick Haller, Ramya Chandrasekhar, Renata Eisenberg, Robert Martin, Rodrigo Canalli, Rosaline Su, Ruisi Su, Samuel Cahyawijaya, Samuele Garda, Shlok S Deshmukh, Shubhanshu Mishra, Sid Kiblawi, Simon Ott, Sinee Sang-aroonsiri, Srishti Kumar, Stefan Schweter, Sushil Bharati, Tanmay Laud, Théo Gigant, Tomoya Kainuma, Wojciech Kusa, Yanis Labrak, Yash Shailesh Bajaj, Yash Venkatraman, Yifan Xu, Yingxin Xu, Yu Xu, Zhe Tan, Zhongli Xie, Zifan Ye, Mathilde Bras, Younes Belkada, Thomas Wolf (arXiv:2211.05100), used under CC BY 4.0. Changes: condensed and restructured for implementation, with tables, equations and algorithms taken from the paper and its code, each cited to its source. Not affiliated with or endorsed by the authors. Code citations refer to https://github.com/bigscience-workshop/Megatron-DeepSpeed at commit 8387ae17c470 (mixed: NVIDIA BSD-3-Clause and Apache-2.0 (per-file notices)). Any quoted code is shown under that license.