File size: 6,607 Bytes
b93b87f 76e3d54 b93b87f 76e3d54 b93b87f 76e3d54 b93b87f 04fa802 76e3d54 543b791 75ba507 543b791 75ba507 76e3d54 04fa802 76e3d54 04fa802 76e3d54 04fa802 76e3d54 04fa802 76e3d54 04fa802 76e3d54 b93b87f 76e3d54 04fa802 76e3d54 b93b87f 76e3d54 b93b87f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 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 149 150 151 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 |
---
title: Linux Command Generator (Llama 3.2 1B)
tags:
- text-generation
- instruction-tuned
- llama
- unsloth
- lora
- linux
- command-generation
license: other
language:
- en
library_name: transformers
pipeline_tag: text-generation
datasets:
- custom
base_model: unsloth/Llama-3.2-1B-Instruct
---
### mecha-org/linux-command-generator-llama3.2-1b
Natural language → Linux command. A compact Llama 3.2 1B Instruct model fine‑tuned (LoRA) to turn plain‑English requests into correct shell commands.
## Video Demonstration of the model running on the Mecha Comet
<video controls>
<source src="https://web-assets.mecha.so/hugging-face/mecha-command-generator-aug-10-2025.mp4" type="video/mp4">
Your browser does not support the video tag.
</video>
For more information of the Mecha Comet, our pocket little handheld computer - click <a href="https://mecha.so/comet">here</a>
### TL;DR
- Base: `unsloth/Llama-3.2-1B-Instruct`
- Method: LoRA (r=16, alpha=16, dropout=0)
- Context: 2048 tokens
- Data: 8,669 pairs across 11 categories
- Use cases: quick command lookup, learning CLI, automation
## Run with Ollama (baby steps)
1) Install Ollama: see `https://ollama.com/download`.
2) Verify install:
```bash
ollama --version
```
3) Run the model interactively:
```bash
ollama run mecha-org/linux-command-generator-llama3.2-1b
```
Then type a request, e.g.:
- "List all files in the current directory with detailed information"
- "Compress the file data.txt using bzip2"
- "Find all .py files in the current directory and subdirectories"
Press Ctrl+C to exit.
4) One‑off (non‑interactive):
```bash
ollama run mecha-org/linux-command-generator-llama3.2-1b -p "Display the first 5 lines of access.log"
# Expected: head -n 5 access.log
```
5) Get command‑only answers (when needed):
```bash
ollama run mecha-org/linux-command-generator-llama3.2-1b -p "Output only the command with no explanation. Show system information including kernel version"
# Expected: uname -a
```
### Use a local GGUF with Ollama (fallback)
If you have `model.gguf`, put it next to a `Modelfile`:
```
FROM ./model.gguf
PARAMETER temperature 0.2
PARAMETER top_p 0.9
PARAMETER num_ctx 2048
SYSTEM You are a Linux command generator. Output only the command with no explanation.
TEMPLATE {{ .Prompt }}
```
Create and run:
```bash
ollama create linux-cmd-gen -f Modelfile
ollama run linux-cmd-gen -p "Find all .py files recursively"
# Expected: find . -name "*.py"
```
## Other ways to use (optional)
### Transformers
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model_id = "mecha-org/linux-command-generator-llama3.2-1b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16 if torch.cuda.is_available() else None)
def generate_command(description: str) -> str:
messages = [{"role": "user", "content": description}]
inputs = tokenizer.apply_chat_template(messages, tokenize=True, add_generation_prompt=True, return_tensors="pt")
if torch.cuda.is_available():
inputs = inputs.to(model.device)
model = model.to("cuda")
outputs = model.generate(input_ids=inputs, max_new_tokens=64)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
print(generate_command("List all files in the current directory with detailed information"))
# -> ls -la
```
### Unsloth
```python
from unsloth import FastLanguageModel
model_id = "mecha-org/linux-command-generator-llama3.2-1b"
model, tokenizer = FastLanguageModel.from_pretrained(model_name=model_id, max_seq_length=2048)
FastLanguageModel.for_inference(model)
msgs = [{"role": "user", "content": "Compress the file data.txt using bzip2"}]
inputs = tokenizer.apply_chat_template(msgs, tokenize=True, add_generation_prompt=True, return_tensors="pt")
output = model.generate(input_ids=inputs, max_new_tokens=32)
print(tokenizer.decode(output[0], skip_special_tokens=True))
# -> bzip2 data.txt
```
## Example prompts → commands
- "Show system information including kernel version" → `uname -a`
- "Find all .py files in the current directory and subdirectories" → `find . -name "*.py"`
- "Display the first 5 lines of access.log" → `head -n 5 access.log`
- "Change permissions of script.sh to make it executable for owner" → `chmod +x script.sh`
- "Create a tar archive backup.tar containing all files in the documents folder" → `tar -cf backup.tar documents/`
## Dataset (overview)
8,669 input→command pairs across:
- Compression & Archiving: bzip2, gzip, tar, zip
- File & Directory: cd, cp, find, ls, mkdir, mv, pwd, rm, rmdir, touch
- Permissions & Ownership: chgrp, chmod, chown
- Viewing & Editing: cat, echo, head, less, tail, vim
- Networking: curl, dig, host, ifconfig, ip, netstat, ping, ssh, wget
- Package mgmt: apt, dpkg
- Process mgmt: kill, killall, nice, pkill, renice
- Search & Filter: awk, grep, locate, sed
- System info/monitoring: df, du, free, top, uname
- User/group: useradd, usermod, groupadd, passwd, sudo
- Misc/system control: cron, systemctl, tmux, screen, service
Format:
```json
{"input": "Describe what you want to do", "output": "linux_command_here"}
```
## Training details
- Base: `unsloth/Llama-3.2-1B-Instruct`
- LoRA on attention + MLP projections:
- r=16, lora_alpha=16, lora_dropout=0
- target_modules: ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"]
- Max sequence length: 2048
- SFT on responses only (TRL SFTTrainer), Unsloth-optimized
- Example hparams: per‑device batch 2, grad accum 4, epochs 3, lr 2e‑4
- Reference: Tesla P100 16GB (~45 minutes), ~2.8GB VRAM (adapters)
## Safety and responsible use
- Always inspect commands before executing.
- Avoid destructive operations unless you fully understand consequences.
- For apps, add denylists and validations (e.g., block `rm -rf /`, `mkfs`, `dd`).
## Notes on GGUF
- Works with `llama.cpp` and Ollama.
- Typical memory (approx.): q4_k_s ~600MB, q4_k_m ~700MB, q8_0 ~1.1GB, f16 ~2.2GB.
## License
Derived from Meta Llama 3.2. Use must comply with the base model license. Check your deployment context for any additional constraints.
## Citation
```
@software{hrsvrn_linux_command_generator_llama32_1b,
author = {Harshvardhan Vatsa},
title = {Linux Command Generator (Llama 3.2 1B)},
year = {2025},
url = {https://huggingface.co/mecha-org/linux-command-generator-llama3.2-1b}
}
```
## Acknowledgements
- Base: `unsloth/Llama-3.2-1B-Instruct`
- Libraries: `unsloth`, `transformers`, `trl`, `accelerate`, `bitsandbytes`
|