Roman Bartusiak
AI researcher, ML and distributed systems engineer · Wrocław, Poland
I build production AI and ML systems — agentic platforms, NLP, semantic search — and the distributed, high-throughput backends they run on. Research and prototypes turned into systems that hold up under real load.
Distributed computing and performance are the other half of the job: Spark and graph processing, event-driven multi-tenant platforms, JVM services rebuilt to run 2× faster, and pipelines that stay correct while they scale.
Contact meRead the full record
Now: looking for the next thing — experimenting with vector indexes, JEPA-like models and similarity learning.
23+ years writing software, 12+ of them in AI and machine learning. 9 peer-reviewed papers and 8 research and R&D projects.

Writing
Measured work, mostly on hardware and runtimes other people are guessing about.
More performance checks of NVIDIA PyTorch on DGX Spark
Following up with fp32, fp16 and bf16 across GEMM, convolution and TorchBench: where the NGC container actually wins, and where the DGX Spark is simply bandwidth-bound.
FindingGEMM gains hold; convolution unchanged; bandwidth-bound
Is it worth using the official NVIDIA PyTorch image?
An 8192² bfloat16 matmul run 100 times, inside NVIDIA's NGC PyTorch container and against a stock pip install, measured on the same DGX Spark.
Finding+50% TFLOPS · 8192² bf16 matmul
Oh no, 128 GB is not enough for 7B parameters!
A 7B model OOMs on a 128 GB machine. The memory is not missing — the OS page cache is holding it, and unified memory hides that from the usual GPU tooling.
FindingOS page cache, not the model, causes the OOM
Unsloth your DGX Spark
Getting Unsloth to build and run on the DGX Spark's GB10: the NGC PyTorch image, uv with pinned overrides, and the TORCH_CUDA_ARCH_LIST setting that makes xformers compile.
Findingxformers compiles against CUDA 12.1 once TORCH_CUDA_ARCH_LIST=12.0
Research
9 publications across NLP, graph and network science, distributed data processing and representation learning.
- 2022
This is the way: designing and compiling LEPISZCZE, a comprehensive NLP benchmark for Polish
Advances in Neural Information Processing Systems 35, 21805–21818
L Augustyniak, K Tagowski, A Sawczyn, D Janiak, R Bartusiak, …
- 2019
WordNet2Vec: Corpora agnostic word vectorization method
Neurocomputing 326, 141–150
R Bartusiak, Ł Augustyniak, T Kajdanowicz, P Kazienko, M Piasecki
- 2018
Distributed Processing of Networked Data
Encyclopedia of Social Network Analysis and Mining, 662–668
P Kazienko, W Indyk, T Kajdanowicz, R Bartusiak
- 2017
On quality assessment in Wikipedia articles based on Markov random fields
Asian Conference on Intelligent Information and Database Systems, 782–791
R Kleminski, T Kajdanowicz, R Bartusiak, P Kazienko
- 2017
Distributed Processing of Networked Data
Encyclopedia of Social Network Analysis and Mining, 1–7
P Kazienko, W Indyk, T Kajdanowicz, R Bartusiak
- 2016
Choose a job you love: predicting choices of GitHub developers
IEEE/WIC/ACM International Conference on Web Intelligence, 200–207
R Nielek, O Jarczyk, K Pawlak, L Bukowski, R Bartusiak, A Wierzbicki
- 2016
Cooperation prediction in GitHub developers network with restricted Boltzmann machine
Asian Conference on Intelligent Information and Database Systems, 96–107
R Bartusiak, T Kajdanowicz, A Wierzbicki, L Bukowski, O Jarczyk, …
- 2015
Sentiment analysis for Polish using transfer learning approach
Second European Network Intelligence Conference, 53–59
R Bartusiak, L Augustyniak, T Kajdanowicz, P Kazienko
- 2015
Sentiment analysis based on collaborative data for Polish language
International Conference on Cooperative Design, Visualization and Engineering
R Bartusiak, T Kajdanowicz
Projects
Libraries and systems I wrote and still stand behind — most of them open source, two still being built.
- BORSUK
Under constructionBlob-oriented Retrieval with Segmental Unified KNN. Keeps the whole index as immutable Parquet objects in the S3, MinIO, SeaweedFS, GCS or Azure storage you already pay for, and answers a query with a few hundred bytes of resident memory — no always-on RAM cluster to provision, scale or feed between queries.
- SFORA
Under constructionDeep metric learning library. Its method, HERD — Hypergraph EMA-teacher Relational Distillation — plus a multi-model ensemble beat the reported state of the art on the same architecture for CUB-200 by more than a point.
- SparklingGraph
Distributed graph processing library — a Spark GraphX wrapper providing algorithms and APIs. Connects research on networked data to a practical distributed-computing implementation.
- polish-sentiment
Ready-to-use Docker images for sentiment classification of Polish text.
- vibe.js
JavaScript implementation of the ViBe background-subtraction algorithm.
- OpticalFlow.js
JavaScript implementation of an optical-flow algorithm.
- HMM.js
Hidden Markov models in JavaScript, using the Viterbi algorithm.
- Data Projector
Java web application for data visualisation and dimensionality change.
Open to interesting work
Top-3% of the Toptal network since 2018. AI platforms, ML engineering, distributed backends, and the unglamorous performance work in between.