整数有约 | 刘乾专访:继续预训练策略与数据优化之道

article/2025/7/12 14:40:14

人工智能多语言处理近年来得到了极大的关注,尤其是在以东南亚为代表的小语种环境中,其特殊的语言多样性和语料库稀缺性使得研究挑战和机遇并存。在现有的自然语言处理模型中,英语和中文因为有海量高质量数据的支持,常被作为核心语言开展预训练。然而,对于东南亚诸多小语种,由于语料的数字化程度较低,且缺乏行业相关的专业术语支持,模型的表现仍有显著提升空间。

   

2024年12月2日,来自新加坡的研究员刘乾老师所在团队联合社区开源了新一代面向东南亚语言的大模型 Sailor 2。Sailor 2 是一个系列的、面向东南亚地区的小语种大语言模型项目,其中最大的模型有 20B 参数,在 Qwen 2.5 模型基础上经过了大约 500B 词汇的继续预训练。该模型克服了以往小语种大模型训练过程中的一些关键问题,用相对更低的成本在东南亚地区的小语种上取得了很好的性能。

    

本期整数有约我们邀请到了刘乾老师与我们分享代码大模型、多语种语言模型等研究工作中的宝贵经验。随着大语言模型(LLM)的快速发展,这些模型在数学、代码、通识等多个领域展现出卓越的能力。然而,与此同时,训练这些模型所需的计算资源也不断增加。为了降低模型训练的成本,越来越多的研究者开始利用继续训练来强化模型在某些特定领域上的能力。

   

具体而言,领域大语言模型(Domain-Specific LLM)是在通用大语言模型的基础上,经过特定领域的数据(例如代码、数学、医学等)进行继续训练而得到的。这种模型在特定领域的能力上得到了显著提升。目前,构建继续训练数据的主要策略是将领域特定数据与通用数据进行混合训练。其中,通用数据部分确保了大语言模型在通用能力上的稳定性,缓解了灾难性遗忘(Catastrophic Forgetting)。

    

在此背景下,继续预训练的理念也可以有效应用于小语种模型的开发中,尤其是以英语为中心的模型向东南亚小语种环境的迁移。通过在小语种特定数据上进行继续训练,可以增强模型处理这些语言的能力,而混合使用通用数据则确保了模型在广泛应用中的稳定表现。这种方法在有限的资源下实现小语种语言模型能力的提升,同时最大限度地平衡多语言模型之间的竞争关系。在研究过程中,刘老师及其团队遇到了语料数据不足、高质量数据筛选难度大、模型优化与计算资源受限等一系列现实问题。他们通过探索数据混合与配比的策略,优化了预训练的效率和效果,并总结出重要经验。这些探索不仅对学术界产生了重要启发,也对相关实践提供了宝贵的参考。

     

在接下来的章节中,我们将详细讨论各类推理问题的特点、构建方法和评估标准,并通过具体案例展示如何设计和优化推理能力训练流程。这些研究不仅有助于理解大模型的能力边界,也为未来的模型优化和应用拓展提供了重要参考。

嘉宾介绍

   

图片

刘乾,研究员,现任职于新加坡TikTok。此前,刘乾在 Sea AI Lab 担任研究科学家。刘乾的研究领域涵盖了代码生成、数据为中心的深度学习和自然语言推理等多个方向。

注:本篇访谈仅代表刘乾老师个人意见,与其所在公司无关。

1. 代码生成

      

代码生成是刘乾老师目前工作的主要领域,刘乾老师就代码生成进行了展开与分享。

     

“我认为代码的每一个函数就是某种规划解耦、一步步实现的数据。”

   

刘乾老师首先提到了他对代码数据的一些理解,他认为代码函数从规划推理的角度来看,会有一个更有意思的视角:函数名是一直极简的规划摘要(比如快速排序),而代码的实现过程则是这个规划一步步实现的过程,因此他一直相信代码数据对思维链能力等会有增益。刘乾老师同时提到了代码在不同编程语言之间的泛化,也有一些前人研究显示,某些编程语言的比例会对其它编程语言的效果有较大影响。刘乾老师团队通过对预训练数据混合配比的自动化研究,发现语言之间的相互关系能为模型性能提供不同程度的支持。刘乾老师提到,已有的研究表明,不同语言之间互相有比较复杂的交互关系,目前绝大部分模型的数据配比是通过人工先验来制定的,这可能会对模型的整体效果有比较大影响。

    

