大语言模型训练流程

Pre-training → SFT → RLHF
在这里插入图片描述

阶段1:预训练Pre-training

  • 海量无标注文本数据训练
  • 自监督学习机制
  • 学习语言基础知识
  • 掌握语法、语义、常识
  • 形成语言表示能力

核心目标:建立模型的语言理解和文本生成基础能力

阶段2:监督微调Supervised Fine-Tuning

  • 高质量指令-响应对训练
  • 监督学习优化输出
  • 学习任务特定行为
  • 提升指令遵循能力
  • 对齐期望输出格式

核心目标:使模型理解并执行人类指令,提供有用回答

阶段3:强化学习RLHF

  • 人类反馈训练奖励模型
  • PPO强化学习算法
  • 优化价值对齐
  • 减少有害偏见输出
  • 提升回答准确性

核心目标:使模型符合人类价值观,提供安全有帮助的回答

训练流程说明
每个阶段都建立在前一阶段的基础上,逐步提升模型的能力和安全性
在这里插入图片描述

3.1 大语言模型预训练:从零到一的完整指南

这篇文章介绍下如何从零到一进行 pretrain 工作。
在这里插入图片描述

从数据处理到模型评估的完整工程实践

数据准备阶段

  • 数据采集:网络爬虫技术、开源数据集整合、API 内容解析、实时流数据接入、多模态数据收集
  • 数据清洗:质量评分算法、规则过滤引擎、格式标准化、噪声数据检测
  • 数据去重:MinHash 算法、文档级去重、相似段落去重、增量去重策略
  • 数据配比:中英文比例 4:4:2、代码数据融合、知识密度聚类、领域数据权重
  • 数据排序:课程学习策略、语义相似性聚类、知识难度递进、动态调整算法
  • 数据流水线:动态数据加载、Token 预处理优化、数据块智能管理、内存效率优化
  • 数据实验:小模型快速验证、Scaling Law 探索、配比效果优化、loss曲线分析、A/B 测试验证

训练准备阶段

  • Tokenizer 设计:BPE/BBPE 算法优化、压缩率精细控制、词表覆盖率分析、多语言支持
  • 模型架构:LLaMA 类架构、旋转位置编码、GOA 注意力机制、RMS LayerNorm、SwGLU 激活函数
  • 超参数配置:模型 Size 科学选择、学习率动态调整、序列长度优化、并行策略设计、内存预算规划
  • 训练框架:Megatron-LM 深度集成、Deepspeed 优化整合、3D 并行配置、Flash Attention、混合精度训练

模型训练阶段

  • 训练流程管控:Warmup 精细调节、稳定训练期调度、突发错误恢复、Anneal 策略设置、动态学习率调整
  • 智能监控系统:实时 Loss 曲线、Channel 损失分析、梯度分布监控、训练健康度监控、性能瓶颈识别
  • 效率优化策略:通信拓扑优化、智能内存管理、梯度累积优化、重计算权衡策略、硬件利用率最大化
  • 容错与恢复:检查点智能保存、故障自动检测、快速恢复机制、数据完整性验证、训练状态追踪
  • 实时调优:超参数动态调整、数据配比实时优化、模型收敛监控、学习率自适应、训练策略自适应

评估验证阶段

  • 强度评估:测试集 loss 精确测量、收敛趋势分析、泛化能力评估、泛化能力评估、基座模型对比
  • 标准测试:改进式评估设计、生成式任务测试、多维度能力评估、多维度能力评估、多维度能力评估
  • 深度探针:知识概率分布、价值类属性判断、思维链分析、推理路径分析、偏见风险评估
  • 能力检测:多模态理解测试、代码生成能力、代数推理能力、创意写作评估、专业领域知识
  • 性能报告:训练效率分析、成本效益评估、稳定性总结、改进方向规划、下一版本路线图

数据准备篇

一、原始数据获取:不只是“爬”那么简单

