Amar Merabti · notebook
FR
Portrait of Amar Merabti

The short version

Amar Merabti, data scientist

Available from October 2026 — CIFRE PhD or permanent data scientist role · anywhere in France, ideally Paris region
Education
MSc in Data, Knowledge and Intelligence, Université Paris Cité — ranked 1st in my class (16/20). BSc in Computer Science and first year of an MSc in Intelligent Computer Systems at USTHB, Algiers.
Experience
Nricher (2026, 6 months): verifying product attributes with textual inference and TabPFN, 0.925 balanced accuracy. ENAGEO, Sonatrach group (2023–2024): internship then a one-year fixed-term contract on well logs treated as time series (LSTM): imputation (MAE 12.7) and cross-well prediction, correlation raised from 0.52 to 0.82.
Projects
A 36.3M-parameter language model trained from scratch for Kabyle; a benchmark of open-source LLMs; agents that learn football through self-play.
Tools
Python, PyTorch, Transformers, scikit-learn · Kafka, Spark, MongoDB, SQL · Java, C/C++
Languages
French and English (fluent), Arabic (proficient), Kabyle (native)
Lab notebookUpdated 17 September 2026

Amar Merabti

Data scientist — language models, NLP, imperfect data

Available from October 2026 for a CIFRE PhD (an industrial PhD in France) or a permanent data scientist role · anywhere in France, ideally Paris region

In industry, I have worked on data nobody had prepared for me. At Nricher, I designed an automatic check for product attributes that validates 68% of values at 99% precision. At ENAGEO, part of the Sonatrach group, I reconstructed missing well measurements with LSTMs, from one well to the next. And to understand language models from the inside, I trained one from scratch for Kabyle, my native language.

16/20
ranked 1st in my class, MSc DCI, Université Paris Cité
36.3M
parameters in my Kabyle model, trained from scratch
22
open-source repositories, from a compiler to an LLM
Player 1 0 – 0 player 2
player 1player 2ball
Fig. 1 — No game rules are coded: both players are a single PPO policy trained against itself, 36 million steps in 48 minutes on a laptop. Nothing is pre-recorded: the network plays right here, in your browser, ten decisions per second per player. Move the players or the ball: the match restarts from the position you set. See the experiment
§ 1

Ten experiments