关于代码生成的泛化,刘乾老师提到,代码对自然语言推理能力(尤其是数学推理)的增强非常显著,他认为在大模型中,代码的复杂逻辑和行间注释能有效提高逻辑推理能力。目前也有一些研究关注代码与自然语言混合数据的比例,以提升综合性能。在解决复杂数学问题时,模型也可以通过代码生成和执行反馈来提供更准确的解。 

     

“我个人对预训练的一个预测是我们以后会更多依赖自动化的方法做数据选择,避免人为地挑选数据样本,这样可以让整个预训练的管线变得更科学。”

    

关于代码生成模型的训练数据,代码生成、代码翻译和自然语言生成代码任务的区别,刘乾提到这些任务的表现差异通常是由于数据分布选择上的差异,尤其在预训练数据的分布。很多研究发现代码的行间注释对代码生成性能有重大影响。对于未来的研究方向,自动化的数据选择将能避免人为先验挑选数据所带来的偏差,使预训练变得更科学。

     

就代码生成的训练数据来源,刘乾老师认为目前业界暂时没有面临数据短缺的情况,当前代码数据的增长速度还是相当快的,特别是在GitHub上。除了GitHub数据,还可以利用一些非营利组织工具,如Software Heritage,该平台上包含了比Github更丰富的数据,这一点也被 StarCoder2 的开发过程所证实。

     

训练数据对模型质量有直接影响,这在全开放模型和其他模型的性能表现差异上就有所体现。全开放模型如 StarCoder 在预训练的数据质量上明显不如 DeepSeekCoder 和 QwenCoder。这主要由于社区在不同方向上的规划分歧和资源的限制。闭源模型通常有更高质量的数据,且在数据处理和资源投入上更加聚焦。最近我们也能看到全开放模型如 OpenCoder 正在追上前人代码模型的性能,在2025年我们应该会看到越来越多优秀的开源工作。

     

“Cursor在用户体验的优化上做了非常多努力。”

     

关于 Cursor ,刘乾老师认为 Cursor 是一个非常出色的应用,Cursor 的基座模型可以是多种不同的模型,利用RAG(检索增强生成)来处理也是一个非常值得学习的思路。这个思想在 GitHub Copilot 中也有体现,例如,Copilot 在补全代码时会检索工作目录中的相关信息,从而提高补全的准确性。当输入“打开xx文件”的代码时,只有知道工作目录下确实存在这个文件名,才能正确补全,否则会补出不存在的文件名。在这方面,Cursor 和 Copilot 做了很多精细的优化,尤其是用户体验。在常见的代码补全方面,通常只需要补全一小段代码,但在需要一次性补全很长代码时,用户在回顾审查时会非常疲劳,因为他们不知道代码改动了什么、想要做什么。Coder 为此开发了一个利用 LLAMA-70B 模型的patch生成功能,这使得修改的部分一目了然,从而极大地提升了用户体验。

     

“我觉得大家不应该把太多精力都放在代码生成上,因为函数级别代码生成相对来讲关注的人已经非常多了,我们可以把更多精力放在更难的软件开发任务上。”

     

目前代码生成的有趣应用也非常广泛,如通过程序生成解决自然语言推理问题,从而提高复杂任务的解决效率。另一个有趣的应用是利用代码模型代替人类专家来制定规则,从而完成一些复杂任务。

   

关于当前代码领域模型的主要问题和解决策略,刘乾老师提到在目前代码生成领域中,有一个经典的基准测试叫 HumanEval,这是 OpenAI 在2021年 Codex 论文中提出的。到现在依然有很多人在使用它。最初提出这个基准的目的是为了评估模型生成函数级别代码的性能。时至今日,模型已经能够生成相对复杂的代码了,业界也普遍认为 HumanEval 已经不能代表最先进的模型水平。因此,在代码领域最重要的突破点是新基准的开发,如最近的 BigCodeBench。BigCodeBench 比 HumanEval 更复杂,包含多样化的输入指令,并要求模型调用 Python 库完成任务,这实际上考验了模型在真实场景下的表现。更进一步的挑战是如何生成连贯的大段代码,超越函数级别的生成,从而支持复杂功能的实现。此外,刘乾老师认为,业界还可以可以将注意力转向传统软件工程的任务,如自动代码审查、自动发现和修复缺陷、以及代码加速等,这些都具有更好的显示价值。

