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

OPEN CODER : THE OPEN COOKBOOK FOR TOP -TIER CODE LARGE LANGUAGE MODELS

image-20250213154912968

image-20250213155346220

Abstract

大型语言模型(LLMs)在代码领域已经成为不可或缺的工具,包括代码生成、推理任务和代理系统等多个方面。虽然开放获取的代码LLMs的性能越来越接近专有模型,但适合严格科学研究的优质代码LLMs,特别是那些具有可复现数据处理管道和透明训练协议的模型,仍然很有限。这种稀缺性是由于各种挑战造成的,包括资源限制、伦理考虑以及保持模型先进性的竞争优势。为了填补这一空白,我们推出了Open-Coder,这是一款顶级代码LLM,其性能不仅可与领先模型相媲美,而且还是研究社区的“开放食谱”。与大多数之前的努力不同,我们不仅发布了模型权重和推理代码,还发布了可复现的训练数据、完整的数据处理管道、严格的实验消融结果以及详细的训练协议,以供开放科学研究使用。通过这一全面的发布,我们确定了构建顶级代码LLM的关键要素:(1)针对数据清洗和去重的方法优化启发式规则,(2)回忆与代码相关的文本语料库,以及(3)在退火和监督微调阶段的高质量合成数据。通过提供这种开放程度,我们旨在拓宽对顶级代码LLM所有方面的访问,让OpenCoder既作为一个强大的模型,又作为一个开放的基座,以加速研究进程,并使代码AI的可复现进步成为可能。

Introduction

OpenCoder 的发布旨在解决以下三个关键问题:

  1. 提供研究基准:OpenCoder 为机械可解释性和代码 LLM 数据分布研究提供了一个精心策划且透明的强基准,方便学者们进行深入分析。
  2. 深入探究训练数据:OpenCoder 的发布将推动对更强大的代码 LLM 预训练和指令数据收集流程的深入研究,以提升模型的性能。
  3. 促进开源社区发展:OpenCoder 的开放性将激发开源代码 LLM 社区的发展,促进代码 AI 的可复现进步。

OpenCoder 的主要优势

  • 透明性:OpenCoder 提供了完整的训练数据流程、可复现的数据集、中间检查点和训练协议,确保研究的可重复性和可验证性。
  • 高质量数据:OpenCoder 使用了经过精心清洗和去重的数据,包括 RefineCode 数据集和代码相关的网络数据,保证了模型的性能和泛化能力。
  • 先进的训练方法:OpenCoder 采用了两阶段指令微调策略,并结合了高质量合成数据,使模型在理论和实践编码任务上均表现出色。
  • 开源:OpenCoder 是完全开源的,任何人都可以访问和使用其代码和数据,促进代码 AI 领域的开放合作和创新。

Pretraining Data

OpenCoder 的预训练数据由两部分组成:原始代码数据和代码相关的网络数据

image-20250213155938218

1. 原始代码数据

  • 主要来自 GitHub,截止到 2023 年 11 月。
  • 也包含来自 The Stack v2 的非 GitHub 数据。
  • 经过数据清洗和去重,保留 607 种不同编程语言的文件。

2. 代码相关的网络数据

  • 主要来自 Common Crawl 数据集。
  • 经过人工标注,提取与代码相关的文本数据。
  • 包含来自 FineWeb、Skypile 和 AutoMathText 的数据。

原始代码数据

数据处理流程

  • 预处理:
    • 排除文件大小超过8MB的文件,因为这些文件通常是非文本文件,需要大量计算资源。
    • 根据文件扩展名,只保留与编程语言相关的文件类型。
    • 过滤掉低质量或低容量的文件类型。
  • 去重:
    • 精确去重: 使用SHA256哈希值来识别和删除完全相同的代码文件。
    • 模糊去重: 使用MinHash和LSH算法来识别和删除高度相似的代码文件。
  • 转换:
    • 版权信息移除: 删除代码文件开头的版权信息,例如 “Copyright Intel Corporation © 2014-2016”。
    • 个人身份信息 (PII) 减少: 使用正则表达式识别和替换PII信息,例如密码、电子邮件地址等。
  • 过滤:
    • 基于代码特性,设计启发式规则来过滤低质量代码,例如:
      • 过滤掉自我包含性差的代码文件。
      • 过滤掉逻辑结构差或缺失的代码文件。
      • 移除与标准格式差异较大的代码文件。
    • 针对不同编程语言,设计了更具体的过滤规则,例如:
      • Python: 过滤掉函数数量过多且函数体过短的文件。
      • C/C++: 过滤掉无法解析为AST的文件。
      • JavaScript: 过滤掉导入语句比例过高的文件。
  • 数据采样: 对部分语言数据进行下采样,以平衡数据集规模。主要是Java与HTML,最终得到730B tokens预训练数据。