Each project starts from a question. I write down what I did, what I measured, and what did not work: that is often where I learned the most.

  1. Exp. 01
    2026
    personal project

    Can you train a language model for a language with almost no data?

    All available written Kabyle amounts to about 40 million tokens, partly locked in PDFs typeset with pre-Unicode fonts. I wrote the decoder for those fonts, built a 120-million-character corpus, then pretrained a Llama-style Transformer before fine-tuning it on chat messages.

    What did not workMy first model (43M parameters for 1M tokens) memorized its corpus: training loss 1.33, validation loss 6.21. It was about 800 times too large for its data.

    1.977
    bits per character on validation after pretraining and fine-tuning, versus 2.046 without pretraining
    Loss curves for pretraining and fine-tuning
  2. Exp. 02
    2026
    Nricher internship
    MSc thesis, Prof. Salima Benbernou

    How do you verify a value extracted from a product page when the client's catalog is unreliable?

    Each attribute/value pair becomes a hypothesis, checked sentence by sentence against the product description with textual inference (mDeBERTa-v3). These scores, together with BGE-M3 embeddings, feed TabPFN. The benchmark covers 4 production catalogs: 35 attributes, 30,919 rows and 5,635 paired runs, with a reference built without manual annotation.

    What the ablation showedRemoving the 4 inference scores costs 8.9 points; removing the 50 embedding components costs only 1.9 (Wilcoxon test). What matters is how the text representation is oriented, not how rich it is.

    68%
    of values validated automatically, at 99% precision
    0.925
    balanced accuracy, versus 0.808 for the inference rule alone and 0.898 for TabSTAR, 28 times more expensive
  3. Exp. 03
    2026
    personal projects

    What can agents learn when you give them no rules at all?

    I wrote a 2D football engine in NumPy (FIFA proportions, possession, tackles, collisions) and trained a single PPO policy that plays both sides: two players spawn anywhere on the pitch and try to score, with no game rule coded inside the agent. 36 million steps in 48 minutes, on a laptop without a GPU. In parallel, a quadruped simulated with pymunk learns to walk to a flag with Stable-Baselines3.

    What did not workPotential-based shaping, the safest form in theory, gives no signal when every match ends: 1% wins. An AlphaStar-style opponent pool loses to mirror self-play. And my first evaluations, on 12 matches from a fixed kick-off, were in fact measuring a single repeated match. The quadruped, for its part, never reaches its target among obstacles (0/20).

    73%
    wins against a scripted player, over 500 matches, against 19% losses
    The simulated quadruped walks on flat ground to the flag
    Quadruped: 20/20 targets reached on flat ground, 16/20 on uneven terrain
  4. Exp. 04
    2025
    MSc year 1, DCI
    supervised by Prof. Themis Palpanas

    To fill gaps in a time series, does deep learning beat a classical method?

    Electricity meters from 3,127 households, 12,864 readings each, 30 to 50% of values masked. We compared a nearest neighbor, an LSTM autoencoder, a partial-convolution U-Net, a self-supervised Transformer and an STL decomposition rewritten in PyTorch to run on GPU.

    AnswerNot here. STL wins in both scenarios, including on 1,098 unseen households: trend and seasonality are exactly the structure of this data, and the deep models had to be scaled down to fit on 4 GPUs.

    0.262
    MAE for GPU STL, versus 0.327 for the best deep model (U-Net)
    Error comparison of the imputation methods
  5. Exp. 05
    2025
    MSc research project

    How good are three 7-billion-parameter open-source LLMs at maths, common sense and code?

    LLaMA 2, Mistral and distilled DeepSeek-R1, served with Ollama on 4 L4 GPUs: GSM8K 8-shot, HellaSwag and HumanEval 0-shot, with generated code executed in a sandbox and Python error types analyzed.

    NuanceDeepSeek-R1 dominates coding, but its long reasoning makes it about 100 times slower, and it gave a usable answer to only 258 maths questions out of 500. Mistral offers the best trade-off between accuracy and latency.

    128/164
    HumanEval problems solved by DeepSeek-R1 (78.0%), versus 52 for Mistral and 15 for LLaMA 2
    HumanEval pass rate of the three models
  6. Exp. 06
    2023–2024
    ENAGEO, Sonatrach group
    internship, then fixed-term contract

    Can you reconstruct a well measurement where it is missing, and predict it in another well?

    Along a borehole, rock properties such as elasticity or density are measured at regular depth intervals. These series have gaps (faulty equipment, lost data) and the measurements are expensive. As an intern, I tested classical models from one well to another and delivered a Java Swing application to geophysicists. On the fixed-term contract, I treated these series as time series, with LSTMs and RNNs: first to fill the gaps within a well, then to predict the same property in another well.

    What did not workDuring the internship, linear regression (r = 0.15) and SVM (0.29) did not generalize from one well to another. And even at 0.82 with LSTMs, the predictions were not yet good enough for the company to use: I left the project in development when I moved to France.

    0.52 → 0.82
    cross-well correlation, from internship (MLP) to contract (LSTM), with MAE down from 21.4 to 15.8
    12.7
    MAE when filling the gaps of a series within the same well (RMSE 15.2)
  7. Exp. 07
    2026
    personal project

    When a human can only annotate two hundred examples, which ones should they get?

    Five selection strategies compared at a fixed budget, on two datasets and two classifiers: twenty independent draws per strategy, paired comparisons and a Wilcoxon test. The sandbox on the page puts you in the annotator's seat.

    NuanceEntropy, the most taught strategy, does worse than random sampling at the start: 0.687 against 0.799 at fifty labels. And on an easy binary problem every strategy converges — active learning only pays off on hard tasks.

    99 %
    of the final accuracy reached with 16% of the labels, against 96% for random sampling of the same size
    Accuracy curves of the five selection strategies
  8. Exp. 08
    2026
    personal project

    Can you open a Transformer and show, head by head, how it gets there?

    A 105,000-parameter model — two layers, two heads — trained in 2.3 minutes on a laptop to find in its context what it should write next, then dissected: each head ablated, its attention signature measured, its contribution quantified. The model runs in the page, with a switch per head.

    What did not workMy first version of the task kept a fixed motif length: a single-layer model solved it at 100% by plain offset, and my negative control controlled nothing. With a random period it falls back to 40%.

    24.7%
    of the copying left when the single “previous token” head is ablated — 99.5% before, 5.5% if the induction layer goes too
    Emergence of in-context copying during training
  9. Exp. 09
    2026
    personal project

    How do you know whether an anomaly detector actually works?

    Twenty days of server metrics, 38 sensors, 9.5% labelled anomalies. A 27,000-parameter convolutional autoencoder against three baselines — one of them a random score — evaluated under both protocols used in the field. The detector runs in the page: draw a signal and watch it react.

    What it changesMeasured honestly, point by point, the autoencoder gains twenty F1 points over the best simple baseline (0.741 against 0.543). The standard protocol cannot show it: it gives almost the same mark to everyone.

    0,963
    F1 obtained by a random detector under the field's most widely used evaluation protocol — better than the autoencoder
    F1 of the four methods under both protocols
  10. Exp. 10
    2026
    personal project

    How far can a language model be shrunk for a low-resource language?

    KabyLLM-nano: 1.6 million parameters, quantised to 8 bits, 2.07 MB in total — the model writes Kabyle in the page, at eight milliseconds per token, with no server and no connection. Tokenizer trained on the language, quantisation cost measured.

    What it is worth1.84 bits per character on validation after 20,000 steps, against 2.09 after 4,200 — and the curve was still falling. At this size the model learns spelling and morphology, not knowledge — and the page says so.

    2 048
    vocabulary entries are enough to segment Kabyle as finely as NLLB-200, which has 256,204
