CommunityCodierung & Entwicklunggithub.com

cuML-Machine-Learning

GPU-beschleunigtes maschinelles Lernen auf tabellarischen Daten mit NVIDIA cuML. Wird bei Aufgaben wie Klassifikation, Regression, Clustering, Dimensionsreduktion oder Modelltraining auf Datensätzen ausgelöst.

Was ist cuML-Machine-Learning?

Dieser Skill ermöglicht GPU-beschleunigtes maschinelles Lernen auf tabellarischen Daten mithilfe von NVIDIA RAPIDS cuML. Er bietet eine scikit-learn-kompatible API, die auf NVIDIA-GPUs läuft und massive Beschleunigungen bei großen Datensätzen erzielt. Der Skill eignet sich für Klassifikation, Regression, Clustering, Dimensionsreduktion und Datenvorverarbeitung. Er unterstützt sowohl GPU- als auch CPU-Modi mit automatischem Fallback und stellt in der SKILL.md detaillierte Codebeispiele, Importmuster und Fallstricke (Gotchas) bereit. Entwickler erhalten dadurch eine zuverlässige Grundlage, um ML-Workflows auf GPU-Clustern oder lokalen Rechnern effizient umzusetzen, wobei die volle Kontrolle über Datenformatierung und Ausgabequalität gewährleistet bleibt.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/rpulid/skills/tree/HEAD/skills/AI_Research/deepagents/examples/nvidia_deep_agent/skills/cuml-machine-learning

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

cuML Machine Learning Skill

GPU-beschleunigtes maschinelles Lernen mit NVIDIA RAPIDS cuML. cuML bietet eine scikit-learn-kompatible API, die auf NVIDIA-GPUs läuft und massive Beschleunigungen bei großen Datensätzen ermöglicht.

Wann dieser Skill verwendet werden sollte

Verwenden Sie diesen Skill bei:

  • Training von Klassifikationsmodellen (Kategorien vorhersagen, Betrug erkennen, Text klassifizieren)
  • Training von Regressionsmodellen (Werte prognostizieren, Preise vorhersagen, Mengen schätzen)
  • Clustering von Daten (Kunden segmentieren, Dokumente gruppieren, Muster finden)
  • Dimensionsreduktion (hochdimensionale Daten visualisieren, Merkmale komprimieren)
  • Vorverarbeitung und Merkmalsextraktion bei großen Datensätzen
  • Jeder ML-Aufgabe mit Datensätzen ab 10.000+ Zeilen, bei der GPU-Beschleunigung hilfreich ist

Initialisierung (ERFORDERLICH)

Beginnen Sie jedes Skript mit diesem Boilerplate-Code. Er testet tatsächliche GPU-ML-Operationen.

import pandas as pd
import numpy as np

try:
    import cudf
    import cuml
    # Smoke-Test: überprüft, ob GPU-ML Ende-zu-Ende funktioniert
    _test_data = cudf.DataFrame({'a': [1.0, 2.0, 3.0, 4.0], 'b': [5.0, 6.0, 7.0, 8.0]})
    _km = cuml.cluster.KMeans(n_clusters=2, n_init=1, random_state=42)
    _km.fit(_test_data)
    assert len(_km.labels_) == 4
    GPU = True
except Exception as e:
    print(f"[GPU] cuml nicht verfügbar, Fallback auf scikit-learn: {e}")
    GPU = False

def read_csv(pfad):
    return cudf.read_csv(pfad) if GPU else pd.read_csv(pfad)

def to_pd(df):
    """Konvertiert cuML/cuDF-Ausgabe in pandas. Dies statt .to_pandas() direkt verwenden."""
    if not GPU:
        return df
    try:
        return df.to_pandas()
    except Exception as e:
        print(f"[GPU] .to_pandas() fehlgeschlagen, Arrow-Fallback verwendet: {e}")
        return df.to_arrow().to_pandas()

Importmuster

# GPU-Modus
if GPU:
    from cuml.cluster import KMeans, DBSCAN, HDBSCAN
    from cuml.ensemble import RandomForestClassifier, RandomForestRegressor
    from cuml.linear_model import LinearRegression, Ridge, Lasso, LogisticRegression
    from cuml.neighbors import KNeighborsClassifier, KNeighborsRegressor
    from cuml.svm import SVC, SVR
    from cuml.decomposition import PCA, TruncatedSVD
    from cuml.manifold import UMAP, TSNE
    from cuml.preprocessing import StandardScaler, MinMaxScaler, LabelEncoder
    from cuml.model_selection import train_test_split
    from cuml.metrics import accuracy_score, r2_score, mean_squared_error
# CPU-Fallback
else:
    from sklearn.cluster import KMeans, DBSCAN, HDBSCAN
    from sklearn.ensemble import RandomForestClassifier, RandomForestRegressor
    from sklearn.linear_model import LinearRegression, Ridge, Lasso, LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier, KNeighborsRegressor
    from sklearn.svm import SVC, SVR
    from sklearn.decomposition import PCA, TruncatedSVD
    from sklearn.manifold import TSNE
    from sklearn.preprocessing import StandardScaler, MinMaxScaler, LabelEncoder
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score, r2_score, mean_squared_error
    # UMAP nicht in sklearn – überspringen oder `pip install umap-learn`

