Downloads · 30 days
37
19% of all-time downloads
arun11karthik/cellsense-fim-0.5b
cellsense-fim-0.5b is a text generation model from arun11karthik. Use it when you need the model to write or continue text. It is set up for transformers. The card lists the license as apache-2.0.
<p align="center" <img src="icon.png" alt="CellSense" width="180" height="180" / </p
Downloads · 30 days
37
19% of all-time downloads
All-time downloads
192
Public
Parameters
494M
1000 MB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors988 MB · 99%
From the Hugging Face model README
CellSense-FIM 0.5B is the smallest member of the CellSense-FIM model family — a set of
long-context, fill-in-the-middle (FIM) code-completion models built specifically for Jupyter
notebooks. It is fine-tuned from Qwen/Qwen2.5-Coder-0.5B
on the (private) CellSense FIM dataset and supports a 32K-token context window.
Unlike general code models that treat a notebook as a flat file, CellSense-FIM models are trained on a more detailed context, that actually matters when you complete a cell:
The models are best paired with the CellSense Jupyter Lab Plugin, which assembles repository, local-import, and task context into the exact format the model was trained on — so the model consumes it natively with no prompt engineering on your part.
| Model | Base | Params | Context |
|---|---|---|---|
| CellSense-FIM 0.5B (this model) | Qwen2.5-Coder-0.5B | 0.5B | 32K |
| CellSense-FIM 1.5B | Qwen2.5-Coder-1.5B | 1.5B | 32K |
| CellSense-FIM 3B | Qwen2.5-Coder-3B | 3B | 32K |
| CellSense-FIM 7B | Qwen2.5-Coder-7B | 7B | 32K |
Evaluated on the held-out test split of the CellSense FIM dataset. CellSense-FIM is compared against its base model
(Qwen2.5-Coder-0.5B) and a same-size general model (Qwen3-0.6B).

