Makine Öğreniminde Hugging Face ve OpenShift AI

Basak Pelitci
SabancıDx
Published in
6 min read2 days ago

Hugging Face: Open Source AI Devrimi

Hugging Face, “makine öğreniminin GitHub’ı” olarak anılıyor ve kabul görüyor. Gitgide büyüyen topluluğu ise bizlere model koleksiyonundan çok daha fazlası olduğunu göstermekte.

Hugging Face, açık kaynaklı bir yapay zeka kütüphanesi sunan Fransız-
Amerikan şirketidir. Doğal dil işleme (NLP) alanında uzmanlaşmış platformları, birbirinden farklı modellerin kolayca kullanılabilir olmasını sağlayan araçlar sunuyor. Ayrıca kendi modellerinizi eğitip globalde paylaşmanıza da olanak tanır.

Aslında şirketin misyonu, güçlü yapay zeka araçlarına ve yeteneklerine erişimi demokratikleştirerek, daha fazla insanı yapay zekanın gelişim serüvenine dahil etmek.

Peki gerçekten veri bilimcilere kolaylık sağlıyor mu?

Kesinlikle evet! Bunun en güzel örneği GPT-3, BERT, YOLO ve RoBERTa gibi çok sayıda hazır modeli sunarak çeşitli NLP projelerine başlangıcı kolaylaştırması.

Topluluğun da katkılarıyla sürekli güncellenen platform, transfer learning ile mevcut modeli yeni bir görev için yeniden eğiterek zamandan büyük tasarruf etmenizi sağlıyor.

How Hugging Face Positions Itself in the Open LLM Stack — The New Stack

Hugging Face üzerindeki Transformers kütüphanesinden halihazırda eğitilmiş modelleri alarak geliştirebiliyorsunuz. Aynı zamanda PyTorch, TensorFlow ve JAX arasında çerçeve (framework) uyumluluğu sağlıyor.

Daha pek çok kütüphane erişim veya bulut hizmetleri ile entegrasyon opsiyonları ise yine en büyük avantajlarından. Spaces ve Inference Endpoints gibi kendi bulut hizmetleriyle küçük web uygulamaları oluşturabilir, modelleri kolayca dağıtabilirsiniz.

Hangi Ortamlarda Model Geliştirme ve Fine-Tuning Yapabilirim?

Hugging Face modellerini hemen hemen her ortamda kullanabilirsiniz. Aşağıda birkaç popüler seçenek listeliyorum:

  • Google Colab: Google Colab, ücretsiz GPU desteği ile modellerinizi eğitmek için mükemmel bir yerdir. Eğitim süresince yüksek performans sunar ve ücretsizdir. Hugging Face çoğu modelde platform üzerinden direkt bağlantı sağlayabiliyor.
  • Jupyter Notebook: Kendi bilgisayarınızda veya bir sunucuda Jupyter Notebook ile çalışabilirsiniz. Özellikle kendi donanımınız güçlü ise bu seçenek maliyetsizdir ve büyük esneklik sunar.
  • Kaggle: Kaggle, ücretsiz GPU ve TPU desteği sunar. Veri bilimi yarışmaları ve projeler için ideal bir ortamdır.

Free-Trial abonelikler ile deneyebileyeceğiniz ortamlar ise:

  • Azure ML: Microsoft’un sunduğu güçlü bir AI platformudur. Geniş veri işleme kapasitesi ve public cloud ekosistemi ile entegrasyon seçenekleri sunar.
  • OpenShift AI: Kubernetes tabanlı bu platform, esnek ve açık kaynaklı bir çözümdür. Hem on-premise hem de bulut ortamları için uygundur.
    Fine-Tuning gibi işlem gücü senaryolarda avantaj sağlar.
  • Amazon Sagemaker: Amazon Sagemaker, büyük ölçekli projeler için idealdir. Kapsamlı araçlar ve yüksek ölçeklenebilirlik elde edilir.
  • IBM Watson: Yapay zeka ve veri analitiği konusunda uzun yıllardır kendini kanıtlamış bir platformdur. Özellikle kurumsal projeler için geniş entegrasyon ve kullanım seçenekleri sunuyor.

OpenShift AI

Yazımın devamında yakın zamanda katıldığım Red Hat OpenShift AI workshop deneyimimden bahsedeceğim. Aynı zamanda Red Hat Global Youtube kanalında benzer bir demo videosu mevcut.

OpenShift AI ile veri bilimi projelerinin baştan sona yönetimini, MLOps süreçlerini ve dağıtım için gerekli adımların hepsini kolaylıkla sağlayabiliyorsunuz. Modellerinizi hem bulut ortamlarında hem de on-premise üzerinde çalıştırabilirsiniz.

Hugging Face’den alacağınız modelleri geliştirmeden tutun AI destekli uygulamaları daha hızlı teslim etmek için ekipler arasında karmaşıklığı azaltmaya kadar pek çok avantaj ile geliyor.

OpenShift AI Dev-Sandbox ortamı 30 gün ücretsiz. Kullanıcı oluşturarak platformun özelliklerini deneyimleyebilirsiniz.

Jupyter Notebook Tabanlı Büyük Dil Modeli (LLM) Örnekleri

LLM (Large Language Model), çok büyük miktarda metin verisi üzerinde eğitilmiş yapay zeka modelleridir. Bu modeller, dilin karmaşıklıklarını öğrenerek metin üretme, çeviri yapma ve soruları yanıtlama gibi görevleri gerçekleştirebilirler. GPT-4 bunun en iyi örneği olabilir.

Workshop içeriğine dönecek olursak, farazi bir sigorta projesini Github’dan pull ettikten sonra iki farklı oturumda LLM ve image detection metotları üzerinden ilerlediğimizi söyleyebilirim.

