ST-Coder-14B-LoRA

ST-Coder-14B-LoRA is a specialized LoRA adapter fine-tuned on Qwen2.5-Coder-14B-Instruct. It is specifically designed for Industrial Automation and PLC Programming tasks, with a strong focus on the IEC 61131-3 Structured Text (ST) language.

Note: This model is trained to generate high-quality, syntactically correct ST code for platforms like Codesys, TwinCAT, and Siemens SCL.

πŸš€ Key Features

  • Domain Specificity: Deeply understands industrial control logic (PID, Motion Control, Safety Logic, Communication Protocols).
  • Strict Syntax: Adheres to IEC 61131-3 standards (e.g., correct usage of FUNCTION_BLOCK, VAR, END_VAR, and strong typing).
  • Long Context: Trained with a context length of 8192 tokens to handle complex, multi-block program structures.
  • Robustness: Enhanced via synthetic data distillation to avoid common syntax errors found in general-purpose coding models.

πŸ’» Quick Start

Requirements

pip install transformers peft torch accelerate

Inference Code (Python)

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

# 1. Load Base Model
base_model_path = "Qwen/Qwen2.5-Coder-14B-Instruct"
model = AutoModelForCausalLM.from_pretrained(
    base_model_path,
    torch_dtype="auto",
    device_map="auto",
    trust_remote_code=True
)
tokenizer = AutoTokenizer.from_pretrained(base_model_path, trust_remote_code=True)

# 2. Load LoRA Adapter
lora_path = "RnniaSnow/ST-Coder-14B-LoRA"
model = PeftModel.from_pretrained(model, lora_path)

# 3. Generate Code
prompt = "Write a Function Block (ST) for a PID controller with anti-windup mechanism."
messages = [
    {"role": "system", "content": "You are an expert IEC 61131-3 PLC programmer."},
    {"role": "user", "content": prompt}
]

text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

generated_ids = model.generate(
    **model_inputs,
    max_new_tokens=1024,
    temperature=0.2,  # Low temperature for code precision
    top_p=0.9
)

output_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(output_text)

πŸ”§ Training Details

This model was trained using LLaMA-Factory with the following configuration:

  • Base Model: Qwen/Qwen2.5-Coder-14B-Instruct
  • Training Method: LoRA (Low-Rank Adaptation)
  • Target Modules: all (Applied to all linear layers for maximum expressivity)
  • LoRA Rank: 64
  • LoRA Alpha: 128
  • Cutoff Length: 8192 tokens
  • Flash Attention: Enabled (FA2)
  • Precision: BF16

πŸ“‚ Dataset

The training dataset (RnniaSnow/st-code-dataset) consists of:

  1. Golden Samples: High-quality, verified ST code snippets from real-world engineering projects.
  2. Synthetic Distillation: Generated using DeepSeek-V3 with strict syntax constraints and self-correction pipelines to ensure logical correctness.

⚠️ Disclaimer

While this model is optimized for industrial programming, LLM-generated code must always be verified and tested on a simulation environment before deployment to physical hardware. The author assumes no liability for damages caused by the use of this code in production environments.

Downloads last month
3
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Model tree for RnniaSnow/ST-Coder-14B-LoRA

Base model

Qwen/Qwen2.5-14B
Adapter
(55)
this model