Text Generation
Transformers
Safetensors
qwen3_5
image-text-to-text
code
rtl
verilog
gpu-kernel
triton
conversational
Instructions to use i-Coder/iCoder-27B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use i-Coder/iCoder-27B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="i-Coder/iCoder-27B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("i-Coder/iCoder-27B") model = AutoModelForMultimodalLM.from_pretrained("i-Coder/iCoder-27B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use i-Coder/iCoder-27B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "i-Coder/iCoder-27B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "i-Coder/iCoder-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/i-Coder/iCoder-27B
- SGLang
How to use i-Coder/iCoder-27B 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 "i-Coder/iCoder-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "i-Coder/iCoder-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'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 "i-Coder/iCoder-27B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "i-Coder/iCoder-27B", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Docker Model Runner
How to use i-Coder/iCoder-27B with Docker Model Runner:
docker model run hf.co/i-Coder/iCoder-27B
| license: apache-2.0 | |
| base_model: | |
| - Qwen/Qwen3.6-27B | |
| pipeline_tag: text-generation | |
| library_name: transformers | |
| tags: | |
| - code | |
| - rtl | |
| - verilog | |
| - gpu-kernel | |
| - triton | |
| <p align="center"> | |
| <img src="figures/title.png" alt="iCoder-27B" width="420"> | |
| </p> | |
| <div align="center"><a href="https://github.com/bingreeky/iCoder"><img src="https://img.shields.io/badge/GitHub-iCoder-181717?logo=github&logoColor=white" alt="GitHub"></a> <a href="https://huggingface.co/i-Coder/iCoder-27B/blob/main/Coder_Tech_Report.pdf"><img src="https://img.shields.io/badge/Technical%20Report-PDF-b68b32" alt="Technical Report"></a></div> | |
| iCoder-27B is a 27B-parameter model for industrial coding, covering RTL design | |
| and GPU kernel optimization. | |
| It is the product of an experiment in delegating model development itself. | |
| Human experts encoded their model-development experience once, as reusable | |
| Research Skills. From that point on an agent instantiated those Skills, | |
| allocated resources, ran and diagnosed experiments, and revised the training | |
| strategy. The agent coordinated a multi-stage pipeline spanning supervised | |
| fine-tuning, on-policy self-distillation, and reinforcement learning with | |
| verifiable rewards, in which every reward comes from compiling and running the | |
| model's own output rather than from comparison against a reference text. | |
|  | |
| Despite its compact scale, iCoder-27B surpasses models with up to 59x more | |
| total parameters, including DeepSeek-V4-Pro, GLM-5.2 and Kimi-K2.6. It leads on | |
| RTLLM (68.0), ties Claude Opus 4.8 for the best TritonBench-G pass@1 (20.1), | |
| and ranks second on KernelBench L2 Fast and on CVDP. Its 61% KernelBench L1 | |
| correctness is the highest of any model evaluated. | |
| The full technical report describing the recipe is available | |
| [here](Coder_Tech_Report.pdf). | |
| ## Results | |
|  | |
| Every model is evaluated through the same harness. RTL benchmarks run under the | |
| simulator each official suite specifies; kernel benchmarks compare candidate | |
| outputs against the reference implementation under matched inputs. **Bold** | |
| marks the best result in each row and *italic* the second best. | |
| | Benchmark | Metric | iCoder-27B | Qwen3.6-27B | InCoder-32B | InCoder-32B-T | DeepSeek-V4-Pro | GLM-5.2 | Kimi-K2.6 | GPT-5.5 | Claude-Opus-4.8 | Hy3 | Gemini-3.5-Flash | | |
| |---|---|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:|---:| | |
| | VerilogEval | Spec-to-RTL avg@4 | 86.3 | 70.1 | 62.5 | 65.9 | 69.9 | 66.0 | 72.4 | **90.1** | 82.7 | 83.8 | *89.1* | | |
| | VerilogEval | Code-complete avg@4 | *86.0* | 70.8 | 58.2 | 54.2 | 79.8 | 74.8 | 78.5 | **91.4** | 81.9 | 81.6 | 83.8 | | |
| | RTLLM | Functional avg@4 | **68.0** | 49.6 | 48.0 | 44.2 | *67.5* | 64.0 | 59.0 | 66.0 | 64.7 | 53.5 | 63.5 | | |
| | CVDP | Functional avg@5 (%) | *44.1* | 33.9 | 36.9 | 30.3 | 38.5 | 39.5 | 42.1 | 39.5 | **47.7** | 39.7 | 29.7 | | |
| | RealBench | Syntax pass@5 (%) | 61.7 | 38.3 | 60.0 | 55.0 | 36.7 | 43.3 | 58.3 | *80.0* | **83.3** | 41.7 | 68.3 | | |
| | RealBench | Functional pass@5 (%) | 26.7 | 16.7 | **46.7** | *36.7* | 16.7 | 25.0 | 25.0 | 28.3 | *36.7* | 16.7 | 26.7 | | |
| | ArchXBench | Functional pass@1 (%) | 49.3 | 35.2 | 36.6 | 29.6 | 50.7 | 50.7 | 42.3 | **56.3** | *54.9* | 47.9 | 50.7 | | |
| | KernelBench L1 | Compiled (%) | 95 | 87 | 88 | 85 | 93 | *96* | 93 | **98** | 95 | 94 | 94 | | |
| | KernelBench L1 | Correct (%) | **61** | 32 | 51 | 47 | 32 | 50 | 32 | 43 | *55* | 42 | 45 | | |
| | KernelBench L1 | Fast (%) | 25 | 12 | 18 | 18 | 13 | *26* | 5 | 22 | **30** | 21 | 23 | | |
| | KernelBench L2 | Compiled (%) | 97 | 89 | 90 | 93 | 91 | 98 | 84 | **100** | 97 | 98 | *99* | | |
| | KernelBench L2 | Correct (%) | *74* | 28 | 65 | 63 | 40 | 40 | 17 | 41 | 70 | 56 | **78** | | |
| | KernelBench L2 | Fast (%) | *40* | 17 | 14 | 15 | 25 | 30 | 7 | 24 | 37 | 29 | **47** | | |
| | KernelBench L3 | Compiled (%) | 90 | 86 | 60 | 60 | 86 | 90 | 82 | **100** | 84 | *98* | **100** | | |
| | KernelBench L3 | Correct (%) | 34 | 12 | 30 | 20 | 4 | 30 | 18 | 38 | *40* | 18 | **58** | | |
| | KernelBench L3 | Fast (%) | 10 | 4 | **14** | *12* | 2 | 0 | 0 | 6 | 8 | 2 | **14** | | |
| | TritonBench-G | Correctness pass@1 (%) | **20.1** | 11.4 | 17.9 | 18.5 | 19.0 | 19.0 | 19.0 | *19.5* | **20.1** | *19.5* | 14.9 | | |
| ## Usage | |
| ```python | |
| from transformers import AutoModelForCausalLM, AutoTokenizer | |
| model_id = "i-Coder/iCoder-27B" | |
| tokenizer = AutoTokenizer.from_pretrained(model_id) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| model_id, dtype="auto", device_map="auto" | |
| ) | |
| messages = [{"role": "user", "content": "Write a 4-bit synchronous up counter with active-low reset in Verilog."}] | |
| text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) | |
| inputs = tokenizer([text], return_tensors="pt").to(model.device) | |
| out = model.generate(**inputs, max_new_tokens=2048) | |
| print(tokenizer.decode(out[0][inputs.input_ids.shape[-1]:], skip_special_tokens=True)) | |
| ``` | |
| ## Citation | |
| If you find iCoder useful in your work, please cite the technical report: | |
| ```bibtex | |
| @techreport{yang2026icoder, | |
| title = {iCoder-27B: Recursive AI-Led Development of Frontier Industrial Coding Model}, | |
| author = {Cheng Yang and Jiayang Lyu and Shangyuan Liu and Guibin Zhang and | |
| Jiong Lin and Xinlei Yu and Junchi Yan and Shuicheng Yan and | |
| Weinan E and Linfeng Zhang and Linfeng Zhang and Qibing Ren}, | |
| year = {2026}, | |
| month = aug, | |
| type = {Technical Report}, | |
| url = {https://huggingface.co/i-Coder/iCoder-27B} | |
| } | |
| ``` | |
| ## License | |
| Apache-2.0, inherited from the base model, Qwen3.6-27B. | |