cuml-machine-learning

作成者: langchain-ai

GPUアクセラレーションによる表形式データの機械学習に使用します。NVIDIA cuMLを利用します。分類、回帰、クラスタリング、次元削減を含むタスクで起動します。

npx skills add https://github.com/langchain-ai/deepagents --skill cuml-machine-learning

cuML Machine Learning Skill

GPU-accelerated machine learning using NVIDIA RAPIDS cuML. cuML provides a scikit-learn-compatible API that runs on NVIDIA GPUs, enabling massive speedups on large datasets.

When to Use This Skill

Use this skill when:

  • Training classification models (predict categories, detect fraud, classify text)
  • Training regression models (forecast values, predict prices, estimate quantities)
  • Clustering data (segment customers, group documents, find patterns)
  • Dimensionality reduction (visualize high-dimensional data, compress features)
  • Preprocessing and feature engineering on large datasets
  • Any ML task on datasets with 10K+ rows where GPU acceleration helps

Initialization (REQUIRED)

Always start every script with this boilerplate. It tests actual GPU ML operations.

import pandas as pd
import numpy as np

try:
    import cudf
    import cuml
    # Smoke-test: verify GPU ML works end-to-end
    _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 unavailable, falling back to scikit-learn: {e}")
    GPU = False

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

def to_pd(df):
    """Convert cuML/cuDF output to pandas. Use this instead of .to_pandas() directly."""
    if not GPU:
        return df
    try:
        return df.to_pandas()
    except Exception as e:
        print(f"[GPU] .to_pandas() failed, using Arrow fallback: {e}")
        return df.to_arrow().to_pandas()

Import Patterns

# GPU mode
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 not in sklearn — skip or pip install umap-learn

Quick Reference

Train/Test Split (Start Here)

X = df[["feature1", "feature2", "feature3"]].astype("float32")
y = df["target"]

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

Classification

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

predictions = model.predict(X_test)
accuracy = float(accuracy_score(to_pd(y_test), to_pd(predictions)))
print(f"Accuracy: {accuracy:.4f}")

# Feature importances (tree models only)
importances = to_pd(model.feature_importances_)
for name, imp in zip(feature_names, importances):
    print(f"  {name}: {imp:.4f}")

Regression

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

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

# Coefficients
coeffs = to_pd(model.coef_)
print(f"Intercept: {float(model.intercept_):.4f}")

Clustering (KMeans)

X = df[["feature1", "feature2"]].astype("float32")

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

labels = to_pd(model.labels_)
centroids = to_pd(model.cluster_centers_)
inertia = float(model.inertia_)

print(f"Inertia: {inertia:.2f}")
print(f"Cluster sizes: {labels.value_counts().sort_index().to_dict()}")
print(f"Centroids:\n{centroids}")

Dimensionality Reduction (PCA)

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

pca = PCA(n_components=3)
X_reduced = pca.fit_transform(X_scaled)

variance_ratio = to_pd(pca.explained_variance_ratio_)
print(f"Explained variance: {[f'{v:.4f}' for v in variance_ratio]}")
print(f"Total explained: {float(sum(variance_ratio)):.4f}")

Dimensionality Reduction (UMAP — GPU only)

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

Preprocessing

# Scale numeric features
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X.astype("float32"))

# Encode categorical columns
le = LabelEncoder()
df["category_encoded"] = le.fit_transform(df["category"])

Data Type Requirements

  • cuML requires float32 or float64 for features. Always cast: X.astype("float32")
  • Integer targets (classification labels) work directly
  • Categorical columns must be encoded first (LabelEncoder or OneHotEncoder)
  • cuML does NOT support sparse matrices — always use dense data

Gotchas

IssueFix
TypeError: sparse inputConvert to dense: X.toarray() or don't use sparse
PCA solver='randomized' failsUse solver='full' or omit (cuML auto-selects)
UMAP not available on CPUSkip UMAP in CPU mode or pip install umap-learn
Float64 slower than float32Cast to float32: X.astype("float32")
Large dataset OOMReduce features or sample data before fitting

Output Guidelines