使用PCA to visualize the embeddings extracted from Code-BERT (Feng et al., 2020) for The Stack V2 and RefineCode, and observe a clear distinction between these datasets. The Stack V2数据表现出更多的异常值,而RefineCode的嵌入向量则看起来更为紧密地聚集在一起。此外,在分析异常值数据后,我们观察到异常值通常表现出许多低质量模式,例如纯文本注释、仅包含十六进制的数据以及缺乏计算逻辑的过短代码,这些模式可能会扭曲预训练数据集的分布,最终阻碍预训练的效率。

image-20250213155847808

代码相关的网络数据

这部分数据主要来自 Common Crawl 数据集,并经过人工标注和筛选,以提高数据质量。

1. 数据来源

  • 主要来自 Common Crawl 数据集,这是一项大规模的网页抓取项目,包含海量网页数据。
  • 也包含来自 FineWeb、Skypile 和 AutoMathText 的数据,这些数据集是专门收集与代码和数学相关的文本数据。

2. 数据处理流程

  • 人工标注
  • 为了从 Common Crawl 中提取高质量的代码相关数据,作者首先标注了 50 万个高质量的代码样本文本,作为训练 fasttext 模型的种子数据。
  • 这些数据经过训练后,被用于识别和召回 Common Crawl 中的代码相关文本。
  • 领域发现
  • 通过统计分析召回数据的域名 URL,将具有相同基础 URL 的网页视为同一域名,并定义包含超过 10% 代码相关网页的域名为代码相关域名。
  • 作者还手动标注了 Common Crawl 中与代码和数学相关的域名,例如 Stack Overflow、GitHub 等。
  • URL 标注
  • 对代码相关域名中的 URL 进行人工标注,确定哪些 URL 与代码内容相关。
  • 例如,作者将 Stack Overflow 上的所有内容都标注为计算机技术问题,并将与这些 URL 匹配的样本纳入代码种子语料库。
  • 迭代优化
  • 通过迭代的方式,不断优化种子语料库的质量和多样性,最终获得约 220GB 的代码相关网络数据。

最终,得到了一个高质量的代码预训练数据集 RefineCode,包含大约 9600 亿个token。数据源的组成如表 2 所示,而不同程序语言的分布则展示在图 4 中。有关不同程序语言数据组成的更多细节,请参考附录 F。为了证明 RefineCode 的有效性,我们使用 RefineCode 的数据和 The Stack v2 的训练子集分别训练了一个 15 B 和 600 B的代码大语言模型。图 1 的结果表明,与 The Stack v2 相比,RefineCode 显著提高了训练效率,突显了我们数据集的优越性。

image-20250213160439215

image-20250213160752950

Annealing Data

OpenCoder 的训练过程分为三个阶段:通用预训练阶段、退火阶段和指令微调阶段。在本节中,我们将重点介绍退火阶段的数据,包括数据来源、处理方法和优势。

1. 数据来源

  • 原始数据分布 (Original Distribution Data): 为了保证退火阶段的数据分布与预训练阶段相似,确保模型知识的连贯性,84% 的退火数据来自 RefineCode 的原始数据分布。
  • 算法语料库 (Algorithmic Corpus): 为了提升模型的自包含性,并使其更适应实际场景中常见的独立任务,我们从原始预训练数据中采样包含关键词“LeetCode”、“def solution”或“class solution”的数据,构建算法语料库。
  • 合成数据 (Synthetic Data): 为了进一步提升模型的能力,OpenCoder 在退火阶段引入了高质量的合成数据,包括:
    • 高质量代码片段 (High Quality Code Snippet): 受益于 CodeExercises 数据集的启发,我们使用算法语料库作为种子数据,利用强大的 LLM 生成一系列独立函数及其对应的测试用例。只有通过测试用例的样本才被保留在退火阶段的数据集中。
    • 代码教材 (Code Textbooks): 为了使模型能够从多个角度理解代码,我们基于 hqcode 数据集构建了教育性文本片段。LLM 对数据集中的代码进行分析,提取并阐述抽象代码知识,从而帮助模型从不同角度学习代码。

