From 30280fedb0d2d151c408188ca3afcec0626a0df5 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 8 Sep 2026 08:45:15 +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-7b Source: Original Platform --- .gitattributes | 37 +++++ README.md | 308 +++++++++++++++++++++++++++++++++++++++++ benchmarks.png | Bin 0 -> 83469 bytes chat_template.jinja | 54 ++++++++ config.json | 61 ++++++++ generation_config.json | 6 + icon.png | 3 + model.safetensors | 3 + tokenizer.json | 3 + tokenizer_config.json | 30 ++++ 10 files changed, 505 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..d7842f7 --- /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-7B +language: +- code +tags: +- cellsense +- fim +- fill-in-the-middle +- code-completion +- jupyter +- notebook +- code +- qwen2 +model-index: +- name: cellsense-fim-7b + 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.741 + name: Edit Similarity + - type: bleu + value: 56.99 + name: BLEU + - type: codebleu + value: 0.486 + name: CodeBLEU + - type: token_accuracy + value: 0.908 + name: Token Accuracy + - type: bits_per_byte + value: 0.169 + name: Bits per Byte +--- + +

+ CellSense +

+ +# CellSense-FIM 7B + + +[![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 7B** is the largest 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-7B`](https://huggingface.co/Qwen/Qwen2.5-Coder-7B) +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 | Qwen2.5-Coder-3B | 3B | 32K | +| **CellSense-FIM 7B** (this model) | 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-7B`) and a same-size general model (`Qwen3-8B`). + +![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.07 → 0.74)** and **BLEU (4.9 → 57.0)** — while improving token accuracy +and CodeBLEU outright over the base model. At 7B, CellSense-FIM posts the strongest scores in the family. + +### Likelihood metric — Bits per Byte (lower is better) + +| Model | Bits per Byte ↓ | +|-------|:---------------:| +| Qwen2.5-Coder-7B (base) | 0.234 | +| Qwen3-8B (base) | 1.042 | +| **CellSense-FIM 7B (ours)** | **0.169** | + +## 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-7b" +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-7b \ + --served-model-name cellsense-fim-7b \ + --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-7b` (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-7b", + "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-7b-GGUF`**](https://huggingface.co/arun11karthik/cellsense-fim-7b-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` | 5.4 GB | Good quality / size trade-off | `ollama run hf.co/arun11karthik/cellsense-fim-7b-GGUF:Q5_K_M` | +| `Q8_0` | 8.1 GB | Near-lossless 8-bit quantization (recommended) | `ollama run hf.co/arun11karthik/cellsense-fim-7b-GGUF:Q8_0` | +| `BF16` | 15.2 GB | Full bfloat16 precision — highest quality | `ollama run hf.co/arun11karthik/cellsense-fim-7b-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-7b-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-7b-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-7b-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-7b-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-7B` +- **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-7b}} +} +``` diff --git a/benchmarks.png b/benchmarks.png new file mode 100644 index 0000000000000000000000000000000000000000..c746297a6dd496763a10ebc540483b770dc88995 GIT binary patch literal 83469 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 literal 0 HcmV?d00001 diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..bdf7919 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,54 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0]['role'] == 'system' %} + {{- messages[0]['content'] }} + {%- else %} + {{- 'You are Qwen, created by Alibaba Cloud. 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 Qwen, created by Alibaba Cloud. You 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..79a73de --- /dev/null +++ b/config.json @@ -0,0 +1,61 @@ +{ + "architectures": [ + "Qwen2ForCausalLM" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151643, + "hidden_act": "silu", + "hidden_size": 3584, + "initializer_range": 0.02, + "intermediate_size": 18944, + "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" + ], + "max_position_embeddings": 32768, + "max_window_layers": 28, + "model_type": "qwen2", + "num_attention_heads": 28, + "num_hidden_layers": 28, + "num_key_value_heads": 4, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000.0, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": false, + "transformers_version": "5.5.0", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 152064 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..201c30b --- /dev/null +++ b/generation_config.json @@ -0,0 +1,6 @@ +{ + "bos_token_id": 151643, + "eos_token_id": 151643, + "max_new_tokens": 2048, + "transformers_version": "5.5.0" +} 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..64721d4 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fae7f282eb77dbbb70db01636155bdf85f7143ce5590575fecb79fc1d204594 +size 15231272152 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..1d7642b --- /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": true, + "local_files_only": false, + "model_max_length": 32768, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +}