23 puan yazan GN⁺ 2025-09-16 | 7 yorum | WhatsApp'ta paylaş
  • RustGPT, harici makine öğrenimi framework'leri olmadan, yalnızca saf Rust ve ndarray ile uygulanan transformer tabanlı bir dil modeli
  • Ön eğitim (Pre-training) ve instruction tuning ile olgusal bilgi ve diyalog kalıplarını öğrenmesi için tasarlanmış
  • Yapı, tokenizer → embedding → transformer blokları → çıktı projeksiyonu şeklinde ilerleyen tipik bir LLM mimarisini izliyor
  • Modüler kaynak yapısı ve test kodları sunarak eğitim, çıkarım ve optimizasyon süreçlerinin ayrıntılı biçimde anlaşılmasını sağlıyor
  • Rust ekosisteminde framework bağımlılığı olmadan sıfırdan LLM uygulamak isteyen geliştiriciler ve öğrenenler için önemli bir referans

Proje genel bakışı

  • RustGPT, harici makine öğrenimi framework'leri veya karmaşık bağımlılıklar olmadan, yalnızca saf Rust dili ve doğrusal cebir kütüphanesi (ndarray) ile LLM uygulayan bir açık kaynak proje
  • Temel amaç, modern LLM'lerin çekirdek bileşenlerini (transformer, attention, embedding, optimizasyon vb.) doğrudan uygulamak ve eğitim sürecini anlamak
  • Diğer ana akım LLM'lerden farklı olarak transformer yapısı, backpropagation, tokenizer ve optimizer gibi tüm parçaları Rust koduyla doğrudan tasarlıyor; bu da Rust geliştiricileri ve araştırmacıların derin öğrenmenin prensiplerini sıfırdan anlayıp genişletebilmesini sağlıyor
  • Matris işlemlerini ndarray ile yürütmesi ve PyTorch ya da TensorFlow gibi harici makine öğrenimi paketlerine bağımlı olmaması ayırt edici yönü
  • Modülerlik ve test kapsamı güçlü olduğu için çeşitli deneyler ve iyileştirmeler için uygun; ayrıca "sıfırdan LLM geliştirme (From Scratch)" eğitim amacı için de elverişli

Başlıca özellikler ve uygulama yaklaşımı

  • Transformer mimarisi: giriş metni → tokenizasyon → embedding → transformer blokları → nihai tahmin
    • Giriş metni, tokenizasyon sürecinden geçerek embedding vektörlerine dönüştürülür
    • Embedding'ler Transformer Block içinden geçer (multi-head attention + feedforward network)
    • Son olarak Output Projection Layer, kelime hazinesi üzerindeki olasılık dağılımını üreterek tahmini gerçekleştirir

Uygulama yapısı

  • main.rs: eğitim pipeline'ı, veri hazırlama, interaktif modun çalıştırılması
  • llm.rs: LLM genelinde forward·backward pass ve eğitim mantığı
  • transformer.rs, self_attention.rs, feed_forward.rs: çekirdek transformer blokları
  • embeddings.rs, output_projection.rs: embedding ve nihai çıktı katmanı
  • adam.rs: Adam optimizer uygulaması
  • Her modül, karşılık gelen test kodlarını (tests/) içerir ve işlev doğrulaması yapılabilir

Eğitim·test yöntemi ve veri akışı

  • Eğitim süreci
    • Sözlük oluşturma → ön eğitim (100 epoch, olgusal cümle verisi) → instruction tuning (100 epoch, diyalog verisi)
    • Ön eğitim örneği: "The sun rises in the east and sets in the west"
    • Instruction tuning örneği: "User: How do mountains form? Assistant: ..."
  • İnteraktif mod desteği
    • Eğitim tamamlandıktan sonra prompt-yanıt tabanlı diyalog testi yapılabiliyor
    • Örnek: "How do mountains form?" → "Mountains are formed through tectonic forces or volcanism..."

Teknik ayrıntılar

  • Kelime haznesi boyutu: eğitim verisine göre dinamik olarak ayarlanıyor
  • Embedding boyutu: 128, gizli katman: 256
  • Maksimum dizi uzunluğu: 80 token
  • Mimari: 3 transformer bloğu + embedding + çıktı katmanı
  • Eğitim algoritması: Adam optimizer, gradient clipping (L2 normu 5.0 ile sınırlı)
  • Öğrenme oranı: pre-training 0.0005, instruction tuning 0.0001
  • Kayıp fonksiyonu: cross-entropy loss

