当前位置: 首页 > news >正文

开悟Optimization guide for intermediate tracks

mojia_map

目录

认识模型

参考方案(按模块拆解)


认识模型

模型控制1名英雄进行镜像1 v 1对战

Actor集群资源为64核CPU

问题特点:单一公平对抗场景(同英雄镜像对赛),单位时间样本产能低,累计训练资源相对充裕。

中级赛道难点:

  1. 训练下RL收敛性保证:在小资源长时间训练的情况下,如何解决样本多样性问题,使训练效果媲美高并发、中等时间训练的效果。

  2. 面向赛题英雄定制优化:环境和Baseline均未面向赛题英雄做任何优化。参赛队伍可以研究英雄设计和机制玩法特点,完善特征、规则、动作空间、奖励等相关设计,提升环境状态表征能力,整合已知先验和,降低策略学习难度并提升单英雄能力上限。

  3. 单一公平对抗场景下,需要关注并完善更多细节,得到更完备的策略。

此外,参赛队伍可以:

  1. 消灭各种bug(如不符合预期的移动/走位

  2. 实现支持在线调整或调度的多风格、多样化策略。面向对手行为进行进一步优化,包括建模和预测对手的行为,以便先发制人或极限闪避化解危机。

  3. 细化局内不同阶段的奖励方案(如动态权重),课程学习不同阶段的奖励权重(如过程导向或结果导向)

参考方案(按模块拆解)

uTools_1692861613810

(CNN+MLP)-LSTM的Encoder-Decoder结构 Multi--Head Value,通过分组改进Value估计效果,降低方差 使用全局Perfect Information铺助Value估计

uTools_1692861652042

定制特征:

uTools_1692861824105

uTools_1692861933366

后置规则(处理模型输出)

具体操作参见"开发指南“

通过开发后置规则,可以支持实现模型输出->动作的二次映射。特定实现下,从RL

Agent视角看,等价于环境的变化。

奖励机制

具体操作参见"开发指南“、“环境介绍“,并建议参考往届各晋级队伍相关设计

可能的优化方向包括:

  1. 调整奖励子项权重

    1. 静态权重

    2. 局内动态权重(e.g.奖励局内衰减)

  2. 新增奖励项目

对手模型

具体操作参见"开发指南“,并建议参考往届各晋级队伍相关设计

对应位置:actor/actor..py

可能的优化方向包括:

  1. 新旧模型比例

  2. 对手模型池/League

  3. 自定义评估对局

学习策略

课程学习:将复杂、综合的学习目标分解为多阶段、更小规模的学习任务。

通过预训练模型+多阶段训练的方式,分步实现总体学习目标。心

例子:通过局间奖励衰减,实现稠密奖励到稀疏奖励的过渡

训练前期,偏重具体行为相关的稠密奖励,引导智能体学会基本操作

训练中期,增强与对局结果强相关的稠密奖励,引导智能体在单局中建立优势

训练后期,调高稀疏奖励权重,引导智能体直接关注最终胜负

知识蒸馏:强化学习+监督学习联合优化方案

例子:多英雄能力提升问题的内部解法之一

单英雄Teacher训练:强化学习,单英雄镜像自对战

蒸馏(单英雄Teacher->多英雄Student):在Actor样本中存入Teacher Logits

Learner增加一项监督学习的蒸馏

多英雄Student训练:强化学习,多英雄混合对战

注:可参考原理。受限于资源规模,在比赛中实际复现该做法的投入产出比可能并不突出。

系统优化角度

Learner效率

  1. 有效吞吐量

    1. 计算效率 比赛场景下,考虑到单位时间内Actor样本吞吐量远低于Learner,一般不需要进一步提升样本吞吐量

      Graph中尽可能拼Batch计算,提高计算密度,对应底层计算从GEMV(访存密集型)->GEMM(计算密集型)

      采用在GCU上性能更好的算子实现(可结合隧原-开发指南及实际Profiling情况)

    2. 样本池 当前框架版本的MemPool实现并非最优,可能存在一定程度的样本浪费现象 通过改进MemPool数据结构相关实现,改变随机读写方式,可以减少样本被覆盖的情况

  2. 样本效率与收敛速度

    强化学习算法优化:其他条件不变,强化学习算法越高效,收敛至同等能力所需时间越短

    1. Dual-Clip PPO / Value Clip 对policy loss进行双重clip,避免advantage取值outlier对收敛稳定性的影响。 类似地,可以对value loss进行clip,避免单步更新幅度过大对value network收敛的影响。

    2. Value Normalization

      uTools_1692862574716

      对于策略梯度方法,伴随着RL过程,value network学习目标的变化可能比较剧烈,影响了value估计的学习效果,进而影响了整体收敛效果与稳定性。实验表明,通过引入Vlue归一化,类PPO算法的样本效率可能获得改善。

    1. PPG算法

      uTools_1692862714147

    1. SAC算法

      uTools_1692862734298

      PPO存在on-policy假设,而分布式强化学习场景下,为了实现更高效的并行计算,在on-policy程度上存在妥协。SAC是一种off-policy的随机策略RL算法,在样本利用方式上和DDPG类似,区别在于其生成stochastic policy,在部分benchmark中表现出优于DDPG的样本效率。

      考虑到更换PPO算法涉及较大的开发和调试工作量,推荐大部分队伍优先考虑在PPO算法基础上的优化,学有余力的队伍可以直接尝试更换算法。

uTools_1692862883445

Actor效率

吞吐量优化

  1. CPU推理优化:Actor进程运行在CPU多机环境,可以面向CPU平台优化模型计算性能

    1. PyTorch JIT优化

    2. 集成第三方推理框架(例如:onnx-runtime)

改善样本分布

  1. 可尝试通过intrinsic reward等方式,减少产生无效/同质化样本,提高样本多样性

  2. 可尝试引导生成符合特定条件的样本,比如使样本分布向特定对手模型倾斜

ABSTool工具使用

uTools_1692863242511

相关文章:

开悟Optimization guide for intermediate tracks

目录 认识模型 参考方案(按模块拆解) 认识模型 模型控制1名英雄进行镜像1 v 1对战 Actor集群资源为64核CPU 问题特点:单一公平对抗场景(同英雄镜像对赛),单位时间样本产能低,累计训练资源相…...

wx.request配置服务器域名,只能包含英文大小写字母、数字,解决办法

前言.小程序服务器域名配置常见错误及解决方法 1.配置入口: 小程序后台->-开发->开发设置->服务器域名 2.常见错误及原因分析: 3.实战中出现的错误 4.解决办法:应把域名后边的路径去掉,只写域名即可...

【有效的括号】

题目 1、左括号入栈 2、右括号出栈顶括号进行匹配 栈 typedef char STDataType; //元素为char类型 typedef struct Stack {STDataType* a;//动态的开辟空间int top;int capacity; }ST;void StackInit(ST* ps)//初始化 {assert(ps);ps->a (STDataType*)malloc(sizeof(STD…...

积跬步至千里 || 数学基础、算法与编程

数学基础、算法与编程 1. BAP 技能 BAP 技能是指基础(Basic)、算法(Algorithm)和编程(Programm)三种基本技能的深度融合。理工科以数学、算法与编程为根基,这三个相辅相成又各有区别。 (1)数学以线性代数为主要研究工具和部分微积分技术为手…...

Java单元测试 JUnit 5 快速上手

一、背景 什么是 JUnit 5?首先就得聊下 Java 单元测试框架 JUnit,它与另一个框架 TestNG 占据了 Java领域里单元测试框架的主要市场,其中 JUnit 有着较长的发展历史和不断演进的丰富功能,备受大多数 Java 开发者的青睐。 而说到…...

【Linux网络】TCP UDP socket HTTP webSocket之间的区别

目录 一、OSI & TCP/IP模型 二、几者之间的关系 三、HTTP 四、Socket 五、WebSocket 5.1、WebSocket 优点 一、OSI & TCP/IP模型 首先我们要了解OSI七层模型,和预支对应的TCP/IP 四层的模型。 用下面的图可以看出,TCP UDP 工作在传输层&…...

【面向大一新生IT技术社群招新啦,不来瞅瞅?】

个人名片: 🐼作者简介:一名大三在校生 🐻‍❄️个人主页:落798. 🐼个人WeChat:落798. 🕊️系列专栏:【零基础学java】 ----- 【重识c语言】 ---- 【计算机网络】—【Spri…...

分析系统 - 使用Python爬虫

在竞争激烈的市场环境中,了解和分析竞争对手的销售策略和市场表现对于企业的成功至关重要。本文将介绍如何利用Python爬虫建立低成本的销售竞争对手分析系统,探索其方法、工具和好处,并同时解决可能出现的问题。 销售竞争对手分析的目标是获取…...

strstr函数

目录 函数介绍: 函数分析: ​使用案例: 函数介绍: 返回指向 str1 中第一次出现的 str2 的指针,如果 str2 不是 str1 的一部分,则返回一个空指针。 匹配过程不包括终止空字符,但它到此为止。 …...

[C++] string类常用接口的模拟实现

文章目录 1、前言2、遍历2.1 operator[ ]下标方式2.2 迭代器2.3 范围for2.4 c_str 3、容量相关3.1 size(大小)3.2 capacity(容量)3.3 empty(判空)3.4 clear(清理)3.5 reserve3.6 res…...

每日一学——防火墙

防火墙是网络安全的重要组成部分,可以帮助保护网络免受恶意攻击和未经授权的访问。以下是防火墙的基本配置步骤: 定义安全策略:防火墙通过安全策略来决定允许或拒绝网络流量。你需要定义适当的安全策略来保护你的网络。安全策略通常包括源IP地…...

常用数据库备份方法,sql数据库备份方法

在信息时代,数据成为了公司的主要资产。然而,数据的安全性和完整性也成为企业管理的重要组成部分。因此,数据库备份至关重要。本文将详细介绍几种常见的数据库备份方法。 全备份 全备份是指数据库中所有数据的备份,包括数据文件、…...

常见前端面试之VUE面试题汇总八

22. Vue 子组件和父组件执行顺序 加载渲染过程: 1.父组件 beforeCreate 2.父组件 created 3.父组件 beforeMount 4.子组件 beforeCreate 5.子组件 created 6.子组件 beforeMount 7.子组件 mounted 8.父组件 mounted 更新过程: 1. 父组件 befor…...

弯道超车必做好题集锦二(C语言选择题)

前言: 编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,每篇大约10题左右。此为第二篇选择题篇,该系列会不定期更新,后续还会…...

PROFIBUS主站转MODBUS TCP网关

1.产品功能 YC-DPM-TCP网关在Profibus总线侧实现主站功能,在以太网侧实现ModbusTcp服务器功能。可将Profibus DP从站接入到ModbusTcp网络;通过增加DP/PA耦合器,也可将Profibus PA从站接入ModbusTcp网络。YC-DPM-TCP网关最多支持125个Profibu…...

【力扣】盛最多水的容器

目录 题目 题目初步解析 水桶效应 代码实现逻辑 第一步 第二步 第三步 代码具体实现 注意 添加容器元素的函数 计算迭代并且判断面积是否是最大值 总代码 运行结果 总结 题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是…...

【SQL应知应会】索引(三)• MySQL版:聚簇索引与非聚簇索引;查看索引与删除索引;索引方法

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 索引 • MySQL版 前言一、索引1.简介2.索引类型之逻…...

rtmp直播

技术要求:nginxnginx-rtmpffmpegVLC 跟着大佬走的: 传送门 准备工作: 首先需要一台公网ip的服务器 这是使用天翼云的弹性云主机:免费试用1个月 天翼云官网 点击关机,更多里面选择重置密码, 默认用户名为…...

4.14 tcp_tw_reuse 为什么默认是关闭的?

开启 tcp_tw_reuse 参数可以快速复用处于 TIME_WAIT 状态的 TCP 连接时,相当于缩短了 TIME_WAIT 状态的持续时间。 tcp_tw_reuse 是什么? TIME_WAIT 状态的持续时间是 60 秒,这意味着这 60 秒内,客户端一直会占用着这个端口。端…...

Python数据分析和爬虫:解析数据的强大工具

引言: 在当今数据爆炸的时代,数据分析和数据提取变得越来越重要。作为一种简洁而强大的编程语言,Python在数据分析和爬虫领域有着广泛的应用。本文将详细介绍Python在数据分析和爬虫中的常用库和技术,并探讨其在实际应用中的优势…...

cf2117E

原题链接&#xff1a;https://codeforces.com/contest/2117/problem/E 题目背景&#xff1a; 给定两个数组a,b&#xff0c;可以执行多次以下操作&#xff1a;选择 i (1 < i < n - 1)&#xff0c;并设置 或&#xff0c;也可以在执行上述操作前执行一次删除任意 和 。求…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...