)
自動化調參神器用EPyMARL search.py高效搜索超參數(shù)【免費下載鏈接】epymarlAn extension of the PyMARL codebase that includes additional algorithms and environment support項目地址: https://gitcode.com/gh_mirrors/ep/epymarl訓練多智能體強化學習模型時手動一個個試超參數(shù)是不是讓你頭疼EPyMARL 自帶的 search.py 自動化調參腳本能把枯燥的超參數(shù)搜索變成一條命令的批量實驗配合多隨機種子與并行執(zhí)行幾小時跑完過去一周的工作量。這篇 EPyMARL 超參數(shù)搜索教程手把手帶你玩轉這套調參利器讓模型訓練效率直接起飛 。為什么調參這么痛苦從手動實驗說起在 EPyMARL 中運行一次訓練實驗很簡單只需要一條命令python src/main.py --configqmix --env-configgymma with lr0.0005 hidden_dim64但問題在于一次實驗只驗證一組超參數(shù)。你想對比學習率、隱藏層維度、目標網(wǎng)絡更新間隔……就得手動改參數(shù)、反復重跑、再手動記錄結果。組合一多人就變成了人工調參機。而 EPyMARL 官方提供的搜索腳本 search.py位于src/search.py正是為了解決這個痛點而生的一次配置批量出結果。認識 search.py自動化調參的核心機制search.py 的設計思路非常直觀核心包含三大能力網(wǎng)格搜索Grid Search把每個超參數(shù)寫成一組候選值自動生成它們的全部笛卡爾積組合多隨機種子每個組合自動跑多個 seed保證結果統(tǒng)計意義可靠并行執(zhí)行在本地利用多核 CPU 同時跑多個實驗集群環(huán)境下則一個進程跑一個組合。這套機制在代碼里體現(xiàn)得非常清晰組合生成邏輯位于 search.py并行調度與單任務運行則分別在locally與single兩個子命令中實現(xiàn)。最快上手編寫你的第一個搜索配置文件搜索行為由一份 YAML 配置文件驅動項目自帶了現(xiàn)成模板src/search.config.example.yaml。核心結構只有兩大部分grid-search普通超參數(shù)候選列表例如lr、hidden_dim、t_maxgrid-search-groups一組必須捆綁在一起的參數(shù)常用于環(huán)境配置例如--env-config與env_args.key必須配對出現(xiàn)。模板長這樣節(jié)選grid-search: --config: - iql - iql_ns lr: - 0.0001 - 0.0003 - 0.0005 hidden_dim: - 64 - 128 grid-search-groups: env0: - --env-config: gymma - env_args.key: lbforaging:Foraging-8x8-2p-3f-v0注意一個關鍵設計search.py 會把所有候選值做笛卡爾積所以每多一個參數(shù)、每多一個候選值組合數(shù)都可能爆炸式增長。建議先用小規(guī)模候選值驗證流程再逐步擴大搜索范圍。一鍵運行本地并行與集群單任務模式配置文件就緒后一條命令即可啟動本地并行搜索python src/search.py run --configsearch.config.example.yaml --seeds 3 locally運行前腳本會打印出所有組合并詢問你是否繼續(xù)確認后便開始并行訓練。默認并行進程數(shù)為 CPU 核心數(shù)減一你也可以用--cpus 4顯式控制并行度避免把機器跑滿。如果你在集群環(huán)境如 Slurm中運行更適合用單任務模式每個進程只跑一個組合由調度器統(tǒng)一管理python src/search.py run --configsearch.config.example.yaml --seeds 3 single 1其中末尾的數(shù)字 1 是組合的索引取值范圍從 1 到總組合數(shù)。你可以在批處理腳本里循環(huán)提交實現(xiàn)大規(guī)模集群調參 ?。另外search.py 還提供write子命令可以把當前默認配置導出為一份完整的搜索配置文件作為你自定義搜索的起點非常貼心。設計高效搜索的三個實用技巧掌握命令只是第一步真正拉開效率差距的是搜索策略。這里分享三個實戰(zhàn)經(jīng)驗先小規(guī)模探路再全量驗證正式搜索前先把t_max設小、test_interval設大快速跑通幾條代表性組合確認實驗流程與日志正常避免浪費大量算力后才發(fā)現(xiàn)問題。固定無關參數(shù)控制組合數(shù)量像test_nepisode、log_interval這類不影響算法表現(xiàn)的參數(shù)保持單值即可它們本就不該參與笛卡爾積。用 hypergroup 標記實驗組search.py 會自動為每個組合添加hypergrouphp_grp_N標簽跑完后你可以據(jù)此快速區(qū)分不同超參數(shù)組合的實驗結果復盤時一目了然。常見問題與避坑指南在實際使用中這幾個坑最常遇到結果存到哪里所有實驗日志會保存在results/sacred目錄下每個組合有獨立文件夾配合項目自帶的 plot_results.py 繪圖腳本即可直觀對比不同超參數(shù)的收斂曲線 。并行數(shù)過高導致內存不足并行進程越多占用的內存也越大請根據(jù)機器實際資源設置--cpus。隨機種子不能太少多智能體強化學習方差很大建議每個組合至少跑 3~5 個 seed否則很難判斷超參數(shù)的好壞是真實的還是運氣使然。小結把時間還給真正的算法研究EPyMARL 的 search.py 把定義搜索空間 一鍵批量運行 自動記錄結果整合成了一條自動化流水線。你只需要寫好搜索配置文件剩下的組合生成、并行調度、日志歸檔全部交給腳本完成自己則專注于分析結果、設計下一步實驗。無論你是在 LBF、RWARE 這類 Gym 環(huán)境上調 QMIX、IQL還是在 SMAC 上對比 MAPPO 與 IPPO這套搜索流程都同樣適用。現(xiàn)在就 clone 一份代碼git clone https://gitcode.com/gh_mirrors/ep/epymarl動手寫你的第一個搜索配置文件體驗一把自動化調參的快樂吧 【免費下載鏈接】epymarlAn extension of the PyMARL codebase that includes additional algorithms and environment support項目地址: https://gitcode.com/gh_mirrors/ep/epymarl創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考