2. 数据处理方法

  • 数据混合 (Data Mixture): 退火阶段的数据混合策略旨在平衡不同类型数据的影响,确保模型在不同方面的能力都能得到提升。具体而言,原始数据分布占据主导地位,算法语料库和合成数据作为补充,共同提升模型的表现。
  • 数据清洗 (Data Cleaning): 与预训练阶段类似,退火阶段的数据也进行了严格的清洗,包括去除版权信息、个人身份信息等,以确保数据的质量和安全性。[25-26]

image-20250213161802620

Pretraining

模型架构
  • 模型规模:OpenCoder提供了两个不同规模的模型,分别是1.5B参数和8B参数,与Llama-3.1-8B架构类似。
    • 1.5B模型:包含24层,隐藏层维度为2240,注意力头数为14,键/值头数为14,支持上下文窗口大小为4096。
    • 8B模型:包含32层,隐藏层维度为4096,注意力头数为32,键/值头数为8,支持上下文窗口大小为8192。
  • 激活函数:两个模型均使用SwiGLU激活函数。
  • 词汇表大小:96640,使用了特定的分词器。
训练数据
  • 数据来源:训练数据包括中文、英文以及607种编程语言,具体编程语言列表见附录E。
  • 数据量
    • 1.5B模型:在2万亿个token上进行了4个epoch的训练,随后在额外的1000亿个token上进行了退火训练。
    • 8B模型:在2.5万亿个token上进行了3.5个epoch的训练,随后在额外的1000亿个token上进行了衰减阶段的训练。
训练过程
  • 学习率调度
    • 两个模型均使用WSD(Warm-up and Step Decay)学习率调度策略。
    • 1.5B模型:在80亿个token上进行2000步的warm-up,峰值学习率为3e-4,warm-up后保持不变,随后在退火阶段指数衰减至1e-5。
    • 8B模型:在80亿个token上进行2000步的warm-up,峰值学习率与1.5B模型相同。
  • 批大小
    • 1.5B模型:微批大小为4,全局批大小为1024。
    • 8B模型:微批大小为1,TP(Tensor Parallelism)为2,序列长度为8192,全局批大小为1024。
  • 训练框架:使用Megatron-LM,支持分布式优化和DDP(Distributed Data Parallel)梯度重叠。
  • 训练硬件
    • 1.5B模型:在256个H800 GPU的集群上训练,总耗时109.5小时,相当于28034 GPU小时。
    • 8B模型:在512个H100 GPU的集群上训练,总耗时187.5小时,相当于96000 GPU小时。

Post Training

数据来源

指令微调阶段的数据来源多样,包括开源的指令数据集、教育性指令合成数据、与包(Package)相关的指令合成数据,以及大规模多样指令合成数据。这些数据集的组合旨在提供丰富的任务类型和高质量的训练样本,以提升模型在不同场景下的表现。

image-20250213164200875

具体数据集
  1. 开源指令数据集(Open-source Training Data)
    • Evol-Instruct:一个开源的指令数据集,包含多种编程语言的任务指令。
    • Infinity-Instruct:一个大规模的指令数据集,通过语言采样生成多语言的代码片段。
    • McEval:一个用于多语言代码评估的指令数据集。
    • WildChat:包含真实用户查询的对话历史数据,通过语言模型提取与代码相关的对话内容。
    • Code-290k-ShareGPT:一个包含290k代码片段的ShareGPT数据集,用于生成代码相关的对话历史。
  2. 教育性指令合成数据(Educational Instruction Synthesis)
    • 通过高质量的代码片段生成教育性的编程任务和解决方案。这些数据旨在提升模型对编程任务的理解和解决能力。
    • 使用高分值的代码片段作为种子数据,生成包含任务描述、分析、解决方案和测试代码的完整指令。
  3. 与包相关的指令合成数据(Package-related Instruction Synthesis)
    • 针对特定编程语言的包(如Python的NumPy、pandas等)生成与包使用相关的指令数据。
    • 通过分析常用库的API签名和使用示例,生成高质量的编程问题和解决方案,帮助模型更好地理解和使用这些库。
  4. 大规模多样指令合成数据(Large-scale Diverse Instruction Synthesis)
    • 通过大规模的文本数据生成多样化的编程任务,涵盖不同的编程语言和任务类型。
    • 使用语言模型从网页中提取相关句子作为种子数据,生成多样化的编程任务和解决方案。
