Etiket: yapay zeka

  • Yapay Zekâ Mühendisi Olmak İçin Yol Haritası

    Yapay Zekâ Mühendisi Olmak İçin Yol Haritası

    “Yapay zekâ mühendisi olmak istiyorum, nereden başlamalıyım?” sorusunun internette binlerce cevabı var ve çoğu ya çok genel ya da yüzlerce kaynaktan oluşan, bakmaya bile üşendiren listeler. Bu yazıda yolu sekiz aşamaya böldüm. Her aşamada ne öğrenmen gerektiğini, neden gerektiğini ve o aşamayı bitirdiğini gösterecek küçük bir projeyi yazdım.

    Bu blogda yayımlanan derslerin çoğu da bu yolun bir parçası; her aşamada ilgili yazıları işaret ettim.

    Önce: Yapay zekâ mühendisi ne yapar?

    Bu unvan farklı şirketlerde farklı işler için kullanılıyor. Genel olarak üç yakın rol var:

    RolOdakTipik bir gün
    Veri bilimciVeriden soru sorup cevap bulmakAnaliz, deney, rapor, model denemeleri
    Makine öğrenmesi mühendisiModelleri eğitip ürüne taşımakEğitim hattı kurmak, modeli canlıya almak, izlemek
    Yapay zekâ mühendisiHazır büyük modellerle ürün geliştirmekBüyük dil modelleri, RAG, ajanlar, değerlendirme

    Sınırlar bulanık ve birçok ilan bu rollerin karışımını istiyor. Bu yüzden aşağıdaki yol haritası üçünün ortak temelini kuruyor; son aşamalarda hangisine ağırlık vereceğini sen seçiyorsun.

    1. Aşama: Programlama, yani Python

    Neden: Yapay zekâ dünyasının ortak dili Python. Kütüphanelerin, örneklerin, makalelerin kodlarının büyük çoğunluğu Python’la yazılıyor.

    Öğren: Değişkenler, koşullar, döngüler, fonksiyonlar, listeler ve sözlükler, hata yönetimi, dosya okuma, sınıflar ve nesneler.

    Bitirdiğini nasıl anlarsın: Küçük bir programı baştan sona kendin yazabiliyorsan. Örneğin bir sayı tahmin oyunu ya da bir yapılacaklar listesi uygulaması.

    Blogdaki Python dersleri bu aşamayı baştan sona kapsıyor.

    2. Aşama: Matematik temeli

    Neden: Modelleri kullanmak için matematik uzmanı olman gerekmiyor. Ama bir modelin neden çalışmadığını anlamak için temel kavramları bilmen gerekiyor.

    Öğren:

    • Lineer cebir: Vektör, matris, matris çarpımı. Bir sinir ağı aslında üst üste matris çarpımlarından oluşuyor.
    • Olasılık ve istatistik: Ortalama, dağılım, olasılık, hipotez testi. Bir modelin sonucuna ne kadar güveneceğini bunlar söylüyor.
    • Türev ve gradyan: Modeller hatalarını “gradyan inişi” denen bir yöntemle azaltıyor; türev bunun temeli.

    İpucu: Matematiği ayrı bir dönem gibi çalışmak yerine diğer aşamalarla paralel götür. Bir kavrama ihtiyacın olduğunda dönüp öğrenmek çoğu kişi için daha kalıcı.

    3. Aşama: Veriyle çalışmak

    Neden: Her yapay zekâ projesi veriyle başlıyor ve zamanın büyük kısmı veriyi hazırlamaya gidiyor.

    Öğren: pandas ile tablo verisi, NumPy, matplotlib ile grafik, SQL ile veritabanı sorgulama, veri temizleme.

    Mini proje: Açık bir veri setini indir, temizle, birkaç soru sor ve sonuçları grafiklerle anlat. Blogdaki Futbol Veri Projesi tam olarak bu aşamaya bir örnek.

    4. Aşama: Klasik makine öğrenmesi

    Neden: Derin öğrenmeye geçmeden önce makine öğrenmesinin temel fikirlerini oturtman gerekiyor: eğitim ve test verisi, aşırı öğrenme, değerlendirme ölçütleri. Bu fikirler en büyük modellerde bile aynı.

    Öğren: scikit-learn ile sınıflandırma ve regresyon; karar ağaçları, rastgele orman, lojistik regresyon; doğruluk, kesinlik, duyarlılık; çapraz doğrulama.

    Mini proje: Bir tablo veri setinde bir şey tahmin eden bir model kur, sonucunu dürüstçe değerlendir. Seçmen Şapkası yazısındaki karar ağacı ve Makine Öğrenmesi ile Derin Öğrenme farkı yazısı bu aşamaya giriş niteliğinde.

    5. Aşama: Derin öğrenme

    Neden: Görüntü, ses ve metin gibi verilerde günümüzün en güçlü modelleri derin öğrenmeye dayanıyor.

    Öğren: Sinir ağlarının nasıl öğrendiği, PyTorch ile model kurmak, evrişimli sinir ağları (CNN), Transformer mimarisi ve dikkat (attention) mekanizması.

    Mini proje: Hazır eğitilmiş bir modeli kendi küçük veri setine uyarla (fine-tuning). Örneğin kendi çektiğin fotoğraflarda iki şeyi ayırt eden bir model.

    Blogdaki Attention yazısı, Transformer’ın arkasındaki fikri anlatıyor.

    6. Aşama: Büyük dil modelleri ve üretken yapay zekâ

    Neden: Bugün “yapay zekâ mühendisi” ilanlarının çoğu bu alanla ilgili: hazır bir büyük dil modelini bir ürünün içine güvenli ve faydalı bir şekilde yerleştirmek.

    Öğren:

    • Bir modeli API üzerinden kullanmak ve iyi prompt yazmak
    • Token, bağlam penceresi ve maliyet
    • Embedding’ler ve vektör veritabanları
    • RAG: Modelin kendi belgelerinden cevap vermesini sağlamak
    • Araç kullanan ajanlar
    • Değerlendirme: Modelin cevaplarının doğru ve güvenli olduğunu nasıl ölçeceğin. Bu alanın en çok ihmal edilen ama en çok aranan becerisi.

    Mini proje: Bir dersin notlarını yükleyip onlara dayanarak soru cevaplayan küçük bir RAG uygulaması. Cevapların doğruluğunu ölçmek için kendi 20 soruluk test setini hazırla.

    Blogdaki LLM Nedir? ve İyi Bir Prompt Nasıl Yazılır? yazıları bu aşamaya giriş.

    7. Aşama: Yazılım mühendisliği ve modeli canlıya almak

    Neden: Not defterinde çalışan bir model ile gerçek kullanıcıların kullandığı bir ürün arasında büyük bir fark var. İşe alımlarda bu farkı kapatabilen kişiler öne çıkıyor.

    Öğren: Git ve GitHub, test yazmak, bir modeli API olarak sunmak (örneğin FastAPI ile), Docker, bir bulut platformunun temelleri, canlıdaki modeli izlemek (MLOps).

    Mini proje: 4. ya da 6. aşamadaki projeni basit bir web arayüzü ya da API ile başkalarının kullanabileceği hale getir.

    8. Aşama: Portfolyo ve sürekli öğrenme

    Neden: Bu alanda işe alımı diplomadan çok, ne yaptığını gösterebilmen belirliyor.

    Yap:

    • 3-4 iyi belgelenmiş proje. Kaç proje yaptığından çok, her birinde hangi problemi çözdüğünü, neyi denediğini ve neyin işe yaramadığını anlatman önemli.
    • Projelerini yazarak anlat: GitHub README’si, blog yazısı ya da LinkedIn gönderisi.
    • Alan çok hızlı değişiyor. Haftada birkaç saatini yeni gelişmeleri takip etmeye ayır.

    Ücretsiz başlangıç kaynakları

    • Kaggle Learn: Python, pandas ve makine öğrenmesine kısa ve uygulamalı giriş kursları.
    • Andrew Ng’in makine öğrenmesi ve derin öğrenme kursları: Kavramları sade anlatmasıyla bilinen, alanın en yaygın giriş kurslarından.
    • fast.ai: Derin öğrenmeye “önce yap, sonra teoriye in” yaklaşımıyla giren ücretsiz kurs.
    • Hugging Face kursları: Transformer modelleri ve büyük dil modelleriyle uygulamalı çalışmak için.

    Kaynakların çoğu İngilizce. Bu alanda ilerlemek istiyorsan teknik İngilizceni geliştirmek de yol haritasının gizli dokuzuncu aşaması.

    Sık sorulan sorular

    Bilgisayar mühendisliği okumak şart mı? Hayır. Matematik, istatistik, endüstri mühendisliği ya da tamamen farklı bir alandan gelip bu alana geçen çok kişi var. Ama programlama ve matematik temelini bir şekilde edinmen gerekiyor.

    Ne kadar sürer? Bu, haftada kaç saat ayırabildiğine ve nereden başladığına bağlı. Kimseyle kıyaslamadan, her aşamayı bir proje bitirerek kapatmak süreden daha önemli.

    Önce büyük dil modellerine mi başlasam? Hazır bir modeli API ile kullanmak için ilk üç aşama yeterli olabilir ve motivasyon için iyi bir başlangıç. Ama bir şeyler ters gittiğinde nedenini anlamak için 4. ve 5. aşamalara mutlaka dönmen gerekecek.

    Devamını oku

  • Token Nedir? Yapay Zekâ Metni Nasıl Okur?

    Token Nedir? Yapay Zekâ Metni Nasıl Okur?

    Yapay zekâ araçlarının fiyat sayfalarında, kullanım sınırlarında ve teknik açıklamalarında hep aynı kelime geçiyor: token. “Bu model 200 bin token okuyabiliyor”, “1 milyon token başına şu kadar ücret”… Peki token tam olarak ne? Ve neden aynı cümlenin Türkçesi İngilizcesinden daha fazla token tutuyor?

    Kısa tanım

    Token, bir dil modelinin metni okurken kullandığı en küçük parça. Bazen bir kelimenin tamamı, bazen bir hece gibi bir parçası, bazen tek bir harf ya da noktalama işareti.

    Modeller metni harf harf ya da kelime kelime değil, token token okuyor. Metni token’lara bölen programa tokenizer deniyor. Tokenizer her token’ı bir sayıya çeviriyor; model aslında kelimeleri değil, bu sayı dizisini görüyor.

    Bir örnekle görelim

    Aşağıdaki sonuçlar, OpenAI’ın GPT-4 ve GPT-3.5 modellerinde kullanılan cl100k_base tokenizer’ıyla alındı:

    "Hello world" → 'Hello' | ' world' → 2 token
    "Merhaba dünya" → 'Mer' | 'hab' | 'a' | ' dü' | 'nya' → 5 token

    İngilizcede iki kelime iki token. Türkçede ise “Merhaba” üç, “dünya” iki parçaya bölünmüş. Kelimelerin önündeki boşluk da token’ın bir parçası (' world', ' dü').

    Aynı anlamdaki iki cümle daha:

    CümleKarakterToken
    The weather is very nice today.317
    Bugün hava çok güzel.218
    How does AI read text?226
    Yapay zekâ metni nasıl okur?2813

    Türkçe cümle daha kısa olmasına rağmen daha fazla token tutuyor. Bu örneklerde İngilizcede bir token ortalama 4 civarı karaktere denk gelirken, Türkçede 2 ile 2,5 karakter arasında kalıyor.

    Neden Türkçe daha fazla token tutuyor?

    Tokenizer’lar eğitildikleri metinlerde sık geçen parçaları tek bir token olarak öğreniyor. Eğitim verisinin büyük kısmı İngilizce olduğu için “weather”, “today” gibi kelimeler tek parça halinde sözlükte yer alıyor. Türkçe kelimeler ise daha nadir görüldüğü için parçalara bölünüyor.

    Buna Türkçenin eklemeli yapısı da ekleniyor. Bir köke ekler eklendikçe ortaya çok sayıda farklı kelime çıkıyor ve bunların her birinin sözlükte hazır olması mümkün değil. En uç örnek:

    "Çekoslovakyalılaştıramadıklarımızdanmışsınız"
    → Ç | ek | os | lovak | yal | ı | la | şt | ı | ram | ad | ıkl | ar | ım | ız | dan | m | ış | s | ını | z
    → 21 token

    Tek bir kelime 21 token. Tokenizer’ın böldüğü yerlerin Türkçe eklerle her zaman örtüşmediğine de dikkat et: “şt”, “ram”, “m” gibi parçalar dilbilgisi açısından bir anlam taşımıyor. Tokenizer dili anlamaya çalışmıyor, sadece sık gördüğü parçaları kullanıyor.

    Not: Her model ailesinin kendi tokenizer’ı var ve daha yeni tokenizer’lar çok dilli metinlerde genellikle daha verimli. Aynı cümle başka bir modelde farklı sayıda token tutabilir; ama genel eğilim, yani Türkçenin İngilizceden daha fazla token tutması, çoğu modelde görülüyor.

    Token neden önemli?

    • Bağlam penceresi: Bir modelin aynı anda “aklında tutabildiği” metin miktarı token cinsinden ölçülüyor. Uzun bir PDF’i ya da uzun bir sohbeti modele verirken sınırı belirleyen şey karakter sayısı değil, token sayısı.
    • Maliyet: API üzerinden kullanılan modeller genellikle token başına ücretlendiriliyor; hem gönderdiğin hem de modelin ürettiği token’lar sayılıyor. Aynı içerik Türkçe daha fazla token tutuyorsa, Türkçe işlem aynı modelde daha pahalıya gelebiliyor.
    • Hız: Modeller cevabı token token üretiyor. Ekranda kelimelerin parça parça belirmesinin sebebi bu.
    • Garip hatalar: Modelin bir kelimedeki harfleri saymakta zorlanması gibi tuhaf hataların bir kısmı buradan geliyor. Model kelimeyi harf harf değil, parça parça görüyor.

    Kendin dene

    Colab’da şu kodla istediğin metnin kaç token tuttuğunu ve nasıl bölündüğünü görebilirsin:

    !pip install -q tiktoken
    import tiktoken
    enc = tiktoken.get_encoding("cl100k_base")
    metin = "Bugün hava çok güzel."
    kodlar = enc.encode(metin)
    print(len(kodlar), "token")
    print(kodlar) # modelin gördüğü sayılar
    print([enc.decode([k]) for k in kodlar]) # her sayının karşılığı olan parça
    8 token
    [47873, 16461, 305, 2979, 58112, 55008, 28493, 13]
    ['Bug', 'ün', ' h', 'ava', ' çok', ' gü', 'zel', '.']

    İkinci satırdaki sayılar modelin gerçekten “okuduğu” şey. Kendi adını, bir şehir adını ya da uzun bir Türkçe kelimeyi deneyip kaç parçaya bölündüğüne bak.

    Bir cümlede

    Token, dil modelinin metni okuduğu parça; bağlam sınırı, maliyet ve hız hep token’la ölçülüyor ve Türkçe aynı anlamı genellikle İngilizceden daha fazla token’la ifade ediyor.

    Devamını oku