Update README.md
Browse files
README.md
CHANGED
|
@@ -1,199 +1,184 @@
|
|
| 1 |
---
|
| 2 |
-
|
| 3 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
---
|
| 5 |
|
| 6 |
-
#
|
| 7 |
|
| 8 |
-
|
| 9 |
|
|
|
|
| 10 |
|
|
|
|
| 11 |
|
| 12 |
-
##
|
| 13 |
-
|
| 14 |
-
### Model Description
|
| 15 |
-
|
| 16 |
-
<!-- Provide a longer summary of what this model is. -->
|
| 17 |
-
|
| 18 |
-
This is the model card of a π€ transformers model that has been pushed on the Hub. This model card has been automatically generated.
|
| 19 |
-
|
| 20 |
-
- **Developed by:** [More Information Needed]
|
| 21 |
-
- **Funded by [optional]:** [More Information Needed]
|
| 22 |
-
- **Shared by [optional]:** [More Information Needed]
|
| 23 |
-
- **Model type:** [More Information Needed]
|
| 24 |
-
- **Language(s) (NLP):** [More Information Needed]
|
| 25 |
-
- **License:** [More Information Needed]
|
| 26 |
-
- **Finetuned from model [optional]:** [More Information Needed]
|
| 27 |
-
|
| 28 |
-
### Model Sources [optional]
|
| 29 |
-
|
| 30 |
-
<!-- Provide the basic links for the model. -->
|
| 31 |
-
|
| 32 |
-
- **Repository:** [More Information Needed]
|
| 33 |
-
- **Paper [optional]:** [More Information Needed]
|
| 34 |
-
- **Demo [optional]:** [More Information Needed]
|
| 35 |
-
|
| 36 |
-
## Uses
|
| 37 |
-
|
| 38 |
-
<!-- Address questions around how the model is intended to be used, including the foreseeable users of the model and those affected by the model. -->
|
| 39 |
-
|
| 40 |
-
### Direct Use
|
| 41 |
-
|
| 42 |
-
<!-- This section is for the model use without fine-tuning or plugging into a larger ecosystem/app. -->
|
| 43 |
-
|
| 44 |
-
[More Information Needed]
|
| 45 |
-
|
| 46 |
-
### Downstream Use [optional]
|
| 47 |
-
|
| 48 |
-
<!-- This section is for the model use when fine-tuned for a task, or when plugged into a larger ecosystem/app -->
|
| 49 |
-
|
| 50 |
-
[More Information Needed]
|
| 51 |
-
|
| 52 |
-
### Out-of-Scope Use
|
| 53 |
-
|
| 54 |
-
<!-- This section addresses misuse, malicious use, and uses that the model will not work well for. -->
|
| 55 |
-
|
| 56 |
-
[More Information Needed]
|
| 57 |
-
|
| 58 |
-
## Bias, Risks, and Limitations
|
| 59 |
-
|
| 60 |
-
<!-- This section is meant to convey both technical and sociotechnical limitations. -->
|
| 61 |
-
|
| 62 |
-
[More Information Needed]
|
| 63 |
-
|
| 64 |
-
### Recommendations
|
| 65 |
-
|
| 66 |
-
<!-- This section is meant to convey recommendations with respect to the bias, risk, and technical limitations. -->
|
| 67 |
-
|
| 68 |
-
Users (both direct and downstream) should be made aware of the risks, biases and limitations of the model. More information needed for further recommendations.
|
| 69 |
-
|
| 70 |
-
## How to Get Started with the Model
|
| 71 |
-
|
| 72 |
-
Use the code below to get started with the model.
|
| 73 |
-
|
| 74 |
-
[More Information Needed]
|
| 75 |
-
|
| 76 |
-
## Training Details
|
| 77 |
-
|
| 78 |
-
### Training Data
|
| 79 |
-
|
| 80 |
-
<!-- This should link to a Dataset Card, perhaps with a short stub of information on what the training data is all about as well as documentation related to data pre-processing or additional filtering. -->
|
| 81 |
-
|
| 82 |
-
[More Information Needed]
|
| 83 |
-
|
| 84 |
-
### Training Procedure
|
| 85 |
-
|
| 86 |
-
<!-- This relates heavily to the Technical Specifications. Content here should link to that section when it is relevant to the training procedure. -->
|
| 87 |
-
|
| 88 |
-
#### Preprocessing [optional]
|
| 89 |
-
|
| 90 |
-
[More Information Needed]
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
#### Training Hyperparameters
|
| 94 |
-
|
| 95 |
-
- **Training regime:** [More Information Needed] <!--fp32, fp16 mixed precision, bf16 mixed precision, bf16 non-mixed precision, fp16 non-mixed precision, fp8 mixed precision -->
|
| 96 |
|
| 97 |
-
|
| 98 |
|
| 99 |
-
|
| 100 |
|
| 101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
|
| 103 |
-
|
| 104 |
|
| 105 |
-
|
| 106 |
|
| 107 |
-
|
| 108 |
|
| 109 |
-
|
|
|
|
|
|
|
| 110 |
|
| 111 |
-
|
| 112 |
|
| 113 |
-
|
| 114 |
|
| 115 |
-
|
| 116 |
|
| 117 |
-
|
| 118 |
|
| 119 |
-
|
| 120 |
|
| 121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 122 |
|
| 123 |
-
|
| 124 |
|
| 125 |
-
|
| 126 |
|
| 127 |
-
|
| 128 |
|
| 129 |
-
|
| 130 |
|
| 131 |
-
|
| 132 |
|
|
|
|
| 133 |
|
|
|
|
| 134 |
|
| 135 |
-
|
| 136 |
|
| 137 |
-
|
| 138 |
|
| 139 |
-
|
| 140 |
|
| 141 |
-
##
|
| 142 |
|
| 143 |
-
|
| 144 |
|
| 145 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 146 |
|
| 147 |
-
|
| 148 |
-
- **Hours used:** [More Information Needed]
|
| 149 |
-
- **Cloud Provider:** [More Information Needed]
|
| 150 |
-
- **Compute Region:** [More Information Needed]
|
| 151 |
-
- **Carbon Emitted:** [More Information Needed]
|
| 152 |
|
| 153 |
-
|
| 154 |
|
| 155 |
-
##
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 156 |
|
| 157 |
-
|
| 158 |
|
| 159 |
-
##
|
| 160 |
|
| 161 |
-
|
| 162 |
|
| 163 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
|
| 165 |
-
|
| 166 |
|
| 167 |
-
##
|
| 168 |
|
| 169 |
-
|
| 170 |
|
| 171 |
-
|
| 172 |
|
| 173 |
-
|
|
|
|
|
|
|
|
|
|
| 174 |
|
| 175 |
-
|
| 176 |
|
| 177 |
-
|
| 178 |
|
| 179 |
-
|
| 180 |
|
| 181 |
-
|
| 182 |
|
| 183 |
-
|
|
|
|
|
|
|
| 184 |
|
| 185 |
-
|
| 186 |
|
| 187 |
-
|
| 188 |
|
| 189 |
-
##
|
| 190 |
|
| 191 |
-
|
| 192 |
|
| 193 |
-
|
| 194 |
|
| 195 |
-
|
| 196 |
|
| 197 |
-
|
| 198 |
|
| 199 |
-
|
|
|
|
| 1 |
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
license: gemma
|
| 5 |
+
base_model: google/gemma-4-e2b-it
|
| 6 |
+
tags:
|
| 7 |
+
- gemma
|
| 8 |
+
- gemma4
|
| 9 |
+
- coding
|
| 10 |
+
- reasoning
|
| 11 |
+
- agentic
|
| 12 |
+
- software-engineering
|
| 13 |
+
- enigmacoder
|
| 14 |
+
pipeline_tag: text-generation
|
| 15 |
---
|
| 16 |
|
| 17 |
+
# EnigmaCoder 2B
|
| 18 |
|
| 19 |
+
**EnigmaCoder 2B** is the first model in the EnigmaCoder AI engineering ecosystem β developed to power intelligent software engineering workflows within the EnigmaCoder platform.
|
| 20 |
|
| 21 |
+
This model represents the beginning of a deliberate, long-term effort to build AI that understands software the way engineers do: not just generating code, but reasoning through problems, navigating codebases, and supporting the full engineering lifecycle.
|
| 22 |
|
| 23 |
+
---
|
| 24 |
|
| 25 |
+
## Overview
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
+
EnigmaCoder 2B is a fine-tuned language model built on **Google Gemma-4-2B-IT**, specialized for software engineering tasks including code generation, explanation, debugging, and reasoning.
|
| 28 |
|
| 29 |
+
Rather than relying entirely on external AI providers, EnigmaCoder is developing its own model stack. EnigmaCoder 2B is the foundation of that effort β a model we own, control, and will continue to develop as part of our broader AI engineering architecture.
|
| 30 |
|
| 31 |
+
| Property | Value |
|
| 32 |
+
|---|---|
|
| 33 |
+
| **Base Model** | google/gemma-4-e2b-it |
|
| 34 |
+
| **Parameters** | ~5B |
|
| 35 |
+
| **Architecture** | Gemma-4 Transformer |
|
| 36 |
+
| **Precision** | Float16 |
|
| 37 |
+
| **Context Window** | 128K tokens |
|
| 38 |
+
| **Fine-tuning Method** | QLoRA (4-bit) β merged to full weights |
|
| 39 |
+
| **License** | Gemma License |
|
| 40 |
|
| 41 |
+
---
|
| 42 |
|
| 43 |
+
## Our Vision
|
| 44 |
|
| 45 |
+
EnigmaCoder is being built around a core engineering workflow:
|
| 46 |
|
| 47 |
+
```
|
| 48 |
+
PLAN β CODE β RUN β DEBUG β VERIFY
|
| 49 |
+
```
|
| 50 |
|
| 51 |
+
Every stage of this workflow benefits from AI that understands software engineering deeply β not just syntax, but intent, structure, and consequence.
|
| 52 |
|
| 53 |
+
EnigmaCoder 2B is our first step toward an AI that can participate meaningfully at each stage. As the model matures and the platform evolves, it will become more deeply integrated into the EnigmaCoder IDE, eventually serving as the reasoning core behind agentic engineering workflows.
|
| 54 |
|
| 55 |
+
---
|
| 56 |
|
| 57 |
+
## Core Focus Areas
|
| 58 |
|
| 59 |
+
EnigmaCoder 2B has been trained and evaluated with a focus on:
|
| 60 |
|
| 61 |
+
- **Code Generation** β Writing correct, idiomatic Python and general-purpose code from natural language descriptions
|
| 62 |
+
- **Code Understanding** β Explaining what code does, why it works, and how it fits into larger systems
|
| 63 |
+
- **Debugging Assistance** β Identifying errors, suggesting fixes, and reasoning about failure modes
|
| 64 |
+
- **Software Reasoning** β Thinking through architectural decisions, design patterns, and engineering tradeoffs
|
| 65 |
+
- **Technical Q&A** β Answering developer questions across databases, APIs, algorithms, and system design
|
| 66 |
|
| 67 |
+
---
|
| 68 |
|
| 69 |
+
## Why We Are Building EnigmaCoder
|
| 70 |
|
| 71 |
+
Most AI-assisted development tools depend entirely on third-party model providers. EnigmaCoder is taking a different path:
|
| 72 |
|
| 73 |
+
**Control** β We own the model weights and can update, retrain, and specialize them without dependency on external APIs.
|
| 74 |
|
| 75 |
+
**Specialization** β We can fine-tune continuously on software engineering data that reflects real developer workflows, not general internet text.
|
| 76 |
|
| 77 |
+
**Integration** β A model we control can be embedded directly into EnigmaCoder IDE at every layer β from autocomplete to autonomous agents.
|
| 78 |
|
| 79 |
+
**Research** β Building our own model lets us experiment with reasoning, tool use, and agentic workflows in ways that closed models do not permit.
|
| 80 |
|
| 81 |
+
**Long-term flexibility** β As the platform grows, the model grows with it. We are not locked into any provider's roadmap.
|
| 82 |
|
| 83 |
+
EnigmaCoder 2B is not a prototype. It is the first iteration of an ongoing development program.
|
| 84 |
|
| 85 |
+
---
|
| 86 |
|
| 87 |
+
## Training and Development
|
| 88 |
|
| 89 |
+
EnigmaCoder 2B was developed through the following process:
|
| 90 |
|
| 91 |
+
- **Base:** Google Gemma-4-2B-IT β a capable instruction-tuned foundation
|
| 92 |
+
- **Fine-tuning method:** QLoRA with 4-bit quantization during training, merged to full Float16 weights for inference
|
| 93 |
+
- **Training data:** Curated conversational coding and reasoning data focused on software engineering tasks
|
| 94 |
+
- **LoRA configuration:** Rank 32, Alpha 64, targeting all linear layers
|
| 95 |
+
- **Training:** 3 epochs, learning rate 1e-4 with cosine schedule, sequence length 1024
|
| 96 |
|
| 97 |
+
The LoRA adapter weights have been merged into the base model. The published model requires no PEFT library for inference β it loads as a standard Transformers model.
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
+
---
|
| 100 |
|
| 101 |
+
## Quick Start
|
| 102 |
+
|
| 103 |
+
```python
|
| 104 |
+
from transformers import AutoTokenizer, AutoModelForCausalLM
|
| 105 |
+
import torch
|
| 106 |
+
|
| 107 |
+
model_id = "enigmacoder/EnigmaCoder-2B"
|
| 108 |
+
|
| 109 |
+
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
| 110 |
+
model = AutoModelForCausalLM.from_pretrained(
|
| 111 |
+
model_id,
|
| 112 |
+
torch_dtype=torch.float16,
|
| 113 |
+
device_map="auto",
|
| 114 |
+
)
|
| 115 |
+
|
| 116 |
+
def ask(question):
|
| 117 |
+
prompt = f"<start_of_turn>user\n{question}<end_of_turn>\n<start_of_turn>model\n"
|
| 118 |
+
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
|
| 119 |
+
with torch.no_grad():
|
| 120 |
+
output = model.generate(
|
| 121 |
+
**inputs,
|
| 122 |
+
max_new_tokens=512,
|
| 123 |
+
do_sample=False,
|
| 124 |
+
repetition_penalty=1.2,
|
| 125 |
+
pad_token_id=tokenizer.eos_token_id,
|
| 126 |
+
)
|
| 127 |
+
return tokenizer.decode(output[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True)
|
| 128 |
+
|
| 129 |
+
print(ask("Write a Python function that implements binary search with proper error handling."))
|
| 130 |
+
```
|
| 131 |
|
| 132 |
+
---
|
| 133 |
|
| 134 |
+
## Intended Use Cases
|
| 135 |
|
| 136 |
+
EnigmaCoder 2B is designed for software engineering contexts:
|
| 137 |
|
| 138 |
+
- Writing and completing Python functions, classes, and modules
|
| 139 |
+
- Explaining existing code to developers unfamiliar with a codebase
|
| 140 |
+
- Suggesting fixes for bugs and logic errors
|
| 141 |
+
- Answering technical questions about algorithms, data structures, and system design
|
| 142 |
+
- Assisting with SQL queries, API design, and backend development
|
| 143 |
+
- Supporting developers who want a locally-runnable coding assistant
|
| 144 |
|
| 145 |
+
---
|
| 146 |
|
| 147 |
+
## Integration with EnigmaCoder IDE
|
| 148 |
|
| 149 |
+
**Current state:** EnigmaCoder 2B is available as a standalone Hugging Face model. It can be loaded and queried through the standard Transformers interface.
|
| 150 |
|
| 151 |
+
**Planned integration:** EnigmaCoder IDE will integrate this model directly into the development environment, enabling:
|
| 152 |
|
| 153 |
+
- In-editor code generation and completion
|
| 154 |
+
- Contextual debugging assistance with access to the active file and error output
|
| 155 |
+
- Agentic workflows that can read, write, and run code as part of the PLAN β CODE β RUN β DEBUG β VERIFY loop
|
| 156 |
+
- A local inference mode for developers who want AI assistance without sending code to external servers
|
| 157 |
|
| 158 |
+
These integrations are in active development. The model published here is the AI foundation that will power them.
|
| 159 |
|
| 160 |
+
---
|
| 161 |
|
| 162 |
+
## Responsible Use
|
| 163 |
|
| 164 |
+
EnigmaCoder 2B is intended for software engineering assistance. Users should:
|
| 165 |
|
| 166 |
+
- Review generated code before deploying it to production
|
| 167 |
+
- Not rely on the model for security-critical decisions without human verification
|
| 168 |
+
- Be aware that the model may produce incorrect code or reasoning, particularly on complex or novel problems
|
| 169 |
|
| 170 |
+
This model is subject to the [Gemma Terms of Use](https://ai.google.dev/gemma/terms).
|
| 171 |
|
| 172 |
+
---
|
| 173 |
|
| 174 |
+
## Acknowledgements and License
|
| 175 |
|
| 176 |
+
EnigmaCoder 2B is built on **Google Gemma-4-2B-IT** and is subject to the [Gemma License](https://ai.google.dev/gemma/terms).
|
| 177 |
|
| 178 |
+
Training data includes publicly available instruction-following datasets curated for software engineering relevance.
|
| 179 |
|
| 180 |
+
Developed by the **EnigmaCoder** team.
|
| 181 |
|
| 182 |
+
---
|
| 183 |
|
| 184 |
+
*EnigmaCoder 2B β built for engineers, by engineers.*
|