| | --- |
| | license: apache-2.0 |
| | language: |
| | - en |
| | base_model: |
| | - StentorLabs/Stentor-30M |
| | pipeline_tag: text-generation |
| | tags: |
| | - python |
| | - code-generation |
| | - tiny-model |
| | - code |
| | library_name: transformers |
| | --- |
| | **Model Description** |
| |
|
| | Stentor Python 30M is a compact language model specifically fine-tuned for Python code generation and autocompletion tasks. Based on the Stentor-30M architecture, this model contains 30 million parameters and is designed to run efficiently on resource-constrained devices including mobile phones and embedded systems. |
| |
|
| | **Model Details** |
| |
|
| | - **Developed by:** Experimental fine-tuning project |
| | - **Model type:** Causal language model (LlamaForCausalLM) |
| | - **Language:** Python code, English instructions |
| | - **Parameters:** 30,419,712 |
| | - **Context length:** 512 tokens |
| | - **Model size:** 60 MB (FP16), 30 MB (INT8) |
| | - **License:** Apache 2.0 |
| |
|
| | **Training Data** |
| |
|
| | The model was fine-tuned on a curated dataset of 872 Python examples, including: |
| |
|
| | - Basic algorithms (factorial, prime numbers, list operations) |
| | - Class implementations (Stack, BankAccount, Rectangle, Circle) |
| | - Recursive functions (quicksort, Fibonacci) |
| | - String manipulation (palindrome, anagram, vowel counting) |
| | - MBPP (Mostly Basic Python Problems) dataset tasks |
| |
|
| | All examples follow a consistent format with "### Task:" instruction and "### Solution:" code block. |
| |
|
| | **Training Process** |
| |
|
| | The fine-tuning process involved multiple stages: |
| |
|
| | 1. Base model: Stentor-30M |
| | 2. Initial fine-tuning on 50k examples |
| | 3. Multiple correction rounds with progressively lower learning rates |
| | 4. Final detoxification training with learning rate 3e-7 to remove undesirable patterns |
| |
|
| | **Evaluation Results** |
| |
|
| | The model was evaluated on several test categories: |
| |
|
| | | Category | Pass Rate | Notes | |
| | |----------|-----------|-------| |
| | | Basic functions | 80% | Factorial, prime check, etc. | |
| | | Classes from training set | 100% | Stack, BankAccount, Rectangle | |
| | | New complex classes | 33% | Graph, Queue, inheritance | |
| | | Function signatures (MBPP) | 100% | Correctly generates def statements | |
| |
|
| | **Capabilities** |
| |
|
| | - Generates Python functions from natural language descriptions |
| | - Implements basic algorithms (factorial, prime check, palindrome) |
| | - Creates class definitions with methods (Stack, BankAccount, Rectangle) |
| | - Handles recursive functions (quicksort, Fibonacci) |
| | - Produces syntactically correct function signatures |
| |
|
| | **Limitations** |
| |
|
| | - May produce repeated or redundant code after the main solution |
| | - Struggles with complex data structures (graphs, trees, queues) |
| | - Does not reliably handle class inheritance patterns |
| | - Can generate incorrect list indexing operations |
| | - May continue generating text beyond the intended solution |
| | - Limited to 512 token context window |
| | - Not suitable for production use without output post-processing |
| |
|
| | **Recommended Use Cases** |
| |
|
| | - Code autocompletion in lightweight IDEs |
| | - Educational tool for Python beginners |
| | - Rapid prototyping of simple functions |
| | - Embedded systems with limited computational resources |
| | - Offline code assistance on mobile devices |
| |
|
| | **Not Recommended For** |
| |
|
| | - Complex algorithm implementation |
| | - Production code generation without human review |
| | - Tasks requiring deep contextual understanding |
| | - Generating large codebases |
| | - Security-critical applications |
| |
|
| | **Usage Example** |
| |
|
| | ```python |
| | from transformers import AutoTokenizer, AutoModelForCausalLM |
| | |
| | model_path = "stas122/stentor_python_30m" |
| | tokenizer = AutoTokenizer.from_pretrained(model_path) |
| | model = AutoModelForCausalLM.from_pretrained(model_path) |
| | |
| | prompt = "### Task: Write a function that checks if a number is even\n\n### Solution:\n" |
| | inputs = tokenizer(prompt, return_tensors="pt") |
| | outputs = model.generate(**inputs, max_new_tokens=100, temperature=0.2) |
| | response = tokenizer.decode(outputs[0], skip_special_tokens=True) |
| | ``` |
| |
|
| | **Ethical Considerations** |
| |
|
| | This model is intended for educational and development assistance purposes. Users should verify all generated code before deployment, particularly for security-sensitive applications. The model may occasionally produce incorrect or inefficient code and should not be relied upon as the sole source of truth for programming tasks. |
| |
|
| | **Contact** |
| |
|
| | For questions or feedback about this model, please open an issue on the Hugging Face repository. |