两阶段指令微调的动机

在开发代码语言模型时,特别是在计算机科学和软件开发领域,模型需要在理论知识实际编程任务两方面都表现出色。理论知识包括算法、数据结构、网络原理等,而实际编程任务则涉及代码生成、代码补全和代码调试等。为了实现这一目标,作者提出了两阶段指令微调策略:

  1. 第一阶段:专注于理论知识,通过合成与理论计算机科学相关的问答对(QA pairs),使模型能够更准确地回答关于算法、数据结构等理论问题。
  2. 第二阶段:专注于实际编程任务,通过使用高质量的代码数据,提升模型生成和处理代码的能力。

image-20250213164700665

第一阶段:理论知识微调
  • 数据来源
    • RealUser-Instruct:包含真实用户查询的指令数据,通过语言模型提取与代码相关的对话历史。
    • Large-scale Diverse-Instruct:通过大规模文本数据生成多样化的编程任务,涵盖不同的编程语言和任务类型。
    • Filtered Infinity-Instruct:从Infinity-Instruct数据集中提取与代码相关的高质量指令数据。
  • 训练细节
    • 训练1个epoch,批大小为4096。
    • 学习率(LR)为2e-5,warmup步数为100。
    • 使用余弦学习率调度器(cosine learning rate scheduler)。
第二阶段:实际编程任务微调
  • 数据来源
    • McEval-Instruct:用于多语言代码评估的指令数据集。
    • Evol-Instruct:开源的指令数据集,包含多种编程语言的任务指令。
    • Educational-Instruct:教育性指令合成数据,通过高质量的代码片段生成教育性的编程任务和解决方案。
    • Package-Instruct:与包相关的指令合成数据,生成与特定编程语言的包使用相关的指令数据。
  • 训练细节
    • 训练3个epoch,批大小为512。
    • 学习率为5e-5,warmup步数为100。
    • 使用余弦学习率调度器。

Experimental Results

5.1 Evaluation on Base Models(基础模型评估)
  • 评估目标:评估OpenCoder基础模型(未经过指令微调)在代码补全任务上的表现。
  • 评估基准
    • HumanEval:一个Python代码补全基准,包含164个编程任务。
    • MBPP:一个包含1000个编程任务的基准,用于评估模型的代码生成能力。
    • BigCodeBench:一个综合性的代码生成基准,涵盖多种编程语言和任务类型。
  • 评估结果
    • OpenCoder在这些基准测试中表现优异,尤其是在HumanEval和MBPP上,其性能超过了大多数开源模型,接近甚至超过了某些闭源模型。
    • 例如,OpenCoder-8B基础模型在HumanEval上的Pass@1指标达到了66.5%,在MBPP上达到了63.4%,在BigCodeBench上的表现也非常出色。
5.2 Evaluation on Instruct Models(指令微调模型评估)
  • 评估目标:评估经过两阶段指令微调后的OpenCoder模型在实际编程任务中的表现。
  • 评估基准
    • LiveCodeBench:一个用于评估复杂算法任务的基准,包含来自LeetCode、AtCoder和CodeForces的题目。
    • MultiPL-E:一个扩展到多种编程语言的HumanEval基准,用于评估模型在不同语言上的代码生成能力。
    • McEval:一个用于多语言代码评估的基准。
    • MdEval:一个用于多语言代码调试的基准。
  • 评估结果
    • OpenCoder在这些基准测试中表现出色,尤其是在LiveCodeBench和MultiPL-E上,其性能显著优于其他开源模型。
    • 例如,OpenCoder-8B指令微调模型在LiveCodeBench上的平均通过率达到了23.2%,在MultiPL-E上的平均通过率达到了71.0%。

Analysis

6.1 Analysis of the Deduplication Level(去重水平分析)
  • 实验设计:比较了文件级去重和仓库级去重对模型性能的影响。
  • 实验结果
    • 文件级去重保留的数据量较少,但训练效率更高,模型在下游任务上的表现更好。
    • 仓库级去重虽然保留了更多的数据,但模型性能较差,且训练效率较低。
  • 结论:文件级去重是处理大规模代码数据集的高效方法。
6.2 Analysis on the Importance of High-quality Data in the Annealing Phase(退火阶段高质量数据的重要性)
  • 实验设计:比较了使用高质量退火数据和不使用高质量退火数据的模型性能。
  • 实验结果
    • 使用高质量退火数据的模型在下游任务上的表现显著优于不使用高质量数据的模型。
  • 结论:退火阶段的高质量数据对模型性能至关重要。
