Adel9st-Verilog-Qwen2.5-7B: Junior-Mid Verilog Mühendisi Asistanı
English Overview
Turkish-Verilog-Junior-Mid is a Junior-Mid level Verilog coding assistant fine-tuned from Qwen2.5-Coder-7B on a custom hardware dataset. It is designed to understand Turkish hardware design instructions and generate, explain, or debug Verilog RTL code. The training dataset is available at Adel9st/Verilog-Turkish-Dataset.
Modelin Amacı (Model Description)
Bu model, donanım tasarımı ve Verilog kodlaması süreçlerinde Türkçe rehberlik ve kod desteği sunmak amacıyla geliştirilmiş bir yapay zeka asistanıdır. Qwen 2.5 7B Coder mimarisi üzerine, özel bir Verilog veri seti ile ince ayar (fine-tuning) yapılarak eğitilmiştir.
Temel amacı, yapay zeka donanım bileşenleri, bellek modülleri ve temel dijital mantık devreleri tasarlanırken bir "Junior-Mid Donanım Mühendisi" rolü üstlenerek geliştiricilere Türkçe açıklamalı kod blokları sunmak ve beyin fırtınası yapmaktır.
Kullanım Alanları (Intended Use)
- Türkçe yönergelerden donanım modülleri (örn. Dual-Port RAM, ALU, State Machines) üretmek.
- Yazılmış karmaşık Verilog kodlarının çalışma mantığını satır satır Türkçe açıklamak.
- Dijital mantık tasarımı (logic design) konseptleri üzerine fikir alışverişi yapmak.
Sınırlamalar ve Uyarılar (Limitations & Bias)
- Junior Seviyesi ve Halüsinasyon: Model henüz "Junior-Mid" seviyesindedir. Özellikle çok karmaşık, hiyerarşik veya alt modüllerin birbirini çağırdığı tasarımlarda zaman zaman halüsinasyon görebilir (var olmayan portları tanımlama veya state machine döngülerinde mantık hataları gibi).
- Ürettiği kodların doğrudan çipe yazılmadan önce mutlaka sentezlenmesi, simüle edilmesi ve bir "Senior" (insan) gözüyle incelenmesi tavsiye edilir.
- Lütfen halüsinasyonların ve hataların önüne geçmesi için promptlara biraz detay verin.
Örnek Kullanım
Kullanıcı Promptu: "Bana True Dual-Port RAM yaz ama okuma işlemi her iki port için de always @(posedge clk) içinde olsun, $clog2 kullan."
Modelin Ürettiği Kod:
module true_dual_port_ram #(
parameter WIDTH = 8,
parameter DEPTH = 16
) (
input clk,
input [WIDTH-1:0] data_a_i,
input [$clog2(DEPTH)-1:0] addr_a_i,
input we_a_i,
output reg [WIDTH-1:0] data_a_o,
input [WIDTH-1:0] data_b_i,
input [$clog2(DEPTH)-1:0] addr_b_i,
input we_b_i,
output reg [WIDTH-1:0] data_b_o
);
reg [WIDTH-1:0] ram [0:DEPTH-1];
always @(posedge clk) begin
if (we_a_i) begin
ram[addr_a_i] <= data_a_i;
end
data_a_o <= ram[addr_a_i];
end
always @(posedge clk) begin
if (we_b_i) begin
ram[addr_b_i] <= data_b_i;
end
data_b_o <= ram[addr_b_i];
end
endmodule
Eğitim Detayları (Training Details)
- Base Model: Qwen/Qwen2.5-Coder-7B-Instruct
- Veri Seti: ~100 MB boyutunda; açık kaynaklı Verilog projelerinden derlenen ve sentetik yönergelerle Türkçe’ye uyarlanan özel bir donanım veri seti.
- Fine-Tuning Yöntemi: QLoRA (4-bit NF4 quantization)
- LoRA Konfigürasyonu: r=64, alpha=128, dropout=0.05
- Bağlam Uzunluğu: 2048 token
- Efektif Batch Size: 16 (batch size 2 × gradient accumulation 8)
- Öğrenme Oranı: 1e-4, cosine scheduler, weight decay 0.05
- Optimizasyon: paged_adamw_8bit, bf16 / tf32
- Epoch Sayısı: 1
- Değerlendirme: Validation ve checkpoint işlemleri her 100 stepte bir yapılmış, en iyi model
eval_lossmetriğine göre seçilmiştir. - Erken Durdurma: patience = 5
- Donanım: 1x NVIDIA RTX 4090 (24GB VRAM), yaklaşık 8 saat eğitim süresi
Benchmark Sonuçları
Temel Benchmark (Basic Level)
| Metrik | Sonuç |
|---|---|
| Benchmark Skoru | 85.9/100 |
| Icarus Geçme | %77.7 |
| Tam Doğru Kod | %50 |
| Halüsinasyon | %10 |
Ara Seviye Benchmark (Intermediate Level)
| Metrik | Sonuç |
|---|---|
| Benchmark Skoru | 90.7/100 |
| Icarus Geçme | %85 |
| Tam Doğru Kod | %56 |
| Halüsinasyon | %6 |
Kapsamlı/Yıkıcı Benchmark (Strict Evaluation)
| Metrik | Sonuç |
|---|---|
| Benchmark Skoru | 67.1/100 |
| Icarus Geçme | %91.5 |
| Tam Doğru Kod | %0 |
| Halüsinasyon | %6.0 |
#(Not: Bu tablo, standart kelime eşleşmesini değil; yasaklı kelime kullanımını, verimsiz kod yazımını ve donanımsal mantık hatalarını Icarus Verilog eşliğinde katı bir şekilde cezalandıran özel bir değerlendirme algoritmasını yansıtır.)
#(Note: This table does not rely on standard keyword matching. Instead, it reflects a custom, strict evaluation algorithm powered by Icarus Verilog that actively penalizes the use of forbidden keywords, inefficient coding practices, and hardware logic errors.)
Not: Bu benchmark sonuçlarının detaylı loglarına, test edilen 50 soruya ve değerlendirme metodolojisine (Python script) Adel9st/Verilog-Turkish-Dataset Sayfasından ulaşabilirsiniz.