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

LLM基础之源码一

transformers 核心源码梳理

Trainer部分:

__init__() 初始化函数:
def __init__(xxx):if args is None:output_dir = "tmp_trainer"args = TrainingArguments(output_dir=output_dir) self.args = argsself.compute_loss_func = compute_loss_func# Seed must be set before instantiating the model when using modelenable_full_determinism(self.args.seed) if self.args.full_determinism else set_seed(self.args.seed)self.hp_name = Noneself.deepspeed = Noneself.is_in_train = Falseself.model = modelself.create_accelerator_and_postprocess() # 初始化加速相关参数如: self.accelerator(Accelerator)self._memory_tracker = TrainerMemoryTracker(self.args.skip_memory_metrics) # cpu/gpu监控器初始化,貌似需要先安装了 psutil 模块 self._memory_tracker.start()# set the correct log level depending on the nodelog_level = args.get_process_log_level()logging.set_verbosity(log_level)# force device and distributed setup init explicitlyargs._setup_devicesif model is None:if model_init is not None: # 每次调train()生效的模型初始化函数。self.model_init = model_initmodel = self.call_model_init()xxxxx if model.__class__.__name__ in MODEL_MAPPING_NAMES: # 模型类名不能是已有的如albert raise ValueError(xxx)if getattr(model, "is_parallelizable", False) and getattr(model, "model_parallel", False):self.is_model_parallel = True if getattr(model, "hf_device_map", None) is not None:devices = [device for device in set(model.hf_device_map.values()) if device not in ["cpu", "disk"]]if len(devices) > 1:self.is_model_parallel = Trueelif len(devices) == 1:self.is_model_parallel = self.args.device != torch.device(devices[0])else:self.is_model_parallel = False# warn usersif self.is_model_parallel:logger.info("You have loaded a model on multiple GPUs. `is_model_parallel` attribute will be force-set"" to `True` to avoid any unexpected behavior such as device placement mismatching.")if self.args.use_liger_kernel: # Patch the model with liger kernels. xxx self.is_fsdp_xla_enabled = args.fsdp_config["xla"] # 核心功能是模型分片后存放各分片到不同的GPU上,而不是默认的一块GPU存放一个完整的模型,FSDP主要是为了解决传统数据并行(如DDP)在训练大模型时显存占用过高的问题# one place to sort out whether to place the model on device or not# postpone switching model to cuda when:# 1. MP - since we are trying to fit a much bigger than 1 gpu model# 2. fp16-enabled DeepSpeed loads the model in half the size and it doesn't need .to() anyway,#    and we only use deepspeed for training at the moment# 3. full bf16 or fp16 eval - since the model needs to be cast to the right dtype first# 4. FSDP - same as MPif (self.is_model_parallelor self.is_deepspeed_enabledor ((args.fp16_full_eval or args.bf16_full_eval) and not args.do_train)or self.is_fsdp_xla_enabledor self.is_fsdp_enabled):self.place_model_on_device = Falsedefault_collator = (DataCollatorWithPadding(processing_class)if processing_class is not Noneand isinstance(processing_class, (PreTrainedTokenizerBase, SequenceFeatureExtractor))else default_data_collator)self.data_collator = data_collator if data_collator is not None else default_collatorself.train_dataset = train_datasetself.eval_dataset = eval_datasetself.processing_class = processing_classxxxx # later use `self.model is self.model_wrapped` to check if it's wrapped or notself.model_wrapped = modelself.model = modelself.neftune_noise_alpha = args.neftune_noise_alphaself.compute_metrics = compute_metricsself.preprocess_logits_for_metrics = preprocess_logits_for_metricsself.optimizer, self.lr_scheduler = optimizersself.optimizer_cls_and_kwargs = optimizer_cls_and_kwargsdefault_callbacks = DEFAULT_CALLBACKS + get_reporting_integration_callbacks(self.args.report_to)callbacks = default_callbacks if callbacks is None else default_callbacks + callbacksself.callback_handler = CallbackHandler(callbacks, self.model, self.processing_class, self.optimizer, self.lr_scheduler)self.add_callback(PrinterCallback if self.args.disable_tqdm else DEFAULT_PROGRESS_CALLBACK)# Will be set to True by `self._setup_loggers()` on first call to `self.log()`.self._loggers_initialized = False# Label smoothingif self.args.label_smoothing_factor != 0:self.label_smoother = LabelSmoother(epsilon=self.args.label_smoothing_factor)self.control = TrainerControl() # 训练过程控制类,存储一些状态控制参数,与TrainerCallback搭配使用self.state = TrainerState( # 训练状态记录类,每次梯度更新时生效(gradient_accumulation_steps=1时每个batch后生效一次)is_local_process_zero=self.is_local_process_zero(),is_world_process_zero=self.is_world_process_zero(),stateful_callbacks=[cb for cb in self.callback_handler.callbacks + [self.control] if isinstance(cb, ExportableState)],)# Internal variable to count flos in each process, will be accumulated in `self.state.total_flos` then# returned to 0 every time flos need to be loggedself.current_flos = 0self.hp_search_backend = None default_label_names = find_labels(self.model.__class__) # 找label,基于torch的模型按forward()后返回 label 与否self.label_names = default_label_names if self.args.label_names is None else self.args.label_namesself.can_return_loss = can_return_loss(self.model.__class__) # 基于 forward()返回里包含 return_loss 与否self.control = self.callback_handler.on_init_end(self.args, self.state, self.control)# Internal variables to help with automatic batch size reductionself._train_batch_size = args.train_batch_sizeself._created_lr_scheduler = False# very lastself._memory_tracker.stop_and_update_metrics()self.is_fsdp_xla_v2_enabled = args.fsdp_config.get("xla_fsdp_v2", False)self.is_fsdp_xla_v1_enabled = self.is_fsdp_xla_enabled and not self.is_fsdp_xla_v2_enabled
train()函数:
train(self,resume_from_checkpoint: Optional[Union[str, bool]] = None,trial: Union["optuna.Trial", dict[str, Any], None] = None,ignore_keys_for_eval: Optional[list[str]] = None,**kwargs,):  # 内部核心实现代码 self._memory_tracker.start()args = self.argsself.is_in_train = True# This might change the seed so needs to run first.self._hp_search_setup(trial) # 超参搜索相关 # Model re-init 每次train()中重新执行 model_init model_reloaded = Falseif self.model_init is not None:# Seed must be set before instantiating the model when using model_init.enable_full_determinism(self.args.seed) if self.args.full_determinism else set_seed(self.args.seed)self.model = self.call_model_init(trial)model_reloaded = True# Reinitializes optimizer and schedulerself.optimizer, self.lr_scheduler = None, None# Load potential model checkpoint: 优先级比 model_init 更高if isinstance(resume_from_checkpoint, bool) and resume_from_checkpoint:resume_from_checkpoint = get_last_checkpoint(args.output_dir)if resume_from_checkpoint is not None:if not is_sagemaker_mp_enabled() and not self.is_deepspeed_enabled and not self.is_fsdp_enabled:self._load_from_checkpoint(resume_from_checkpoint)# If model was re-initialized, put it on the right device and update self.model_wrappedif model_reloaded:if self.place_model_on_device:self._move_model_to_device(self.model, args.device)self.model_wrapped = self.modelinner_training_loop = find_executable_batch_size(self._inner_training_loop, self._train_batch_size, args.auto_find_batch_size)return inner_training_loop(  # 该函数找到显存可承受的batch调用_inner_training_loop()训练args=args,resume_from_checkpoint=resume_from_checkpoint,trial=trial,ignore_keys_for_eval=ignore_keys_for_eval,)
_inner_training_loop()函数:
def _inner_training_loop(self, batch_size=None, args=None, resume_from_checkpoint=None, trial=None, ignore_keys_for_eval=None):  # 核心代码展开self.accelerator.free_memory()self._train_batch_size = batch_sizetrain_dataloader = self.get_train_dataloader() # 数据加载封装total_train_batch_size = self._train_batch_size * args.gradient_accumulation_steps * args.world_size (num_train_epochs, num_update_steps_per_epoch, xxx) = self.set_initial_training_values(args, train_dataloader, total_train_batch_size)  # 确定具体的训练数据num_train_tokens = None # 记录总训练的token数量if self.is_deepspeed_enabled:self.optimizer, self.lr_scheduler = deepspeed_init(self, num_training_steps=max_steps)self.state = TrainerState(xxx) # 记录当前训练状态if args.gradient_checkpointing:self.model.gradient_checkpointing_enable(gradient_checkpointing_kwargs=args.gradient_checkpointing_kwargs)model = self._wrap_model(self.model_wrapped)use_accelerator_prepare = True if model is self.model else Falseif delay_optimizer_creation:xxxself.create_optimizer_and_scheduler(num_training_steps=max_steps) # 设置优化器和lr调度器