做大模型预训练,第一步就是搞数据。别急着写模型,先准备个10T级别的语料库再说。当然,初期没那么多也没关系,可以边训边收集,像 Spark、Flink、Hadoop 这些工具都能帮你持续补充数据流。

数据来源五花八门,网页抓取、第三方采购、甚至找“数据中间商”都行。但注意,爬虫不是算法工程师的强项,IP被封、被起诉都不是闹着玩的,专业的事交给专业的数据团队去做。

像论文、书籍这类高质量内容,很多是PDF格式,解析起来相当头疼。别指望用Python库搞定复杂排版,公式、表格一多就崩。用GPT4解析?贵得离谱。自己训OCR模型?可以,但得有大量PDF-文本对齐数据。

好消息是,现在开源数据集遍地都是,FineWeb、The Pile、SkyPile、RedPajama 都能拿来当“启动资金”。但别高兴太早,开源的中文数据往往是“别人挑剩下的”,质量参差不齐,得自己再洗一遍。

哪怕是从 Hugging Face 下载数据,也不是点几下就完事。服务器没外网?得换镜像。下载太慢?得多进程、多机器并行。文件太多?ls都能卡死,得上大数据平台处理。

还得明白一点:数据的知识密度差异巨大。三百首唐诗的信息密度远高于三百篇新闻。高价值数据往往要花钱买。现在流行“合成高密度数据”——把几千字的新闻压缩成几百字,训练效率直接起飞。

结论:真想干预训练,数据团队是必须的,爬虫、采购、清洗、合成,一个都不能少。


二、数据清洗:别小看“脏活累活”

清洗是数据准备中最关键的一步,没有之一!

现在主流做法是用模型打分筛选数据,Llama3、Qwen2 都这么干。建议用 BERT 系列模型做打分器,结构轻、效果好、速度快。训练数据可以用 GPT4 标注,或者按来源设定规则(比如某些网站=高质量,某些=低质量)。

注意:打分器对代码、Markdown、LaTeX 不友好,容易误杀,得单独处理。比如 FineWeb 就几乎把代码洗没了。

别太纠结打分器的准确率,能用就行。花一个月优化打分器,不如早点进入训练阶段。还有,训练数据不需要全量,4K条就能训个差不多,别钻牛角尖。

打分只是参考,规则清洗才是大杀器

  • 文本长度、token比例、语言占比(zh/en/num)
  • 是否含网址、敏感词(如“新冠”、“疫情”)、反动/色情内容
  • 是否含“转载自”等版权信息

规则不丢人,洗不干净才丢人。但注意:别洗出“偏见数据”。比如英文占比高就去掉,结果模型只会中文,成了“单语模型”。

脱敏也得做:人名、电话、邮箱、版权信息、黄色/反动内容,统统清理干净。别等模型生成隐私信息被罚款,那成本更高。正则匹配虽笨,但最稳妥。


三、去重:T级数据的“瘦身”工程

数据去重是工程能力的大考,TB级数据不能靠Python for循环,得上 Spark/Hadoop 这类分布式框架。

先用 MinHash 做相似度计算,ChatGPT 都能帮你写。关键是:先定目标数据量,再定去重粒度

  • 想要10T?相似度阈值设80%
  • 想要5T?设90%

去重不是越干净越好,而是“够用就行”。目前没人知道一条数据训几遍最优,所以别怕重复,只要相似文档之间隔得够远,影响就小

还有,sentence级去重比 document级更难,但效果更好。量力而行,别硬上。


四、数据分类与配比:让模型“营养均衡”

怎么把代码、百科、新闻分开?训个分类器,BERT 就行,不用太准,大致分类即可。

不同类别,清洗和去重策略也不同:

  • 代码类:清洗阈值高,去重阈值低
  • 知识类:清洗阈值低,去重阈值高
  • 优先保留打分高的文档

主流配比是:中文 : 英文 : 代码 = 4 : 4 : 2(逻辑类数据如 math、cot 视情况而定)

英文数据不能太少,中文语料质量和数量普遍不如英文,这是共识。原因可能是:

  1. 中文语言复杂度更高
  2. 中文互联网内容质量偏低