2. 继续预训练

     

继续预训练作为解决预训练模型高昂成本和复杂性的技术手段,是大模型发展过程中重要的研究方向,我们也和刘乾老师进一步探讨了关于继续预训练探索过程中的经验与心得。

    

“我觉得继续预训练的出现是一个自然而然的结果,尤其是考虑到我们现在的开源生态里,如果你要做从头开始的预训练,需要付出的代价会越来越高。”

    

关于继续预训练相关研究的现状,刘乾老师提到,随着大规模模型如 Qwen2.5 和 DeepSeek-v3 等优秀模型的不断推出,从头预训练所需的数据量已经高达10+T词汇,在这种情况下,继续预训练的出现提供了一个更为经济和可行的解决方案,特别适用于已有一定高质量数据,但计算资源会成为瓶颈的场景。

   

首先,继续预训练在数据和计算资源上具有显著优势。如果手头有高质量且独特的数据,而这些数据在互联网上不太可能出现,同时这些数据对下游任务又特别相关,那么继续预训练毫无疑问是一个理想选择。例如,某些金融领域的数据及其相关任务可以受益于此。尽管预训练阶段的开销巨大,但通过继续预训练,可以在已有模型基础上进行进一步优化,最大程度地利用已有资源。而继续预训练的成功实施依赖于高数据质量和对训练过程的精细调控,例如要避免过高的学习率,以防止模型快速遗忘通用知识。

   

“我个人的感受是继续预训练对数据质量的要求会更高,做继续预训练的时候,引入了一些质量差的数据会让这个模型的性能产生退化。”

     

刘乾老师还提到,相比于从头开始的预训练,继续预训练对数据质量的要求会更高,因为新引入的低质量数据可能导致模型性能的退化。如果领域特定数据引入后,带来的性能提升无法弥补低质量数据导致的退化,这意味着继续预训练的效果可能不尽如人意。因此,研究如何提高继续预训练的有效性、避免模型遗忘原有知识仍是一个重要课题。

     

关于模型预训练阶段注入领域知识的不同点,刘乾老师认为我们可以从数据分布平滑过度的角度理解继续预训练。在从预训练到特定任务微调的过程中,本质上是在从通用文本数据过渡到更接近下游任务的数据分布。如果整个过程进行得平滑,会逐渐减轻通用数据的权重,同时增加贴近下游任务的数据权重。这一阶段的目标是找到一个理想的平衡点,将垂直领域知识有效地引入到预训练模型中。

    

总体而言,继续预训练是一种逐渐被认可并实用的技术方法,为从头预训练模型提供了经济和高效的替代方案。虽然继续预训练的实施具有一定的复杂性和挑战,但随着研究的深入,继续预训练有望成为业界标准流程。

   

针对继续预训练领域的高质量数据需求,整数智能同样投入了大量研究工作,目前已经具备具有高专业精度的垂类数据集储备和数据集建构工具与团队,能够支持继续预训练对于专业数据的特殊需求。在 Sailor 2 项目中,整数智能团队也积极参与社区,在基于东南亚语言的训练数据集建构上展开合作,提供了东南亚语料库的数据支持。

      

3. 基于小语种的多语言继续预训练

      

刘乾老师所在团队对于大语言模型研究的一个重要方面,是基于东南亚小语种语言模型的继续预训练。东南亚地区的语言多样性非常高,通过继续预训练,可以更好地提升这些小语种的语言模型表现,从而帮助提高自然语言处理任务的准确性,这对于提升东南亚区域内各语言的科技能力、促进文化交流以及改善跨语言的科技应用具有深远意义。

      

在构建 Sailor 2 模型的过程中,整数智能在东南亚小语种语料数据上开展了合作,在东南亚地区小语种缺乏大规模、高质量的语料数据的背景下,提供了基于东南亚语言语料库数据处理与标注的训练数据集支持。

     

“多语言模型训练中存在语言竞争关系,这导致我们在提升某一种语言性能的同时,可能会影响其他语言的性能。”

     

在多语言大语言模型训练的过程中,数据匮乏成为语言模型训练过程中的重要难点。刘乾老师提到,在多语言研究领域,现有的大部分预训练模型通常以英语或中文为中心,这是因为这两种语言在互联网上有着丰富的数据资源。然而,尽管东南亚地区在文化上多样且人口众多,却面临着电子化语料数据相对稀缺的问题。针对这一现状,Sailor 2 致力于通过高效的继续预训练,将现有的、以英语为主的语言模型优化,使其在东南亚语言上的表现更加出色。

      