Kurzreferenz

Train/Test-Split (Hier beginnen)

X = df[["merkmal1", "merkmal2", "merkmal3"]].astype("float32")
y = df["ziel"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Klassifikation

model = RandomForestClassifier(n_estimators=100, max_depth=10, random_state=42)
model.fit(X_train, y_train)

vorhersagen = model.predict(X_test)
genauigkeit = float(accuracy_score(to_pd(y_test), to_pd(vorhersagen)))
print(f"Genauigkeit: {genauigkeit:.4f}")

# Merkmalswichtigkeiten (nur Baummodelle)
wichtigkeiten = to_pd(model.feature_importances_)
for name, imp in zip(merkmalnamen, wichtigkeiten):
    print(f"  {name}: {imp:.4f}")

Regression

model = Ridge(alpha=1.0)
model.fit(X_train, y_train)

vorhersagen = model.predict(X_test)
r2 = float(r2_score(to_pd(y_test), to_pd(vorhersagen)))
mse = float(mean_squared_error(to_pd(y_test), to_pd(vorhersagen)))
print(f"R²-Score: {r2:.4f}")
print(f"MSE: {mse:.4f}")

# Koeffizienten
koeffizienten = to_pd(model.coef_)
print(f"Achsenabschnitt: {float(model.intercept_):.4f}")

Clustering (KMeans)

X = df[["merkmal1", "merkmal2"]].astype("float32")

model = KMeans(n_clusters=4, n_init=10, random_state=42)
model.fit(X)

labels = to_pd(model.labels_)
zentren = to_pd(model.cluster_centers_)
traegheit = float(model.inertia_)

print(f"Trägheit: {traegheit:.2f}")
print(f"Clustergrößen: {labels.value_counts().sort_index().to_dict()}")
print(f"Zentren:\n{zentren}")

Dimensionsreduktion (PCA)

scaler = StandardScaler()
X_skaliert = scaler.fit_transform(X.astype("float32"))

pca = PCA(n_components=3)
X_reduziert = pca.fit_transform(X_skaliert)

varianz_anteil = to_pd(pca.explained_variance_ratio_)
print(f"Erklärte Varianz: {[f'{v:.4f}' for v in varianz_anteil]}")
print(f"Gesamte erklärte Varianz: {float(sum(varianz_anteil)):.4f}")

Dimensionsreduktion (UMAP – nur GPU)

if GPU:
    reducer = UMAP(n_components=2, n_neighbors=15, min_dist=0.1, random_state=42)
    einbettung = to_pd(reducer.fit_transform(X_skaliert))
    print(f"UMAP-Einbettungsform: {einbettung.shape}")

Vorverarbeitung

# Numerische Merkmale skalieren
scaler = StandardScaler()
X_skaliert = scaler.fit_transform(X.astype("float32"))

# Kategoriale Spalten kodieren
le = LabelEncoder()
df["kategorie_kodiert"] = le.fit_transform(df["kategorie"])

Datenformatanforderungen

  • cuML benötigt float32 oder float64 für Merkmale. Immer mit X.astype("float32") umwandeln.
  • Ganzzahlige Ziele (Klassifikationslabels) funktionieren direkt.
  • Kategoriale Spalten müssen zuerst kodiert werden (LabelEncoder oder OneHotEncoder).
  • cuML unterstützt keine dünnbesetzten Matrizen – immer dichte Daten verwenden.

Fallstricke

ProblemLösung
TypeError: sparse inputIn dichte Daten konvertieren: X.toarray() oder keine Sparsity verwenden
PCA solver='randomized' schlägt fehlsolver='full' verwenden oder weglassen (cuML wählt automatisch)
UMAP auf CPU nicht verfügbarUMAP im CPU-Modus überspringen oder pip install umap-learn
Float64 langsamer als float32In float32 umwandeln: X.astype("float32")
Großer Datensatz OOMReduzieren Sie die Merkmale oder stichproben Sie die Daten vor dem Fitten

Ausgabe-Richtlinien

Beim Melden von ML-Ergebnissen:

  • Datensatzform (Zeilen × Merkmale) und Zielverteilung angeben
  • Größen von Trainings- und Testsets anzeigen
  • Wichtige Metriken in einer formatierten Tabelle ausgeben (Genauigkeit, R², MSE usw.)
  • Bei Klassifikation: Metriken pro Klasse anzeigen, wenn mehrklassig
  • Bei Clustering: Clustergrößen und Zusammenfassungen der Zentren anzeigen
  • Bei Dimensionsreduktion: Anteile der erklärten Varianz anzeigen
  • Merkmalswichtigkeiten nach Größe geordnet auflisten
  • Datenqualitätsprobleme notieren (Klassenungleichgewicht, fehlende Werte, Ausreißer)

Verwandte Skills