| --- |
| 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. |