与此同时,在东南亚地区,尤其是一些欠发达的国家如缅甸和老挝,许多专业领域的数据严重缺乏。这一问题为模型训练带来了巨大挑战。此外,由于研究人员并非东南亚语言的母语使用者,筛选和评估这些语言的高质量语料时,也面临了不少困难。这使得当前对多语言模型的探索仍处在初级阶段,类似于ChatGPT最初推出时针对英语模型的早期探索。

    

虽然一些开源模型如 Qwen2.5 已经在多语言支持方面有很大的进展,但东南亚语言模型的整体质量仍不理想。此外,刘乾老师提到多语言模型训练中的“语言竞争”现象更是增加了难度,在提升某一种语言性能时,往往会导致其他语言的性能下降。

    

扩展词表在处理多语言模型时也面临许多困难,尤其是像 Llama2 和 Mistral 等模型在东南亚语言词表的支持方面表现不佳。尽管研究团队尝试了多种策略来扩展词表,但这种操作往往导致模型性能显著下降,恢复模型性能需要消耗大量的训练资源。因此,团队最终决定在多语言模型中尽量避免进行扩词表工作。

    

“我们进行了权衡,决定接受英语性能可能会有所下降,通过优化数据的混合和配比,最终获得了在东南亚语言性能上的相对经济的收益。”

    

尽管困难重重,但是刘乾老师团队仍然在不断突破,并不断总结积累新的经验。在东南亚小语种模型的继续预训练过程中,研究团队学到的一个重要经验是,无法期望所有语言都能平衡发展。最初,团队尝试在不降低英语性能的前提下,用较低成本显著提升东南亚小语种的表现。然而,这一目标很快被证明不切实际。因此,团队做出了权衡,接受了英语性能的略微下降,转而通过优化数据混合和比例分配,获得了在东南亚语言上相对合理的收益。这一策略帮助提升了小语种的性能,同时避免了过度损害主流语言的表现。

     

“至于筛选高质量的小语种数据,当前最有效的办法还是投入更多人力进行筛选,本次 Sailor 2 的开发我们也用到了合成数据自动检索高质量数据的策略。”

    

最后,刘乾老师认为,对于高质量小语种数据的筛选,目前最有效的方法仍然是投入更多的人力资源来确保数据质量,尤其是在剔除广告或违规信息时。目前团队也探索了使用合成数据自动检索高质量数据的策略,在 Sailor 2 中取得了比较显著的效果。

     

研究团队东南亚语言模型的继续预训练过程中遇到了诸多挑战,但也积累了宝贵的经验,尤其是在如何平衡多语言性能、应对词表扩展带来的复杂性、以及筛选高质量语料方面,团队的探索为未来的研究奠定了基础。未来,刘乾老师也将继续深入探索更高效的训练方法,力求进一步提升东南亚小语种模型的性能。

   

4. Sailor 2: 小语种大语言模型持续探索与开源实践

     

12月2日,刘乾老师所在社区团队公开了开源大模型 Sailor 2。Sailor 2 是一个面向东南亚地区的小语种大语言模型项目,旨在通过社区驱动的方式为该地区提供最先进的多语言模型,这是在既往小语种大语言模型上的持续探索。Sailor 2 涉及包括中英文及缅甸语、菲律宾宿务语、伊罗戈语、印度尼西亚的多印尼语和爪哇语、泰语、越南语等15种东南亚语言。Sailor 2 在 Qwen 2.5 模型的基础上,经过了大约 500B 词汇的持续预训练,克服了既往的一些问题,以更好地支持这些语言。Sailor 2 发布后,我们再次联系到了刘乾老师,与我们分享更多的经验和新的见解:

    

Sailor 2 是一个在低资源语言中表现优异的模型,这一成就主要得益于独特的数据收集、处理和训练方法。在开发过程中,团队采用了一种两阶段的训练策略,这不仅是一种技术选择,更是基于对语言数据特性和模型训练效果的深刻理解。在训练的初期阶段,Sailor 2 团队选择暂不加入数据量极低的语言,而是将这些语言放在训练的退火阶段。这一策略有效利用了退火阶段低学习率的特点,使得模型在主要语言和低资源语言上的表现都得到显著提升。通过这种方式,即便最初没有加入这些语言,它们在后期阶段也能因低学习率而在不影响主语言效果的前提下,有效提升性能。

    

