- JetBrains Full Line Code Completion (FLCC), PyCharm ve GoLand'de kullanılabilen yapay zeka tabanlı bir otomatik tamamlama özelliği olarak etkili log yazımını ve geliştirme verimliliğini büyük ölçüde artırıyor
- Tekrarlayan f-string log ifadeleri yazma ya da değişken/veri çerçevesi erişimindeki zahmeti azaltıyor ve yapay zeka, bağlama uygun kısa ve net logları otomatik olarak üretiyor
- Söz konusu model, yerel PC'de çalışan küçük bir LLM; hızlı çıkarım hızı, düşük bellek kullanımı (yaklaşık 1GB) sağlıyor ve kişisel veri sızıntısı endişesi de yaratmıyor
- JetBrains'in makalesine göre, Python'a özel küçük bir Transformer (100M parametre) eğitilerek 384 karakterlik kod bağlamı içinde tek satırlık otomatik tamamlama destekleniyor; veri önişleme ve tokenization sürecinde de Python kodunun özellikleri aktif biçimde yansıtılıyor
- FLCC'nin başarı örneği, devasa LLM'ler yerine amaç odaklı küçük modellerin gerçek geliştirme ortamında üretkenliği ne kadar artırabildiğini iyi gösteriyor
Yapay zekayla otomatik log yazımı: geliştirme üretkenliğinde gerçek değişim
- JetBrains Full Line Code Completion (FLCC), PyCharm'da (2023 sonundan beri varsayılan olarak geliyor), GoLand ve benzeri ortamlarda tam log ifadesi otomatik tamamlama sunuyor
- Sıralı veri işleme, asenkron API çağrıları, vektör işlemleri gibi durumlarda print debugging ve ayrıntılı loglar vazgeçilmezdir
- f-string, değişken/liste/veri çerçevesi erişimi, logger seçimi (
loguru vs logging) gibi tekrarlayan girdiler yüzünden debugging akışının sık sık kesilmesi sorunu vardı
- Örneğin
loguru için logger.info(f'Adding a log for {your_variable} and {len(my_list)} and {df.head(0)}') gibi bir ifade, basit görünse de parantezler, değişken adları, veri çerçevesi söz dizimi, logger türü gibi birçok aşamada bilişsel yük oluşturur
FLCC'nin geliştirme akışını ve log yazma alışkanlığını nasıl değiştirdiği
- Full Line Code Completion; dosya uzantısı, yol, imlecin üzerindeki kod gibi tüm bağlam bilgisini modelin giriş istemine birleştirerek en doğal log ifadesini otomatik tamamlıyor
- Önerilen loglar değişken, veri çerçevesi ve işlem bağlamına göre optimize edildiği için, çoğu zaman insanın yazacağından daha nettir
- Kısa ve öz loglar sayesinde debugging bittikten sonra bile bu logları koddan özellikle silmeye gerek kalmıyor; üretim ortamında bırakıldığında da kalite yeterli oluyor
-
Örnekler
- Redis URL kontrolünde:
redis = aioredis.from_url(settings.redis_url, decode_responses=True) → yapay zeka otomatik olarak Redis bağlantı logu öneriyor
- DataFrame profillemede: veri/sütun tanımlarından sonra
df için shape gibi profil amaçlı log ifadelerini otomatik öneriyor
JetBrains FLCC modelinin teknik özellikleri ve uygulaması
-
Tamamen yerel ortamda çalışıyor
- Model çıkarımı ve kod önerileri yalnızca yerel PC'de işleniyor, bu da kişisel veri/kod sızıntısı endişesi olmadan güvenli kullanım sağlıyor
- Mac'te model boyutu yaklaşık 1GB; bellek yükü düşük ve hızı oldukça yüksek
- vLLM, SGLM, Ray, PagedAttention gibi bulut tabanlı büyük LLM altyapılarına ihtiyaç duymuyor
-
Python'a özel küçük LLM mimarisi
- İlk uygulama PyTorch tabanlı GPT-2 tarzı Decoder-only Transformer (100M parametre) olarak geliştirildi, daha sonra llama2 mimarisiyle iyileştirildi
- 30 dili kapsayan 6TB ölçekli The Stack alt kümesinden yalnızca 45GB kullanıldı; kod yorumları ve gereksiz import'lar kaldırılarak gerçek kod üretimine odaklanıldı
- Python dilinin özelliklerine uygun olarak, BPE tabanlı tokenizer ile girintiler ve scope yapıları
<SCOPE_IN>/<SCOPE_OUT> token'larına dönüştürüldü; böylece boşluk farklarından kaynaklanan gereksiz token israfı önlendi
- Tokenizer vocab boyutu 16,384 olarak optimize edildi
- Python'da import'ları çoğunlukla kodun sonuna ekleme alışkanlığı model eğitimine de yansıtıldı; import'lar veriden tamamen çıkarıldı
-
Eğitim ve optimizasyon
- 8 adet NVIDIA A100 GPU ile birkaç gün boyunca eğitildi, cross-entropy loss ile değerlendirildi
- Quantization ile FP32 model INT8'e dönüştürülerek (400MB→100MB) PC belleğine yük bindirmeden kullanılabilir hale getirildi
- CPU çıkarımı için ONNX RT kullanıldı, daha sonra sunucu llama.cpp tabanlı yapıya geçirildi
- Beam Search (k=20) ile çeşitli token dizileri üretildi; satır sonu karakteri sonuçlandırma ölçütü olarak kullanıldı
- 384 karakterlik bağlam penceresinin %50'si önceden prefetch edilip cache'leniyor; imleç önceki koda taşındığında yeniden çıkarım yapmadan anında yanıt veriliyor
-
Eklenti ve entegrasyon yapısı
- PyCharm eklentisi Kotlin ile yazıldı ve yerel native C++ sunucu üzerinden çıkarım token'ları sağlandı
- Temiz API, yüksek hızlı yanıt ve cache stratejileriyle gerçek iş geliştirme akışına optimize edildi
FLCC'nin getirdiği somut geliştirme üretkenliği değişimi
-
Log kalitesi ve verim aynı anda artıyor
- Yapay zeka otomatik tamamlama logları sayesinde print debugging/üretim loglarının kalitesi ve yazım verimi aynı anda yükseliyor
- Kısa ve net loglar otomatik önerildiği için debugging akışı kesilmiyor
-
Küçük, uzmanlaşmış LLM'lerin pratik değeri
- Büyük LLM'ler yerine belirli bir amaca (tek satırlık kod tamamlama) optimize edilmiş küçük yapay zeka modelleri, gerçek geliştirme ortamında ciddi bir üretkenlik yeniliği sunuyor
- Bu, başka alanlarda da amaç odaklı küçük modellerin gerçek iş akışlarını somut biçimde iyileştirebileceğini gösteren temsilî bir örnek
5 yorum
Keşke C++ için de böyle bir şey olsa!
Bunu yapmak için ayda $20 ~ $200 harcamak biraz...
Sanırım bu kişi IDE abonelik ücretinden bahsediyor. FLCC ücretsiz sürümde sunulmuyor.
Ama insanlar yalnızca bunu bekleyerek para ödemiyor zaten.
Ah, ücretsiz sürümde kullanılamıyormuş. Ben yanlış anlamışım 😅
Yerelde çalıştığı için ücret gerekmeyecek gibi görünüyor