소스 정보
- 저장소
- JohnNuwan/EVA_CORE
- 최근 소스 활동
- 2026년 7월 18일 08:30
- 감지된 SKILL.md 언어
- 프랑스어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/JohnNuwan/EVA_CORE --skill deep-learning-frameworks명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
Concevoir et maintenir un watchdog auto-correcteur pour services HTTP — checks de santé, auto-restart, état persistant, rapports et pièges bash.
Serveur de messagerie sécurisé auto-hébergé (Signal-like) avec Flask + WebSocket + AES-256-GCM + pont EVA
ADAM-SENTINEL — Veilleur technologique 24h/24h. Scanne 10 domaines, cree des rapports, met a jour les skills, alerte sur les CVE et breaking changes.
| name | deep-learning-frameworks |
| description | Programmer sous PyTorch, TensorFlow, JAX et Diffusers. |
| version | 1.1.0 |
| author | EVA |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"tags":["pytorch","tensorflow","keras","jax","stable-baselines","diffusers","reinforcement-learning","stable-diffusion"],"related_skills":["data-analysis-exploration","simplify-code"]} |
L'implémentation de solutions d'intelligence artificielle modernes s'appuie sur des architectures variées allant des réseaux de neurones classiques au traitement d'images génératif et à l'apprentissage par renforcement. Cette compétence fournit des recettes de code rigoureuses et des bonnes pratiques opérationnelles pour :
À utiliser lorsque l'utilisateur demande de :
PyTorch utilise un graphe de calcul dynamique (Eager execution). L'entraînement à grande échelle nécessite une gestion mémoire GPU stricte pour éviter les erreurs OutOfMemory (OOM).
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, TensorDataset
class NeuralNetwork(nn.Module):
def __init__(self, input_dim, output_dim):
super().__init__()
self.net = nn.Sequential(
nn.Linear(input_dim, 64),
nn.ReLU(),
nn.Linear(64, output_dim)
)
def forward(self, x):
return self.net(x)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = NeuralNetwork(10, 1).to(device)
# Dataset et DataLoader avec Pinning mémoire
dataset = TensorDataset(torch.randn(1000, 10), torch.randn(1000, 1))
loader = DataLoader(dataset, batch_size=32, shuffle=True, pin_memory=True)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3)
criterion = nn.MSELoss()
scaler = torch.cuda.amp.GradScaler(enabled=(device.type == "cuda"))
model.train()
for epoch in range(5):
for x_batch, y_batch in loader:
x_batch = x_batch.to(device, non_blocking=True)
y_batch = y_batch.to(device, non_blocking=True)
optimizer.zero_grad(set_to_none=)
torch.cuda.amp.autocast(enabled=(device. == )):
predictions = model(x_batch)
loss = criterion(predictions, y_batch)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
Keras fournit des abstractions de haut niveau tandis que tf.data permet de créer des pipelines d'acquisition asynchrones performants.
tf.data :import tensorflow as tf
from tensorflow.keras import layers, Model
def create_dataset(features, labels, batch_size=32):
dataset = tf.data.Dataset.from_tensor_slices((features, labels))
dataset = dataset.cache()
dataset = dataset.shuffle(buffer_size=1000)
dataset = dataset.batch(batch_size)
dataset = dataset.prefetch(buffer_size=tf.data.AUTOTUNE) # Chargement asynchrone
return dataset
class CustomModel(Model):
def __init__(self):
super().__init__()
self.dense1 = layers.Dense(64, activation="relu")
self.dense2 = layers.Dense(1)
def call(self, inputs):
x = self.dense1(inputs)
return self.dense2(x)
model = CustomModel()
model.compile(optimizer="adam", loss="mse")
@tf.function # Compile l'étape en graphe statique XLA
def train_step(x, y):
with tf.GradientTape() as tape:
logits = model(x, training=True)
loss_value = model.loss(y, logits)
grads = tape.gradient(loss_value, model.trainable_weights)
model.optimizer.apply_gradients(zip(grads, model.trainable_weights))
return loss_value
JAX repose sur la programmation fonctionnelle pure : les structures de données y sont strictement immuables et les transformations de fonctions sont appliquées à l'aide du compilateur XLA.
import jax
import jax.numpy as jnp
# 1. Gestion explicite des clés de hasard (PRNG) - JAX est sans état
key = jax.random.PRNGKey(42)
key, subkey = jax.random.split(key)
# 2. Immuabilité : pas de modification de tableau sur place
x = jnp.zeros((5,))
# Écriture correcte : retourne un NOUVEAU tableau modifié
x_new = x.at[0].set(10.0)
# 3. Définition de fonction pure et calcul du gradient
def loss_fn(weights, x, y):
prediction = jnp.dot(x, weights)
return jnp.mean((prediction - y) ** 2)
weights = jax.random.normal(subkey, (3,))
x_sample = jnp.array([1.0, 2.0, 3.0])
y_sample = jnp.array(5.0)
# 4. Transformations JAX : Différenciation (grad) et JIT compilation
grad_fn = jax.grad(loss_fn) # Calcule les gradients par rapport aux poids
fast_grad_fn = jax.jit(grad_fn) # Compile la fonction avec XLA pour GPU/TPU
gradients = fast_grad_fn(weights, x_sample, y_sample)
# 5. Vectorisation automatique avec vmap (application sur un batch de données)
# in_axes=(None, 0, 0) -> n'applique pas la vectorisation sur les poids (None)
# mais applique sur la dimension 0 de x et y.
batched_loss_fn = jax.vmap(loss_fn, in_axes=(None, 0, 0))
Stable-Baselines3 propose des implémentations fiables d'algorithmes d'apprentissage par renforcement (PPO, DQN, SAC) s'appuyant sur l'interface d'environnement Gymnasium.
import gymnasium as gym
from stable_baselines3 import PPO
from stable_baselines3.common.callbacks import EvalCallback
from stable_baselines3.common.monitor import Monitor
# 1. Création et enveloppement (Wrapper) de l'environnement
env = gym.make("CartPole-v1", render_mode="rgb_array")
env = Monitor(env) # Requis pour suivre les métriques dans les callbacks
# 2. Configuration d'un callback d'évaluation périodique
eval_callback = EvalCallback(
env,
best_model_save_path="./logs/best_model",
log_path="./logs/",
eval_freq=5000,
deterministic=True,
render=False
)
# 3. Instanciation de l'agent PPO avec un réseau de neurones MLP (Multi-Layer Perceptron)
model = PPO(
policy="MlpPolicy",
env=env,
learning_rate=3e-4,
n_steps=2048,
batch_size=64,
n_epochs=10,
gamma=0.99,
verbose=1,
tensorboard_log="./tb_logs/"
)
# 4. Apprentissage de l'agent
model.learn(total_timesteps=10000, callback=eval_callback)
# 5. Sauvegarde et chargement du modèle
model.save("ppo_cartpole_model")
del model # Suppression de l'instance pour simuler un redémarrage
# Chargement à chaud
loaded_model = PPO.load("ppo_cartpole_model", env=env)
La bibliothèque HuggingFace diffusers permet d'exécuter des modèles de diffusion (Stable Diffusion 1.5, SDXL, Flux) de façon optimisée sur du matériel grand public.
import torch
from diffusers import StableDiffusionXLPipeline, DPMSolverMultistepScheduler
# 1. Chargement de la pipeline en précision float16 (économise 50% de mémoire VRAM)
pipe = StableDiffusionXLPipeline.from_pretrained(
"stabilityai/stable-diffusion-xl-base-1.0",
torch_dtype=torch.float16,
variant="fp16"
)
# 2. Configuration d'un scheduler performant (DPM-Solver Multistep) pour réduire le nombre d'étapes
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config)
# 3. Activation des optimisations mémoire critiques
pipe.enable_model_cpu_offload() # Décharge les composants du GPU vers le CPU hors calcul
pipe.enable_attention_slicing() # Découpe le calcul d'attention pour éviter les pics de VRAM
pipe.enable_vae_tiling() # Découpe l'encodage/décodage VAE en tuiles pour les grandes résolutions
# 4. Génération de l'image
prompt = "A modern clean automated assembly line in a factory, hyper-realistic, 8k resolution"
negative_prompt = "blurry, low quality, drawing, sketch, deformed machinery"
generator = torch.Generator(device="cuda").manual_seed(42) # Reproductibilité
image = pipe(
prompt=prompt,
negative_prompt=negative_prompt,
num_inference_steps=25, # DPM-Solver nécessite seulement 20-30 étapes
guidance_scale=7.5, # Respect strict du prompt
generator=generator,
height=1024,
width=1024
).images[0]
image.save("factory_assembly_line.png")
Oubli de réinitialisation des gradients dans PyTorch :
optimizer.zero_grad(). Les gradients s'accumulent à chaque .backward(), détruisant la convergence du modèle.optimizer.zero_grad(set_to_none=True).Recompilation répétitive de graphe statique (tf.function tracing) :
@tf.function. Cela force la recompilation constante du graphe d'exécution.tf.Tensor stables en arguments.Génération d'images bloquée sur des images noires (Black Images) :
pipe.upcast_vae().Variables globales non constantes dans JAX :
@jax.jit. Le moteur XLA ne prendra pas en compte ces changements après la première compilation.Déconnexion de l'environnement d'apprentissage dans Stable-Baselines3 :
Monitor ou DummyVecEnv lors de l'utilisation de callbacks d'évaluation, causant des crashs d'indexation.Monitor(env).torch.no_grad() ou training=False)..item() pour éviter les fuites de mémoire.@jit) ou TensorFlow (@tf.function) sont pures et exemptes d'effets de bord.Monitor et respecte strictement les signatures d'API de Gymnasium.enable_model_cpu_offload(), enable_attention_slicing()) de Stable Diffusion sont activées sur les machines à ressources VRAM limitées (moins de 12 Go).