相关文章:

LLM基础之源码一

transformers 核心源码梳理 Trainer部分: __init__() 初始化函数: def __init__(xxx):if args is None:output_dir "tmp_trainer"args TrainingArguments(output_diroutput_dir) self.args argsself.compute_loss_func compute_loss_fun…...

蛮荒tv桌面永不升级版app下载-蛮荒桌面安卓电视版下载

蛮荒桌面是一款具有丰富桌面内容的生活应用软件,可以连接电视上使用,用户将需要的软件添加到桌面上,系统就会自动分类管理软件,小编今天为大家推荐一款功能更大强大的电视桌面应用——乐看家桌面。 乐看家桌面功能亮点: 1.官网下载刷入机顶盒…...

2025蓝桥省赛c++B组第二场题解

前言 这场的题目非常的简单啊,至于为什么有第二场,因为当时河北正在刮大风被迫停止了QwQ,个人感觉是历年来最简单的一场,如果有什么不足之处,还望补充。 试题 A: 密密摆放 【问题描述】 小蓝有一个大箱子&#xff0…...

c#简易超市充值卡程序充值消费查余额

开发背景 本软件是给克什克腾旗某公司开发的一个简易的超市充值卡程序 # 功能 1、充值卡的充值、消费、查询余额 github下载:https://github.com/oyangxizhe/cash.git...