五、数据顺序:课程学习不是玄学

预训练不是乱序灌输,而是“有节奏的教学”。课程学习(Curriculum Learning) 已被多次验证有效。

同样1T数据,顺序不同,模型能力不同。比如先学“加减法”再学“微积分”,比反过来效果好。

灾难性遗忘始终存在,顺序影响遗忘程度。比如先A后B,A忘30%;先B后A,B忘20%。显然后者更优。

推荐做法:In-Context Pretraining(Llama 提出),按语义相似度拼接文档,构建连贯上下文。

注意:Llama 强调文档间不能“相互看见”,即用 attention_mask 隔离。但实践中,大多数团队不做 mask,效果差异不大。是否采用,建议自己实验。


六、数据流水线:让GPU永远“有饭吃”

预训练必须是动态数据加载,不可能一次性读几T数据。流程是:

读1B → 训1B → 读1B → 训1B → …

注意:模型输入的是 token id,不是原始文本。tokenization、concatenation、padding 必须提前完成,别让GPU等你。

因此,数据处理进程模型训练进程必须解耦:

  • 数据处理持续生成 part-00000.jsonl
  • 训练进程始终有新数据可吃
  • 每条数据记录使用次数,高频数据后续降权

数据块别太大,建议以B为单位(1B、2B、4B)。训练回退时损失小,checkpoint 更灵活。

小技巧:动态保存机制——训练代码检测某个文件夹下是否有名为“save”的文件,有则立即保存checkpoint,避免“看loss美丽却无法保存”的悲剧。


七、数据实验:别急着上主模型

别一上来就训大模型,先在小模型上做实验,把 scaling law 搞明白。

分三个阶段:

  1. 粗糙实验:小模型上跑不同配比、顺序,训500B数据,看loss曲线选最优
  2. 专业实验:多size小模型跑loss,结合scaling law推算大模型最优参数
  3. 创新实验:像Llama/DeepSeek那样,画“loss → benchmark”曲线,预测模型能力

scaling law 没死,只是放缓了。不信它,你就只能靠“玄学”训模型。

预训练没有回头路,实验阶段必须扎实。

训练阶段

分词器(Tokenizer)

扩展词表时很容易出错,尤其是涉及到字典树(Trie)结构时。比如,你新增了一个词“中华人民”,并配套了合并规则,结果可能导致“中华人民共和国”这个已有词无法被正确编码,从而丢失了它原本承载的语义信息。

因此,提前设计好一个高质量的 tokenizer 至关重要。这就像盖房子打地基,不能等房子歪了再临时加柱子。很多人尝试在 LLaMA 基础上扩展中文词表并继续预训练,但真的训出过效果惊艳的中文模型吗?

训练 tokenizer 的方法并不复杂:找一台大内存的 CPU 机器,准备一份大规模通用语料,然后用 BPE 或 BBPE 算法训练即可(代码 ChatGPT 能写)。不过有几个细节值得注意:

  1. 数字处理建议拆分:虽然 OpenAI 没这么做,但我们建议保留数字拆分逻辑,以避免模型在比较“9.9 和 9.11”这类问题时出错。
  2. 控制压缩比例:每个 token 对应多少个汉字需要权衡。压缩率太低,解码效率差;压缩率太高,词表过大,影响模型泛化能力。通常中文模型中,1 个 token 大约对应 1.5 个汉字是比较合理的。
  3. 清理脏数据:此前 GPT-4o 的词表泄露事件中,就发现了不少中文低俗、违法词汇,手动清洗是必要的。
  4. 业务导向优化:如果明确知道模型将用于某个垂直领域,比如医疗,可以提前将“阿莫西林”“青霉素”等高频词设为独立 token,提高压缩效率。
  5. 语言覆盖:中英文覆盖率要尽量高,小语种是否加入视具体业务需求而定。
  6. 词表与嵌入层预留空间:tokenizer 的 vocab_size 应比模型的 embedding_size 多出约 1000 个位置,以便后续对齐(alignment)阶段引入新 token。

