micm-nlp¶
NLP research toolkit for tokenization, pretraining, fine-tuning, and PEFT across encoder-only, decoder-only, and encoder-decoder architectures. Built on top of HuggingFace transformers, peft, and datasets.
pip install micm-nlp
micm-nlp is a config-driven research toolkit for multilingual NLP work. It wraps the HuggingFace stack with a small set of high-level building blocks — CONFIG, TOKENIZER, DATASET, MODEL, and a unified TRAINER — that compose into reproducible training, fine-tuning, and evaluation pipelines.
It has backed two peer-reviewed publications: Cross-Prompt Encoder for Low-Performing Languages (Findings of IJCNLP–AACL 2025; ACL Anthology) and A Comparison of Different Tokenization Methods for the Georgian Language (ICNLSP 2024; ACL Anthology).
The package currently ships two examples that exercise a single use case end-to-end: preprocessing and decoder-only PEFT fine-tuning (XPE) on an FTP-reframed multilingual dataset hosted on the HuggingFace Hub. The toolkit’s underlying surface is broader than these two examples demonstrate.
Additional examples covering encoder-only text classification, encoder-decoder seq2seq, and MLM pretraining will land in subsequent releases. Contributions and issue reports are welcome.
What it is¶
A library, not an experiment runner. The building blocks compose into one chain:
CONFIG (YAML) → tokenizer.load() → DATASET → MODEL → PEFT → TRAINER → compute_metrics
Everything above is selected from YAML — including the concrete HuggingFace classes.
model.pretrained.cls, trainer.cls, data_collator.cls and training_args.cls are
resolved by name at runtime, so adding a backbone or a head normally needs no code
change. Experiment logic — language groups, run-tree layouts, result aggregation,
cluster dispatch — lives in consumer repositories that import this package, never here.
Symbol |
Role |
|---|---|
|
Loads and validates YAML ( |
|
|
|
Loads and preprocesses HuggingFace, CSV or TXT datasets; concatenation |
|
|
|
Routes to stock PEFT methods or the Cross-Prompt Encoder path |
|
Builds the HuggingFace |
Scope¶
Configuration, datasets, models, PEFT dispatch, training and evaluation carry no assumptions about any particular study.
Published work is not partitioned off into a “research” corner — it sits in the package where it belongs, and each module’s own page cites the paper behind it. The Cross-Prompt Encoder is models.xpe; the Georgian tokenization work is tokenizers.architectures and tokenizers.ka_sen_tok. None of it is required to use the rest.
Links¶
PyPI |
|
Source |
|
Issue tracker |
|
Releases |
|
Changelog |
|
XPE paper |
|
Tokenization paper |
|
MICM |
|
Contact |
beso.mikaberidze@gmail.com |
Provenance¶
micm-nlp was developed at the Muskhelishvili Institute of Computational Mathematics (MICM, Georgian Technical University), in close research collaboration with Teimuraz Saghinadze (MICM), Simon Ostermann (DFKI / CERTAIN), and Philipp Müller (Max Planck Institute for Intelligent Systems), whose joint work on the Cross-Prompt Encoder (XPE) drove much of the toolkit’s design and validation.
This work was partially supported by the European Union under Horizon Europe project “GAIN” (GA #101078950) and by the German Federal Ministry of Research, Technology and Space (BMFTR) as part of the project TRAILS (01IW24005).
The package was formerly named nlpka; that name survives only in the archived
repository behind the IJCNLP–AACL paper.
Citation¶
If you use micm-nlp in your research, please cite the package and (if relevant to your work) the XPE paper that drove its design:
@software{micm_nlp,
author = {Mikaberidze, Beso},
title = {micm-nlp: NLP research toolkit for multilingual fine-tuning and PEFT},
url = {https://github.com/bmikaberidze/micm-nlp},
version = {0.3.0},
year = {2026},
}
@misc{mikaberidze2025crosspromptencoderlowperforminglanguages,
title = {Cross-Prompt Encoder for Low-Performing Languages},
author = {Beso Mikaberidze and Teimuraz Saghinadze and Simon Ostermann and Philipp Muller},
year = {2026},
eprint = {2508.10352},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2508.10352},
}