โ˜• LeetCode Java Coder

Qwen2.5-Coder-7B fine-tuned to solve LeetCode problems in Java

Hugging Face Dataset GGUF License Base Model Ollama vLLM TGI

Part of the LeetCode Multi-Language Coder Suite โ€” 4 language specialists, one base model


TL;DR

Given a LeetCode-style problem statement and an algorithm tag, generates a working Java solution.

PROBLEM:   Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.
ALGORITHM: Hash Map
OUTPUT (Java):
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> seen = new HashMap<>();
        for (int i = 0; i < nums.length; i++) {
            if (seen.containsKey(target - nums[i])) {
                return new int[]{seen.get(target - nums[i]), i};
            }
            seen.put(nums[i], i);
        }
        return new int[]{};
    }
}
Base model unsloth/Qwen2.5-Coder-7B-Instruct
Method QLoRA, 4-bit NF4, rank 16
Training data leetcode-java-sft
Weights here LoRA adapter only (~160MB) โ€” load on top of the base model
GGUF build leetcode-java-qwen25-coder-7b-GGUF โ€” q4_k_m / q5_k_m / q8_0
License Apache 2.0

Benchmarks (free, reproducible)

Run benchmark_suite.py from the deployment kit to reproduce. All numbers are pass@1 unless noted.

Benchmark Language Pass@1 Pass@10 Notes
HumanEval-X Java run benchmark_suite.py run benchmark_suite.py 164 problems, execution-verified
MultiPL-E (HumanEval subset) Java run benchmark_suite.py โ€” cross-check vs HumanEval-X
Held-out LeetCode test split Java run benchmark_suite.py โ€” from leetcode-java-sft test split, exact I/O match
Tokens/sec (fp16, A40) Java โ€” โ€” latency benchmark, see script
Tokens/sec (GGUF q4_k_m, CPU) Java โ€” โ€” latency benchmark, see script

Numbers are intentionally left blank in this template โ€” benchmark_suite.py fills a results/leetcode-java-qwen25-coder-7b.json file and this table should be regenerated from it (see deployment kit README).


Intended use

Drop-in solution generator for Java coding-practice tools, interview-prep apps, and automated code-review sandboxes for algorithmic problems.

Direct use

Give a problem statement (+ optional algorithm hint), get back a Java function/class implementing it.

Downstream use

Feed output into an automated grader (run against test cases), a code-review bot, or a practice-app "show solution" feature.

Out of scope

  • Production system design or non-algorithmic code (this model specializes narrowly on LeetCode-style problems)
  • Security-critical code without human review
  • Guaranteed-optimal complexity โ€” treat output as a strong first draft, not a proof

Quickstart

Option A โ€” Transformers + PEFT

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch

base_model = "unsloth/Qwen2.5-Coder-7B-Instruct"
adapter    = "AmareshHebbar/leetcode-java-qwen25-coder-7b"

tokenizer = AutoTokenizer.from_pretrained("AmareshHebbar/leetcode-java-qwen25-coder-7b")
model = AutoModelForCausalLM.from_pretrained(
    base_model,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)
model = PeftModel.from_pretrained(model, adapter)

messages = [
    {"role": "system", "content": "You are an expert Java competitive programmer. Given a LeetCode-style problem statement and an algorithm tag, write a correct, efficient Java solution."},
    {"role": "user", "content": "Problem: Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.\nAlgorithm: Hash Map"},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True).to(model.device)
outputs = model.generate(inputs, max_new_tokens=512, temperature=0.2, do_sample=True)
print(tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True))

Option B โ€” Unsloth (2x faster load + inference)

from unsloth import FastLanguageModel

model, tokenizer = FastLanguageModel.from_pretrained(
    model_name="AmareshHebbar/leetcode-java-qwen25-coder-7b",
    max_seq_length=2048,
    load_in_4bit=True,
)
FastLanguageModel.for_inference(model)

messages = [
    {"role": "system", "content": "You are an expert Java competitive programmer. Given a LeetCode-style problem statement and an algorithm tag, write a correct, efficient Java solution."},
    {"role": "user", "content": "Problem: Given a string s, find the length of the longest substring without repeating characters.\nAlgorithm: two pointers / sliding window"},
]
prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, temperature=0.2, do_sample=True)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))