顺便说一句,我不太理解“strawberry 有几个 r”这种问题为何总被拿出来讨论。这本质上是 tokenizer 无法处理的问题,模型答对了只能说明它背过,答不出来才是正常的。希望这类“噱头题”别再被拿来炒作,误导大众对 LLM 的理解。


网络结构选型

一句话总结:能抄 LLaMA 就别乱改。推荐使用 Rope + GQA + RMSNorm + SwiGLU 这套组合,稳定、成熟、坑少。小模型(如 1B)建议共享 embedding 和 lm_head 参数,以提升 layer 参数占比;大模型则无需共享。

预训练阶段成本极高,任何结构上的“创新”都必须慎之又慎。别为了发论文或宣传“超越 LLaMA”,就在小模型上跑几天实验,发现 loss 下降快就贸然改动结构。等真正上规模训练一个月后才发现问题,几千万的预算已经打水漂。老板问起来,你说“小模型上没出问题”——这不是找骂吗?

说实话,国内大多数大模型岗位并不鼓励“试错式创新”,老板们更看重的是快速复现、低成本追赶。除非你真的在一个鼓励探索的团队,否则盲目搞结构创新,风险极高。


模型参数设定

OpenAI、Google、Meta 等早期论文中提到的 7B、13B、33B、70B 等模型尺寸,确实有其道理,但也不能全信。这里从工程实践角度,聊聊如何选定模型规模。

核心依据:Scaling Laws(缩放定律)
  1. OpenAI 的幂律关系(2020):

    • 性能 ∝ 参数量^(-0.076)
    • 性能 ∝ 数据量^(-0.095)
    • 性能 ∝ 计算量^(-0.050)
  2. Chinchilla 定律(DeepMind):

    • 提出“参数与数据等比例增长”原则
    • 模型参数翻倍,训练数据也应翻倍
为什么选 7B、13B、33B、70B?
  1. 成本与性能的平衡点

    • 训练成本 vs 推理成本
    • 模型能力 vs 部署难度
    • 内存占用 vs 计算效率
  2. 硬件适配性

    • 7B:单张 A100 可跑,适合研究
    • 13B:需多卡,但仍可控
    • 33B/70B:需分布式部署,性能更强
  3. 数学优化结果(Chinchilla):

    • 最优参数 ≈ G × (预算/6)^(β/(α+β))
    • 最优数据 ≈ G^(-1) × (预算/6)^(α/(α+β))
    • 其中 α≈0.32,β≈0.28
实际趋势:超越 Chinchilla

为降低推理成本,越来越多模型选择“小参数 + 大数据”策略:

  • LLaMA-2 70B:训练了 2T tokens
  • LLaMA-3 70B:训练了 1.5T tokens(远超 Chinchilla 建议)

这些数字并非玄学,而是在理论最优与现实可行之间反复权衡后的结果。


模型尺寸选择建议

别一上来就按业务场景定模型大小(除非是数学、法律这类复杂任务)。小模型的潜力远未被挖尽,Qwen2.5 的 benchmark 也显示,更小的模型也能达到更高分数。很多时候,模型小了点,alignment 阶段也能通过过拟合业务数据“救回来”。

真正决定模型尺寸的,是以下两个现实因素:

  1. 训练资源

    • 你有多少卡?能跑多久?训练框架一天能处理多少 token?这些都能提前算出来。
    • 比如目标是在 2 个月内训完 2T tokens,那就能反推出适合的模型规模。
    • 建议跟大厂保持一致(如 7B、13B、33B、70B),别自己乱创尺寸,方便对比效果。
  2. 推理资源

    • 33B 模型刚好能塞进一张 80G 卡,72B 需要两张卡,稍微加长序列就 OOM。
    • 如果你训了个 40B 模型,效果跟 72B 差不多,但部署成本一样,那还不如直接用 72B。
    • 所以,模型尺寸得根据实际部署环境来定,别出现“一张卡装不下,两张卡浪费”的尴尬。