使用FME生成Delaunay三角形

目录 背景与应用场景 前置条件与数据准备 操作流程详解 3.1 点要素矢量化3.2 设置坐标系3.3 生成Delaunay三角形...

三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!

在这个数字化时代,总有些工具能让人眼前一亮。今天李师傅大家精选三款实用工具,从图片优化到格式转换,解决日常创作中的痛点,让数字生活更得心应手。 在这个数字化时代,总有些工具能让人眼前一亮。今天为大家精选三款…...

文本预处理(NLTK)

1. 自然语言处理基础概念 1.1 什么是自然语言处理 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于…...

泰迪杯实战案例学习资料:生产线的故障自动识别和人员配置优化

(西南石油大学,第十二届泰迪杯特等奖案例) (深度扩展版) 一、案例背景与目标 1.1 问题背景 在制造业中,生产线设备故障可能导致以下问题: 停机损失:每小时停机成本可达数万元(视行业而定)。 资源浪费:人工排班不合理导致高技能员工闲置或低效分配。 安全隐患:未及…...

dijkstra

open_set是当前正在计算的节点; 每次从当前open_set集合中找出cost最小的节点进行计算更新:从open_set中去除该节点,保存到close_set中; 运动更新可以根据运动模型选择合适的节点运动方式; 【代价的计算方式是&…...

【SSH 端口转发】通过SSH端口转发实现访问远程服务器的 tensorboard

