Communitygithub.com

G1Joshi/Agent-Skills

Expert en calcul distribué Dask, couvrant les DataFrames, Array, Futures et la mise à l'échelle de clusters. À utiliser pour analyser des jeux de données trop volumineux pour pandas sur une machine unique ou un cluster multi-nœuds.

Qu'est-ce que Agent-Skills ?

Cette compétence fournit une assistance experte pour Dask, une bibliothèque de calcul distribué qui permet de paralléliser et de distribuer des tâches Python. Elle est idéale pour les développeurs et data scientists manipulant des jeux de données dépassant la mémoire vive d'une seule machine, que ce soit pour des opérations tabulaires (10 Go à 1 To), du machine learning distribué, ou de l'algèbre linéaire sur des matrices massives. La compétence guide l'utilisateur à travers les concepts fondamentaux comme les DataFrames, les Array, les Futures et les graphes de tâches personnalisés avec `dask.delayed`. Elle inclut des exemples concrets de code, des meilleures pratiques (taille des chunks, utilisation du tableau de bord, persistance des données) ainsi qu'une table de dépannage pour les erreurs courantes (mémoire insuffisante, tâches trop petites, objets volumineux). Compatible avec les workflows Pandas/NumPy et l'intégration GPU, cette compétence est conçue pour fonctionner avec les agents de code type Claude Code, Cursor ou Codex afin de les conseiller efficacement sur l'utilisation de Dask.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/G1Joshi/Agent-Skills/tree/HEAD/skills/ai-ml/dask

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Dask

Dask met à l'échelle Python. Il ressemble à Pandas/NumPy mais s'exécute sur des clusters. Les mises à jour 2025 se concentrent sur le High Performance Shuffle et l'intégration GPU.

Quand l'utiliser

  • Calcul tabulaire dépassant la mémoire : Traitement de jeux de données CSV/Parquet de 10 Go à 1 To sur une machine unique ou un cluster multi-nœuds.
  • Parallélisation de workflows Python personnalisés : Utilisation de dask.delayed pour paralléliser des boucles Python arbitraires et des graphes de tâches.
  • Machine Learning distribué : Intégration avec Scikit-learn, XGBoost et LightGBM sur des nœuds workers distribués.
  • Mise à l'échelle NumPy et Pandas : API familières prêtes à l'emploi pour les calculs sur des tableaux et DataFrames hors mémoire.

Démarrage rapide

import dask.dataframe as dd

# Lire paresseusement des fichiers CSV partitionnés de plusieurs Go
df = dd.read_csv('data/transactions_*.csv')

# Calculer des statistiques agrégées en parallèle sur tous les cœurs CPU
resultat = df.groupby('category').amount.mean().compute()
print(resultat)

Concepts de base

#Traitement hors mémoire avec Dask DataFrame

Chargement de fichiers Parquet partitionnés et calcul d'agrégations de manière paresseuse :

import dask.dataframe as dd
from dask.distributed import Client

# Initialiser un cluster distribué local
client = Client(n_workers=4, threads_per_worker=2, memory_limit='4GB')
print(f"Tableau de bord Dask accessible à : {client.dashboard_link}")

# Chargement paresseux d'un ensemble de fichiers
import dask.dataframe as dd
df = dd.read_parquet(
    's3://analytics-bucket/transactions/*.parquet',
    columns=['customer_id', 'amount', 'status', 'country'],
    engine='pyarrow'
)

# Construire le graphe de calcul paresseux
filtre = df[df['status'] == 'completed']
metriques = filtre.groupby('country')['amount'].agg(['mean', 'sum', 'count'])

# Exécuter le graphe et retourner un DataFrame Pandas concret
resultat_df = metriques.compute()
print(resultat_df)

#Graphes de tâches personnalisés avec dask.delayed

Parallélisation d'exécutions de fonctions indépendantes :

from dask import delayed, compute
import time

@delayed
def fetch_api_data(endpoint: str) -> dict:
    time.sleep(0.5) # Simulation d'E/S
    return {'endpoint': endpoint, 'status': 200, 'items': [1, 2, 3]}

@delayed
def transform_payload(data: dict) -> int:
    return sum(data['items'])

@delayed
def aggregate_totals(totals: list[int]) -> int:
    return sum(totals)

# Construire le DAG de dépendances
endpoints = ['users', 'orders', 'inventory', 'payments']
recuperes = [fetch_api_data(ep) for ep in endpoints]
transformes = [transform_payload(f) for f in recuperes]
total_final = aggregate_totals(transformes)

# Exécuter toutes les tâches en parallèle sur le cluster
total_resultat = total_final.compute()
print("Grand Total :", total_resultat)

#Dask Array pour l'algèbre linéaire distribuée

Manipulation de tableaux multi-dimensionnels massifs :

import dask.array as da

# Créer un tableau de 50 000 x 50 000 divisé en morceaux de 5 000 x 5 000
x = da.random.normal(10, 0.1, size=(50000, 50000), chunks=(5000, 5000))

# Effectuer des calculs paresseux
y = x + x.T
z = y[::2, ::2].mean(axis=0)

# Calculer le résultat
resultat = z.compute()
print("Forme moyenne du tableau calculé :", resultat.shape)