在保持中英文模型稳定性的同时,Sailor 2 团队面临的挑战是如何引入更多的小语种语言。该团队采用了一种激进的方法:在进行继续预训练之前,先通过扩展参数增加模型的学习空间,以期在不牺牲中英文性能的前提下提升东南亚语言的表现。然而,模型参数的扩展也带来了计算成本和基础设施上的挑战。Sailor 2 团队也尝试了在继续预训练后的模型上做剪枝的操作,以期待实现相比原始模型没有参数扩展的情况下也有较好性能的初衷。Sailor 2 的成功并不单靠某一项技术的突破,而是在复杂的语言环境中,通过多种策略的优化组合,达到了性能和资源利用效率的平衡。

   

在刘乾老师分享的研究经历中不难发现,优质数据是模型性能提升的关键所在,而东南亚语言的语料缺失和专业性不足,正是限制多语言模型发展的重要瓶颈。在这一领域,企业与学术界的合作能够起到举足轻重的作用。

       

整数智能作为一家专业的人工智能数据领域企业,深耕小语种语言资源领域,尤其关注东南亚语言数据的标注和质量优化。通过与包括刘乾老师在内的多位学者的合作,我们在小语种语言模型标注数据的质量提升上积累了丰富的实践经验。例如,在东南亚语言继续预训练项目中,我们参与 Sailor 2 社区,协助进行了语料数据的建设与处理,提升了预训练数据的高质量与多样性,同时减少了模型优化过程中的数据干扰。

    

我们坚信,高效的模型离不开优质的语料支持,而优质语料的基础正是专业化的数据标注服务。通过整合行业经验与技术创新,整数智能在语料标注质量和效率上不断突破,致力于为更多企业和研究机构提供定制化、精准化的解决方案。从自然语言处理到行业垂直领域的应用探索,我们愿意携手更多合作伙伴,共同推动人工智能技术在多语言环境中的落地与发展。


http://www.hkcw.cn/article/qtbPvEpjtK.shtml

相关文章

Google 发布的全新导航库:Jetpack Navigation 3

前言 多年来,Jetpack Navigation 库一直是开发者的重要工具,但随着 Android 用户界面领域的发展,特别是大屏设备的出现和 Jetpack Compose 的兴起,Navigation 的功能也需要与时俱进。 今年的 Google I/O 上重点介绍了 Jetpack Na…

抖音商城抓包 分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 抓包展示 总结 1.出于安全考虑,本章未…

uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)

地址信息,在我们支付订单上有这样一个接口,就是物流方式,一个自提,我们就显示商家地址。一个是外送,就是用户自己填写的地址。 这里先说说用户的地址添加。需要使用到的一些方式方法,主要有关于地址选择器,就是uni-data-picker级联选择。 该文介绍了电商应用中地址信息处…

AlmaLinux OS 10 正式发布:兼容 RHEL 10 带来多项技术革新

AlmaLinux OS 基金会日前宣布推出 AlmaLinux OS 10,该版本代号代号紫色的狮子 (Purple Lion),新版本带来多项新功能和技术更新,旨在为用户提供更强大的企业级 Linux 体验。 该系统使用与 RHEL 10 相同的源代码构建并于 RHEL 10 保持完全兼…

深入理解C# MVVM模式:从理论到实践

在现代软件开发中,良好的架构设计对于构建可维护、可测试和可扩展的应用程序至关重要。Model-View-ViewModel (MVVM) 是一种特别适合XAML-based应用程序(如WPF、Xamarin和UWP)的架构模式。本文将全面探讨MVVM模式的概念、实现细节、最佳实践以…

Git GitHub Gitee

一、Git 是一个免费、开源的分布式版本控制系统。 版本控制:一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。它最重要的就是可以记录文件修改历史记录,从而让用户可以看历史版本,方便版本切换。 1.和集中式版本控制…

数据库管理-第332期 大数据已死,那什么当立?(20250602)