SSH 连接远程服务器时的命令: ssh -L 8001:localhost:8001 usrnameserverip-L: 这是指定进行本地端口转发的选项。也就是说,要将本地机器的一个端口通过 SSH 隧道转发到远程服务器上的某个服务。 8001:localhost:8001: 第一个 80…...

w308汽车销售系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

Spring 学习笔记之 @Transactional 异常不回滚汇总

使用springboot时,只要引入spring-jdbc/jpa相关的依赖后,在想要启用事务的方法上加上Transactional注解就能开启事务,碰到异常就能自动回滚。大大的提高了编码的便捷性性,同时也不侵入代码,保持了代码的简洁性。 默认情…...

Java 自定义TCP协议:【特点编码字符串<=>字节<=>特点编码16进制】16进制字符串和编码的转换 (各种编码通过字节向16进制的互转)| XOR计算

文章目录 引言I 各种编码通过字节向16进制的互转。字符串<=>字节<=>16进制 | Java验证微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)II xor校验码Java实现验证C# 实现引言 为了避免中文在传输过程…...

大模型的使用

以下是不同类型大模型及其适用场景&#xff1a; 对话模型 - 代表模型&#xff1a;GPT-3.5/4、Claude、LaMDA、ChatGLM等。 - 适用场景&#xff1a;客服机器人为用户解答常见问题&#xff0c;提供实时支持&#xff1b;个人助理帮助用户完成各种任务&#xff0c;如查询信息、设置…...

OSPF的不规则区域和特殊区域

目录 一、OSPF不规则区域类型 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 解决方案 1、使用虚连接 2、使用多进程双向重发布&#xff08;路由引入&#xff09; 二、特殊区域 1、STUB区域&#xff08;末梢区域&#xff09; 2、totally stub区域&#xff08;…...

C++学习:六个月从基础到就业——STL:分配器与设计原理

C学习&#xff1a;六个月从基础到就业——STL&#xff1a;分配器与设计原理 本文是我C学习之旅系列的第三十篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第九篇&#xff0c;主要介绍C STL中的分配器设计原理与实现。查看完整系列目录了解更多内容。 引言 在之前…...

QQMusic项目功能总结

QQMusic项目功能总结 一、核心功能分类 &#xff08;一&#xff09;界面交互功能 功能模块实现方式使用类&#xff08;自定义/Qt库&#xff09;核心类说明窗口布局Head区&#xff08;图标、搜索框、控制按钮&#xff09; Body区&#xff08;左侧功能栏右侧页面区&#xff09…...

人形机器人:MCP与人形机器人的联系

MCP&#xff08;Model Context Protocol&#xff09;与人形机器人的结合&#xff0c;正在重构智能体与物理世界的交互范式。这种联系不仅体现在技术架构的深度融合&#xff0c;更体现在对机器人认知能力、协作模式和应用场景的全方位赋能。以下从技术整合、场景落地和未来趋势三…...

matplotlib画图工具使用(1) 画折线统计图python代码

Python 画折线统计图&#xff08;line chart&#xff09;最常用的是 matplotlib。 最基本的折线图代码如下&#xff1a; import matplotlib.pyplot as plt# 假设这是你的数据 x [1, 2, 3, 4, 5] y [2, 3, 5, 7, 11]# 创建折线图 plt.plot(x, y, markero) # markero 是在点…...

神经网络与深度学习第四章-前馈神经网络

前馈神经网络 在本章中&#xff0c;我们主要关注采用误差反向传播来进行学习的神经网络。 4.1 神经元 神经元是构成神经网络的基本单元。主要是模拟生物神经元的结构和特性&#xff0c;接收一组输入信号并产生输出。 现代神经元中的激活函数通常要求是连续可导的函数。 净输…...

TC3xx学习笔记-UCB BMHD使用详解(一)