这也解释了为什么市面上有 65B、70B、72B、75B 等各种“奇怪”尺寸——它们都是为了适配实际部署资源而微调的结果

关于模型 size 的设置建议

当前主流研究普遍认为:优秀的模型结构应具备“均衡”特性。也就是说,像 LLaMA 这类标准架构,在扩展模型规模时,层数(layer_num)与隐藏层维度(hidden_size)应同步增长,而非单独放大某一维度。LLaMA 论文中对此有明确的设计原则。

我的建议是:普通开发者无需在此过度创新,直接参考 LLaMA 的配比即可,减少试错成本,避免踩坑。

模型规模隐藏维度注意力头数层数学习率批大小训练 token 数
6.7B409632323.0e-44M1.0T
13.0B512040403.0e-44M1.0T
32.5B665652601.5e-44M1.4T
65.2B819264801.5e-44M1.4T

不过,具体数值的选择也有讲究:尽量选取能被 2、4、8、64、128 整除的数。这不是出于理论,而是训练框架的底层优化要求

  • layer_num:建议具备较多质因数,便于支持 pipeline 并行。比如 layer_num=30 就无法被 4 整除,导致无法使用 pipeline_size=4,除非手动调整代码,增加开发负担;
  • num_head:最好是 8 的倍数,利于 tensor 并行。tensor_parallel 的上限通常为 8,超过后涉及跨机通信,效率骤降;
  • hidden_size:建议为 128 的倍数,虽然目前无明确原因,但未来框架可能对此有优化;
  • vocab_size:同样建议为 128 的倍数,预留兼容性。

此外,seq_len 的设定也需谨慎。即使业务需要长文本支持,也不建议一上来就用 32K 或 200K 的序列长度,attention 的计算复杂度是平方级的,成本极高。推荐方案是:

初期使用 4K 或 8K 长度,结合 RoPE 的小 base 训练大部分数据,再切换至 32K/64K 长度,使用大 base 微调剩余 10% 数据。NTK 外推已是业界通用做法。


训练框架选择:Megatron vs DeepSpeed

直接给出结论:

  • 从零开始预训练(T 级 token):选 Megatron
  • 继续预训练或微调(B 级 token):可考虑 DeepSpeed

Megatron(NVIDIA 出品)

优点:

  1. 训练效率高:tensor_parallel 与 pipeline_parallel 优化极致,RoPE 已集成 apex 算子,MLP 层也在开发中;
  2. 配置细致:argument.py 中参数丰富,能精细控制每一层是否使用 dropout 等;
  3. 加载速度快:千亿级模型也能在 1 分钟内加载完成,调试体验极佳。

缺点:

  1. 上手门槛高:需理解 torch 分布式通信,基建工作繁重(如格式转换脚本);
  2. 官方代码 bug 多:不预留一周调试时间,基本跑不起来。频繁 pull 最新代码反而容易引入新问题。

DeepSpeed(微软出品)

优点:

  1. 代码简洁:极易上手,model.trainer 封装强大;
  2. 社区活跃:alignment 阶段 90% 开源项目基于 DeepSpeed。

缺点:

  1. 训练效率低:相比 Megatron 有 10%~30% 的性能损耗;
  2. 加载极慢:小模型启动需十几分钟,大模型甚至半小时,调试效率极低;
  3. 可定制性差:封装过度,几乎无法修改核心逻辑;
  4. 隐性 bug 多:不像 Megatron 直接报错,DeepSpeed 的问题往往藏在训练现象中,排查困难。

同事名言:“遇到解释不了的问题,先别怀疑自己,先怀疑 DeepSpeed。”


Megatron-DeepSpeed(微软 & 英伟达联合)

这是两者的官方整合版,兼顾模型并行与内存优化,适合超大规模训练任务

核心优势:

  • 结合 DeepSpeed 的 ZeRO、数据并行、CPU Offload;
  • 融合 Megatron 的 Tensor/Pipeline Parallelism;
  • 支持训练万亿级参数模型(如 BLOOM)。

