From c3665da1fbb75b526b6008656e03059557db6123 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 8 Sep 2026 09:32:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: arun11karthik/cellsense-fim-3b Source: Original Platform --- .gitattributes | 37 +++++ README.md | 308 +++++++++++++++++++++++++++++++++++++++++ benchmarks.png | Bin 0 -> 82349 bytes chat_template.jinja | 54 ++++++++ config.json | 69 +++++++++ generation_config.json | 7 + icon.png | 3 + model.safetensors | 3 + tokenizer.json | 3 + tokenizer_config.json | 30 ++++ 10 files changed, 514 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 benchmarks.png create mode 100644 chat_template.jinja create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 icon.png create mode 100644 model.safetensors create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..88a0957 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text +icon.png filter=lfs diff=lfs merge=lfs -text diff --git a/README.md b/README.md new file mode 100644 index 0000000..f857555 --- /dev/null +++ b/README.md @@ -0,0 +1,308 @@ +--- +license: apache-2.0 +library_name: transformers +pipeline_tag: text-generation +base_model: +- Qwen/Qwen2.5-Coder-3B +language: +- code +tags: +- cellsense +- fim +- fill-in-the-middle +- code-completion +- jupyter +- notebook +- code +- qwen2 +model-index: +- name: cellsense-fim-3b + results: + - task: + type: text-generation + name: Fill-in-the-Middle Code Completion + dataset: + name: CellSense Jupyter FIM (private) + type: cellsense-fim-large + split: test + metrics: + - type: edit_similarity + value: 0.728 + name: Edit Similarity + - type: bleu + value: 53.35 + name: BLEU + - type: codebleu + value: 0.454 + name: CodeBLEU + - type: token_accuracy + value: 0.902 + name: Token Accuracy + - type: bits_per_byte + value: 0.182 + name: Bits per Byte +--- + +

+ CellSense +

