NVIDIA, veri bilimi ve makine öğrenimini kullanarak çip üretimi ve operasyon prosedürlerini optimize etmektedir. Bu süreçler, wafer üretiminden devre testi ve paketlenmiş çip testine kadar uzanmaktadır. Bu aşamalar, terabaytlarca veri üretir ve bu verilerin somut içgörülere dönüştürülmesi, kalite, verimlilik ve maliyet etkinliği sağlamak açısından kritik bir önem taşır. Yıllar içinde, hata tespiti ve test optimizasyonu gibi sorunlara çözüm sunan güçlü makine öğrenim (ML) boru hatları geliştirdik.
Bu, CUDA-X kütüphaneleri gibi NVIDIA cuDF ve NVIDIA cuML ile uyguladığımız bu tür boru hatlarından edindiğimiz temel deneyimleri paylaşacağımız bir dizi blog yazısının ilkidir. Bu dersler yarı iletken üretiminden gelse de, zorluklar ve çözümler lojistik, kalite mühendisliği ve tedarik zinciri optimizasyonu gibi alanlarda geniş bir şekilde uygulanabilir.
Birkaç örnek üzerinden başlayalım: bir çipin belirli bir testi geçip geçmeyeceğini tahmin etmek, gerçek dünya sınıflandırma görevlerinden biridir. Daha gelişmiş senaryolarda, hedef bir çipin performans grubunu (L1 ile L5 arasında) tahmin etmek ve problemi çok sınıflı bir sınıflandırma problemi olarak formüle etmektir.
Her iki durumda da model, birden fazla kaynaktan gelen zengin ölçüm sinyallerini kullanır:
- Sparse (seyrek) özellikler: wafer seviyesi metrologi
- Dense (yoğun) sinyaller: devre testi verileri ve paketlenmiş birimlerden gelen yüksek doğruluklu fonksiyonel test sonuçları
Bu veri setleri, genellikle yüz binlerce satır ve birkaç yüz özellik kapsar ve geleneksel işlemci tabanlı veri işleme iş akışlarını hızla zorlayabilir.
Dengesiz veri setleri ile başa çıkma
Operasyon odaklı makine öğreniminde (Ops ML) önemli bir zorluk aşırı sınıf dengesizliğidir. Bazı çip ailelerinde, bir testi geçen birimlerin oranı %99’dan fazladır ve yalnızca bir kısmı başarısızdır. Bu dengesizlik, sağlam modeller eğitimi açısından zorlu hale gelir, çünkü standart öğreniciler çoğunluk sınıfına yönelik bir eğilim gösterir.
Bunu aşmak için, CUDA-X veri bilimi kütüphanelerini, özellikle de cuDF ve cuML kullanarak hızlı veri dönüşümleri ve ölçeklenebilir model deneyleri yapıyoruz. Aşırı dengesiz veri setleriyle çalışırken, SMOTE gibi hedefli örnekleme yöntemleri ve alt örnekleme uygulayarak sınıfları dengelemekteyiz. Böylece daha istikrarlı ve etkili model eğitimi sağlıyoruz. CUDA-X kütüphanelerini kullanarak bu stratejileri doğrudan GPU belleğinde uygulamak, iterasyon sürelerini önemli ölçüde azaltır ve deneylerin ölçeklenmesini sağlar.
Yapay azınlık aşma tekniği (SMOTE)
# Azınlık Aşma (SMOTE) cuML kullanarak
from imblearn.over_sampling import SMOTE
from cuml.neighbors import NearestNeighbors
# X,y, özellikler ve hedef verileri olan veri çerçeveleridir
nn = NearestNeighbors(n_neighbors=6)
X_resampled, y_resampled = SMOTE(n_neighbors=nn).fit_resample(X, y)
Deneylerimizde, cuML’in NearestNeighbors yöntemi ile scikit-learn ile karşılaştırıldığında, SMOTE ile birlikte 2x ila 8x hız kazanımı sağlıyor, bu da CUDA-X kütüphanelerinin değerini ortaya koyuyor.
Stratifiye alt örnekleme
# cuDF kullanarak hızlı alt örnekleme örneği
df['label'] = df['label'].astype('category')
sampled_df = df.groupby('label').sample(n=10000, replace=True)
X_resampled, y_resampled = sampled_df[x_features], sampled_df[target]
Pratikte hızlı iterasyon kritik bir öneme sahiptir. Genellikle, ham CP ve FT verilerinden model hazır özelliklere sadece birkaç saat içinde ulaşabiliyoruz. Bunun nedeni, cuDF’nin GPU hızlandırmalı birleştirmeleri, filtreleri ve grup işlemlerini kullanabilmesidir. Ayrıca, random forest veya XGBoost gibi modeller eğitirken, cuML genellikle CPU tabanlı sürümlere kıyasla 5x ila 30x hız kazancı sunarak daha fazla hipotez test etmemizi ve modelleri hızlıca ayarlamamız mümkün hale geliyor. Bu esneklik, fabrika ortamındaki mühendislerle gerçek zamanlı olarak çözümler prototiplememizi sağlamıştır.
Değerlendirme için önemli metrikler
Aşırı dengesiz veri setleri yalnızca eğitim sürecini zorlaştırmakla kalmaz, aynı zamanda standart değerlendirme metriklerini de çarpıtır. Örneğin, doğruluk, bir modelin her çipi “geçer” olarak tahmin etmesi ve %99 oranında doğru olabilmesi durumunda anlamını yitirir.
Gerçek performansı daha iyi yansıtmak için, ağırlıklı doğruluk ve precision-recall eğrisi altında alan gibi metrikleri kullanıyoruz.
Ağırlıklı doğruluk
Her kategori için ayrı ayrı doğruluğu değerlendiririz ve bu kategorilerin eşit öneme sahip olmasını sağlamak için ağırlıklı ortalamasını alırız.
Geçme doğruluğu: p_ac = Tahmin Edilen Geçen/(Tahmin Edilen Geçen + Gerçek Geçen)
Başarısızlık doğruluğu: f_ac = Tahmin Edilen Başarısız/(Tahmin Edilen Başarısız + Gerçek Başarısız)
Ağırlıklı formüle göre:
acc = w_f * f_acc + (1 – w_f) * p_acc
Çoğu durumda uygun bir seçenek olarak w_f = 0.5 almak, şu şekilde bir sonuç verir:
acc = (f_acc + p_acc) / 2
Precision-recall eğrisi
Aşırı dengesiz veri setlerinde, geleneksel ROC eğrisi ve AUC metridi yanıltıcı olabilir. Örneğin, %98 verimlilikle (yani, %2 başarısız olan parçalar) çok dengesiz bir veri setini ele alalım.
ROC ve precision-recall eğrilerini karşılaştırdığımızda, ROC eğrisindeki bir işaretçi, doğru pozitif oranının 0.61 ve yanlış pozitif oranının 0.13 olduğu bir noktayı vurgular. İlk bakışta, bu makul bir işletme noktası gibi görünebilir. Ancak dengesiz veri setlerinde ROC eğrileri, yanlış pozitiflerin maliyetini vurgulamadığı için yanıltıcı olabilir.
Precision-recall (PR) eğrisindeki aynı noktaya baktığımızda, precision yalnızca 0.09 ve recall 0.61 olduğunu görürüz. Bu, modelin “başarısız” olarak tahmin ettiği her 100 birim için yalnızca 9’un gerçekten başarısız olduğunu gösterir ki bu, çoğu gerçek dünya üretim senaryosunda kabul edilebilir değildir.