Model ve kod özellikleri

  • Özel tokenizer (noktalama işaretlerini işler)
  • Greedy decoding tabanlı metin üretimi
  • Modüler katman yapısı ve açık arayüzler
  • Test kapsamı: her katman ve işlev için birim test kodları içerir
  • Bağımlılıklar: yalnızca ndarray (matris işlemleri), rand / rand_distr (rastgele başlatma) kullanılır (PyTorch/TensorFlow gibi harici ML kullanılmaz)
  • Eğitsel değer: modern LLM'lerin iç yapısını ve eğitim prensiplerini öğrenmek için ideal

Gelişim potansiyeli

  • Gelişmiş mimarilerin eklenmesi: multi-head attention, RoPE, positional encoding vb.
  • Performans optimizasyonu: SIMD, paralel eğitim, bellek verimliliği iyileştirmeleri
  • Model kaydetme/yükleme desteği
  • Gelişmiş sampling (beam search, Top-k/Top-p) ve değerlendirme metriklerinin eklenmesi

Önemi

  • Python tabanlı PyTorch ve TensorFlow framework'lerine bağımlı olmadan yalnızca Rust ile doğrudan LLM uygulanabileceğini gösteren, öğrenme ve deney amaçlı bir proje
  • LLM'lerin iç çalışma prensiplerini anlamak ve Rust ortamında ML sistemleri geliştirmek isteyen geliştiriciler için faydalı bir referans

7 yorum

 
t7vonn 2025-09-18

Oldukça temiz görünüyor.

 
ahwjdekf 2025-09-16

Neden ki? Ben de biraz yapabilirim, mesele bu mu?

 
cosine20 2025-09-22

karma -47'nin görkemi haha

 
skrrgang 2025-09-16

rustın sadece r harfini görünce içiniz kıpır kıpır olup sinirleniyorsunuz, değil mi? hahahahaha

 
aer0700 2025-09-16

Yaparken öğreneceğiniz şeyler olacaktır.

 
devjeonghwan 2025-09-16

