Instructions to use kashif/DeepConf with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use kashif/DeepConf with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="kashif/DeepConf")# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("kashif/DeepConf", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use kashif/DeepConf with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "kashif/DeepConf" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kashif/DeepConf", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/kashif/DeepConf
- SGLang
How to use kashif/DeepConf with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "kashif/DeepConf" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kashif/DeepConf", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "kashif/DeepConf" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "kashif/DeepConf", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use kashif/DeepConf with Docker Model Runner:
docker model run hf.co/kashif/DeepConf
| library_name: transformers | |
| license: apache-2.0 | |
| pipeline_tag: text-generation | |
| tags: | |
| - custom_generate | |
| - sampling | |
| # DeepCONF Custom Generation Strategy | |
| This repository implements the DeepCONF (Deep Confidence-based Early Stopping) generation strategy for Hugging Face Transformers models, as presented in the paper [Deep Think with Confidence](https://huggingface.co/papers/2508.15260). | |
| - **Project Page:** [https://jiaweizzhao.github.io/deepconf](https://jiaweizzhao.github.io/deepconf) | |
| - **GitHub Repository:** [https://github.com/facebookresearch/deepconf](https://github.com/facebookresearch/deepconf) | |
| ## Overview | |
| DeepConf leverages model-internal confidence signals to dynamically filter out low-quality reasoning traces during or after generation. It monitors the confidence of generated tokens and stops generation when confidence falls below a threshold. The confidence is calculated as the negative mean log probability of the top-k tokens from the full vocabulary (before sampling/filtering is applied), following the methodology from the official implementation. It requires no additional model training or hyperparameter tuning and can be seamlessly integrated into existing serving frameworks. | |
| ## Parameters | |
| - `enable_conf` (bool): Whether to enable the DeepCONF strategy. Defaults to `False`. | |
| - `enable_early_stopping` (bool): Whether to apply early stopping during generation (online mode) or just track confidences for post-processing (batch mode). Defaults to `True`. | |
| - `window_size` (int): Size of the sliding window for confidence calculation. Defaults to `2048`. | |
| - `threshold` (float): Confidence threshold for early stopping. Defaults to `17.0`. | |
| - `conf_topk` (int): Number of top tokens to use for confidence calculation from the full vocabulary. Defaults to `20`. | |
| - `output_confidences` (bool): If `True` and `return_dict_in_generate=True`, returns a per-step confidence tensor alongside generated sequences for debugging/visualization. | |
| - `deepconf_variant` (str): Optional variant for automatic threshold calibration (`"low"` or `"high"`). Requires `deepconf_warmup_confidences`. | |
| - `deepconf_warmup_confidences` (list/tensor): Warmup confidence values for threshold calibration. Used with `deepconf_variant`. | |
| - `deepconf_eta` (float): Optional override for eta value in threshold calculation (defaults: 0.1 for low, 0.9 for high). | |
| ## Usage | |
| ### Basic Usage | |
| To use this custom generation strategy, you can pass it directly to the `generate` method: | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig | |
| # Load model and tokenizer | |
| model = AutoModelForCausalLM.from_pretrained( | |
| "your-model", | |
| torch_dtype="auto", | |
| device_map="auto" | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained("your-model") | |
| # Prepare your prompt | |
| question = "What is the square root of 144?" | |
| messages = [{"role": "user", "content": question}] | |
| prompt = tokenizer.apply_chat_template( | |
| messages, | |
| tokenize=False, | |
| add_generation_prompt=True | |
| ) | |
| inputs = tokenizer(prompt, return_tensors="pt").to(model.device) | |
| # Configure generation with DeepCONF | |
| gen_config = GenerationConfig( | |
| do_sample=True, | |
| temperature=0.7, | |
| top_p=0.95, | |
| max_new_tokens=512, | |
| enable_conf=True, # Enable DeepCONF | |
| window_size=2048, # Sliding window size | |
| threshold=17.0, # Confidence threshold | |
| conf_topk=20, # Top-k for confidence (default: 20) | |
| output_confidences=True, # Return confidence scores | |
| return_dict_in_generate=True, # Required for confidence output | |
| ) | |
| # Generate with DeepCONF (Hub repo) | |
| outputs = model.generate( | |
| **inputs, | |
| generation_config=gen_config, | |
| custom_generate="kashif/DeepConf", # Hugging Face Hub repo | |
| trust_remote_code=True | |
| ) | |
| # Access results | |
| generated_text = tokenizer.decode(outputs.sequences[0], skip_special_tokens=True) | |
| print(f"Generated: {generated_text}") | |
| # Access per-step confidences if requested | |
| if hasattr(outputs, 'confidences'): | |
| confidences = outputs.confidences # Shape: (batch_size, num_generated_tokens) | |
| print(f"Min confidence: {confidences.min().item():.3f}") | |
| print(f"Mean confidence: {confidences.mean().item():.3f}") | |
| ``` | |
| ### Calibration (DeepConf-low/high) | |
| DeepConf's online stopping threshold can be automatically derived from a warmup phase. This allows you to calibrate the threshold based on actual model behavior. | |
| **Step 1: Warmup Phase** - Generate multiple sequences and collect their minimum confidences: | |
| ```python | |
| from transformers import GenerationConfig | |
| # Configure warmup generation | |
| warmup_cfg = GenerationConfig( | |
| do_sample=True, | |
| temperature=0.7, | |
| top_p=0.95, | |
| max_new_tokens=256, | |
| enable_conf=True, # Enable confidence tracking | |
| return_dict_in_generate=True, | |
| output_confidences=True, | |
| num_return_sequences=8, # Generate 8 warmup sequences | |
| ) | |
| # Generate warmup sequences | |
| warmup_out = model.generate( | |
| **inputs, | |
| generation_config=warmup_cfg, | |
| custom_generate="kashif/DeepConf", | |
| trust_remote_code=True, | |
| ) | |
| # Extract minimum confidence per sequence (C_t = min over all steps) | |
| warmup_C = warmup_out.confidences.min(dim=1).values.tolist() | |
| print(f"Warmup min confidences: {warmup_C}") | |
| ``` | |
| **Step 2: Production Generation** - Use warmup confidences to auto-derive threshold: | |
| ```python | |
| # Configure production generation with calibrated threshold | |
| gen_cfg = GenerationConfig( | |
| do_sample=True, | |
| max_new_tokens=512, | |
| enable_conf=True, | |
| return_dict_in_generate=True, | |
| output_confidences=True, | |
| # Automatic threshold calibration | |
| deepconf_variant="low", # "low" (aggressive) or "high" (permissive) | |
| deepconf_warmup_confidences=warmup_C, # Pass warmup confidences | |
| ) | |
| # Generate with calibrated threshold | |
| outputs = model.generate( | |
| **inputs, | |
| generation_config=gen_cfg, | |
| custom_generate="kashif/DeepConf", | |
| trust_remote_code=True, | |
| ) | |
| ``` | |
| ## Technical Details | |
| ### Confidence Calculation | |
| The confidence score for each generated token is calculated as follows: | |
| 1. **Extract top-k tokens**: Get the top-k (default: 20) tokens with highest probabilities from the full vocabulary. | |
| 2. **Compute log probabilities**: Calculate log probabilities for these top-k tokens. | |
| 3. **Average**: The confidence score is `-mean(log_probs)` of the top-k tokens. | |
| ### Online Stopping | |
| The online method uses a sliding window of confidence scores: | |
| - Maintains a window of the last `window_size` (default: 2048) confidence scores. | |
| - Calculates the mean confidence over this window. | |
| - Stops generation when: `mean_confidence < threshold`. | |
| ## Requirements | |
| - PyTorch >= 1.13.0 | |
| - Transformers >= 4.35.0 | |
| ## Citation | |
| ```bibtex | |
| @article{fu2025deep, | |
| title={Deep think with confidence}, | |
| author={Fu, Yichao and Wang, Xuewei and Tian, Yuandong and Zhao, Jiawei}, | |
| journal={arXiv preprint arXiv:2508.15260}, | |
| year={2025} | |
| } | |
| ``` |