Aşağıdaki karışıklık matrisinin, yukarıdaki grafikteki işaretçi ile ilişkili olduğunu görebiliriz ve bu noktada 1,274 birim yanlış olarak “başarısız” olarak işaretlenmiştir, karşılığında sadece 122 birim doğru bir şekilde “başarısız” olarak işaretlenmiştir. Bu, %90’dan fazla bir yanlış alarm oranıdır. Precision-recall eğrisi, bu zayıf performansı daha görünür hale getirir.

Ele alınan duruma dair kod örneği aşağıdadır.
import cuml
from sklearn.datasets import make_classification
from cuml.model_selection import train_test_split
from cuml.ensemble import RandomForestClassifier as cuRF
from cuml.metrics import roc_auc_score, precision_recall_curve
import cupy as cp
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# yapay veri seti boyutları
n_samples = 10000
n_features = 20
n_classes = 2
# random forest derinliği ve boyutu
n_estimators = 25
max_depth = 10
# yapay veri oluşturma [ ikili sınıflandırma görevi ]
X, y = make_classification(n_classes=n_classes,
n_features=n_features,
n_samples=n_samples,
random_state=13,
weights=[0.98, 0.02])
X_train, X_test, y_train, y_test = train_test_split(
X, y, random_state=0, test_size=0.3)
# RandomForest Sınıflandırıcısını eğit
model = cuRF(max_depth=max_depth,
n_estimators=n_estimators,
random_state=0)
trained_RF = model.fit(X_train, y_train)
ypred = model.predict_proba(X_test)[:, 1]
# ROC eğrisini hesapla
fpr, tpr, _ = roc_curve(y_test, ypred)
roc_auc = roc_auc_score(y_test, ypred)
plt.plot(fpr, tpr, color='darkorange', label='ROC Eğrisi')
# Precision-Recall eğrisini hesapla
precision, recall, _ = precision_recall_curve(y_test, ypred)
pr_auc = auc(cp.asnumpy(recall), cp.asnumpy(precision))
plt.plot(recall, precision, color='darkorange', label='Precision-Recall Eğrisi')
Açıklık ve Eyleme Geçme
Model performansı sadece bir parçayı oluşturur. Operasyonel ortamlarda, açıklık ve eyleme geçme aynı derecede önemlidir. Test sonuçlarını tahmin etmek gerçekten anlamlıdır; ancak, alan uzmanları modelin mantığını anlayıp güvenmediği sürece bir değer taşımaz.
Bu nedenle, cuML’in toplu modellerde özellik önemini destekleyen yerel desteğinden yararlanıyoruz. Bu yetenek, mühendislik incelemesi için yüksek etki alanı olan özellikleri öne çıkarmamıza yardımcı olur. Bazı durumlarda, bu içgörüler, tekrar eden veya düşük değerli test adımlarının ortadan kaldırılmasına yol açtı ve bu da doğrudan maliyet tasarrufuna ve süreçlerin sadeleşmesine sebep oldu.
Ayrıca, alan uzmanlarının model çıktıları üzerinde sarmak için cuML’in GPU hızlandırmalı SHAP (SHapley Additive exPlanations) uygulamalarını, örneğin Kernel SHAP ve Permutation SHAP açıklayıcılarını kullanıyoruz. Bu araçlar, her özelliğin model tahminlerine katkısını anlamamıza olanak sağlar ve global ile yerel açıklayıcılık sunar. Pratikte, bu SHAP tabanlı içgörüler, tekrar eden veya daha az öngörücü test adımlarını belirlememize yardımcı oldu, bu da testlerin ortadan kaldırılması yoluyla maliyet tasarrufları sağladı.
Sonuç
Daha fazla keşfetmek isteyenler için cuDF belgelendirmesi, GPU hızlandırmalı veri manipülasyonu üzerine kapsamlı kılavuzlar sunarken; cuML belgelendirmesi ise GPU’lar için optimize edilmiş makine öğrenimi algoritmalarının bir yelpazesini ayrıntılarıyla anlatmaktadır. Bu kaynaklar, CUDA-X Veri Bilimi kütüphanelerinin potansiyelinden yararlanmak isteyen uygulayıcılar için paha biçilmez birer kaynaktır.
Eğer halihazırda pandas, Polars veya scikit-learn gibi kütüphanelerle oluşturulmuş iş akışlarınız varsa, CUDA-X ayrıca cuDF’nin pandas hızlandırıcısı ve cuML’nin scikit-learn için tahsis edilen estimatörleri üzerinden sıfır kod değişikliği ile hızlandırma olanağı sunar. Bu da mevcut Python boru hatlarınızı baştan yazmaya gerek kalmadan ölçeklendirmenizi kolaylaştırır. Hızlandırılmış veri bilimi konusunda daha derin bir bilgiye sahip olmak için, DLI Öğrenme Yolu üzerinden uygulamalı kurslara kaydolabilirsiniz.
Gelecek blog yazılarımızda, test sinyallerini birleştirme ve mekansal Z-verimliliği hesaplama gibi özellik mühendisliği tekniklerine, Kalite Maliyeti (CoQ) eğrisi gibi iş odaklı metriklerle model değerlendirmeye ve ML’in operasyon mühendisliğini güçlendirme konusundaki en iyi uygulamalara odaklanacağız. Bu dersler, CUDA-X tabanlı boru hatları ve NVIDIA’nın üretim alanına dayanmaktadır, ancak bu örüntüler veri zengini ve karar odaklı operasyon ortamlarında tekrarlanabilir.
ML uygulamalarını inşa etme ve dağıtma aşamalarının diğer kısımlarında detaylandırılacak yeni yazılarımızı bekleyin. Veri işleme iş akışlarını hızlandırmak sadece başlangıçtır. Eyleme geçmek ise asıl değerin ortaya çıkmasıdır.