数据库管理332期 2025-06-02 数据库管理-第332期 大数据已死,那什么当立?(20250602)1 概念还是技术2 必然的大数据量3 离线到实时4 未来总结 数据库管理-第332期 大数据已死,那什么当立?(202506…

Java Netty 中处理粘包和半包问题的解决方案 | TCP消息完整性校验(XOR )

文章目录 引言I 处理TCP粘包和半包问题背景粘包问题的产生原因解决方案WebSocket中的粘包和半包问题及解决方案II Java Netty 中处理粘包和半包问题粘包和半包问题可以通过以下几种方式解决:使用分隔符解码器基于长度字段的解码器实现自定义解码器III TCP常见封装处理消息接收…

鸿蒙next系统以后会取代安卓吗?

点击上方关注 “终端研发部” 设为“星标”,和你一起掌握更多数据库知识 官方可没说过取代谁谁,三足鼎立不好吗?三分天下,并立共存。 鸿蒙基于Linux,有人说套壳;ios/macos基于Unix,说它ios开源了…

排便不是一件可以随意“延后”的事:长期便秘->直肠敏感性降低->功能性便秘->大便失禁

文章目录 引言知识扩展: 快乐排便的黄金姿势I 便秘并不是一种单一成因的疾病便秘成因临床治疗II 总是压抑排便,身体会发生的变化III 排便不是一件可以随意“延后”的事引言 排便是一种复杂的反射行为: 由“直肠充盈—产生便意—括约肌协调—排出”的完整生理链条完成的。 …

基于Spring Boot 电商书城平台系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…

Golang——5、函数详解、time包及日期函数

函数详解、time包及日期函数 1、函数1.1、函数定义1.2、函数参数1.3、函数返回值1.4、函数类型与变量1.5、函数作参数和返回值1.6、匿名函数、函数递归和闭包1.7、defer语句1.8、panic和recover 2、time包以及日期函数2.1、time.Now()获取当前时间2.2、Format方法格式化输出日期…

HTTP详解

使用的工具:fiddler 一、请求和响应报文的结构 1.请求 ⾸⾏: [⽅法] [url] [版本]Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有…

解决:install via Git URL失败的问题

为解决install via Git URL失败的问题,修改安全等级security_level的config.ini文件,路径如下: 还要重启: 1.reset 2.F5刷新页面 3.关机服务器,再开机(你也可以省略,试试) 4.Wind…

【小工具开发】通过Java实现批量修改文件名小工具

1. 创建Project(使用Gradle) 2.安装Gradle 修改 distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-8.12-bin.zip 修改 distributionUrlhttps\://mirrors.cloud.tencent.com/gradle/gradle-8.12-all.zip 阅读了以下博客,发…

【AI智能体】Spring AI MCP 从使用到操作实战详解

目录 一、前言 二、MCP 介绍 2.1 什么是MCP 2.2 MCP 核心特点 2.3 MCP 核心价值 2.4 MCP 与Function Calling 区别 三、Spring AI MCP 架构介绍 3.1 整体架构 3.1.1 三层架构实现说明 3.2 服务端与客户端 3.2.1 MCP 服务端 3.2.1 MCP 客户端 3.3 MCP中SSE和STDIO区…

Python打卡DAY43

复习日 作业: kaggle找到一个图像数据集,用cnn网络进行训练并且用grad-cam做可视化 进阶:并拆分成多个文件 我选择ouIntel Image Classification | Kagglezz,该数据集分为六类,包含建筑、森林、冰川、山脉、海洋和街道…

香橙派3B学习笔记5:Linux文件系统分区_A/B系统分区

经过之前的多次分区失败导致系统重启无法进入,这次调整思路重新分区 ssh : orangepi本地ip 密码 : orangepi 操作系统发行版: 基于 Ubuntu 20.04.6 LTS(Focal Fossa)的定制版本,专门为 Orange …

第16讲、Odoo 18 序号(Sequence)详解

目录 序号系统概述底层实现原理常见序号规则使用方法与最佳实践案例分析:客户工单管理系统常见问题与解决方案总结 序号系统概述 Odoo 中的序号(Sequence)系统是一个用于生成唯一标识符的核心机制,主要用于为业务单据&#xff…

内存管理--《Hello C++ Wrold!》(8)--(C/C++)--深入剖析new和delete的使用和底层实现

文章目录 前言C/C内存分布new和deletenew和delete的底层定位new表达式 内存泄漏作业部分 前言 在C/C编程中,内存管理是理解程序运行机制的核心基础,也是开发高效、稳定程序的关键。无论是局部变量的存储、动态内存的分配,还是对象生命周期的…