Fine-tuning on notebook-native FIM context yields large gains on the metrics that track real completion quality — edit similarity (0.11 → 0.64) and BLEU (4.7 → 43.1) — while keeping token accuracy strong. At 0.5B, CodeBLEU stays close to the base model; the larger family members improve it outright.
| Model | Bits per Byte ↓ |
|---|---|
| Qwen2.5-Coder-0.5B (base) | 0.305 |
| Qwen3-0.6B (base) | 1.082 |
| CellSense-FIM 0.5B (ours) | 0.254 |
The model uses the Qwen2.5-Coder FIM sentinels. For a single-file completion:
<|fim_prefix|>{code before the cursor}<|fim_suffix|>{code after the cursor}<|fim_middle|>
For repository / local-import-aware completion, prepend the relevant files before the FIM block:
<|repo_name|>{repo}<|file_sep|>{path/to/helper.py}
{contents of helper.py}
<|file_sep|>{path/to/notebook_cell}
<|fim_prefix|>{prefix}<|fim_suffix|>{suffix}<|fim_middle|>
💡 In practice you don't assemble this by hand — the CellSense JupyterLab plugin builds the repository-, import-, and task-aware context and emits exactly this format (see Serving with vLLM + CellSense below).
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "arun11karthik/cellsense-fim-0.5b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
prefix = "import pandas as pd\ndf = pd.read_csv('data.csv')\n"
suffix = "\ndf.head()\n"
prompt = f"<|fim_prefix|>{prefix}<|fim_suffix|>{suffix}<|fim_middle|>"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
out = model.generate(**inputs, max_new_tokens=128, do_sample=False)
print(tokenizer.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True))
The intended way to use this model is to serve it with vLLM and point the CellSense JupyterLab plugin at the server over its OpenAI-compatible API. CellSense handles all of the repository-, import-, and task-aware context assembly and the FIM prompt formatting for you.
vLLM exposes an OpenAI-compatible endpoint, which is exactly what CellSense's openai_compatible
provider expects:
pip install vllm
vllm serve arun11karthik/cellsense-fim-0.5b \
--served-model-name cellsense-fim-0.5b \
--max-model-len 32768 \
--port 8000
This serves the API at http://localhost:8000/v1.
In the CellSense settings panel (left sidebar in JupyterLab), open Basic Settings and configure the OpenAI Compatible provider:
| Setting | Value |
|---|---|
| Provider | OpenAI Compatible |
| Base URL | http://localhost:8000/v1 |
| API Key | any non-empty string (vLLM ignores it, e.g. EMPTY) |
| Model | cellsense-fim-0.5b (must match --served-model-name) |
| Model Family | qwen2.5-coder |
Click Save & Apply, then start typing in a notebook cell — ghost-text completions from your local model appear inline. Press Tab to accept.
🌐 The same setup works for a remote vLLM server: serve the model on your GPU box, expose port
8000, and set CellSense's Base URL tohttp://<host>:8000/v1.
To confirm the endpoint works before wiring up CellSense, query it directly with the FIM prompt:
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "cellsense-fim-0.5b",
"prompt": "<|fim_prefix|>import pandas as pd\ndf = pd.read_csv(\"data.csv\")\n<|fim_suffix|>\ndf.head()\n<|fim_middle|>",
"max_tokens": 128,
"temperature": 0.0
}'
For fully local, no-GPU-required inference, GGUF builds are published at
arun11karthik/cellsense-fim-0.5b-GGUF.
Ollama can pull and run these directly from the Hugging Face Hub — no manual download or Modelfile
required. This is the recommended path for running CellSense entirely on your own machine: with Ollama,
no code or context ever leaves your computer.
| Quantization | Size (approx.) | Notes | Pull with |
|---|---|---|---|
Q5_K_M | ~420 MB | Good quality / size trade-off | ollama run hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q5_K_M |
Q8_0 | ~531 MB | Near-lossless 8-bit quantization | ollama run hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q8_0 |
BF16 | ~994 MB | Full bfloat16 precision — highest quality (recommended) | ollama run hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:BF16 |
Install Ollama, then pull a quantization (this also registers the model so CellSense can use it):
ollama pull hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q5_K_M
By default Ollama serves its API at http://localhost:11434. The model name as it appears in
ollama list — hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q5_K_M — is what you'll enter into
CellSense below.
pip install jupyterlab-cellsense
jupyter lab
See the CellSense repository for full installation options.
Open the CellSense panel from the left sidebar in JupyterLab, go to Basic Settings, and configure the Ollama provider:
| Setting | Value |
|---|---|
| Provider | Ollama |
| Base URL | http://localhost:11434 |
| Model Family | cellsense |
| Model | hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q5_K_M (must match the tag in ollama list) |
✅ Set Model Family to
cellsense. CellSense now ships first-class support for the CellSense-FIM models, so the plugin builds prompts in exactly the repository-, import-, and task-aware FIM format these models were trained on — no extra configuration needed.
Click Save & Apply, then start typing in a notebook cell — ghost-text completions from your local model appear inline. Press Tab to accept.
To confirm Ollama is serving the model with the correct FIM format before wiring up CellSense, query it directly:
curl http://localhost:11434/api/generate -d '{
"model": "hf.co/arun11karthik/cellsense-fim-0.5b-GGUF:Q5_K_M",
"prompt": "<|fim_prefix|>import pandas as pd\ndf = pd.read_csv(\"data.csv\")\n<|fim_suffix|>\ndf.head()\n<|fim_middle|>",
"stream": false,
"options": { "temperature": 0.0, "num_predict": 128 }
}'
Qwen/Qwen2.5-Coder-0.5BCellSense-FIM was fine-tuned on a private corpus of fill-in-the-middle examples mined from Jupyter notebooks. The dataset is kept private as a precaution: PII masking was applied across the corpus and more rigororusly verified on the sampled subset used for training, but full masking across the entire source corpus has only been preliminarily checked and is not guaranteed.
As with any model trained on scraped code, this model may reproduce content from its training data, including any imperfectly masked sensitive strings. If you observe any leakage, please report it via the project's issue tracker (see the GitHub link above).
The finetuned weights are released under the GNU 3.0 License, whereas the base model was released under the Apache 2.0 license.
@misc{cellsense-fim,
title = {CellSense-FIM: Notebook-Native Fill-in-the-Middle Code Completion},
author = {Arun Karthik},
year = {2026},
howpublished = {\url{https://huggingface.co/arun11karthik/cellsense-fim-0.5b}}
}