文章目录 前言UCB BMHDPINDISHWCFGLSENA0-3LBISTENACHSWENABMHDIDSTADCRCBMHDCRCBMHD_NPW0-7 总结 前言 AURIX Tc系列Mcu启动过程&#xff0c;必须要了解BMHD&#xff0c;本文详细介绍BMHD的定义及使用过程 UCB BMHD UCB表示User Configuration Block,UCB是Dflash,存储的地址…...

C语言 函数递归

目录 1.什么是递归 2.递归的限制条件 3.递归的举例 1.递归与迭代 1.递归是什么 递归是学习C语言函数绕不开的一个话题&#xff0c;那什么是递归呢? 递归其实是一种解决问题的方法&#xff0c;在C语言中&#xff0c;递归就是函数自己调用自己。 写一个史上最简单的C语言…...

4月25日日记(补)

最近实在是忙的不行了&#xff0c;做不到一天一更&#xff0c;但是实际上只需要每天拿出十分钟就可以写一篇不错的随笔或者说日记&#xff0c;我还是有点倦怠了。 昨天是4月25&#xff0c;我的生日&#xff0c;但是依旧是很忙碌的一天。零点准时拆了朋友们送的礼物&#xff0c…...

【股票系统】使用docker本地构建ai-hedge-fund项目,模拟大师炒股进行分析。人工智能的对冲基金的开源项目

股票系统: https://github.com/virattt/ai-hedge-fund 镜像地址: https://gitcode.com/gh_mirrors/ai/ai-hedge-fund 项目地址: https://gitee.com/pythonstock/docker-run-ai-hedge-fund 这是一个基于人工智能的对冲基金的原理验证项目。本项目旨在探讨利用人工智能进行…...

Ollama平替!LM Studio本地大模型调用实战

本文已收录在Github&#xff0c;关注我&#xff0c;紧跟本系列专栏文章&#xff0c;咱们下篇再续&#xff01; &#x1f680; 魔都架构师 | 全网30W技术追随者&#x1f527; 大厂分布式系统/数据中台实战专家&#x1f3c6; 主导交易系统百万级流量调优 & 车联网平台架构&a…...

2024江西ICPC部分题解

题目列表 A - Maliang Learning PaintingC - LiarG - Multiples of 5H - ConvolutionJ - Magic MahjongK - Magic Tree A - Maliang Learning Painting 题目来源&#xff1a;A - Maliang Learning Painting 思路分析 这是个签到题&#xff0c;直接输出abc即可 #include<b…...

RabbitMQ安装流程(Windows环境)

1.下载依赖&#xff0c;Downloads - Erlang/OTP 2.下载RabbitMQ安装包&#xff0c;Installing on Windows | RabbitMQ 3.下载的文件如下 4.安装ErLang依赖 5.安装RabbitMQ 6.RabbitMQ插件管理 6.1 进入Command Prompt命令行界面 6.2 输入rabbitmq-plugins.bat list 查看所有插…...

QT对话框及其属性

Qt中使用QDialog类表示对话框 对话框是一个顶层窗口&#xff0c;出现在程序最上层&#xff0c;用于实现短期任务或者简洁的用户交互 QDialog也是继承自QWidget,可以使用QWidget接口 Qt常用的内置对话框有: 对话框 说明 QFiledialog 文件对话框 QColorDialog 颜色对话框 …...

python怎么查看函数原型及变量是什么类型

python代码中看到一个变量或者对象名,怎么查看这个变量到底是个什么东西,是属性,还是函数,还是模块,还是个包,怎么去查看,要有一个查找流程: 1.可以先用print(变量名)和print(type(变量名)),确认变量是什么类型的参数 2.如果是模块或者类,可以通过dir()函数去查看模…...

住宅代理IP助力大规模数据采集实战

在数字化时代&#xff0c;数据就是燃料&#xff0c;而大规模数据采集则是从信息海洋中提炼价值的关键手段。面对目标网站的严格风控和地域限制&#xff0c;普通代理车轮战往往难以为继——流量一旦被识破&#xff0c;便可能付之东流。这时&#xff0c;住宅代理IP凭借来自真实家…...