Option C โ€” vLLM (production serving, OpenAI-compatible) {#vllm}

vllm serve unsloth/Qwen2.5-Coder-7B-Instruct \
    --enable-lora \
    --lora-modules leetcode-java-qwen25-coder-7b=AmareshHebbar/leetcode-java-qwen25-coder-7b \
    --host 0.0.0.0 --port 8000 --dtype bfloat16
from openai import OpenAI

client = OpenAI(base_url="http://localhost:8000/v1", api_key="not-needed")
response = client.chat.completions.create(
    model="leetcode-java-qwen25-coder-7b",
    messages=[
        {"role": "system", "content": "You are an expert Java competitive programmer. Given a LeetCode-style problem statement and an algorithm tag, write a correct, efficient Java solution."},
        {"role": "user", "content": "Problem: Merge two sorted linked lists into one sorted list.\nAlgorithm: linked list, dummy head"},
    ],
    temperature=0.2,
)
print(response.choices[0].message.content)

Option D โ€” TGI (Text Generation Inference) {#tgi}

docker run --gpus all --shm-size 1g -p 8080:80 \
    -v $PWD/data:/data ghcr.io/huggingface/text-generation-inference:latest \
    --model-id unsloth/Qwen2.5-Coder-7B-Instruct \
    --lora-adapters leetcode-java-qwen25-coder-7b=AmareshHebbar/leetcode-java-qwen25-coder-7b
curl 127.0.0.1:8080/generate_stream \
    -X POST \
    -d '{"inputs":"<|im_start|>system\nYou are an expert Java competitive programmer. Given a LeetCode-style problem statement and an algorithm tag, write a correct, efficient Java solution.<|im_end|>\n<|im_start|>user\nProblem: Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.\nAlgorithm: Hash Map<|im_end|>\n<|im_start|>assistant\n","parameters":{"max_new_tokens":512}}' \
    -H 'Content-Type: application/json'

Option E โ€” Ollama (local, mobile/edge-friendly) {#ollama}

# 1. Pull the GGUF build
huggingface-cli download AmareshHebbar/leetcode-java-qwen25-coder-7b-GGUF leetcode-java-qwen25-coder-7b.q4_k_m.gguf --local-dir .

# 2. Create the model from the Modelfile shipped in the deployment kit (see deploy_ollama.py)
ollama create leetcode-java-qwen25-coder-7b -f Modelfile.java

# 3. Run it
ollama run leetcode-java-qwen25-coder-7b "Problem: Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.\nAlgorithm: Hash Map"

Option F โ€” GGUF / llama.cpp direct (mobile/edge inference)

./llama-cli -m leetcode-java-qwen25-coder-7b.q4_k_m.gguf \
    -p "<|im_start|>system\nYou are an expert Java competitive programmer. Given a LeetCode-style problem statement and an algorithm tag, write a correct, efficient Java solution.<|im_end|>\n<|im_start|>user\nProblem: Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.<|im_end|>\n<|im_start|>assistant\n" \
    -n 512 --temp 0.2

See export_gguf.py in the deployment kit for building q4_k_m / q5_k_m / q8_0 variants, and the mobile integration notes there for Android (llama.cpp JNI) and iOS (llama.cpp via Swift bindings).


Training details

Data

Trained on leetcode-java-sft, built from the doocs/leetcode corpus: problem statement + input/output examples + algorithm tag โ†’ verified Java solution, one-to-many (problem โ†’ multiple algorithm-tagged solutions).

Hyperparameters

Parameter Value
LoRA rank (r) 16
LoRA alpha 32
LoRA dropout 0
Target modules q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
Quantization 4-bit NF4 (QLoRA)
Max sequence length 2048
Optimizer paged_adamw_8bit
LR schedule 2e-4, cosine

Training compute

GPU NVIDIA A40 (48GB)
Cloud provider RunPod
CO2 estimate self-reported, not measured with a carbon tracker โ€” treat as approximate

Fine-tuned with Unsloth + TRL's SFTTrainer.


Bias, risks & limitations

Narrow specialization. This model is tuned tightly on LeetCode-style algorithmic problems โ€” general software-engineering code (frameworks, infra, business logic) is out of distribution.

Verify before trusting. Like any LLM, generated solutions can look plausible and still fail an edge case (empty input, integer overflow, off-by-one). Always run against test cases before use.

Not exhaustive on complexity. The model doesn't guarantee asymptotically optimal solutions โ€” check the complexity claims yourself for performance-sensitive use.


FAQ

Q: Can I merge the adapter into the base model? Yes โ€” model.merge_and_unload() after loading with PEFT, or Unsloth's save_pretrained_merged().

Q: Why QLoRA instead of full fine-tuning? Qwen2.5-Coder-7B already has strong code priors from pretraining; QLoRA specializes the output format and LeetCode-specific patterns without the cost of full fine-tuning.

Q: Which quantization should I use on mobile? q4_k_m is the best size/quality tradeoff for phones; q5_k_m if you have RAM headroom; avoid q2/q3 for code generation โ€” correctness drops sharply below 4-bit.


Related models in this suite

Full collection: LeetCode Multi-Language Coder Suite


Changelog

Version Notes
v2.0 Added GGUF builds, Ollama/vLLM/TGI deployment, benchmark harness (HumanEval-X, MultiPL-E, held-out test split)
v1.0 Initial release โ€” QLoRA fine-tune on leetcode-java-sft

Citation

@misc{leetcodecoder2026,
  author    = {Hebbar, Amaresh},
  title     = {LeetCode Multi-Language Coder Suite},
  year      = {2026},
  publisher = {HuggingFace},
  url       = {https://huggingface.co/AmareshHebbar}
}

Contact

GitHub LinkedIn Hugging Face

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for AmareshHebbar/leetcode-java-qwen25-coder-7b