|
--- |
|
license: apache-2.0 |
|
language: |
|
- en |
|
- fi |
|
base_model: |
|
- LumiOpen/Poro-34B |
|
datasets: |
|
- sablo/oasst2_curated |
|
- LumiOpen/instruction-collection-fin |
|
--- |
|
|
|
This is an SFT-tuned model of [Poro-34B](https://huggingface.co/LumiOpen/Poro-34B) with English and Finnish data. We trained this model as part of our experiments on the impact of multilingual instruction-tuning on Poro-34B. For a better chat experience, we recommend using [Poro-34B-chat](https://huggingface.co/LumiOpen/Poro-34B-chat) instead. |
|
|
|
## Datasets |
|
|
|
### SFT |
|
|
|
We use a curated subset of Open Assistant 2 and translated the dataset into Finnish using Poro-34B. |
|
|
|
- **English**: [oasst2_curated](https://huggingface.co/datasets/sablo/oasst2_curated) |
|
|
|
- **Finnish**: [instruction-collection-fin](https://huggingface.co/datasets/LumiOpen/instruction-collection-fin) (oasst2 subset) |
|
|
|
### DPO |
|
|
|
We use the HelpSteer2 preference binarized into chosen-rejected pairs using the helpfulness score as recommended in the [HelpSteer2](https://arxiv.org/abs/2406.08673) paper. We translated the dataset into Finnish using Poro. |
|
|
|
- **English**: [HelpSteer2](https://huggingface.co/datasets/nvidia/HelpSteer2) |
|
|
|
- **Finnish**: TBA |
|
|
|
## Recipes |
|
|
|
For finetuning, we used 4 nodes (8 x AMD MI250X) to obtain a global batch size of 128 for SFT and 64 for DPO. We used the [Alignment Handbook](https://github.com/huggingface/alignment-handbook/) codebase. |
|
|
|
**SFT** |
|
|
|
``` |
|
bf16: true |
|
do_eval: true |
|
evaluation_strategy: epoch |
|
gradient_accumulation_steps: 2 |
|
gradient_checkpointing: true |
|
gradient_checkpointing_kwargs: |
|
use_reentrant: False |
|
learning_rate: 2.0e-05 |
|
log_level: info |
|
logging_steps: 50 |
|
logging_strategy: steps |
|
lr_scheduler_type: cosine |
|
max_seq_length: 2048 |
|
max_steps: -1 |
|
num_train_epochs: 3 |
|
output_dir: data/poro-sft-oasst2 |
|
overwrite_output_dir: true |
|
per_device_eval_batch_size: 4 |
|
per_device_train_batch_size: 2 |
|
remove_unused_columns: true |
|
save_strategy: "epoch" |
|
save_total_limit: 1 |
|
seed: 42 |
|
warmup_ratio: 0.1 |
|
``` |
|
|
|
**DPO** |
|
``` |
|
bf16: true |
|
beta: 0.05 |
|
do_eval: true |
|
evaluation_strategy: epoch |
|
gradient_accumulation_steps: 1 |
|
gradient_checkpointing: true |
|
gradient_checkpointing_kwargs: |
|
use_reentrant: False |
|
learning_rate: 5.0e-7 |
|
log_level: info |
|
logging_steps: 20 |
|
lr_scheduler_type: cosine |
|
max_length: 1024 |
|
max_prompt_length: 512 |
|
num_train_epochs: 5 |
|
optim: adamw_torch |
|
output_dir: data/poro-dpo-helpsteer2 |
|
per_device_train_batch_size: 2 |
|
per_device_eval_batch_size: 4 |
|
save_strategy: "epoch" |
|
save_total_limit: 1 |
|
seed: 42 |
|
warmup_ratio: 0.1 |
|
``` |
|
|
|
|
|
## Evaluation |
|
|
|
We use [IFEval](https://huggingface.co/datasets/google/IFEval) to evaluate the performance of the model in English. For Finnish, we translated the IFEval prompts to [Finnish](https://huggingface.co/datasets/LumiOpen/ifeval_mt) with DeepL. We report the instruction-level strict accuracy: |
|
|
|
- **English**: 0.3997 |
|
- **Finnish**: 0.3448 |
|
|
|
## Citation |
|
|
|
We discuss our experimental setup and results in our NoDaLiDa 2025 paper. |
|
|
|
``` |
|
@inproceedings{ |
|
zosa2024got, |
|
title={Got Compute, but No Data: Lessons From Post-training a Finnish {LLM}}, |
|
author={Elaine Zosa and Ville Komulainen and Sampo Pyysalo}, |
|
booktitle={The Joint 25th Nordic Conference on Computational Linguistics and 11th Baltic Conference on Human Language Technologies}, |
|
year={2024}, |
|
url={https://openreview.net/forum?id=8wWlu1stNK} |
|
} |
|
``` |