Snow-covered peak under a blue sky, above a small town
Photo: Amar Merabti — December 2021
§ 2

My path, drawn as a well log

My first models predicted well logs. Here is my path drawn the same way: depth is time, and the columns show what I learned and where.

Well MERABTI-1 · Algiers → Paris · 2020–2026Hover or use ↑ ↓ to read a year

Curves: how intensively I used each field, my own estimate. Patterns: education; orange bands: companies.

Text version of the path
  1. 2020Baccalaureate in experimental sciences, with honors (Algeria).
  2. 2020 – 2023BSc in Computer Science, USTHB (Algiers). First games in C with SDL, a library management system in C (year 2), the Aqessar Android chat app, a Flex/Bison compiler, information extraction with Unitex.
  3. Feb – Jun 2023Machine learning internship at ENAGEO (Sonatrach group): bachelor's thesis on predicting geomechanical parameters.
  4. 2023 – 2024First year of an MSc in Intelligent Computer Systems, USTHB, alongside a part-time AI developer contract at ENAGEO: well logs treated as time series with LSTMs, imputation and cross-well prediction (correlation raised to 0.82).
  5. 2024 – 2025MSc year 1 in Data, Knowledge and Intelligence, Université Paris Cité: LLM benchmark, time series imputation, argumentation solver.
  6. 2025 – 2026MSc year 2 (DCI), ranked 1st in my class (16/20): data quality, streaming, temporal extraction. Data scientist internship at Nricher (Feb – Aug 2026), KabyLLM and RL agents.
  7. Oct 2026Next step: a CIFRE PhD or a permanent data scientist role.
§ 3

The workshop

The other projects, from my first games in C to data pipelines. All of them are on GitHub, with a README (in French).

Try two of these projects in the browser →a neural network to tune into a XOR, a debate to settle