典型应用场景:

训练千亿参数模型时,可同时启用 Tensor Parallelism(模型分片)、Pipeline Parallelism(流水并行)与 ZeRO(显存优化),实现极致扩展。

三者的关系总结如下:

工具名称核心能力依赖关系说明
DeepSpeedZeRO、数据并行、通用优化可独立使用
Megatron-LMTensor/Pipeline 模型并行通常需配合数据并行框架使用
Megatron-DeepSpeed整合上述两者,提供端到端方案依赖 Megatron 与 DeepSpeed 两者

最后提醒一句:

无论选哪个框架,务必把 attention 实现换成 flash_attention,能显著提升训练速度与显存利用率,别用默认实现。

训练技巧

大模型训练侧必须掌握的工程要点

让 GPU 时间花在刀刃上

训练时把“通信距离”刻进脑子里:同卡 > 同机多卡 > 跨机。
显存够就尽量别拆模型:

  • 先别上 tensor/pipeline/sequence parallel,也别把参数踢到 CPU offload;
  • 能存就别重算,显存↔内存来回倒腾同样烧时间;
  • 真要用并行,优先 data_parallel,它几乎不浪费 FLOPS。
盯紧那条 loss 曲线

pretrain 期间唯一要天天盯的就是 tensorboard 里的 loss。

  1. 必须拆 channel_loss:中文、英文、代码三条线各看各的,方便定位哪路数据掉链子。
  2. 任何 spike——暴涨或暴跌——都先当脏数据报警处理:
    • 乱码会让 loss 飞天,全换行符会让 loss 贴地;
    • 确认脏就回滚到上一个 ckpt,别硬洗。
  3. 数据没问题仍 spike?八成是优化器梯度爆炸,把 adamw 的 β1、β2、weight_decay 按 Llama 报告再调一遍,熬过前期 2~3 区间后基本就稳了。
四步曲跑完 pretrain

代码+数据就位后,按固定脚本走:

  1. warmup:lr 从 0 慢慢爬到峰值;
  2. 主阶段:cos/decay/constant 随你挑,先在小模型上试;
  3. 拉长上下文:把 rope base 加大、seq_len 拉长,让模型见识长文;
  4. anneal:喂高质量、IFT 数据做“考前冲刺”,完了直接拉去 benchmark 报道。

训练一旦点火就放手,卡没炸、loss 没蹦极就不用管;真炸 or 陡降(大概率数据重复)→回退 ckpt 重跑。

评估环节

为什么 pretrain 评估“看起来”最轻松

在整个 LLM 生命周期里,pretrain 阶段的评估是最“单纯”的:不需要测指令跟随、不管安全红线、也不查幻觉,只回答一个问题——“肚子里到底装了多少知识”。

1. 先盯 Loss(PPL)

  • 老办法:拿百科、逻辑、代码各切一小块当 daily probe,每天记录测试 loss。
  • 曲线允许小抖动,但大趋势必须一路向下,最后收敛。只要这些语料没进训练集,测试 loss 就该和训练 loss 同步下降。
  • 注意:PPL 只能“自己跟自己比”。不同 tokenizer 的压缩率天差地别,全字符 tokenizer 天然 loss 更低。无论压缩率如何,通用知识集上的 loss 应压到 2 以下,否则就是训得不够。

2. 再聊 Benchmark——“刷榜原罪”

  • 全程自己训的 checkpoint,benchmark 才勉强可信;一旦接手别人的权重(同事交接、开源下载),默认对方已刷过榜。
  • 有宣发需求的团队必刷,不刷就躺平被碾压。此时 benchmark 考的不是“谁学得多”,而是“谁忘得少”——训得越久,分反而越低。
  • 题型缺陷:主流 benchmark 全是“无 CoT 选择题”。人做题还得草稿纸,模型直接猜 ABCD,能力评估必然失真。
  • 既然题库本身含金量高,就别浪费,改成生成式玩法:
    1. 把“Question + 选项”拆成四段文本,让模型综合后自由回答;
    2. 把正确答案替换成“其他选项全错”,看模型能否依旧揪出它;
    3. 把 ABCD 换成一二三四,打乱符号记忆;
    4. 多选变单选,或者反过来;
    5. 先拿题干当训练语料“洗”一遍,再让模型回答,检验是否死记硬背;
    6. ……玩法随意,核心目标只有一个:让背答案失效——考纲不变,换卷子。
  • 格式不听话就给 few-shot 示例;停不下来就卡 max_new_token 或加 StoppingCriteria(遇到换行就停)。
  • 评估指标只用 ACC,BLEU / ROUGE 太抽象,难做 case 分析。