Denemeden yapılamaz ki.

 
GN⁺ 2025-09-16
Hacker News görüşleri
  • GPT’nin otomatik ürettiği yorumlar veya daha önce tanımlanmış sabitleri tekrar yazan kodlar görünüyor; bence bu tür kısımların kaldırılması gerekiyor. Örneğin const MAX_SEQ_LEN: usize = 80 gibi sabitler zaten lib.rs içinde var, bu yüzden yorumlarda belirtildiği gibi o sabitleri doğrudan kullanmak daha iyi olur

    • Bu tür şeylerin kalmış olması, ortaya çıkan ürünün geliştirici tarafından gerçekten anlaşılmış biçimde yapılmadığını gösteren bir nokta gibi geliyor
    • Acaba bununla ilgili bir PR gönderildi mi, merak ediyorum
    • Sabitlerin kullanım biçimi konusunda, yazarın da sadece yöntemi bilmediği için öyle yapmış olması mümkün. Ben de Rust’taki ilk haftamda isimlendirme ve kod yapısı konusunda çok zorlanmıştım
    • vibe coding tarzı Rust’ın, dilin genel kod kalitesini düşürebileceği fikri hakkında ne düşünüyorsunuz?
    • Bence bu eleştiri gerçekten çok yerinde
  • Python bağımlılık cehenneminde günler harcamış biri olarak, tek bir cargo run ile işin bitmesi gerçekten rüya gibi geliyor. Ama framework olmadan en acı verici kısmın ne olduğunu merak ediyorum. Bahse girerim backpropagation mantığını debug etmekti

    • uv adlı aracı tavsiye ederim. Ben kullandıktan sonra Python projelerini çalıştırmak %90 daha kolaylaştı uv bağlantısı
    • En zor kısmın GPU gibi kaynakların kullanımı olduğunu düşünüyorum
    • Python bağımlılık sorunları ifadesi 2010 civarında anlaşılırdı ama 2025’te bence fazla abartılı
    • cargo runın rüya gibi olduğundan bahsediliyor ama bence cargo build’in tüm interneti yeniden derleyip kışın CPU’yu ısıtma deneyimi daha baskın
    • cargoyu övenlerin çoğunun bağımlılık yönetiminin trade-off’larını tam kavramadığını düşünüyorum. C’deki gibi tüm kütüphaneleri her seferinde baştan derlemek verimsiz ama npm veya cargo gibi sistemlerde bağımlılık eklemek fazla kolay olunca bağımlılık patlaması, build süreleri ve güvenlik sorunları gibi ciddi dezavantajlar doğuyor. İyi bir build sistemi ile bağımlılık eklemenin kolay olması aynı şey değil; ayrıca merkezi bir paket deposunda herkesin birbirine rastgele bağımlanması da sağlıklı bir model değil
  • Ben de benzer bir Rust projesi üzerinde çalışıyorum. WebAssembly ile tarayıcıda çalışan bir sürümü var; tarayıcı demosu ve kaynak kodu da açık

  • ndarray, rand, rand_distr paket yapısı temiz görünüyor

    • Merakımdan cargo tree ile bağımlılık ağacına baktım, şimdilik temiz görünüyor
    • Bu ağacın tek başına çok büyük bir anlamı olduğunu sanmıyorum. Kod, her şeyi verimsiz şekilde kendisi uyguluyor olabilir; bazı durumlarda dış kütüphaneleri uygun biçimde kullanmak aslında daha iyi olabilir
    • Bunun alaycı bir yorum mu olduğunu, yoksa daha fazla bağlam mı gerektiğini merak ediyorum
  • Rust’ın bellek güvenliğinin, transformer implementasyonunda buffer overflow’ları azaltmak için oldukça faydalı olduğunu düşünüyorum. CUDA kernel’ları performansta hâlâ önde. Tokenizer tarafında da BPE’yi baştan mı yazıyorlar, yoksa mevcut bir kütüphane mi kullanılıyor merak ediyorum

  • Ben de Rust ile picogpt yaparken jaykmody’nin GPT from scratch blogunu çok referans aldım. Proje bağlantısı

  • Tebrikler; küçük bir not olarak, LLM’de transformer block’u yeniden kullanmak yerine her birinin ayrı bir instance olması daha iyi olur demek isterim. Ben de daha önce Zig ve MLX ile benzer şekilde temelden öğrenmeye yönelik çalışmalar yapmış, sonra yavaş yavaş özellik ekleyip en sonunda PyTorch/Transformers tarafına geçmiştim

    • Yine de bu tür çalışmaların asıl değeri kodu gerçekten kendin yazdığında ortaya çıkıyor. GPT’den yardım almadan kendi başına yapma deneyimi önemli
  • Proje yazarının yorumları Reddit’te derlenmiş

  • Tüm projenin gerçekten okunması kolay bir yapıda olması hoşuma gitti

    • Bunun yapay zeka tarafından üretilmiş kod olduğunu belirtmek isterim
    • Prosedürel/nesne yönelimli tarz baskın olduğu için, buna katı anlamda iyi Rust stili demek zor. Iterator’lar ve enum kullanan daha işlevsel bir tarzın daha kısa ve ideal olduğu düşünülür. Ama fikir deneyi olarak gayet yeterli
    • Rust’ın bu kadar okunabilir olabileceğini bilmiyordum. Hatta Rust mühendisleri sanki bu kadar sade koddan özellikle kaçınıp bir tür kendi kendine eziyet yarışına giriyor gibi bir izlenim edindim. Rust topluluğu ve işe alım kültürüyle ilgili yaşadığım deneyimlerin hepsi şimdi daha anlaşılır geliyor
  • Veri setinin kaynağını merak ediyorum. Kendim de bakacağım ama soruyu bırakayım dedim. Ben CPU ağırlıklı çalışan ve backpropagation içermeyen bir mimari geliştiriyorum; sınıflandırma veri setlerinde iyi çalışıyor. Tek örnek üzerinden artımlı güncelleme yapabildiği için continual learning için de uygun olabilir. Şimdiye kadar sadece tiny.txt üzerinde bir oyuncak demo eğittim; büyük dil modelleriyle hiç denemedim. Mimarimin on-device veya on-premise yardımcılar için epey iyi çalışabileceğini düşündüğümden denemeye devam edeceğim. Önerebileceğiniz açık kaynak LLM eğitim veri setleri var mı?

    • Hermes-3 Dataset fena değil
    • Hugging Face’te çeşitli OpenAI ve Anthropic kullanıcı-yardımcı zincirleri var ama dikkat edilmesi gereken şey, halüsinasyon oranlarının yüksek olması. Instruction fine-tuning için oldukça uygunlar. Hedefiniz instruction following ise Kimi K2 distillation öneririm
    • Bu proje eğitim verisini doğrudan main.rs dosyasının içine koyuyor. İçerik, genel bilgiye dair yaklaşık 50 kısa cümleden oluşuyor ve muhtemelen eğitim süresini kısaltmak için böyle seçilmiş. Bu yüzden script tabanlı olmayan girişlerde performans hızla düşüyor. Örnek promptlar ve sonuçlar:
      • "hello" girdisinde: "Eclipses occur when one celestial body moves into the shadow of another" gibi makul çıktılar veriyor
      • "what are facts" girdisinde: anlamsız kelime dizileri tekrarlanıyor
      • "how are mountains formed?" girdisinde: tutarsız kelimeler ve anlamsız çıktılar üretiyor