Khalid Salman

Khalid Salman

AI Research Engineer

I work across the full machine learning lifecycle: data pipelines, distributed training and finetuning, evaluation, and models running in production. I train and finetune language models, and I build the systems that decide whether one is ready for real users: the infrastructure that serves it, and the evaluation harness that measures whether it behaves as intended. What I find most interesting is the practical side of model safety, getting a model to stay reliably inside the behaviour you specified, and being able to prove it before a failure reaches anyone.

Competitive programmer and side-project maniac by night. I built a dual RTX 5090 workstation so the experiments can run at home.

Work

Aveni — AI Research Engineer

Aug 2022 – present · Edinburgh (remote)
  • Work across the full machine learning lifecycle, from data pipelines through model training to models running in production.
  • Contributed to building the model serving infrastructure.
  • Contributed to building the evaluation framework.
  • Mentor junior engineers, author technical design docs, and contribute to technical strategy.

Profusion — Data Science Intern

Jun – Aug 2022 · London
  • Built an LSTM time-series model for inventory optimisation, owning preprocessing, visualisation and modelling end to end. The client adopted it.

249Startups — Software Engineer

Oct 2020 – Sep 2021 · Khartoum
  • Built full-stack tools for local startups, and prototyped a points-based communication platform that was adopted as one of the company's core products.

Toolkit. PyTorch · Hugging Face · vLLM · FSDP-v2 / DeepSpeed ZeRO · LoRA / QLoRA · DPO / GRPO · Axolotl · MLflow / Weights & Biases · AWS (SageMaker, Lambda, Bedrock) · Terraform · SLURM · Docker · Python · C++ · familiar with JAX

Education

Selected projects

Speech gender and number identification

A multi-task ResNet-34 that wakes on the trigger word "on", then classifies the speaker's gender and the digit (1–9) they spoke. Trigger-word detection trained on SpeechCommands, the classification heads on Speech-MNIST.

Repository →

Super-resolution output from the SRCNN model

SRCNN — super resolution

A PyTorch implementation of the SRCNN super-resolution model from Dong et al. (2015), alongside a critical analysis of how later state-of-the-art approaches attack the same problem.

Repository →

Pommerman agent (MCTS + rules)

A hybrid agent for Pommerman combining rule-based play with Monte Carlo tree search. Against the framework's strongest built-in agent it wins 48.2% and draws 25% — it plays for power-ups and survival, so it reaches the endgame as the strongest player.

Repository →

Deep Q-network — Atari Breakout

A deep Q-network trained with Q-learning to play Atari Breakout from pixels, built to work through value-based reinforcement learning hands-on.

Repository →

Pong on bare metal, in assembly

Pong written entirely in NASM assembly and booted in a virtual machine with no operating system, so the code handles keyboard interrupts and draws to the screen itself. Two-player and one-player modes.

Repository →

Lazy Restaurant

A small Unity game built as an excuse to compare search algorithms (BFS, DFS and A*) on a live grid. The shipped version routes the waiter with BFS.

Community & competitions

Get in touch

Happy to talk about LLM training, distillation, evaluation, or how any of the projects above were built.