Unity ML-Agents 与 Hugging Face Hub 集成实战:模型下载、上传发布与浏览器在线演示

Unity ML-Agents 与 Hugging Face Hub 集成实战:模型下载、上传发布与浏览器在线演示 人工智能强化学习深度学习机器学习游戏开发AI 应用【免费下载链接】ml-agentsThe Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement learning and imitation learning.项目地址https://gitcode.com/gh_mirrors/ml/ml-agents点击查看免费下载本文是一份面向 Unity ML-Agents 开发者的 Hugging Face Hub 集成指南系统讲解如何通过mlagents-load-from-hf与mlagents-push-to-hf两个官方命令行工具将训练完成的强化学习模型一键发布到 Hugging Face Hub或从社区下载共享模型并直接在浏览器中观看智能体实时表演。读完本文你将掌握模型共享的全流程操作、底层实现原理以及训练配置、模型卡自动生成等实战细节。一、Hugging Face Hub 集成概览Hugging Face Hub 是一个集中的模型共享平台任何人都可以在上面分享和下载模型。Unity ML-Agents 官方在其上维护了大量训练好的智能体模型并提供了与之配套的命令行工具链。集成带来的核心能力有三点托管Host将你自己训练好的模型发布到 Hub供全球开发者使用。下载Download从社区获取他人分享的预训练模型免去重复训练的时间成本。浏览器可视化在浏览器中直接观看智能体在环境中实时游玩的表现前提是环境属于 ML-Agents 官方示例环境。整个集成由ml-agentsPython 包内的两个模块承担二者通过setup.py中声明的console_scripts入口暴露为两个命令行工具定义于 ml-agents/setup.pyentry_points{ console_scripts: [ mlagents-learnmlagents.trainers.learn:main, mlagents-run-experimentmlagents.trainers.run_experiment:main, mlagents-push-to-hfmlagents.utils.push_to_hf:main, mlagents-load-from-hfmlagents.utils.load_from_hf:main, ], ... }可以看到mlagents-push-to-hf与mlagents-load-from-hf分别指向 ml-agents/mlagents/utils/push_to_hf.py 和 ml-agents/mlagents/utils/load_from_hf.py 两个模块的main()函数。此外ml-agents包将huggingface_hub0.14声明为安装依赖见 ml-agents/setup.py说明两个命令底层完全复用huggingface_hub官方 SDK 的能力仓库快照下载snapshot_download、仓库 APIHfApi等。二、安装与环境准备两个命令随ml-agentsPython 包一起分发。使用前请确保已正确安装pip install ml-agents安装完成后mlagents-load-from-hf与mlagents-push-to-hf即成为可用命令。需要注意的前提条件本仓库的ml-agents包声明python_requires3.10.1,3.10.12即要求 Python 3.10 环境见 ml-agents/setup.py上传模型到 Hub 需要 Hugging Face 账号。从源码结构看push_to_hf.py直接实例化huggingface_hub.HfApi而不处理任何显式的令牌参数见 push_to_hf.py因此身份认证完全交由huggingface_hub库自身的令牌机制处理如huggingface-cli login登录后缓存的令牌下载公开模型则无需认证。三、从 Hub 下载模型mlagents-load-from-hf3.1 参数说明下载命令只需要定义两个参数参数含义是否必填默认值--repo-id要下载的 Hugging Face 仓库 ID格式为用户名/仓库名必填无--local-dir模型下载到的本地目录选填./当前目录3.2 使用示例例如加载模型 ID 为ThomasSimonini/MLAgents-Pyramids的仓库并放入downloads目录mlagents-load-from-hf --repo-idThomasSimonini/MLAgents-Pyramids --local-dir./downloads3.3 源码级细节实际下载路径从源码实现看load_from_hf.py命令会先对repo-id按/拆分取出仓库名再将其拼接到local-dir之后作为最终下载目录最后调用huggingface_hub的snapshot_download拉取整个仓库快照_, repo_name repo_id.split(/) local_dir os.path.join(local_dir, repo_name) snapshot_download(repo_idrepo_id, local_dirlocal_dir) logger.info(fThe repository {repo_id} has been downloaded to {local_dir})也就是说上述示例最终的文件实际落在./downloads/MLAgents-Pyramids/目录下而不是直接散落在./downloads/中。这是与直觉略有差异、但很实用的细节多仓库下载时天然按仓库名分目录隔离不会互相覆盖。下载到本地的内容通常包括训练导出的.onnx推理模型旧版为.nn、训练配置文件configuration.yaml及由上传方自动生成的config.json、README.md模型卡等。拿到模型后即可将其挂载到 Unity 场景的Behavior Parameters组件的 Model 字段中运行推理具体用法可参考 推理引擎文档 与 示例运行指南。四、上传模型到 Hubmlagents-push-to-hf4.1 参数说明上传命令需要定义四个参数参数含义是否必填默认值--run-id训练运行的 ID即训练时mlagents-learn ... --run-idxxx指定的标识必填无--local-dir训练结果保存目录包含.onnx模型、configuration.yaml的目录必填./--repo-id要创建或更新的 Hugging Face 仓库 ID格式恒为你的用户名/仓库名若仓库不存在会自动创建必填无--commit-message提交信息HF 仓库本质是 Git 仓库每次推送都需要提交信息选填Push to Hub此外源码中还额外支持一个文档未强调的参数--configfile-name用于指定训练配置文件在结果目录中的文件名默认值为configuration.yaml见 push_to_hf.py。4.2 使用示例例如将 run-id 为SnowballTarget1的模型上传到仓库ThomasSimonini/ppo-SnowballTargetmlagents-push-to-hf --run-idSnowballTarget1 --local-dir./results/SnowballTarget1 --repo-idThomasSimonini/ppo-SnowballTarget --commit-messageFirst Push4.3 源码级细节四步自动化流水线push_to_hf.py的package_to_hub()函数push_to_hf.py完整实现了打包并上传的自动化流水线共分四步Step 1创建或复用仓库。实例化HfApi()后调用api.create_repo(repo_idrepo_id, exist_okTrue)exist_okTrue意味着目标仓库已存在时不会报错而是直接复用实现创建或更新语义。Step 2生成 config.json。_generate_config()读取结果目录下的 YAML 训练配置默认configuration.yaml用yaml.safe_load解析后以json.dump写出同目录下的config.json见 push_to_hf.py。这一步的意义在于Hugging Face 生态的工具链普遍依赖 JSON 元数据而 ML-Agents 的训练配置是 YAML 格式需要做一次格式转换。Step 3自动生成并保存模型卡。_generate_model_card()从config.json中解析出行为名behaviors的首个键与训练器类型trainer_type据此拼装 README 模型卡_generate_metadata()则生成模型卡 YAML 头部元数据其中library_name固定为ml-agentstags包含环境名、deep-reinforcement-learning、reinforcement-learning以及ML-Agents-环境名等标签见 push_to_hf.py。这些标签正是 Hugging Face 模型库中按libraryml-agents检索、分类模型的依据。最后_save_model_card()将模型卡写入README.md并用metadata_save写入元数据。Step 4整体推送。api.upload_folder(repo_idrepo_id, folder_pathlocal_path, commit_messagecommit_message)把结果目录连同自动生成的config.json、README.md一起以一次 Git 提交推送到 Hub见 push_to_hf.py。需要留意的是源码在函数开头打印了一段提示明确说明该功能目前是work in progress见 push_to_hf.py遇到 bug 可以提交 issue——这属于官方对当前实现成熟度的如实声明。4.4 训练结果目录结构要成功上传--local-dir指向的目录必须是标准的训练输出目录。使用mlagents-learn训练并指定--run-id后结果默认保存在results/run-id/下其中包含训练导出的.onnx模型文件与configuration.yaml训练配置。训练命令的标准形式为mlagents-learn trainer-config-file --envenv_name --run-idrun-identifier完整训练流程可参考 训练文档。以仓库内置的 config/ppo/Pyramids.yaml 为例其中behaviors.Pyramids.trainer_type: ppo正是模型卡生成时读取的关键字段behaviors: Pyramids: trainer_type: ppo hyperparameters: batch_size: 128 buffer_size: 2048 learning_rate: 0.0003 beta: 0.01 epsilon: 0.2 lambd: 0.95 num_epoch: 3 learning_rate_schedule: linear network_settings: normalize: false hidden_units: 512 num_layers: 2 vis_encode_type: simple reward_signals: extrinsic: gamma: 0.99 strength: 1.0 curiosity: gamma: 0.99 strength: 0.02 network_settings: hidden_units: 256 learning_rate: 0.0003 keep_checkpoints: 5 max_steps: 10000000 time_horizon: 128 summary_freq: 30000这段配置同时说明了模型卡自动生成的数据来源trainer_type决定模型卡标题中的算法名如ppobehaviors下的键如Pyramids决定环境名。仓库config/目录下还提供了sac/、poca/、imitation/等更多算法与环境的配置模板可供参考。4.5 模型卡中的恢复训练能力上传后自动生成的 README 模型卡中会包含一段Resume the training代码块告诉其他人如何基于你发布的模型继续训练mlagents-learn your_configuration_file_path.yaml --run-idrun_id --resume这与 ML-Agents 的训练恢复机制一致--resume标志配合原先的 run-id即可从上次中断或已完成的位置继续训练见 训练文档。由于推送的是整个results/run-id/目录其中包含检查点等训练中间产物因此从 Hub 下载后理论上同样具备续训基础。五、在浏览器中观看智能体游玩上传或下载模型后可以直接在浏览器中观看智能体实时表现无需本地搭建 Unity 环境。操作流程如下前提该环境属于 ML-Agents 官方示例环境Step 1访问 Hugging Face 的 Unity 环境演示专区选择环境 demoStep 2在列表中根据model_id找到你的模型即上传时的--repo-id例如ThomasSimonini/ppo-SnowballTargetStep 3选择.nn/.onnx模型文件Step 4点击Watch the agent play即可在浏览器页面中实时观看智能体与环境交互。这一能力依赖 Hugging Face 侧的 Unity WebGL 演示基建只有仓库中附带.onnx模型且环境在官方支持列表中的仓库才能触发在线演示。仓库内置的官方示例环境清单见 学习环境示例文档其中列举了 Pyramids、3D Ball、Food Collector 等经典环境及其玩法说明。六、集成要点小结场景命令必填参数关键细节下载社区模型mlagents-load-from-hf--repo-id实际下载路径为local-dir/仓库名/发布自训模型mlagents-push-to-hf--run-id、--local-dir、--repo-id、--commit-message自动创建仓库、生成config.json与 README 模型卡后整体推送浏览器观看演示无网页操作—环境须属于官方示例选择.nn/.onnx后点击播放最后提醒三点环境要求ml-agents包限定 Python 3.103.10.1,3.10.12且依赖huggingface_hub0.14请据此准备运行环境上传认证推送前需在本地完成 Hugging Face 账号令牌配置由huggingface_hub库统一处理功能成熟度官方在源码中注明上传流程仍在持续演进work in progress使用中如遇问题可反馈 issue而下载与浏览器演示流程已相当稳定社区模型资源丰富是快速上手预训练模型的首选路径。赞分享人工智能强化学习深度学习机器学习游戏开发AI 应用【免费下载链接】ml-agentsThe Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinforcement learning and imitation learning.项目地址https://gitcode.com/gh_mirrors/ml/ml-agents点击查看免费下载相关推荐hugging-face-paper-publisher 实战指南基于 hugging-face-skills 完成 arXiv 论文在 Hugging Face Hub 的索引、链接与发布hugging face paper publisher 实战指南基于 hugging face skills 完成 arXiv 论文在 Hugging Fa示例工程SLAM3R项目模型在Hugging Face平台的发布与集成实践SLAM3R项目模型在Hugging Face平台的发布与集成实践 SLAM3R作为视频到3D重建领域的最新研究成果其模型权重和数据集在Hugging Fac人工智能计算机视觉深度学习科研使用 PushToHubMixin 将 Diffusers 模型、Scheduler 与 Pipeline 一键上传到 Hugging Face Hub使用 PushToHubMixin 将 Diffusers 模型、Scheduler 与 Pipeline 一键上传到 Hugging Face Hub 导读人工智能深度学习媒体生成计算机视觉音频多模态预训练微调上一篇PyTorch Image Models大规模数据集处理终极指南5个高效数据加载策略下一篇戴森球计划工厂蓝图库3000优化布局助你打造完美自动化生产线创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考