【信息融合】卡尔曼滤波EKF毫米波雷达和红外数据信息融合

一、扩展卡尔曼滤波&#xff08;EKF&#xff09;的核心原理 EKF是针对非线性系统的改进卡尔曼滤波算法&#xff0c;其核心思想是通过一阶泰勒展开对非线性方程进行局部线性化&#xff0c;并利用雅可比矩阵&#xff08;Jacobian Matrix&#xff09;替换线性系统中的状态转移矩阵…...

一篇入门之-评分卡变量分箱(卡方分箱、决策树分箱、KS分箱等)实操例子

一、评分卡分箱-有哪些分箱方法 评分卡的分箱&#xff0c;是指将变量进行离散化。评分卡的分箱方法一般有&#xff1a;等频分箱、等距分箱、卡方分箱、决策树分箱、KS分箱等等。它们都属于自动分箱方法&#xff0c;其中&#xff0c;卡方分箱是实际中最常用的分箱方法。 1.1.等…...

【白雪讲堂】构建与优化企业知识图谱的实战指南

在GEO&#xff08;生成式引擎优化&#xff09;时代&#xff0c;知识图谱不仅是企业数据资产的“智慧大脑”&#xff0c;更是连接内容与AI理解之间的核心桥梁。一个高质量的知识图谱&#xff0c;能够显著提高AI平台对企业内容的识别度、相关性与推荐权重&#xff0c;从而在AI搜索…...

作为高速通道光纤传输模式怎么理解以及到底有哪些?