3. 概率探针——盯“知识漂移”

  • 想监测某项具体知识是否被遗忘,就建一个小探针集,看目标 token 或句子的概率涨跌。
  • 探针得人工逐条打磨,无法批量生成;指标只看趋势,不看绝对值。

比较抽象,我举几个例子:
在这里插入图片描述

一句话总结

pretrain 评估=盯 Loss + 花式折腾 Benchmark + 概率探针看细节;自洽比绝对分更重要,趋势比数值更有说服力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/96821.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/96821.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/96821.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zookeeper:分布式协调服务

一、概念ZooKeeper 是一个分布式的、开源的分布式应用程序协调服务,为分布式应用提供一致性、配置管理、命名服务、分布式同步和组服务等。可以把它想象成一个为分布式系统提供的“文件系统”“通知机制”,但它存储的不是普通的文件,而是少量…

海盗王客户端BMP纹理图片解密

海盗王客户端的纹理贴图bmp文件有些是加密,很多人想解密并修改替换,现在给出解密的python代码: import os import struct import copy from pathlib import Pathclass TexEncode:def __init__(self):self.MAGIC_BYTES bmp.x # 魔法字节标识…

《链式二叉树常用操作全解析》

目录 一.求链式二叉树节点个数 二.求链式二叉树叶子节点个数 三.求链式二叉树第k层节点个数 四.求链式二叉树的深度/高度 五.链式二叉树查找值为x的节点 六.链式二叉树的销毁 七. 测试函数 八. 总结: 前言: 在学习链式二叉树的常用操作之前 我们需要手动创建一个二叉树 在…

YOLO11目标检测运行推理简约GUI界面

YOLO11推理简约GUI界面使用方法:支持pt和onnx格式模型,并且自动检测设备,选择推理设备选择推理图片所在的文件夹 选择推理后的结果保存地址选择所需要的置信度阈值点击开始推理,程序自动运行 并在下方实时显示推理进度非常方便不用每次都改代…

集值优化问题:理论、应用与前沿进展

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术! 1. 📚 集值优化问题概述 集值优化问题主要研究目标函数为…

提示工程架构师分享:如何用提示词升级职业教育的实操案例教学?(万字长文来袭,高能预警!!!)

引言:实操案例教学的“困境”,终于有了破局思路? 晚上10点,汽修专业的王强老师还在电脑前修改《汽车发动机异响故障排查案例》——这已经是他本周第四次调整方案了: 第一次授课时,学生反馈“案例太理想化&a…

「日拱一码」087 机器学习——SPARROW

目录 SPARROW 介绍 核心思想:稀疏掩码训练 与 Lottery Ticket Hypothesis (LTH) 的关系 代码示例 代码关键点解释: 在机器学习领域,"SPARROW" 并不是一个像 Scikit-learn、TensorFlow 或 PyTorch 那样广为人知的通用框架或算法…

18、决策树与集成学习 - 从单一智慧到群体决策

学习目标:理解决策树的构建原理和分裂标准,掌握信息增益、基尼系数等概念,学会决策树的剪枝方法,深入理解集成学习的思想,掌握随机森林和梯度提升的基本原理。 > 从第17章到第18章:从概率模型到规则模型 在第17章中,我们学习了逻辑回归——一个基于概率的线性分类器…

王道计算机组成原理 学习笔记