6.3 Analysis on the Effect of GitHub Stars(GitHub星数的影响)
  • 实验设计:比较了使用基于GitHub星数过滤的数据和原始数据的模型性能。
  • 实验结果
    • 使用基于星数过滤的数据的模型在训练损失上较低,但下游任务性能较差。
    • 原始数据虽然包含更多低质量代码,但模型性能更好。
  • 结论:基于星数过滤数据可能会降低数据多样性,不利于模型性能提升。
6.4 Analysis on the Two-Stage Instruction Tuning Strategy(两阶段指令微调策略分析)
  • 实验设计:比较了单阶段微调和两阶段微调的模型性能。
  • 实验结果
    • 两阶段微调策略在理论知识和实际编程任务中都能显著提升模型性能。
    • 例如,在Evalplus和CodeArena基准测试中,两阶段微调的模型表现优于单阶段微调的模型。
  • 结论:两阶段微调策略能够使模型在理论知识和实际编程任务中达到更好的平衡。

相关文章:

OPEN CODER : THE OPEN COOKBOOK FOR TOP -TIER CODE LARGE LANGUAGE MODELS

Abstract 大型语言模型(LLMs)在代码领域已经成为不可或缺的工具,包括代码生成、推理任务和代理系统等多个方面。虽然开放获取的代码LLMs的性能越来越接近专有模型,但适合严格科学研究的优质代码LLMs,特别是那些具有可…...

C语言中printf()函数,格式输出符

在 C 语言中,printf() 函数的格式输出符(格式说明符)用于控制输出的格式和数据类型。以下是常见的格式说明符及其用法: 基本格式符 打印各种类型的值 格式输出符数据类型说明%dint输出有符号十进制整数%uunsigned int输出无符号…...

EasyRTC嵌入式WebRTC视频通话SDK支持Web浏览器、Linux、ARM、Android、iOS

随着互联网技术的飞速发展,实时通信(RTC)已经成为现代应用中不可或缺的一部分。无论是视频会议、在线教育、远程医疗,还是社交娱乐,实时通信技术都在其中扮演着重要角色。 然而,WebRTC技术在PC和移动端的支…...

【JS球球大作战项目实战】+在线体验

个人名片: 🐼作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️个人主页🥇:落798. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️…...

PHP高效、轻量级表格数据处理库 OpenSpout ,很好用

OpenSpout 是一个高效、轻量级的 PHP 库,用于处理电子表格文件(如 Excel 和 CSV)。它支持读取和写入大型文件,且内存占用低。本文将详细介绍如何安装和使用 OpenSpout。 目录 安装 基本使用 高级功能 参考文档 安装 OpenSp…...

数据库第三次作业

第一题: 学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:S…...

Mac 下使用多版本 Node

一、导读 使用 n 实现 Mac 下 Nodejs 的多版本切换,需要先安装一个版本的 Node.js,然后使用 npm 安装 n,再通过 n 管理 node 的多版本切换。 二、使用 npm 全局安装 n sudo npm install -g n 三、根据需求安装指定版本的 node sudo -E n…...

【油猴脚本/Tampermonkey】DeepSeek 服务器繁忙无限重试(20250214优化)

目录 一、 引言 二、 逻辑 三、 源代码 四、 添加新脚本 五、 使用 六、 BUG 七、 优化日志 1.获取最后消息内容报错 2.对话框切换无法正常使用 一、 引言 deepseek演都不演了,每次第一次提问就正常,后面就开始繁忙了,有一点阴招全…...

安全测试|SSRF请求伪造

前言 SSRF漏洞是一种在未能获取服务器权限时,利用服务器漏洞,由攻击者构造请求,服务器端发起请求的安全漏洞,攻击者可以利用该漏洞诱使服务器端应用程序向攻击者选择的任意域发出HTTP请求。 很多Web应用都提供了从其他的服务器上…...

Redisson介绍和入门使用

一、什么是Redisson? Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务,其中就包含了各种分布式锁的实现。 官网地址…...

TUSB422 MCU 软件用户指南

