在 Hugging Face 使用 sample-factory
sample-factory 是一个用于高吞吐量异步强化学习的代码库。它与 Hugging Face Hub 集成,可以分享带有评估结果和训练指标的模型。
在 Hub 上探索 sample-factory
你可以通过在模型页面左侧筛选来找到 sample-factory 模型。
Hub 上的所有模型都配备了有用的功能:
- 自动生成的模型卡片,包含描述、训练配置等。
- 有助于可发现性的元数据标签。
- 评估结果以与其他模型进行比较。
- 一个视频小部件,你可以观看智能体的表现。
安装库
要安装 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>
直接下载模型仓库
可以使用 git clone 直接下载 Hugging Face 仓库:
git clone [email protected]:<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 上传还可以生成评估指标和重放视频。
评估指标通过在指定环境上运行模型一定数量的回合并报告这些运行的平均奖励和标准差来生成。
其他相关的命令行参数为:
--hf_repository:要推送到的仓库。必须为<username>/<repo_name>形式。模型将保存到https://huggingface.co/<username>/<repo_name>--max_num_episodes:上传前要评估的回合数。用于生成评估指标。建议使用多个回合以生成准确的平均值和标准差。--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