第一章计算机系统概述1.1计算机的发展历程1.2计算机系统层次结构1.2.11.2.2 计算机硬件的基本组成1.2.2 各个硬件的工作原理1.2.3 计算机软件1.2.4 计算机系统的层次结1.2.5 计算机系统的工作原理1.3计算机的性能指标第二章数据的表示和运算第三章存储系统第四章指令系统第五章…

Oracle 笔记1 表空间及用户

Oracle 笔记1 表空间及用户1 安装Oracle2 创建表空间3 创建表空间用户1. 核心管理用户2. 示例与工具用户3. 系统与服务用户4. 创建表空间用户5. 修改表空间用户特性OracleMySQL开发商Oracle 公司最初由 MySQL AB 开发,后被 Sun 收购,现属 Oracle 公司数据…

MyBatis主键返回机制解析

关于 MyBatis 主键返回的深入解释 核心问题:信息隔离 数据库和应用程序是两个独立的系统: 数据库在服务器上执行 INSERT 操作并生成主键应用程序在另一个进程或甚至另一台机器上运行如果没有明确的机制,应用程序无法自动知道数据库生成了什么…

【Python】Python内置函数大全解析(附源码)

目录专栏导读前言🚀 功能特性1. 全面的函数覆盖2. 多种查询工具3. 完整的测试验证🛠️ 使用方法基本使用交互式查询运行测试📚 支持的内置函数分类数学运算 (13个)类型转换 (8个)序列操作 (8个)迭代器 (6个)输入输出 (3个)对象操作 (31个)&am…

每日算法题推送

题目1:快乐数 我们先来结合实例看一下判断快乐数的整个过程: 结合题目可以知道,如果一个数是快乐数,那么这个数最终就会变成1,如果一个数不是快乐数,那么变化序列最终就会陷入循环。想一下,如果…

Oracle体系结构-数据文件(Data Files)

一、 数据文件的本质与原理 物理存储的基石: 数据文件是 Oracle 数据库在操作系统层面最核心、最基础的物理存储单元。它们是存储在服务器硬盘(或存储阵列)上的操作系统文件(如 .dbf, .ora 扩展名常见,但非强制&#x…

【C++练习】18.C++求两个整数的最小公倍数(LCM)

目录C求两个整数的最小公倍数(LCM)的方法方法一:利用最大公约数(GCD)计算代码实现方法二:逐次增加法代码实现方法三:质因数分解法代码实现方法比较处理大数和特殊情况改进版GCD方法实现 C求两个整数的最小公倍数(LCM)的方法 最小公倍数(LCM)是…

Linux网络:应用层协议http

前言 虽然我们说,应用层协议是我们程序猿自己定的。但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用.HTTP(超文本传输协议)就是其中之一。 我们之前已经学了UDP与TCP套接字的简单使用,以及讲解了进程间的各种关系&a…

ffmpeg推流测试

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、操作步骤1.测试12.测试2总结前言 提示:这里可以添加本文要记录的大概内容: 环境信息: 摄像头:usb摄像头 &a…

Docker的使用及核心命令

文章目录Docker基础概念镜像管理命令镜像查看和搜索镜像下载和删除镜像构建容器生命周期管理创建和启动容器容器控制命令容器清理容器交互和调试进入容器文件操作日志和监控数据管理数据卷(Volume)绑定挂载网络管理网络基础操作端口映射Dockerfile和Dock…

考研408计算机网络第36题真题解析(2021-2023)

(2023.36)在使用 CSMA/CD 协议的环境中,使用截断二进制指数退避算法,来选择重传时机,算法 有如下规定: (1)基本的退避时间为争用期 2τ,假设某网络具体的争用期为 51.2us…

Asio C++ Library是用来做什么的

hriskohlhoff/asio 是由 Chris Kohlhoff 主导维护的开源 C 库,专注于提供高效、跨平台的异步 I/O 支持,广泛应用于网络编程、并发控制和高性能系统开发。 📘 项目概述 项目名称:Asio C Library 下载地址:https://down…