文章目录 TUSB422 MCU 软件用户指南 目录表格图表1. 介绍2. 配置2.1 通用配置2.2 USB-PD 3.0 支持2.3 VDM 支持 3. 代码 ROM/RAM 大小优化4. 通过 UART 调试4. 移植到其他微控制器 TUSB422 MCU 软件用户指南 摘要 本文档是 TUSB422 微控制器基于 Type-C 端口控制(…...

归并排序 和 七大算法的总结图

目录 什么是递归排序: 图解: 递归方法: 代码实现: 思路分析: 非递归方法: 思路: 代码实现: 思路分析: 什么是递归排序: 先将数据分解成诺干个序列&#xff0…...

MySQL调用存储过程和存储函数

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…...

类与对象(OOP)

类(Class) 类是对象的模板或蓝图,用来描述对象的属性和行为。 动态与静态是同一张图像,最终效果也是相同 类的组成分别由: 属性(成员变量):描述对象的状态。 方法(成员方法):描述对象的行为。 构造函数:用于创建对象…...

接入 SSL 认证配置:满足等保最佳实践

前言 随着信息安全形势的日益严峻,等保(信息安全等级保护)要求成为各行业信息系统必须遵守的标准。在数据库领域,OpenGauss作为一款高性能、安全、可靠的开源关系型数据库,也需要满足等保要求,确保数据的安…...

PyTorch Lightning多GPU分布式日志介绍

分布式日志是指在分布式系统中,多个节点(如多台机器或多个 GPU)协同工作时,对系统运行状态、错误信息、性能指标等进行记录的过程。在 多 GPU/分布式训练 环境下,多个进程会同时运行,普通的 print() 或 logging 可能会在所有 GPU 上重复输出,导致日志混乱。PyTorch Ligh…...

LCR 160. 数据流中的中位数

文章目录 1.题目[LCR 160. 数据流中的中位数](https://leetcode.cn/problems/shu-ju-liu-zhong-de-zhong-wei-shu-lcof/solutions/477593/zi-jie-ti-ku-jian-41-kun-nan-shu-ju-liu-zhong-de-z/)2.思路3.代码 1.题目 LCR 160. 数据流中的中位数 **中位数 **是有序整数列表中的…...

post、get、delete、put请求

一、配置axios拦截器 // src/utils/request.js import axios from axios;// 创建 axios 实例 const instance axios.create({baseURL: https://api.example.com, // 你的 API 基础 URL//timeout: 10000, // 请求超时时间 });// 请求拦截器 instance.interceptors.request.use…...

css: 针对属性left/right/top/bottom为啥设置transition动画不起作用

如题: 在css的position中 left/right/top/bottom 这类位置属性值如果考虑使用transition来添加动画,transition它会优先考虑left/top属性,而此时transition触发需要的是数值型属性,如果设置为auto则系统会默认不考虑将位置属性添加…...

计算机网络(1)基础篇

目录 1.TCP/IP 网络模型 2.键入网址--->网页显示 2.1 生成HTTP数据包 2.2 DNS服务器进行域名与IP转换 2.3 建立TCP连接 2.4 生成IP头部和MAC头部 2.5 网卡、交换机、路由器 3 Linux系统收发网络包 1.TCP/IP 网络模型 首先,为什么要有 TCP/IP 网络模型&a…...

机器学习所需要的数学知识【01】

总览 导数 行列式 偏导数 概理论 凸优化-梯度下降 kkt条件...

ArcGISPro AA表O_Name字段 内容 复制到BB表BB字段里

import arcpy# 设置工作空间和要处理的表路径 resource_shape_table r"AA表.shp" # 源表路径 resource_assets_table r"BB表.shp" # 目标表路径# 使用 SearchCursor 读取源表中的 O_Name 字段 with arcpy.da.SearchCursor(resource_shape_table, [O_Na…...

2023-arXiv-CoT Prompt 思维链提示提升大型语言模型的推理能力

arXiv | https://arxiv.org/abs/2201.11903 摘要: 我们探讨了如何生成思维链(一系列中间推理步骤)显著提高大型语言模型执行复杂推理的能力。在三个大型语言模型上的实验表明,思维链提示提高了一系列算术、常识和符号推理任务的性…...

机器学习数学基础:21.特征值与特征向量

一、引言 在现代科学与工程的众多领域中,线性代数扮演着举足轻重的角色。其中,特征值、特征向量以及相似对角化的概念和方法,不仅是线性代数理论体系的核心部分,更是解决实际问题的有力工具。无论是在物理学中描述系统的振动模式…...

逻辑分析仪的使用-以STM32C8T6控制SG90舵机为例

STM32C8T6控制SG90舵机 1.逻辑分析仪作用 逻辑分析仪在嵌入式开发中的作用非常重要,它是开发、调试和排错过程中的一个不可或缺的工具。具体来说,逻辑分析仪的作用包括以下几个方面: 1.信号捕获和分析: 逻辑分析仪能够实时捕获多个…...

QCustomplot库运用

最近需要用到这个库显示数据,需要在一个曲线图4个Y轴共用一个X轴,并且做游标,跟随鼠标移动,并且实时反馈数据到表格中。记录一下程序。 customPlot new QCustomPlot(this); customPlot->setBackground(QBrush(QColor(204,204,…...

数据中心网络监控

数据中心是全球协作的特定设备网络,用来在internet网络基础设施上传递、加速、展示、计算、存储数据信息。 对于任何利用IT基础设施的企业来说,数据中心都是运营的核心,它本质上为整个业务网络托管业务应用程序和存储空间。数据中心可以是任…...

定义+类比

定义:间接量表是备选问题或者是备选语句或者是语句中选择合适的语句表达其态度,最后选择是一个合适的语句 A给具体的表打分,是直接上数字,而不是选择合适的语句表达其态度 B给排序,也是通过数字来表达其态度,也不是选择…...

深度学习框架探秘|PyTorch:AI 开发的灵动画笔

前一篇文章我们学习了深度学习框架——TensorFlow(深度学习框架探秘|TensorFlow:AI 世界的万能钥匙)。在人工智能领域,还有一个深度学习框架——PyTorch,以其独特的魅力吸引着众多开发者和研究者。它就像一…...

NAT模式 vs DR模式:LVS 负载均衡技术的优劣与适用场景

1. NAT 模式(Network Address Translation) 工作原理 请求路径:客户端请求发送到虚拟 IP(VIP),负载均衡器(Director)通过 DNAT(目标地址转换)将请求转发到真…...

八大排序——归并排序

目录 1.基本思想 2.动态图 3.分解的时候我们可以使用递归的方式进行 代码解释 1. main 方法 2. mergeSort 方法 3. merge 方法 示例运行过程 初始数组 每轮排序后的数组 代码总结 合并两个有序序列 1.基本思想 归并排序就是递归得将原始数组递归对半分隔&#xff0c…...

YOLO算法模型检测利用手机IP摄像头

1.yolo算法训练模型 yolov5训练网络数据集_yolo数据集 csdn-CSDN博客 2.模型检测 检测文件参数:yolov5的detect.py中基础参数分析-CSDN博客 3.进行IP摄像头检测 3.1下载IP摄像头 3.2打开与使用IP摄像头(确保手机与电脑在同一WiFi(局域网…...

前端职业规划

前端开发的职业规划可以根据个人兴趣、技术深度和职业目标来制定。以下是一个典型的前端开发者职业发展路径,涵盖了从初级到高级的不同阶段,以及未来的发展方向: 1. 初级阶段(0-2 年) 目标:掌握基础技能&a…...

百度舆情优化:百度下拉框中的负面如何清除?

百度的下拉词、相关搜索、大家还在搜有负面词条,一直是企业公关经理头疼的问题,小马识途营销顾问深耕网络营销领域十几年,对百度SEO优化、百度下拉框、百度相关搜索、自媒体营销、短视频营销等等技巧方面积累了一定的方法和技巧。 对于百度下…...

Java中如何高效地合并多个对象的List数据:方法与案例解析!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互…...

【Vue】打包vue3+vite项目发布到github page的完整过程

文章目录 第一步:打包第二步:github仓库设置第三步:安装插件gh-pages第四步:两个配置第五步:上传github其他问题1. 路由2.待补充 参考文章: 环境: vue3vite windows11(使用终端即可&…...

编译和链接【四】链接详解

文章目录 编译和链接【四】链接详解前言系列文章入口符号表和重定位表链接过程分段组装符号决议重定位 编译和链接【四】链接详解 前言 在我大一的时候, 我使用VC6.0对C语言程序进行编译链接和运行 , 然后我接触了VS, Qt creator等众多IDE&…...

C语言进阶——4自定义类型(2)— 位段/枚举/联合体

目录 2. 位段2.1 什么是位段2.2 位段的内存分配2.3 位段的跨平台问题2.4 位段的应用 3. 枚举3.1 枚举类型的定义3.2 枚举的优点3.3 枚举的使用 4. 联合(共用体)4.1 联合类型的定义4.2 联合的特点4.3 联合大小的计算 2. 位段 2.1 什么是位段 位段的声明…...

企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略

一、前言 在企业生产环境,k8s高可用是一个必不可少的特性,其中最通用的场景就是如何在 k8s 集群宕机一个节点的情况下保障服务依旧可用。部署高可用k8s集群对于企业级云平台来说是一个根本性的原则,容错、服务可用和数据安全是高可用基础设施的关键。本文是在青云上利用青云…...

250213-异常exception

1. 概念 异常的抛出(throw):若在方法运行中出现错误,则方法会生成代表该异常的一个对象,并把它交给运行时系统,这个过程叫做抛出。 异常的捕获(catch):运行时系统接收到…...

MySQL - 索引 - 介绍

索引(Index)是帮助数据库高效获取数据的数据结构. 结构 语法 创建索引 creat [unique] index 索引名 on 表名 (字段名, ...); //创建唯一索引时加上unique, 多个字段用逗号隔开 查看索引 show index from 表名; 删除索引 drop index 索引名 on 表名;...

每日一题——90. 子集 II

题目链接&#xff1a;90. 子集 II - 力扣&#xff08;LeetCode&#xff09; 代码&#xff1a; class Solution { private:vector<vector<int>> result;vector<int> path;void traversal(vector<int>& nums,int startindex,vector<bool> …...

Mysql进阶篇(mysqlcheck - 表维护程序)

mysqlcheck的作用 mysqlcheck客户端用于执行表维护&#xff0c;可以对表进行&#xff1a;分析、检查、优化或修复操作。 &#xff08;1&#xff09;分析的作用是查看表的关键字分布&#xff0c;能够让 sql 生成正确的执行计划&#xff08;支持 InnoDB&#xff0c;MyISAM&#x…...

ChartDB:一个基于Web的可视化数据库设计工具

这次给大家介绍一个可视化的数据库设计工具&#xff1a;ChartDB。 ChartDB 是一个免费开源的数据库可视化设计工具&#xff0c;支持的数据库包括 MySQL、MariaDB、PostgreSQL、Microsoft SQL Server、SQLite、ClickHouse 等。 对于已有的数据库&#xff0c;ChartDB 提供了一键…...

Java NIO基础与实战:如何提升IO操作性能

Java NIO 概述 Java NIO&#xff08;新 I/O&#xff09;是 Java 提供的一个更为高效的 I/O 处理框架。Java NIO&#xff08;New I/O&#xff09;是对传统 I/O&#xff08;java.io&#xff09;模型的改进&#xff0c;它引入了非阻塞 I/O 操作和面向缓冲区的数据读写方式&#x…...

Elasticsearch:同义词在 RAG 中重要吗?

作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索&#xff0c;以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为&#xff0c;由于…...

Python - Python正则表达式

正则表达式&#xff08;Regular Expression&#xff09;&#xff0c;又称规则表达式。正则表达式&#xff08;Regular Expression&#xff09;是一组由字母和符号组成的特殊文本&#xff0c;用于从文本中找出满足特定格式的句子。正则表达式通常被用来检索、替换那些符合某个模…...

DeepSeek 指导手册(入门到精通)

第⼀章&#xff1a;准备篇&#xff08;三分钟上手&#xff09;1.1 三分钟创建你的 AI 伙伴1.2 认识你的 AI 控制台 第二章&#xff1a;基础对话篇&#xff08;像交朋友⼀样学交流&#xff09;2.1 有效提问的五个黄金法则2.2 新手必学魔法指令 第三章&#xff1a;效率飞跃篇&…...

Android adb测试常用命令大全

目录 一、查看最上层成activity名字: 二、查看Activity的任务栈&#xff1a; 三、获取安装包信息 四、性能相关 1、显示CPU信息 : 2、查看CPU使用信息 3、内存信息&#xff08;meminfo package_name or pid 使用程序的包名或者进程id显示内存信息&#xff09; 4、电量信…...

【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)

近年来&#xff0c;人工智能领域的飞速发展极大地改变了各个行业的面貌。当前最新的技术动态&#xff0c;如大型语言模型和深度学习技术的发展&#xff0c;展示了深度学习和机器学习技术的强大潜力&#xff0c;成为推动创新和提升竞争力的关键。特别是PyTorch&#xff0c;凭借其…...