When reporting ML results:

  • Include dataset shape (rows × features) and target distribution
  • Show train/test split sizes
  • Report key metrics in a formatted table (accuracy, R², MSE, etc.)
  • For classification: show per-class metrics if multi-class
  • For clustering: show cluster sizes and centroid summaries
  • For dimensionality reduction: show explained variance ratios
  • List feature importances ranked by magnitude
  • Note any data quality issues (class imbalance, missing values, outliers)

langchain-aiのその他のスキル

langgraph-docs
langchain-ai
LangGraphのドキュメントにアクセスして、ステートフルなエージェントやマルチエージェントワークフローを構築できます。公式のLangGraph Pythonドキュメントを取得し、ステートマシン、グラフベースのエージェント設計、ヒューマンインザループパターンをカバーします。クエリの種類に応じて関連ドキュメントを優先します:ハウツー質問には実装ガイド、理論にはコンセプトページ、エンドツーエンドの例にはチュートリアル、技術詳細にはAPIリファレンスを提供します。自動的に2~4個の最も関連性の高いドキュメントURLを選択し、その内容を取得して回答します。
official
langgraph-human-in-the-loop
langchain-ai
グラフの実行を一時停止し、人間によるレビュー、承認、検証を経て、その入力を反映させて再開します。これには3つのコンポーネントが必要です:チェックポインター(InMemorySaverまたはPostgresSaver)、設定内のスレッドID、そしてJSONシリアライズ可能なインタラプトペイロードです。interrupt(value)は一時停止してデータを表示し、Command(resume=value)は再開してその値を一時停止したノードに返します。interrupt()より前のすべてのコードは再開時に再実行されるため、副作用は冪等である必要があります(insertではなくupsertを使用)。承認ワークフローをサポートします。
official
web-research
langchain-ai
このスキルはウェブリサーチに関連するリクエストに使用します。包括的なウェブリサーチを実施するための構造化されたアプローチを提供します。
official
langchain-oss-primer
langchain-ai
LangChain、Deep Agents、またはLangGraphエージェント構築プロジェクトでは、必ずここから始めてください。他のスキルを選択したり、何かを記述する前に必要な出発点です。
official
skill-creator
langchain-ai
エージェントの機能を専門知識、ワークフロー、ツール連携で拡張する効果的なスキルを作成するためのガイド。このスキルは、ユーザーが…のときに使用します。
official
social-media
langchain-ai
プラットフォーム固有のソーシャルメディア投稿を、調査に基づいたコンテンツと生成された補完画像とともに下書きします。LinkedInの投稿(1,300文字、プロフェッショナルなトーン)とTwitter/Xのスレッド(1ツイートあたり280文字、1/🧵形式)に対応。執筆前にサブエージェントに調査を委任し、その後調査結果を読み、正確性と関連性を確認します。generate_social_imageツールを使用して、小さな画面向けに最適化された大胆でコントラストの高い構図の、目を引くソーシャル画像を自動生成します。
official
deep-agents-memory
langchain-ai
Deep Agents向けのプラグイン可能なメモリおよびファイルバックエンド。エフェメラル、永続、ハイブリッドルーティングオプションを備えています。4種類のバックエンドタイプ:StateBackend(スレッドスコープ、エフェメラル)、StoreBackend(セッションをまたいだ永続)、FilesystemBackend(ローカル開発用の実際のディスクアクセス)、CompositeBackend(異なるパスを異なるバックエンドにルーティング)。FilesystemMiddlewareは6つのファイル操作ツールを提供:ls、read_file、write_file、edit_file、glob、grep。CompositeBackendは最長プレフィックス一致を使用してルーティングします...
official
deep-agents-orchestration
langchain-ai
サブエージェントを調整し、複数ステップのタスクを計画し、機密操作には人間の承認を必要とします。タスクツールを介して専門サブエージェントに作業を委任します。カスタムサブエージェントは独立したツールセットとシステムプロンプトをサポートし、デフォルトの「汎用」サブエージェントはメインエージェント設定を継承します。write_todosを使用して複雑なワークフローを計画・追跡し、保留中、進行中、完了済みの状態でタスクを整理します。呼び出し間での永続性のためにthread_idが必要です。実装...
official