This version of the model refers to the long-context extension version described below
Llama3-German-8B-v0.1 is a large language model based on Meta's Llama3-8B. It is specialized for the German language through continuous pretraining on 65 billion high-quality tokens, similar to previous LeoLM or Occiglot models.
Llama3 itself was trained on 15T tokens, of which only <1T were multilingual, resulting in suboptimal performance in German with reduced linguistic capabilities and frequent grammatical errors, motivating the necessity for continued pretraining. Benchmark results on our model show minimal degradation in English performance, despite the absence of replay during training. Importantly, Llama3-German-8B-v0.1 demonstrates strong improvements in German, particularly on the Hellaswag benchmark, which measures linguistic understanding and general reasoning.
DiscoResearch/Llama3-German-8B-v0.1 is the result of a joint effort between DiscoResearch and Occiglot with support from the DFKI (German Research Center for Artificial Intelligence) and hessian.Ai. Occiglot kindly handled data preprocessing, filtering, and deduplication as part of their latest dataset release, as well as sharing their compute allocation at hessian.Ai's 42 Supercomputer.
How to use
This is a base model and should probably be subject to finetuning before use. See our collection for various finetuned and long-context versions.
Model Training and Hyperparameters
The model was trained on 128 GPUs on hessian.Ai 42 for ~60 hours. See detailed hyperparameters below.
We evaluated the model using a suite of common English Benchmarks and their German counterparts with GermanBench.
The following figure shows the benchmark results in comparison to the base model meta-llama/Meta-Llama3-8B and two different hyperparameter configurations.
We swept different learning rates to identify a well-working setup. The final released model is the 1.5e-5 lr version.
alt text
Find the detailed benchmark scores for the base and long-context models in this table.
Model
truthful_qa_de
truthfulqa_mc
arc_challenge
arc_challenge_de
hellaswag
hellaswag_de
MMLU
MMLU-DE
mean
DiscoResearch/Llama3-German-8B
0.49499
0.44838
0.55802
0.49829
0.79924
0.65395
0.62240
0.54413
0.57743
DiscoResearch/Llama3-German-8B-32k
0.48920
0.45138
0.54437
0.49232
0.79078
0.64310
0.58774
0.47971
0.55982
meta-llama/Meta-Llama-3-8B-Instruct
0.47498
0.43923
0.59642
0.47952
0.82025
0.60008
0.66658
0.53541
0.57656
Long-Context Extension
In addition to the base model, we release a long-context version of Llama3-German-8B (DiscoResearch/Llama3-German-8B-32k capable of processing context lengths up to 65k tokens. This variant was trained on an additional 100 million tokens at 32k context length, using a rope_theta value of 1.5e6 and a learning rate of 1.5e-5 with a batch size of 256*8192 tokens and otherwise equal hyperparameters to the base model.
We employed a more intelligent document packing strategy based on the "Fewer Truncations Improve Language Modeling" paper by Ding et al., using the first-fit-decreasing algorithm to pack documents into batches without truncation.
We packed our data in chunks of 10000 documents for more efficient processing while maintaining >99% packing efficiency. Documents longer than the sequence length are split into chunks of sequence length.
This approach results in overall higher benchmark scores when training on the same data with equal hyperparameters. The following numbers are from initial experiments with 3e-5 lr and 12k steps and show improvements comparable to those shown in the original paper.
Task
Naive Packing
Fewer Truncations Packing
Percentage Increase
truthfulqa_mc
0.452648
0.467687
3.32%
arc_challenge
0.517918
0.528157
1.98%
truthful_qa_de
0.485529
0.492979
1.53%
arc_challenge_de
0.480375
0.493174
2.66%
hellaswag
0.776041
0.773352
-0.35%
hellaswag_de
0.655248
0.653356
-0.29%
MMLU
0.573719
0.579802
1.06%
MMLU-DE
0.504509
0.503863
-0.13%
The following is our simple implementation of the first-fit-decreasing algorithm described in the paper.
python
1defpack_documents(tokenized_documents):2# Sort documents by their length in descending order3 sorted_docs =sorted(tokenized_documents, key=len, reverse=True)45# Initialize bins6 bins =[]78# Function to find the first bin that can accommodate the document9deffind_bin(doc):10for b in bins:11ifsum(len(d)for d in b)+len(doc)<=8192:12return b
13returnNone1415# Place each document in the first available bin or create a new bin16for doc in sorted_docs:17 target_bin = find_bin(doc)18if target_bin isnotNone:19 target_bin.append(doc)20else:21# Create a new bin with this document if no suitable bin is found22 bins.append([doc])2324# Return results25return bins
Model Configurations
We release DiscoLeo-8B in the following configurations: