get-available-resources について
Get Available Resourcesは、科学計算向けにCPU、GPU、メモリ、ディスク、OSを検出し、環境に応じた推奨事項を作成するスキルです。負荷の高い処理に先立ち、データ処理や並列化、アクセラレーションの方法を検討できます。
主な機能
- 01CPU・GPU能力の検出
- 02メモリ・ディスク空き容量の報告
- 03OSと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 で検出し、VRAM、ドライバーバージョン、コンピュート機能を報告します
- AMD GPU: rocm-smi で検出します
- Apple Silicon: Metal サポートとユニファイドメモリを備えた M1/M2/M3/M4 チップを検出します
-
メモリ情報
- 合計および利用可能な RAM
- 現在のメモリ使用率(%)
- スワップ領域の利用可能状況
-
ディスク容量情報
- 作業ディレクトリの合計および利用可能なディスク容量
- 現在の使用率(%)
-
オペレーティングシステム情報
- OS の種類(macOS、Linux、Windows)
- OS のバージョンとリリース
- 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
メモリの読み取り値が不正確な場合:
- メモリの読み取り値はスナップショットであり、実際に利用可能なメモリは常に変動します
- 「利用可能」なメモリを正確に把握するため、検出を実行する前に他のアプリケーションを終了してください
- 検出を複数回実行し、結果の平均を取ることを検討してください