İlk oturumda metin özetleme, bilgi çıkarımı, iki LLM’i karşılaştırma ve model yeteneklerini genişletme gibi doğal dil işleme adımlarını izledik.

Örneğin eğitim verilerinde bulunmayan bir soru sorduğumuzda, yanıt verebilmesi için modeli güncellemek gerektiğinde, Alıntı Yönlendirilmiş Üretim (RAG) yöntemiyle LLM’yi yeniden eğitmeden veya ince ayar (fine-tuning) yapmadan üretken yapay zekanın yeteneklerini artırabildik.

RAG step

Yeniden eğitim sonrasında, modelin kullandığı ‘California driver handbook’ gibi belgelerin içeriği, vektör temsilleriyle bir Vektör Veritabanı’nda depolandığı yerden bulunabilir hale geldi. Yani ek kaynak erişimi çoğaldı.

Bu sayede model, zaman ve donanım ihtiyacını minimuma indirerek kullanıcı sorgusuna yönelik, relevant bilgi parçalarını bulup kullanabiliyor.

DevOps tarafında ise model performansını sistemli olarak test etmek için platform, Elyra Pipeline operatörünü sunuyor.

Görseldeki akışı oluşturup otomasyon sürecini başlattık. Python, notebook veya R dosyalarını sürükle-bırak yöntemiyle dilediğiniz gibi kurgulayarak test süreçlerini gerçekleştirebiliyorsunuz.

YOLOv8 ile Görüntü İşleme

İkinci oturumda ise object detection senaryolarında kullanılan YOLOv8 modeli ile görüntü işleme adımlarını gerçekleştirdik.

Model, araçları ve araç üzerinde varsa mevcut kaza görüntülerini tespit edebilme yeteneğine sahip. Sırasıyla modeli güncellediğimizde, araç görüntülerinde hasar oranlarını bile belirleyebilen noktaya gelecek.

Bu teknoloji, yakın gelecekte sigorta şirketleri için hasar tespitinde veya trafik yönetimi gerektiren iş kollarında daha sık kullanılacak gibi duruyor.

Hugging Face’den alınan bu model içeriğinde ultralytics paketi ve bazı Python paketlerini barındırıyor.

import cv2
from ultralytics import YOLO
from PIL import Image

İlerleyen adımlarda görüntüde birden fazla araç olduğunda, kaç araç olduğunu belirleyebilmesini ve araçların etrafında box ile işaretlenmesini istediğimiz için modeli güncelledik.

# This is the same code we used in the previous cells, but in one pass
results = model.predict("images/carImage4.jpg")
result = results[0]
for box in result.boxes:
class_id = result.names[box.cls[0].item()]
cords = box.xyxy[0].tolist()
cords = [round(x) for x in cords]
conf = round(box.conf[0].item(), 2)
print("Object type:", class_id)
print("Coordinates:", cords)
print("Probability:", conf)
print("---")
Image.fromarray(result.plot()[:,:,::-1])

output:

Kaza hasar oranlarını belirleyebilmek için model retrain aşamasına geldiğimizde YOLO modelini yeniden eğitmek için, RoboFlow’dan elde edilen orta (0) ve ciddi (1) kazalar olarak etiketlenmiş araba görüntülerinden oluşan anotasyonlu bir veri seti kullandık.

Veri seti, eğitim (train) ve doğrulama (valid) olmak üzere iki alt klasöre ayrılıyor. Her alt klasörde, görüntüler (images) ve etiketler (labels) olarak iki alt klasörde bulunuyor.

Her görüntünün labels alt klasöründe aynı isimde bir etiketleme metin dosyası olacak. Etiketleme metin dosyalarının isimleri görüntü dosyalarıyla aynı olacak. Eğitim sürecini başlatmak için, nesne sınıflarını ve veri setlerini tanımlayan bir YAML dosyası (data.yaml) modelin training metoduna ilettik.

# Load model
model = YOLO('yolov8m.pt') # load a pretrained model (recommended for training)
# Train the model

results = model.train(data='./datasets/accident-sample/data.yaml', epochs=1, imgsz=640, batch=2)

Artık modelimizi yeniden eğittiğimize göre, bazı örnek görüntülere karşı test edebiliriz. Modelimizi onnx formatına dönüştürdük ve bir kopyasını bir S3 klasörüne yerleştirdik. Bu sürümü bazı örnek test görüntülerine karşı test edeceğiz.

# Get the newly trained model.

model = YOLO("https://rhods-public.s3.amazonaws.com/demo-models/ic-models/accident/accident_detect.onnx", task="detect")

Yeniden eğitilmiş modeli kullanarak, aşağıdaki resimde olduğu gibi ciddi bir araba kazasını %88 kesinlikle tanımlayabildiğimizi gördük

Son adım: Model Serving

Eğitim ve test süreçlerinden sonra model, OpenShift AI Model Serving ile devreye alındı. Bu noktada, OpenVINO Model Server kullanarak bir model sunucusu oluşturduk ve devreye aldık.
Modelin düzgün çalıştığını görmek için, model sunucusunun URL’ini alarak onun üzerinden API çağrıları ile sonucu görüntüledik.

Modeli başarıyla deploy ettikten sonra OpenShift AI platformu üzerinden web uygulamalarına dağıtabilir veya çeşitli pipeline süreçlerine entegre edebiliriz.

Özetle Red Hat OpenShift AI’ın modelleri eğitmek, veri işlemek, test etmek ve dağıtmak için nasıl bir platform sunduğunu deneyimledik. LLM veya YOLOv8 gibi gelişmiş modelleri kolayca güncellemenizi ve uygulamara hızlı şekilde entegre etmenizi sağıyor.

--

--