StreamRL:弹性、可扩展、异构的RLHF架构
StreamRL:弹性、可扩展、异构的RLHF架构
大语言模型(LLMs)的强化学习(RL)训练正处于快速发展阶段,但现有架构存在诸多问题。本文介绍的StreamRL框架为解决这些难题而来,它通过独特设计提升了训练效率和资源利用率,在相关实验中表现优异,想知道它是如何做到的吗?快来一探究竟!
文章核心
论文标题:StreamRL: Scalable, Heterogeneous, and Elastic RL for LLMs with Disaggregated Stream Generation
来源:arXiv:2504.15930v1 [cs.LG] + https://arxiv.org/abs/2504.15930
PS: 整理了LLM、量化投资、机器学习方向的学习资料,关注同名公众号 「 亚里随笔」 即刻免费解锁
研究背景
在大语言模型(LLMs)的发展进程中,强化学习(RL)已成为关键的训练后技术,它有效提升了模型的推理能力,不少前沿模型如 OpenAI 的 o1、o3,Claude 3.7 Sonnet 以及 DeepSeek - R1 等均借助 RL 在多种任务中取得领先表现。
早期,RL 训练框架多采用分离式架构,虽能复用现有基础设施,但存在资源闲置问题。为解决此问题,共置架构应运而生,它通过时间复用 GPU 资源,提升了训练效率,一度成为主流选择。然而在实际大规模部署时,共置架构暴露出资源耦合的弊端。与此同时,分离式架构的优势重新受到关注,但其在现有框架下存在流水线气泡和偏态气泡等挑战,StreamRL 正是在这样的背景下被提出,旨在解决上述问题,充分释放分离式架构的潜力。
研究问题
-
传统共置(colocated)架构存在资源耦合问题,生成阶段和训练阶段因共享相同资源,无法根据各自特性灵活分配资源,导致资源利用率低,影响大规模训练的可扩展性和成本效益。
-
分离式(disaggregated)架构虽理论上有优势,但存在流水线气泡(pipeline bubbles)和偏态气泡(skewness bubbles)问题。流水线气泡源于两阶段串行执行,偏态气泡则因LLM推理工作负载中长尾输出长度分布,这两种气泡都会造成GPU资源闲置。
-
现有框架难以有效应对LLM推理工作负载固有的长尾输出长度分布问题,处理不当会影响模型质量和训练效率。
主要贡献
1. 重新审视架构优势:分析现有共置RL框架的关键问题,提出重新采用分离式架构进行RL训练。该架构可实现灵活资源分配、支持异构硬件选择以及跨数据中心训练,克服了共置架构的局限性。
2. 提出StreamRL框架:设计StreamRL框架,通过解决流水线气泡和长尾问题,充分释放分离式架构的潜力。如采用动态批处理流水线(Dynamic-batch pipelining)和完全异步流水线(Fully asynchronous pipelining)解决流水线气泡;利用输出长度排序器模型(Output Length Ranker)和偏态感知调度(Skewness-aware scheduling)处理长尾问题。
3. 实验验证性能优越:通过在多种LLMs和真实数据集上实验,证明StreamRL相比现有最先进系统,吞吐量最高提升2.66倍,在异构、跨数据中心设置下成本效益最高提升1.33倍,展现出良好的性能和可扩展性。
方法论精要
StreamRL是专为分离式架构设计的高效强化学习框架,其技术路线围绕解决分离式架构存在的问题展开,主要包含以下关键步骤:
1. 核心框架设计:StreamRL将生成和训练阶段分别抽象为流生成服务(SGS)和训练器(Trainer),二者部署在物理上分离的资源上,甚至可位于不同数据中心,通过点到点链路连接。这种设计能实现灵活的资源分配、异构硬件选择和跨数据中心训练。
2. 解决流水线气泡问题:针对流水线气泡,StreamRL在不同RL算法场景下采用不同策略。在同步RL中,提出动态批处理流水线,摒弃传统的批量生成方式,样本一完成就立即发送给训练阶段,训练阶段根据生成速度进行动态批处理,减少训练阶段空闲时间,消除大部分流水线气泡。在异步RL中,采用完全异步流水线,使权重传输与训练、生成过程并行,去除权重传输对关键路径的影响,即便迭代间生成和训练时间有波动,只要平均速度匹配且波动有限,就不会产生新的气泡。
3. 处理偏态气泡问题:为解决偏态气泡,StreamRL利用输出长度排序器模型来识别长尾样本。该模型通过对收集的(prompt, length)对进行监督微调训练得到,可对输入提示的输出长度进行估计和排序。基于此,SGS采用偏态感知调度机制,将提示按估计输出长度排序,标记出长尾样本,为其分配专门的计算资源和较小的批量大小,同时将常规样本组成大批次,充分利用GPU资源。在调度顺序上,采用最长处理时间优先(LPT)的贪心算法,优先处理长样本,以减少整体生成延迟。
4. 系统实现优化:SGS使用内部优化的C++推理引擎和CUDA内核,支持连续批处理和前缀共享技术,提高生成效率;Trainer实现3D并行,通过开发动态CPU卸载技术解决GPU内存限制问题。此外,专门开发的RL - RPC通信框架用于SGS和Trainer间的数据传输,利用GPU - Direct RDMA实现零拷贝张量传输,减少通信开销,并具备TCP fallback机制确保兼容性。在权重传输方面,根据不同部署场景采用不同策略,单数据中心通过多树负载均衡,跨数据中心则由特定节点发送权重并结合本地广播,以优化传输效率。
实验洞察
为全面评估StreamRL的性能,研究人员进行了一系列实验,从多个维度深入探究其特性,具体实验结果如下:
1. 性能优势显著:研究人员在包含16个节点、128个GPU的H800集群上,选用Qwen2.5系列模型(7B - 72B),以内部CodeMath prompts数据集开展实验,并以verl和ColocationRL为基线对比。结果显示,StreamRL - Sync相较于verl,吞吐量提升1.12 - 2.12倍;相较于ColocationRL,提升1.06 - 1.41倍。而StreamRL - Async借助一步异步训练,充分重叠流水线气泡,吞吐量提升幅度更大,达1.30 - 2.66倍。在异构、跨数据中心场景下,将SGS部署于H20集群,Trainer部署于H800集群,StreamRL经硬件成本归一化后的吞吐量,相比单数据中心场景提高了1.23 - 1.31倍,展现出强大的性能优势。
2. 效率大幅提升:在训练效率方面,StreamRL成果斐然。通过异步训练和优化资源分配,实现了阶段延迟的有效平衡,在异步训练中迭代时间由较慢阶段决定,平衡的阶段延迟直接带来1.25倍的加速。并且,动态调整算法能实时监测生成和训练时间差,当生成时间超训练时间一定阈值时,自动为SGS增加数据并行单元,恢复阶段平衡。如在训练7B模型时,随着数据集输出长度增加,StreamRL能及时检测到不平衡并自动调整资源,确保训练高效进行。
3. 核心模块效果显著:通过消融研究,验证了StreamRL核心模块的有效性。以72B模型在20K最大长度数据集上的实验为例,偏态感知调度技术可使吞吐量提升8%,主要是因为其利用输出长度排序器模型精准识别长尾样本,为其分配专属资源和合适批量,加速了长尾样本生成。在此基础上,分离式流生成技术进一步将吞吐量提升15%,异步训练则额外提升25%。输出长度排序器模型对最长20%样本的召回率高达87%,能有效识别长尾样本,大幅提升生成效率,为整体性能提升奠定坚实基础。
相关文章:
StreamRL:弹性、可扩展、异构的RLHF架构
StreamRL:弹性、可扩展、异构的RLHF架构 大语言模型(LLMs)的强化学习(RL)训练正处于快速发展阶段,但现有架构存在诸多问题。本文介绍的StreamRL框架为解决这些难题而来,它通过独特设计提升了训…...
架构进阶:大型制造业企业数据架构顶层设计总体规划方案【附全文阅读】
本文概述了一个大型企业数据架构设计的总体规划方案,针对当前数据架构与管理中存在的诸多问题,如缺乏统一数据模型、数据分析应用体系不健全、主数据管理体系不完善、数据治理体系缺失等,提出了明确的改进目标与实施路径。 数据架构设计思路聚焦于明确数据分布和流向…...
前端指南——项目代码结构解析(React为例)
文件结构 文件项目 ├── doc │ ├── technology.md ├── node_modules ├── public ├── shell ├── src │ ├── auto-generated │ │ ├── apis │ │ ├── models │ ├── components │ │ ├── 组件A │ │ ├── 组件B …...
Redis-数据一致性问题与解决方案
Redis-数据一致性问题与解决方案 引言 Redis 是一个高性能的内存数据库,广泛应用于缓存、会话存储、实时分析等场景。作为一个 NoSQL 数据库,它的高性能和丰富的数据结构使其成为现代微服务架构中不可或缺的组件。然而,在高并发的环境下&am…...
【数据结构】算法的复杂度
前言:经过了C语言的学习,紧接着就步入到数据结构的学习了。在C语言阶段我们在写大多数的oj题的时候会遇到一些问题,就是算法的效率低使用的时间较多,占用的空间也多,数据结构就是来优化算法的。 文章目录 一ÿ…...
Leetcode刷题 由浅入深之字符串——541. 反转字符串Ⅱ
目录 (一)反转字符串Ⅱ的C实现 写法一(s.begin()遍历字符) (二)复杂度分析 时间复杂度 空间复杂度 (三)总结 【题目链接】541. 反转字符串Ⅱ - 力扣&am…...
制造单元智能化改造与集成技术平台成套实训设备
制造单元智能化改造与集成技术平台成套实训设备 一、概述: 本设备以汽车行业的轮毂为产品对象,实现了仓库取料、制造加工、打磨抛光、检测识别、分拣入位等生产工艺环节,以未来智能制造工厂的定位和需求为参考,通过工业以太网完成…...
Vscode 顶部Menu(菜单)栏消失如何恢复
Vscode 顶部Menu(菜单)栏消失如何恢复 https://blog.csdn.net/m0_62964247/article/details/135759655 Vscode 顶部Menu(菜单)栏消失如何恢复? 首先按一下 Alt按键,看一下是否恢复了菜单栏 如果恢复了想了解更进一步的设置,或是没能恢复菜单…...
苍穹外卖--公共字段自动填充
1.问题分析 业务表中的公共字段: 问题:代码冗余、不便于后期维护 2.实现思路 自定义注解AutoFill,用于标识需要进行公共字段填充的方法 自定义切面类AutoFillAspect,统一拦截加入了AutoFill注解的方法,通过反射为公…...
行业 |四大痛点待破:“拆解”DeepSeek一体机
繁荣DeepSeek一体机市场。 2025年开年,DeepSeek大模型掀起的一体机热潮席卷中国AI市场。这款一体机凭借其“开箱即用”的便利性和极低的门槛,吸引了大量企业关注,尤其是在中小企业和行业创新者中,更是成为了新晋“顶流”。 无论…...
革新锅炉厂智能控制——Ethernet IP转CANopen协议网关的工业互联新方案
锅炉厂智能化转型的必经之路 在工业4.0时代,锅炉厂作为能源供应的核心环节,正面临智能化升级的迫切需求。传统锅炉控制系统往往因协议不兼容、数据孤岛问题导致效率低下、维护成本高昂。如何实现设备间高效协同?如何让老旧设备融入智能网络&…...
基于卷积神经网络和Pyqt5的猫狗识别小程序
任务描述 猫狗分类任务(Dogs vs Cats)是Kaggle平台在2013年举办的一个经典计算机视觉竞赛。官方给出的Kaggle Dogs vs Cats 数据集中包括由12500张猫咪图片和12500张狗狗图片组成的训练集,12500张未标记照片组成的测试集。选手需要在规定时间…...
Baklib知识中台引领服务智能跃迁
智能架构重构服务范式 Baklib 知识中台通过全量数据融合与多模态处理能力,重塑企业服务底层逻辑。基于分布式架构设计,平台将分散在业务系统、文档库及外部渠道的非结构化数据进行智能清洗与语义解析,形成标准化的知识元数据池。通过四库体系…...
【Python】超全常用 conda 命令整理
Conda命令整理文档,结合官方指南与高频使用场景分类说明,每个命令都有对应的解释 一、环境管理 1. 创建环境 基本创建conda create --name my_env # 创建名为my_env的空环境 conda create -n my_env python3.11 # 指定Python版本 conda creat…...
FreeRTOS菜鸟入门(十四)·事件
目录 1. 基本概念 2. 应用场景 3. 运作机制 4. 控制块 5. 事件函数接口 5.1 事件创建函数 xEventGroupCreate() 5.2 事件删除函数 vEventGroupDelete() 5.3 事件组置位函数 xEventGroupSetBits()(非中断) 5.4 事件组置位函数 xEventGr…...
setData执行后操作方法-微信小程序
在微信小程序中,setData 是异步执行的,如果你需要在 setData 执行完毕后执行某些操作,可以通过以下几种方式实现: 1. 使用 setData 的回调函数 从基础库 2.2.3 开始,setData 支持传入回调函数,回调会在数据…...
SpringAI特性
一、SpringAI 顾问(Advisors) Spring AI 使用 Advisors机制来增强 AI 的能力,可以理解为一系列可插拔的拦截器,在调用 AI 前和调用 AI 后可以执行一些额外的操作,比如: 前置增强:调用 AI 前改…...
捌拾叁- 量子傅里叶变换
1. 前言 最近公司地震,现在稍微有点时间继续学习。 看了几个算法,都说是基于 量子傅里叶变换 ,好,就是他了 Quantum Fourier。 2. 傅里叶变换 大学是学通信的,对于傅里叶变换还是有所理解的。其实就是基于一个 时域…...
SSTI模版注入
1、概念 SSTI是一种常见的Web安全漏洞,它允许攻击者通过注入恶意模板代码,使服务器在渲染模板时执行非预期的操作。 (1)渲染模版 至于什么是渲染模版:服务器端渲染模板是一种Web开发技术,它允许在服务器端…...
33、前台搜索功能怎么实现?
输入搜索的东西,如果为空 如果有 前端是提交表单,方式是 post 后端接受 调用 mybatisplus的categoryService.getById 用户在搜索框内输入关键字之后,执行 js 中的 load方法,前端提交表单, 后端 controller 中的loa…...
量化解析美英协议的非对称冲击:多因子模型与波动率曲面重构
摘要:基于机器学习算法对市场微观结构的实时监测,黄金价格在3300美元/盎司附近展开技术性反弹。本文通过多因子分析框架,解析美元指数上行、贸易政策突变及资产配置迁移对贵金属市场的复合影响,并构建基于LSTM神经网络的动态支撑位…...
对PyTorch模块进行性能分析
以下是针对PyTorch模块进行性能分析的完整方法与工具指南,结合了多种优化策略和实际应用场景: 一、PyTorch性能分析工具 PyTorch Profiler • 功能:内置的性能分析工具,支持捕获CPU/GPU操作、内存分配、数据形状及硬件利用率。 …...
lvm详细笔记
LVM简介 逻辑卷管理器,是Linux 系统中用于管理磁盘储存的关键技术。 LVM 则打破了磁盘分区一旦确定,其大小调整往往较为复杂,且难以灵活应对业务变化这种限制,它允许用户将多个物理分区组合卷组。例如,系统中的多个物…...
OpenHarmony 以太网卡热插拔事件接口无效
目录 1.背景 2.解决方案 1.背景 在OpenHarmony中调用以太网热插拔时间,发现热插拔没有任何回调,如下接口 import { ethernet } from kit.NetworkKit;ethernet.on(interfaceStateChange, (data: object) > {console.log(on interfaceSharingStateCha…...
SPDK NVMe of RDMA 部署
使用SPDK NVMe of RDMA 实现多NVMe设备共享 一、编译、安装spdk 1.1、下载 1.1.1 下载spdk源码 首先,我们需要从GitHub上克隆SPDK的源码仓库。打开终端,输入以下命令: git clone -b v22.01 https://github.com/spdk/spdk.git cd spdk1.1.2…...
Go语言的逃逸分析是怎么进行的
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...
纯净IP,跨境账号稳定的底层逻辑
在跨境业务快速扩张的背景下,越来越多的卖家、营销人、数据团队都开始使用代理IP来实现全球网络触达。然而,账号封禁问题始终如影随形,而背后的一个“隐性元凶”常常被忽视——纯净IP的缺失。本文将从实战角度出发,带你深入了解什…...
编译日志:关于编译opencv带有ffmpeg视频解码支持的若干办法
编译日志:关于编译opencv带有ffmpeg视频解码支持的若干办法 前言 笔者这里是封装了简单的OpenCV视频播放抽象,然后却发现移植到Ubuntu和开发板上都罢工的事情,原来是Windows平台下我们是默认下载了ffmpeg的库的,但是在泛Linu…...
djinn: 3靶场渗透
djinn: 3 来自 <https://www.vulnhub.com/entry/djinn-3,492/> 1,将两台虚拟机网络连接都改为NAT模式 2,攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182,靶场IP192.168.23.243 3࿰…...
WHAT - 简单服务发现
文章目录 简单理解举个例子简单服务发现方式1. 静态配置(最简单,但不灵活)2. DNS 发现3. 使用服务注册中心(稍高级) 总结 “简单服务发现”(Simple Service Discovery)通常指的是一种让系统中的…...
auto推导类型原则
auto 是 C11 引入的类型自动推导关键字,它允许编译器根据表达式的类型来推导变量的确切类型。虽然使用 auto 可以让代码更简洁,但理解它的类型推导规则非常关键,尤其是在涉及指针、引用、const、模板等场景时。 ✅ 一、基本推导原则 auto x …...
44.辐射发射整改简易摸底测试方法
辐射发射整改简易摸底测试方法 1. 正式摸底预测试2. 简易方法预测试3. 分析频谱4. 探查传播路径5. 施加措施6. 与简易方法预测试效果对比 1. 正式摸底预测试 去正式实验室做一次预测试,取得频谱图;确定超标频点和超标量(备用)。 …...
初识C++:入门基础(二)
概述:该篇博客主要介绍C的缺省函数、函数重载、和引用等知识。 目录 1. 缺省参数 2. 函数重载 3. 引用 3.1 引用的概念和定义 3.2 引用的特性 3.3 引用的使用 3.4 const引用 3.5 指针和引用的关系 4. nullptr 5. 小结 1. 缺省参数 缺省参数是声明或定义函…...
我国脑机接口市场规模将破38亿元,医疗领域成关键突破口
当人类仅凭"意念"就能操控无人机编队飞行,当瘫痪患者通过"脑控"重新站立行走,这些曾只存在于科幻电影的场景,如今正通过脑机接口技术变为现实。作为"十四五"规划中重点发展的前沿科技,我国脑机接口…...
笔记,麦克风的灵敏度
麦克风的“灵敏度(Sensitivity)”决定了它捕捉声音细节的能力。想象麦克风是一只有耳朵的生物。高灵敏度麦克风像长着“超级顺风耳”的精灵,能听见花瓣飘落的声音、远处树叶的沙沙声,甚至你心跳的微弱震动。适合录音棚里捕捉歌手的…...
国产linux系统(银河麒麟,统信uos)使用 PageOffice 在线打开Word文件,并用前端对话框实现填空填表
不管是政府机关、公司企业,还是金融行业、教育行业等单位,在办公过程中都经常需要填写各种文书和表格,比如通知、报告、登记表、计划表、申请表等。这些文书和表格往往是用Word文件制作的模板,比方说一个通知模板中经常会有“关于…...
AKS 支持 Kata Container容器沙盒 -预览阶段
您准备好提升您的云和 DevOps 技能了吗? 🐥《云原生devops》专门为您打造,我们精心打造的数十篇文章库,这些文章涵盖了 Azure、AWS 和 DevOps 方法论的众多重要主题。无论您是希望精进专业知识的资深专业人士,还是渴望…...
Ubuntu通过源码编译方式单独安装python3.12
1、安装依赖 sudo apt-get install zlib1g sudo apt-get install zlib1g-dev sudo apt-get install openssl sudo apt-get install libssl-dev2、编译源码并安装 wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz tar -xvf Python-3.12.0.tar.xz cd Pyth…...
【某OTA网站】phantom-token 1004
新版1004 phantom-token 请求头中包含phantom-token 定位到 window.signature 熟悉的vmp 和xhs一样 最新环境检测点 最新检测 canvas 下的 toDataURL方法较严 过程中 会用setAttribute给canvas 设置width height 从而使toDataURL返回不同的值 如果写死toDataURL的返回值…...
游戏引擎学习第266天:添加顶部时钟概览视图。
简要讨论使用第三方调试工具或在多个项目中复用自己的调试工具 今天的工作主要是在提升调试界面的可用性和美观性。昨天已经整理了布局代码,今天的目标是继续优化调试界面,使其更易用。我们已经为调试工具添加了许多新功能,并且在实现过程中…...
霸王茶姬微信小程序自动化签到系统完整实现解析
霸王茶姬微信小程序自动化签到系统完整实现解析 技术栈:Node.js 微信小程序API MD5动态签名 一、脚本全景架构 功能模块图 #mermaid-svg-0vx5W2xo0IZWn6mH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…...
AI与自然语言处理(NLP):从BERT到GPT的演进
AI与自然语言处理(NLP):从BERT到GPT的演进 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 AI与自然语言处理(NLP):从BERT到GPT的演进摘要引言…...
TRO高能预警,Keith律所×Tane Hannah Meets版权两案王炸维权
紧急避雷贴,keith律所代理Tane Hannah Meets 10个版权连发两案突袭跨境圈!案件详情如下: 案件基本情况: 起诉时间:2025-5-8 案件号:25-cv-05079、25-cv-05088 品牌:Tane Meets Works 原告&…...
在 Spring Boot 中选择合适的 HTTP 客户端
在现代的 Spring Boot 应用程序中,与外部服务进行 HTTP 通信是一个常见的需求。Spring Boot 提供了多种方式来实现 HTTP 请求,包括 Java 的 HttpClient、Spring 的 RestTemplate、WebClient,以及第三方库如 Apache HttpClient。本文将详细介绍…...
Go语言中 源文件开头的 // +build 注释的用法
// build注释主要用于实现条件编译。借助设置不同的构建标签(build tags),我们能够指定在特定的操作系统、架构或者其他自定义条件下才编译某个文件 1、基本规则 格式要求: 这种注释必须出现在文件的开头部分。注释与包声明之间至…...
C++八股 —— map/unordered_map
1. 底层数据结构 map —— 红黑树 随处可见的红黑树:原理、实现及应用场景 - 知乎 unordered_map —— 散列表 [C] 哈希表(散列表)详解_c哈希表-CSDN博客 2. 常见面试题 底层为红黑树的容器有哪些 mapmultimapsetmultiset 红黑树和AVL树…...
PostgreSQL创建只读账号
环境说明 部署环境:linux服务器docker容器部署 数据库:PostgreSQL 成果 只读账号/密码:read_only/xxx123 授权可读库:xxx、xxxdata 操作过程 #进入PostgreSQL容器(如果你没有用docker容器忽略这一步就可以了ÿ…...
DVWA靶场保姆级通关教程--06不安全验证机制
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 目录 文章目录 前言 原理详解 1. 前后端验证逻辑不一致 2. 验证码值保存在客户端 3. 验证码可预测或重复 4. 验证码验证与逻辑解耦 一、处理关卡报错 二、low级别源…...
【日撸 Java 三百行】Day 7(Java的数组与矩阵元素相加)
目录 Day 7:Java 的数组与矩阵元素相加 一、基本知识 二、矩阵的建立与基本计算 三、代码及测试 拓展:Arrays类详解 小结 Day 7:Java 的数组与矩阵元素相加 Task: 矩阵的赋值.二重循环. 一、基本知识 在学习 Java 中的数组与矩…...
【递归、搜索和回溯】递归、搜索和回溯介绍及递归类算法例题
个人主页 : zxctscl 专栏 【C】、 【C语言】、 【Linux】、 【数据结构】、 【算法】 如有转载请先通知 文章目录 递归、搜索和回溯递归搜索VS 深度优先遍历 VS 深度优先搜索 VS 宽度优先遍历 VS 宽度优先搜索 VS 暴搜回溯与剪枝 1 面试题 08.06. 汉诺塔问题1.1 分析…...