Hub documentation

在 Hugging Face 上使用 sample-factory

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

在 Hugging Face 上使用 sample-factory

sample-factory 是一个用于高吞吐量异步强化学习的代码库。它集成了 Hugging Face Hub,用于共享带有评估结果和训练指标 的模型。

在 Hub 中探索 sample-factory

您可以在模型页面左侧进行筛选,以查找sample-factory模型。

Hub 上的所有模型都附带了实用功能:

  1. 自动生成的模型卡片,包含描述、训练配置等更多内容。
  2. 有助于提高可发现性的元数据标签。
  3. 用于与其他模型比较的评估结果。
  4. 一个视频小部件,您可以在其中观看您的智能体执行操作。

安装该库

要安装 sample-factory 库,您需要安装该包:

pip install sample-factory

SF 已知可在 Linux 和 MacOS 上运行。目前不支持 Windows。

从 Hub 加载模型

使用 load_from_hub

要从 Hugging Face Hub 下载模型以配合 Sample-Factory 使用,请使用 load_from_hub 脚本:

python -m sample_factory.huggingface.load_from_hub -r <HuggingFace_repo_id> -d <train_dir_path>

命令行参数如下:

  • -r:用于指定要从中下载的 HF 仓库的仓库 ID。仓库 ID 的格式应为 <username>/<repo_name>
  • -d:一个可选参数,用于指定保存实验的目录。默认为 ./train_dir,这将把仓库保存到 ./train_dir/<repo_name>

直接下载模型仓库

Hugging Face 仓库可以直接使用 git clone 下载:

git clone git@hf.co:<Name of HuggingFace Repo> # example: git clone [email protected]:bigscience/bloom

使用 Sample-Factory 加载已下载的模型

下载模型后,您可以使用与您的环境对应的 enjoy 脚本运行仓库中的模型。例如,如果您下载的是 mujoco-ant 模型,可以使用以下命令运行:

python -m sf_examples.mujoco.enjoy_mujoco --algo=APPO --env=mujoco_ant --experiment=<repo_name> --train_dir=./train_dir

请注意,如果本地 train_dir 的路径与 cfg.json 中的路径不同,您可能需要指定 --train_dir。

共享您的模型

使用 push_to_hub

如果您想在不生成评估指标或回放视频的情况下上传,可以使用 push_to_hub 脚本:

python -m sample_factory.huggingface.push_to_hub -r <hf_username>/<hf_repo_name> -d <experiment_dir_path>

命令行参数如下:

  • -r:要保存到 HF Hub 的 repo_id。这与 enjoy 脚本中的 hf_repository 相同,且必须采用 <hf_username>/<hf_repo_name> 的形式
  • -d:要上传的实验目录的完整路径

使用 enjoy.py

您可以使用环境中的 enjoy 脚本并加上 --push_to_hub 标志,将模型上传到 Hub。使用 enjoy 上传时,还可以生成评估指标和回放视频。

评估指标是通过在指定环境中运行模型若干轮次(episodes),并报告这些运行的平均奖励和标准差而生成的。

其他相关的命令行参数如下:

  • --hf_repository:要推送到的仓库。其格式必须为 <username>/<repo_name>。模型将被保存至 https://huggingface.co/<username>/<repo_name>
  • --max_num_episodes:在上传之前用于评估的 episode 数量。用于生成评估指标。建议使用多个 episode 以生成准确的均值和标准差。
  • --max_num_frames:在上传之前要评估的帧数。max_num_episodes 的替代方案
  • --no_render:一个用于禁用渲染并隐藏环境步骤的标志。建议设置此标志以加快评估过程。

您还可以使用 --save_video 标志在评估期间保存模型的录像,并将其上传到 hub。

  • --video_frames:视频中要渲染的帧数。默认值为 -1,表示渲染整个回合
  • --video_name:要保存的视频的名称。如果为 None,则会在实验目录中保存为 replay.mp4

例如:

python -m sf_examples.mujoco_examples.enjoy_mujoco --algo=APPO --env=mujoco_ant --experiment=<repo_name> --train_dir=./train_dir --max_num_episodes=10 --push_to_hub --hf_username=<username> --hf_repository=<hf_repo_name> --save_video --no_render
Update on GitHub