+ +# CellSense-FIM 3B + + +[![Hugging Face Space](https://img.shields.io/badge/Hugging%20Face-CellSense--FIM-FFD21E?logo=huggingface&logoColor=black)](https://huggingface.co/spaces/arun11karthik/cellsense-fim) +[![GitHub](https://img.shields.io/badge/GitHub-CellSense-181717?logo=github)](https://github.com/arunkarthik11/cellsense) +[![PyPI](https://img.shields.io/pypi/v/PACKAGE?logo=pypi&label=pip%20install)](https://pypi.org/project/jupyterlab-cellsense/) + +**CellSense-FIM 3B** is a 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-3B`](https://huggingface.co/Qwen/Qwen2.5-Coder-3B) +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: + +- **🗂️ Repository-aware** — the model is trained with surrounding files from the same repository in + context, so completions respect helpers, constants, and conventions defined elsewhere in the project. +- **🔗 Local-import-aware** — when your notebook imports from a sibling module, the relevant source and signatures are + pulled into context, so the model completes calls to *your* code with the right signatures, not a + plausible guess. +- **🎯 Task-aware** — the files you have been reading and editing are almost always the most relevant to + what you are working on right now. The context conditions on this context, so completions reflect where + your attention has actually been — not just what happens to be open in the active tab. + +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 family + +| Model | Base | Params | Context | +|-------|------|:------:|:-------:| +| CellSense-FIM 0.5B | Qwen2.5-Coder-0.5B | 0.5B | 32K | +| CellSense-FIM 1.5B | Qwen2.5-Coder-1.5B | 1.5B | 32K | +| **CellSense-FIM 3B** (this model) | Qwen2.5-Coder-3B | 3B | 32K | +| CellSense-FIM 7B | Qwen2.5-Coder-7B | 7B | 32K | + +## Evaluation + +Evaluated on the held-out `test` split of the CellSense FIM dataset. CellSense-FIM is compared against its base model +(`Qwen2.5-Coder-3B`) and a same-size general model (`Qwen3-4B`). + +![FIM completion-quality benchmarks](./benchmarks.png) + +Fine-tuning on notebook-native FIM context yields large gains on the metrics that track *real completion +quality* — **edit similarity (0.09 → 0.73)** and **BLEU (4.9 → 53.3)** — while improving token accuracy +and CodeBLEU outright over the base model. + +### Likelihood metric — Bits per Byte (lower is better) + +| Model | Bits per Byte ↓ | +|-------|:---------------:| +| Qwen2.5-Coder-3B (base) | 0.250 | +| Qwen3-4B (base) | 1.052 | +| **CellSense-FIM 3B (ours)** | **0.182** | + +## Usage + +### Prompt format (FIM) + +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](#serving-with-vllm--cellsense) below). + +### Transformers + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer + +model_id = "arun11karthik/cellsense-fim-3b" +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)) +``` + +## Serving with vLLM + CellSense + +The intended way to use this model is to serve it with vLLM and point the +[**CellSense JupyterLab plugin**](https://github.com/arunkarthik11/CellSense) 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. + +### 1. Serve the model with vLLM + +vLLM exposes an OpenAI-compatible endpoint, which is exactly what CellSense's `openai_compatible` +provider expects: + +```bash +pip install vllm + +vllm serve arun11karthik/cellsense-fim-3b \ + --served-model-name cellsense-fim-3b \ + --max-model-len 32768 \ + --port 8000 +``` + +This serves the API at `http://localhost:8000/v1`. + +### 2. Point CellSense at the vLLM server + +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-3b` (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** to `http://:8000/v1`. + +### Raw API check (optional) + +To confirm the endpoint works before wiring up CellSense, query it directly with the FIM prompt: + +```bash +curl http://localhost:8000/v1/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "cellsense-fim-3b", + "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 + }' +``` + +## Ollama + +For fully local, no-GPU-required inference, GGUF builds are published at +[**`arun11karthik/cellsense-fim-3b-GGUF`**](https://huggingface.co/arun11karthik/cellsense-fim-3b-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.** + +### Available quantizations + +| Quantization | Size (approx.) | Notes | Pull with | +|--------------|:--------------:|-------|-----------| +| `Q5_K_M` | 2.2 GB | Good quality / size trade-off | `ollama run hf.co/arun11karthik/cellsense-fim-3b-GGUF:Q5_K_M` | +| `Q8_0` | 3.3 GB | Near-lossless 8-bit quantization | `ollama run hf.co/arun11karthik/cellsense-fim-3b-GGUF:Q8_0` | +| `BF16` | 6.2 GB | Full bfloat16 precision — highest quality (recommended) | `ollama run hf.co/arun11karthik/cellsense-fim-3b-GGUF:BF16` | + +### 1. Install Ollama and pull the model + +Install [Ollama](https://ollama.com), then pull a quantization (this also registers the model so +CellSense can use it): + +```bash +ollama pull hf.co/arun11karthik/cellsense-fim-3b-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-3b-GGUF:Q5_K_M` — is what you'll enter into +CellSense below. + +### 2. Install the CellSense JupyterLab plugin + +```bash +pip install jupyterlab-cellsense +jupyter lab +``` + +See the [CellSense repository](https://github.com/arunkarthik11/CellSense) for full installation +options. + +### 3. Point CellSense at your local Ollama model + +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-3b-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. + +### Raw API check (optional) + +To confirm Ollama is serving the model with the correct FIM format before wiring up CellSense, query it +directly: + +```bash +curl http://localhost:11434/api/generate -d '{ + "model": "hf.co/arun11karthik/cellsense-fim-3b-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 } +}' +``` + +## Training + +- **Base model:** `Qwen/Qwen2.5-Coder-3B` +- **Dataset:** the private **CellSense FIM** dataset — repository-, local-import-, and task-aware FIM examples mined from Jupyter notebooks +- **Objective:** fill-in-the-middle (FIM) code completion +- **Context length:** 32,768 tokens +- **Checkpoint:** best-validation checkpoint + +## Training data & privacy + +CellSense-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). + +## License + +The finetuned weights are released under the GNU 3.0 License, whereas the base model was released under the Apache 2.0 license. + +## Citation + +```bibtex +@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-3b}} +} +``` diff --git a/benchmarks.png b/benchmarks.png new file mode 100644 index 0000000000000000000000000000000000000000..93a18bd1c8f5e1ffd068e7cb7ebf8a9577a1768a GIT binary patch literal 82349 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\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are a helpful assistant.' }} + {%- endif %} + {{- "\n\n# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0]['role'] == 'system' %} + {{- '<|im_start|>system\n' + messages[0]['content'] + '<|im_end|>\n' }} + {%- else %} + {{- '<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- for message in messages %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) or (message.role == "assistant" and not message.tool_calls) %} + {{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {{- '<|im_start|>' + message.role }} + {%- if message.content %} + {{- '\n' + message.content }} + {%- endif %} + {%- for tool_call in message.tool_calls %} + {%- if tool_call.function is defined %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {{- tool_call.arguments | tojson }} + {{- '}\n' }} + {%- endfor %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if (loop.index0 == 0) or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- message.content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} +{%- endif %} diff --git a/config.json b/config.json new file mode 100644 index 0000000..5eca012 --- /dev/null +++ b/config.json @@ -0,0 +1,69 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151643, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 11008, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 32768, + "max_window_layers": 36, + "model_type": "qwen2", + "num_attention_heads": 16, + "num_hidden_layers": 36, + "num_key_value_heads": 2, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "5.12.1", + "use_cache": false, + "use_sliding_window": false, + "vocab_size": 151936 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..4639464 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,7 @@ +{ + "bos_token_id": 151643, + "do_sample": false, + "eos_token_id": 151643, + "max_new_tokens": 2048, + "transformers_version": "5.12.1" +} diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..3eb012a --- /dev/null +++ b/icon.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d76b72e1f3a1c165377900dbd23fa3ff15f31797cfff0c827839b03f032f3ed4 +size 116278 diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..f6b3dac --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fab6a6f994f309a795b06a9c44fcb59d2cc54d2f8fd58952d9f57da09c726e03 +size 6171927112 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..34510ff --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd169731d2cbde95e10bf356d66d5997fd885dd8dbb6fb4684da3f23b2585d8 +size 11421892 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..8198d19 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,30 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|endoftext|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 32768, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}