Communitygithub.com

G1Joshi/Agent-Skills

Assistance experte en calcul distribué Ray couvrant Ray Core (acteurs, tâches), Ray Train, Ray Tune et Ray Serve. À utiliser pour passer à l'échelle le calcul Python et l'entraînement ML sur des clusters multi-nœuds.

Qu'est-ce que Agent-Skills ?

Cette compétence fournit une expertise approfondie sur Ray, le framework de calcul distribué utilisé pour l'IA. Elle couvre les concepts fondamentaux comme les tâches distribuées, les acteurs avec état (Stateful Actors), le déploiement de modèles en production avec Ray Serve, et l'optimisation des hyperparamètres avec Ray Tune. L'utilisateur bénéficie de patterns éprouvés, de bonnes pratiques pour 2026, et d'une aide au diagnostic des erreurs courantes (taille du store d'objets, crash d'acteurs, ressources insuffisantes). La compétence est conçue pour les développeurs et ingénieurs ML qui souhaitent scaler leurs applications Python et leurs workloads d'entraînement de manière fiable, que ce soit sur une machine locale ou un cluster distribué.

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

Demander à votre IA préférée

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

Documentation

Ray

Ray est la couche de calcul pour l'IA. Il alimente l'entraînement de ChatGPT et des charges de travail massives. La version 3.0 (2025) améliore l'efficacité et ajoute un serveur MCP pour les agents.

Quand l'utiliser

  • Applications Python distribuées : Passage à l'échelle de tâches Python lourdes de manière transparente d'un seul ordinateur portable à de grands clusters cloud.
  • Entraînement ML distribué avec Ray Train : Orchestration d'entraînements multi-nœuds avec PyTorch, XGBoost et LightGBM.
  • Déploiement de modèles en production avec Ray Serve : Service de LLMs et pipelines de microservices multi-modèles avec mise à l'échelle automatique dynamique.
  • Optimisation des hyperparamètres avec Ray Tune : Exécution de campagnes bayésiennes, Optuna et basées sur la population sur des centaines de workers.

Démarrage rapide

import ray

ray.init()

# Tâche distribuée à distance
@ray.remote
def square(x):
    return x * x

# Lancer des tâches en parallèle sur le cluster
futures = [square.remote(i) for i in range(10)]
results = ray.get(futures)
print("Carrés calculés :", results)

Concepts clés

#Tâches distribuées et acteurs avec état

Passage à l'échelle de fonctions et de classes sur les workers du cluster :

import ray
import time

# Initialiser localement ou se connecter à un cluster Ray distant
ray.init(ignore_reinit_error=True)

# 1. Fonction distante sans état (tâche distribuée)
@ray.remote
def process_data_chunk(chunk_id: int) -> dict:
    time.sleep(0.5) # Simulation d'une tâche CPU/IO
    return {"chunk_id": chunk_id, "processed_items": 1000 * chunk_id}

# Lancer les tâches simultanément sur le cluster
futures = [process_data_chunk.remote(i) for i in range(8)]
results = ray.get(futures) # Récupération des résultats
print("Tranches traitées :", results)

# 2. Classe distante avec état (acteur distribué)
@ray.remote
class GlobalCounter:
    def __init__(self):
        self.count = 0

    def increment(self) -> int:
        self.count += 1
        return self.count

counter_actor = GlobalCounter.remote()
inc_futures = [counter_actor.increment.remote() for _ in range(5)]
print("Valeur finale du compteur :", ray.get(inc_futures[-1]))

#Déploiement de modèles en production avec Ray Serve

Déploiement de points de terminaison REST scalables avec regroupement dynamique de requêtes :

from ray import serve
import torch
from transformers import pipeline

@serve.deployment(num_replicas=2, ray_actor_options={"num_cpus": 1, "num_gpus": 0})
class SentimentClassifier:
    def __init__(self):
        self.classifier = pipeline("sentiment-analysis")

    async def __call__(self, request):
        json_data = await request.json()
        text = json_data.get("text", "")
        return self.classifier(text)

app = SentimentClassifier.bind()
# serve.run(app)

#Optimisation distribuée des hyperparamètres avec Ray Tune

Exécution d'essais d'hyperparamètres en parallèle :

from ray import tune

def training_function(config):
    # Entraînement de modèle simulé
    for step in range(10):
        intermediate_score = config["alpha"] * step + config["beta"]
        tune.report(loss=1.0 / (intermediate_score + 0.1))

search_space = {
    "alpha": tune.uniform(0.1, 1.0),
    "beta": tune.choice([1, 2, 5])
}

tuner = tune.Tuner(
    training_function,
    param_space=search_space,
    tune_config=tune.TuneConfig(num_samples=10, metric="loss", mode="min")
)
results = tuner.fit()
print("Meilleurs hyperparamètres :", results.get_best_result().config)

Patterns courants

Acteurs distribués avec état pour le service de modèles

Problème : Recharger à chaque appel de fonction de lourds poids de modèle en mémoire.

Solution : Utiliser les acteurs Ray pour maintenir l'état en mémoire entre les requêtes :

@ray.remote(num_gpus=1)
class ModelServer:
    def __init__(self):
        # Charger les poids une fois dans la VRAM GPU
        self.model = load_large_model()

    def predict(self, sample):
        return self.model(sample)

server_actor = ModelServer.remote()
prediction = ray.get(server_actor.predict.remote(sample_data))

Bonnes pratiques (2026)

  • À faire : Vérifier le tableau de bord Ray (port 8265) pour surveiller l'utilisation CPU/GPU des nœuds, le placement des acteurs et la mémoire du store d'objets.
  • À faire : Passer les grands ensembles de données en lecture seule via le store d'objets plasma (ray.put(data)) pour éviter les sérialisations répétitives.
  • À faire : Spécifier explicitement les besoins en ressources dans les décorateurs (@ray.remote(num_cpus=2, num_gpus=1)).
  • À faire : Utiliser Ray Serve pour les microservices multi-modèles en production avec regroupement automatique intégré.
  • À ne pas faire : Appeler ray.get() à l'intérieur de tâches distantes ; passer les ObjectRefs directement à d'autres tâches distantes pour préserver le pipeline.
  • À ne pas faire : Créer des millions de micro-tâches ; regrouper les tâches fines pour minimiser la surcharge de l'ordonnanceur.
  • À ne pas faire : Passer des objets volumineux avec état (comme des connexions de base de données ou des fichiers ouverts) dans les arguments distants.

Résolution des problèmes

ErreurCauseSolution
RaySystemError: Object store fullDes tâches produisent plus de données que la mémoire partagée allouée.Utiliser ray.get() pour consommer les résultats, ou stocker les gros tableaux en disque.
Actor died unexpectedlyLe processus worker a planté à cause d'une exception non gérée ou d'un OOM.Vérifier les logs dans le tableau de bord Ray (http://localhost:8265) et augmenter la RAM worker.
Task failed to schedule: Unsatisfiable resource requestDemande plus de CPU/GPU (num_gpus=2) qu'il n'en existe sur le cluster.Vérifier les ressources disponibles via ray.cluster_resources().

Références

Individual skills in this repo

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

G1Joshi/Agent-Skills

Expert Dask distributed computing assistance covering Dask DataFrames, Arrays, Futures, and cluster scaling. Use when analyzing datasets too large for pandas on a single machine or multi-node cluster.

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 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