关于 get-available-resources
Get Available Resources 是面向科学计算的技能,可检测计算机的 CPU、GPU、内存、磁盘和操作系统,并生成资源相关建议。研究人员可在高负载任务前据此选择数据处理、并行化和加速方案。
主要功能
- 01检测 CPU 与 GPU 能力
- 02报告内存和磁盘可用量
- 03识别操作系统和 Python 版本
- 04将资源信息写入 JSON
- 05建议并行、内存和 GPU 策略
适用场景
- 01判断数据集是否适合载入内存
- 02在训练模型前选择 GPU 后端
- 03估算并行处理的工作进程数
- 04大型文件操作前检查磁盘容量
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill get-available-resources安装后在 Claude Code 中输入/get-available-resources确认已加载。
附带文件scripts/detect_resources.py
详细介绍
获取可用资源
概述
检测可用的计算资源,并为科学计算任务生成策略建议。此技能会自动识别 CPU 能力、GPU 可用性(NVIDIA CUDA、AMD ROCm、Apple Silicon Metal)、内存限制和磁盘空间,帮助你做出明智的计算方案选择。
何时使用此技能
在执行任何计算密集型任务前,主动使用此技能:
- 数据分析前:确定数据集能否载入内存,还是需要进行外存处理
- 模型训练前:检查是否提供 GPU 加速,以及应使用哪个后端
- 并行处理前:确定 joblib、multiprocessing 或 Dask 的最佳工作进程数
- 大型文件操作前:确认磁盘空间充足,并选择合适的存储策略
- 项目初始化时:了解基础能力,为架构决策提供依据
示例场景:
- “帮我分析这个 50GB 的基因组数据集” → 先使用此技能,确定是否需要 Dask/Zarr
- “用这些数据训练神经网络” → 使用此技能检测可用的 GPU 和后端
- “并行处理 10,000 个文件” → 使用此技能确定最佳工作进程数
- “运行计算密集型模拟” → 使用此技能了解资源限制
此技能的工作方式
资源检测
此技能会运行 scripts/detect_resources.py,自动检测:
-
CPU 信息
- 物理核心数和逻辑核心数
- 处理器架构和型号
- CPU 频率信息
-
GPU 信息
- NVIDIA GPU:通过 nvidia-smi 检测,并报告显存、驱动程序版本和计算能力
- AMD GPU:通过 rocm-smi 检测
- Apple Silicon:检测支持 Metal 和统一内存的 M1/M2/M3/M4 芯片
-
内存信息
- RAM 总量和可用量
- 当前内存使用率
- 交换空间可用量
-
磁盘空间信息
- 工作目录的磁盘空间总量和可用量
- 当前使用率
-
操作系统信息
- 操作系统类型(macOS、Linux、Windows)
- 操作系统版本和发行版本
- Python 版本
输出格式
此技能会在当前工作目录中生成 .claude_resources.json 文件,其中包含:
{
"timestamp": "2025-10-23T10:30:00",
"os": {
"system": "Darwin",
"release": "25.0.0",
"machine": "arm64"
},
"cpu": {
"physical_cores": 8,
"logical_cores": 8,
"architecture": "arm64"
},
"memory": {
"total_gb": 16.0,
"available_gb": 8.5,
"percent_used": 46.9
},
"disk": {
"total_gb": 500.0,
"available_gb": 200.0,
"percent_used": 60.0
},
"gpu": {
"nvidia_gpus": [],
"amd_gpus": [],
"apple_silicon": {
"name": "Apple M2",
"type": "Apple Silicon",
"backend": "Metal",
"unified_memory": true
},
"total_gpus": 1,
"available_backends": ["Metal"]
},
"recommendations": {
"parallel_processing": {
"strategy": "high_parallelism",
"suggested_workers": 6,
"libraries": ["joblib", "multiprocessing", "dask"]
},
"memory_strategy": {
"strategy": "moderate_memory",
"libraries": ["dask", "zarr"],
"note": "Consider chunking for datasets > 2GB"
},
"gpu_acceleration": {
"available": true,
"backends": ["Metal"],
"suggested_libraries": ["pytorch-mps", "tensorflow-metal", "jax-metal"]
},
"large_data_handling": {
"strategy": "disk_abundant",
"note": "Sufficient space for large intermediate files"
}
}
}
策略建议
此技能会根据上下文生成建议:
并行处理建议:
- 高并行度(8 个或更多核心):使用 Dask、joblib 或 multiprocessing,工作进程数 = 核心数 - 2
- 中等并行度(4–7 个核心):使用 joblib 或 multiprocessing,工作进程数 = 核心数 - 1
- 顺序处理(少于 4 个核心):优先采用顺序处理,以避免额外开销
内存策略建议:
- 内存受限(可用内存少于 4GB):使用 Zarr、Dask 或 H5py 进行外存处理
- 内存适中(可用内存为 4–16GB):对于大于 2GB 的数据集,使用 Dask/Zarr
- 内存充足(可用内存超过 16GB):大多数数据集都可以直接载入内存
GPU 加速建议:
- 检测到 NVIDIA GPU:使用 PyTorch、TensorFlow、JAX、CuPy 或 RAPIDS
- 检测到 AMD GPU:使用 PyTorch-ROCm 或 TensorFlow-ROCm
- 检测到 Apple Silicon:使用带有 MPS 后端的 PyTorch、TensorFlow-Metal 或 JAX-Metal
- 未检测到 GPU:使用针对 CPU 优化的库
大型数据处理建议:
- 磁盘空间受限(少于 10GB):采用流式处理或压缩策略
- 磁盘空间适中(10–100GB):使用 Zarr、H5py 或 Parquet 格式
- 磁盘空间充足(超过 100GB):可自由创建大型中间文件
使用说明
第 1 步:运行资源检测
在任何计算密集型任务开始时,执行检测脚本:
python scripts/detect_resources.py
可选参数:
-o, --output <path>:指定自定义输出路径(默认:.claude_resources.json)-v, --verbose:在标准输出中打印完整资源信息
步骤 2:阅读并应用建议
运行检测后,阅读生成的 .claude_resources.json 文件,为计算决策提供参考:
# Example: Use recommendations in code
import json
with open('.claude_resources.json', 'r') as f:
resources = json.load(f)
# Check parallel processing strategy
if resources['recommendations']['parallel_processing']['strategy'] == 'high_parallelism':
n_jobs = resources['recommendations']['parallel_processing']['suggested_workers']
# Use joblib, Dask, or multiprocessing with n_jobs workers
# Check memory strategy
if resources['recommendations']['memory_strategy']['strategy'] == 'memory_constrained':
# Use Dask, Zarr, or H5py for out-of-core processing
import dask.array as da
# Load data in chunks
# Check GPU availability
if resources['recommendations']['gpu_acceleration']['available']:
backends = resources['recommendations']['gpu_acceleration']['backends']
# Use appropriate GPU library based on available backend
步骤 3:做出明智的决策
利用资源信息和建议,做出合理的选择:
数据加载:
memory_available_gb = resources['memory']['available_gb']
dataset_size_gb = 10
if dataset_size_gb > memory_available_gb * 0.5:
# Dataset is large relative to memory, use Dask
import dask.dataframe as dd
df = dd.read_csv('large_file.csv')
else:
# Dataset fits in memory, use pandas
import pandas as pd
df = pd.read_csv('large_file.csv')
并行处理:
from joblib import Parallel, delayed
n_jobs = resources['recommendations']['parallel_processing'].get('suggested_workers', 1)
results = Parallel(n_jobs=n_jobs)(
delayed(process_function)(item) for item in data
)
GPU 加速:
import torch
if 'CUDA' in resources['gpu']['available_backends']:
device = torch.device('cuda')
elif 'Metal' in resources['gpu']['available_backends']:
device = torch.device('mps')
else:
device = torch.device('cpu')
model = model.to(device)
依赖项
检测脚本需要以下 Python 包:
uv pip install psutil
其他所有功能均使用 Python 标准库模块(json、os、platform、subprocess、sys、pathlib)。
平台支持
- macOS:全面支持,包括 Apple Silicon(M1/M2/M3/M4)GPU 检测
- Linux:全面支持,包括 NVIDIA(nvidia-smi)和 AMD(rocm-smi)GPU 检测
- Windows:全面支持,包括 NVIDIA GPU 检测
最佳实践
- 尽早运行:在项目开始时或执行重要计算任务前运行资源检测
- 定期重新运行:系统资源会随时间变化(内存用量、磁盘空间)
- 扩容前检查:在增加并行工作进程或数据规模前验证资源
- 记录决策:将
.claude_resources.json文件保留在项目目录中,记录资源感知型决策 - 配合版本管理使用:不同机器的能力各不相同;资源文件有助于保持可移植性
故障排除
未检测到 GPU:
- 确保已安装 GPU 驱动程序(nvidia-smi、rocm-smi,或 Apple Silicon 对应的 system_profiler)
- 检查 GPU 工具是否位于系统 PATH 中
- 确认 GPU 未被其他进程占用
脚本执行失败:
- 确保已安装 psutil:
uv pip install psutil - 检查 Python 版本兼容性(Python 3.6+)
- 确认脚本具有执行权限:
chmod +x scripts/detect_resources.py
内存读数不准确:
- 内存读数是瞬时快照;实际可用内存会持续变化
- 检测前关闭其他应用,以准确获取“可用”内存
- 可考虑多次运行检测并对结果取平均值
评论
支持 Markdown