界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · SKILL.md

vectorization

vectorization

【效率与协作】Create, step, wrap, and troubleshoot Gymnasium vectorized environments for batched training and evaluation.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: vectorization description: "Create, step, wrap, and troubleshoot Gymnasium vectorized environments for batched training and evaluation." disable-model-invocation: true metadata: disco-role: operating license: MIT

Gymnasium Vectorization

Use this sub-skill when a task needs multiple Gymnasium environments stepped as one batch: gymnasium.make_vec, SyncVectorEnv, AsyncVectorEnv, vector wrappers, batched observations/actions/rewards/masks/infos, autoreset modes, or vector multiprocessing troubleshooting.

Start Here

  1. Prefer gymnasium.make_vec(env_id, num_envs=..., vectorization_mode="sync" | "async") for registered environments.
  2. Use envs.action_space.sample() or another action batch matching envs.action_space; use envs.single_action_space only to reason about one sub-environment.
  3. Treat rewards, terminations, and truncations as arrays of shape (num_envs,), not scalar booleans.
  4. Check envs.metadata["autoreset_mode"] before interpreting post-terminal observations or writing bootstrapping logic.
  5. Use gymnasium.wrappers.vector wrappers around vector envs; pass single-env wrappers through make_vec(..., wrappers=[...]) only when they should wrap each sub-environment before vectorization.
  6. Always call envs.close(), especially for AsyncVectorEnv worker processes.

Route by Task

TaskRead
Create or step vector envs, choose sync vs async, handle batched outputsreferences/vector-envs.md
Apply vector wrappers, transform batched spaces, use vector space utilitiesreferences/vector-wrappers-and-spaces.md
Debug actions, masks, autoreset, multiprocessing, shared memory, render/videoreferences/troubleshooting.md
Prove a small local vector loop worksscripts/vector_env_smoke.py

Minimum Correct Pattern

import gymnasium as gym

envs = gym.make_vec("CartPole-v1", num_envs=4, vectorization_mode="sync")
try:
    observations, infos = envs.reset(seed=123)
    actions = envs.action_space.sample()
    observations, rewards, terminations, truncations, infos = envs.step(actions)
    done_mask = terminations | truncations
finally:
    envs.close()

For a quick sanity check from this sub-skill directory, run python scripts/vector_env_smoke.py --help and then python scripts/vector_env_smoke.py --mode sync --num-envs 2 --steps 4.

Scope Boundaries

  • Use ../environment-api/SKILL.md for single Env contracts, custom environment classes, registration, check_env, and non-vector reset/step migration.
  • Use ../spaces-data/SKILL.md for fundamental Space constructors, dtype/shape design, contains, flattening, and JSONable conversion.
  • Use ../wrappers-recording/SKILL.md for single-environment wrappers, recording, rendering, and custom wrapper subclassing depth.
  • Use ../builtin-envs/SKILL.md for built-in family selection, optional extras/backends, Atari/ALE, Box2D, MuJoCo, and Toy Text action masks.

Keep runtime guidance self-contained. Do not depend on the Gymnasium source tree, tests, or documentation paths at runtime.

我的收藏