光纤的传输模式主要取决于光纤的结构(如纤芯直径和折射率分布),不同模式对应光波在光纤中传播的不同路径和电磁场分布。以下是光纤传输模式的主要分类及特点: 1. 单模光纤(Single-Mode Fiber, SMF) 核心特点: 纤芯直径极小(通常为 8-10微米),仅允许光以单一模式(…...

setup语法糖

为什么要有setup语法糖&#xff1a; 在选择式API中&#xff0c;一个模块涉及到的数据、方法、声明周期&#xff0c;会比较分撒&#xff0c;位置不集中&#xff0c;不利于解读代码&#xff0c;但是组合式API中的setup函数可以将他们组织在一起&#xff0c;提高了代码的可维护性…...

linux socket编程之tcp(实现客户端和服务端消息的发送和接收)

目录 一.创建socket套接字(服务器端) 二.bind将port与端口号进行绑定(服务器端) 2.1填充sockaddr_in结构 2.2bind绑定端口 三.建立连接 四.获取连接 五..进行通信(服务器端) 5.1接收客户端发送的消息 5.2给客户端发送消息 5.3引入多线程 六.客户端通信 6.1创建socke…...

Spring和Spring Boot集成MyBatis的完整对比示例,包含从项目创建到测试的全流程代码

以下是Spring和Spring Boot集成MyBatis的完整对比示例&#xff0c;包含从项目创建到测试的全流程代码&#xff1a; 一、Spring集成MyBatis示例 1. 项目结构 spring-mybatis-demo/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com.example/…...

Beta-VAE背景原理及解耦机制分析

Beta-VAE背景原理及解耦机制分析 论文链接&#xff1a;https://openreview.net/forum?idSy2fzU9gl&noteIdSy2fzU9gl 一、Beta-VAE的核心思想 Beta-VAE 是一种改进的变分自编码器&#xff08;VAE&#xff09;&#xff0c;旨在通过调整潜在变量的独立性来增强模型的解耦能…...

用c语言实现——一个动态顺序存储的串结构

一、思路概要 ①动态顺序存储的串结构&#xff1a; 动态应该使用动态内存分配&#xff0c;也就是用指针来存储字符数组&#xff0c;同时记录长度和当前容量。 这样结构体应该包含三个成员&#xff1a;一个char*指针&#xff0c;一个int表示当前长度&#xff0c;另一个int表示…...

小程序Npm package entry file not found?

修改依赖包的入口文件 看是不是cjs&#xff0c;小程序不支持cjs...

vue3学习之防抖和节流

​ 在前端开发中&#xff0c;我们经常会遇到这样的情况&#xff1a;某些事件&#xff08;如滚动、输入、点击等&#xff09;会频繁触发&#xff0c;如果不加以控制&#xff0c;可能会导致性能问题。Vue3 中的防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&a…...

当高级辅助驾驶遇上“安全驾校”:NVIDIA如何用技术给无人驾驶赋能?

高级辅助驾驶技术的商业化落地&#xff0c;核心在于能否通过严苛的安全验证。国内的汽车企业其实也在做高级辅助驾驶&#xff0c;但是吧&#xff0c;基本都在L2级别。换句话说就是在应急时刻内&#xff0c;还是需要人来辅助驾驶&#xff0c;AI驾驶只是决策层&#xff0c;并不能…...

Linux | Mfgtools 修改单独只烧写 Uboot,内核,文件系统

01 1. 打开 mfgtools_for_6ULL 文件夹,找到 cfg.ini 文件,如果您的板子是 EMMC 的修改如下图: 如果您的板子是 NAND 的,修改如下图: 02 2. 打开“Pro...

【Agent python实战】ReAct 与 Plan-and-Execute 的融合之道_基于DeepSeek api

写在前面 大型语言模型(LLM)驱动的 Agent 正在从简单的任务执行者向更复杂的问题解决者演进。在 Agent 的设计模式中,ReAct (Reason + Act) 以其步步为营、动态适应的特性见长,擅长处理需要与环境实时交互、快速响应的任务。而 Plan-and-Execute 则强调前瞻性规划,先制定…...

Native层Trace监控性能

一、基础实现方法 1.1 头文件引用 #include <utils/Trace.h> // 基础版本 #include <cutils/trace.h> // 兼容旧版本1.2 核心宏定义 // 区间追踪&#xff08;推荐&#xff09; ATRACE_BEGIN("TraceTag"); ...被监控代码... ATRACE_END();// 函数级自…...

【C++】15. 模板进阶

1. 非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff1a;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当…...

C#进阶学习(十四)反射的概念以及关键类Type

目录 本文末尾有相关类中的总结&#xff0c;如有需要直接跳到最后即可 前置知识&#xff1a; 1、程序集&#xff08;Assembly&#xff09; 2、元数据&#xff08;Metadata&#xff09; 3、中间语言&#xff08;IL, Intermediate Language&#xff09; 中间语言&#xff08;…...

B. And It‘s Non-Zero

题目链接&#xff1a;https://codeforces.com/problemset/problem/1615/B 位运算之前没怎么写过&#xff0c;所以不会写。留一份题解&#xff0c;作为复习使用。 题解&#xff1a;按位与的结果不为0&#xff0c;则至少有一列全为1.要求删除的数最少&#xff0c;即要求该列原本…...

深入解析NuttX:为何它是嵌入式RTOS领域的标杆?​​

文章目录 引言一、NuttX简介&#xff1a;轻量级与高兼容性的结合二、架构特点&#xff1a;为何NuttX更灵活&#xff1f;三、横向对比&#xff1a;NuttX vs 主流嵌入式RTOS四、NuttX的核心优势五、何时选择NuttX&#xff1f;结语 引言 在资源受限的嵌入式系统中&#xff0c;实时…...

html初识

html 盖楼第一步&#xff1a;HTML1. HTML是啥玩意儿&#xff1f;2. 动手&#xff01;搭个你的"网络小窝" (第一个HTML页面)3. 添砖加瓦&#xff1a;常用HTML"建材"详解3.1 标题家族3.2 段落哥俩好3.3 传送门&#xff1a;链接3.4 挂画&#xff1a;图片 盖楼…...