Patterns courants

Futures distribués pour des graphes de tâches irréguliers

Problème : Calculs parallèles personnalisés qui ne s'adaptent pas facilement aux structures lignes/colonnes de DataFrame/Array.

Solution : Utiliser le client distribué Dask avec des futures asynchrones :

from dask.distributed import Client

client = Client(n_workers=4, threads_per_worker=2)

def entrainer_partition(id_part : int):
    # Entraîner un sous-modèle local
    return f"Modèle {id_part} entraîné"

futures = [client.submit(entrainer_partition, i) for i in range(10)]
resultats = client.gather(futures)
print(resultats)

Meilleures pratiques (2026)

  • À faire : Vérifier le tableau de bord web Dask (généralement sur le port 8787) pour surveiller la pression mémoire, les flux de tâches et les goulots d'étranglement.
  • À faire : Choisir des tailles de morceaux entre 100 Mo et 300 Mo en mémoire pour une efficacité parallèle optimale.
  • À faire : Persister les DataFrames intermédiaires (df = df.persist()) lors de l'interrogation répétée des mêmes données transformées.
  • À faire : Filtrer les colonnes et les lignes tôt en utilisant des projections de colonnes et des prédicats de pushdown.
  • À ne pas faire : Appeler .compute() dans des boucles ; construire le graphe de tâches complet et appeler compute() une seule fois.
  • À ne pas faire : Utiliser Dask si les données tiennent confortablement en RAM ; Pandas natif et Polars sont nettement plus rapides pour les tâches en mémoire.
  • À ne pas faire : Créer des millions de minuscules tâches delayed ; une surcharge excessive de tâches dégrade les performances du planificateur.

Dépannage

ErreurCauseSolution
KilledWorker: Worker exceeded 95% memory budgetUne partition de tâche est trop grande pour tenir dans la RAM du worker pendant le calcul.Augmenter le nombre de partitions : df.repartition(npartitions=100).
UserWarning: Sending large object to workersUn grand tableau NumPy ou DataFrame est passé comme argument direct de fonction.Diffuser les données une fois avec client.scatter(data) avant de soumettre les tâches.
Slow compute: Too many tiny tasksDes milliers de micro-partitions entraînent une surcharge de planification des tâches.Fusionner les petites partitions avec repartition(partition_size="100MB").

Références

Individual skills in this repo

This repo contains 11 individual skills — each has its own dedicated page.

G1Joshi/Agent-Skills

Expert dbt (data build tool) assistance covering SQL modeling, Jinja macros, tests, documentation, and semantic layer. Use when building analytics engineering pipelines on BigQuery, Snowflake, or PostgreSQL.

G1Joshi/Agent-Skills

Expert JAX assistance covering Autograd, XLA compilation (`jit`), vectorization (`vmap`), and parallelization (`pmap`). Use when building high-performance numerical computing and cutting-edge deep learning research.

G1Joshi/Agent-Skills

Expert Ray distributed computing assistance covering Ray Core (actors, tasks), Ray Train, Ray Tune, and Ray Serve. Use when scaling Python compute and ML training across multi-node clusters.

G1Joshi/Agent-Skills

Expert Git version control assistance covering branching, interactive rebase, cherry-pick, submodules, worktrees, and conflict resolution. Use when managing source code history and collaboration workflows.

G1Joshi/Agent-Skills

Expert K9s CLI assistance covering terminal Kubernetes cluster navigation, real-time log streaming, port forwarding, and pod debugging. Use when managing and troubleshooting Kubernetes clusters with speed.

G1Joshi/Agent-Skills

Expert SWC assistance covering high-performance Rust-based JavaScript/TypeScript compilation, .swcrc configuration, Jest testing via @swc/jest, and minification. Use when replacing Babel with SWC for faster builds, accelerating test execution, or compiling modern ECMAScript features.

G1Joshi/Agent-Skills

Expert Tig assistance covering text-mode interface for Git, interactive staging, commit graph visualization, diff exploration, and blame navigation. Use when navigating Git commit history in the terminal, staging hunks interactively, browsing file changes, or reviewing revisions.

G1Joshi/Agent-Skills

Expert Vim assistance covering modal editing, .vimrc configuration, registers, macros, search/replace, and plugin management via vim-plug. Use when editing text efficiently in terminal environments, writing Vimscript, recording macros, or configuring core Vim settings.

G1Joshi/Agent-Skills

Expert Zed editor assistance covering high-performance Rust-based text editing, multi-buffer editing, language server protocols (LSP), and AI assistant integrations. Use when configuring Zed settings.json, setting up language extensions, collaborating in real-time channels, or optimizing editor startup speed.

G1Joshi/Agent-Skills

Expert Zsh assistance covering shell customization, Oh My Zsh plugins, Zinit plugin manager, prompt engineering (Starship/Powerlevel10k), and shell scripting. Use when configuring .zshrc, writing Zsh automation scripts, optimizing shell startup time, or configuring tab-completion.

G1Joshi/Agent-Skills

Expert [skill-name] assistance covering [feature 1], [feature 2], and [feature 3]. Use when [working with X], [debugging Y], or [implementing Z].

Skills associés