16 projects
  • 2026

    Siwel

    Group audio and video calls between phones, including behind restrictive mobile networks, thanks to a self-hosted TURN server.

    Kotlin · WebRTC · Firebase · Node.js Code ↗
  • 2026

    Fishing activity forecasting

    shipd.ai challenge: predicting a vessel's fishing hours 1, 2 and 3 days ahead, on 480,192 rows.

    LightGBM · XGBoost · CatBoost · PyTorch Code ↗
  • 2025–2026

    Real-time e-commerce recommendations

    Events replayed through Kafka, recommendations recomputed after each action, and their relevance measured live.

    Kafka · PySpark · MongoDB · Streamlit Code ↗
  • 2025–2026

    NYC Taxi data quality

    Measure, then repair: completeness, accuracy, consistency and uniqueness, weighted by use case; GPS coordinates rebuilt with the haversine formula.

    pandas · GeoPandas · ydata-profiling Code ↗
  • 2025

    Temporal expression extraction

    HeidelTime versus BERT on historical, medical and tweet corpora: BERT reaches 95.5% F1 on tweets (relaxed match), far from its original domain.

    BERT · HeidelTime · Java Code ↗
  • 2024–2025

    Sentiment on 1.6 million tweets

    A first version in Keras (LSTM), rebuilt a year later with Spark ML and a MySQL database.

    Keras · Spark ML · MySQL Code ↗
  • 2025

    Neural network visualizer

    Build a network with the mouse, set weights and biases, and watch the forward pass neuron by neuron.

    Python · Tkinter Try it →Code ↗
  • 2024–2025

    Abstract argumentation solver

    Complete and stable extensions of a Dung argumentation framework, with credulous and skeptical acceptance.

    Python Try it →Code ↗
  • 2024–2025

    WatchBid

    An auction site for collectible watches: accounts, filterable catalog, listings and bids.

    Flask · SQLAlchemy · Bootstrap Code ↗
  • 2024

    Multiple knapsack

    Depth-first, breadth-first, A*, a genetic algorithm and bee swarm optimization, compared in a Java interface.

    Java · Swing Code ↗
  • 2023

    MiniPy compiler

    Lexical and syntax analysis of a Python-like language, symbol table and quadruple generation.

    C · Flex · Bison Code ↗
  • 2022–2023

    Drugs and dosages with Unitex

    A dictionary built from the Vidal drug database, enriched from context, then rule graphs that spot doses, frequencies and durations.

    Unitex · Python Code ↗
  • 2022

    Aqessar

    An Android chat app with an interface in Kabyle: accounts, invitations, real-time conversations.

    Java · Firebase Code ↗
  • 2022–2023

    Processing sketches

    Snake, minesweeper, pool, the game of life, Langton's ant and fractals.

    Java · Processing Code ↗
  • 2021–2022

    Library management system

    Books, students, loans and penalties, with premium and standard waiting queues written by hand on linked lists.

    C · linked lists · queues Code ↗
  • 2021

    SDL mini-games

    My first graphical programs, self-taught: a shoot 'em up, a snake, pong and mini-golf.

    C++ · SDL 1.2 Code ↗
Large cloud lit by the sunset above a street and a street lamp
Photo: Amar Merabti — February 2021
§ 4

What I'm looking for

From October 2026, two paths interest me equally.

Path 1

A CIFRE PhD

A CIFRE PhD is a three-year doctorate carried out jointly by a company and an academic lab in France. I am looking for a topic where the data itself is the problem: scarce, noisy, incomplete or unreliable. Language models and NLP, tabular, medical or biological data, physics, chemistry: the field matters less to me than the scientific question and its value for the company.

  • A first taste of research in industry: my MSc thesis at Nricher worked on 4 production catalogs.
  • Rigorous protocols: references without manual annotation, ablations, paired tests, calibration.
  • The habit of implementing things myself, from a Transformer to a simulation engine.
Path 2

A permanent data scientist role

I want to join a team that builds models people actually use, and that measures what they are worth before deploying them.

  • End-to-end pipelines: ingestion with Kafka and Spark, modeling, evaluation, application.
  • Two industry experiences with measured results: ENAGEO (0.52 → 0.82) and Nricher (68% automated at 99% precision).
  • Hands-on experience with LLMs, from fine-tuning to benchmarking.
Available: October 2026 Location: anywhere in France, ideally Paris region Languages: French, English, Arabic, Kabyle
§ 5

Azul — hello, in Kabyle.

Kabyle is my native language, and very few digital tools understand it. That is where KabyLLM and Aqessar come from; my very first programs, though, were games in C that I wrote on my own in 2021.

I did my bachelor's degree and the first year of a master's at USTHB, in Algiers, while working for ENAGEO. I then joined Université Paris Cité for the DCI master's, which I finished ranked first in my class.

Away from models: football, music and photography. The photos on this site are mine.

Languages
Kabyle (native)
French, English (fluent)
Arabic (proficient)
Everyday tools
Python, PyTorch, Transformers
scikit-learn, pandas
Kafka, Spark, MongoDB, SQL
Java, C/C++, LaTeX
Online
github.com/MerabtiAmar
LinkedIn
Contact

A PhD topic, a role, a question about a project?

merabtiamar91@gmail.com