使用大型语言模型进行监督微调(SFT)

大型语言模型(LLMs)通常经过几个阶段的训练,包括预训练和几个微调阶段;请参见下文。尽管预训练很昂贵(即需要数十万美元的计算成本),但相比之下,微调LLM(或进行上下文学习)则较为廉价(即几百美元或更少)。鉴于高质量的预训练LLM(例如MPT、Falcon或LLAMA-2)广泛可用且免费使用(甚至商业用途),我们可以通过在相关任务上对LLM进行微调来构建各种强大的应用程序。不同阶段的LLM训练(由作者创建)

在最近的AI研究中,最常用的LLM微调形式之一是监督微调(SFT)。这种方法通过创建一个高质量的LLM输出数据集,直接对模型进行微调,使用标准的语言建模目标。SFT使用简单/廉价,并且是对齐语言模型的有用工具,因此在开源LLM研究社区和其他领域中非常受欢迎。在这个概述中,我们将概述SFT背后的思想,查看关于这个主题的相关研究,并提供如何使用只有几行Python代码轻松使用SFT的示例。

有用的背景信息

为了深入了解SFT,我们需要对语言模型(以及深度学习)有一个基本的了解。让我们介绍一些相关的背景信息,并简要回顾一些重要的概念。

AI基础知识。 在我看来,学习AI和深度学习基础知识的最佳资源是来自fast.ai的_Practical Deep Learning for Coders_课程。这门课程非常实用,以自上而下的方式进行讲解,意味着你首先学习如何在代码中实现想法并使用所有相关工具,然后再深入了解细节,以了解一切是如何工作的。如果你对这个领域还不熟悉,想要快速掌握与AI相关的工具、如何使用它们以及它们的工作原理,可以从这些视频开始。如果想更详细地了解语言模型,可以查看这里的文章。

Transformers库。 这个概述中的代码依赖于transformers库,这是一个最强大的深度学习库之一。此外,该库还有大量的教程和文档,可作为任何深度学习或LLM相关项目的实用学习资源。(from [2])

训练LLMs。 语言模型的训练过程通常分为三个阶段;见上文。首先,我们对语言模型进行预训练,这是训练中计算开销最大的步骤。然后,我们通过监督微调(SFT)和人类反馈的强化学习(RLHF)通常使用三步框架(见下文)进行对齐。(来自[2])

上述步骤构成了用于大多数最先进的LLM(例如ChatGPT或LLaMA-2 [3])的标准化训练流程。与预训练相比,SFT和RLHF在计算上较为廉价,但它们需要对数据集进行策划,这可能是困难且耗时的,数据集可以是高质量的LLM输出或LLM输出的人工反馈。

当应用LLM来解决下游任务时,有时我们需要做更多的工作。特别是,我们可以通过领域特定的微调或上下文学习进一步专门化语言模型;请参见下文。领域特定的微调只是进一步训练模型,通常是通过语言建模目标,类似于预训练/SFT,使用与下游任务相关的数据,而上下文学习则将额外的上下文或示例添加到语言模型的提示中,用作解决问题的上下文。(来自[2, 4])

什么是对齐? 最后,在上面的讨论中,有一个术语我们已经多次使用,这是很重要的要理解:对齐。一个预训练的语言模型通常是没有用的。如果我们用这个模型生成输出,结果可能会重复而且没有太多帮助。为了创建一个更有用的语言模型,我们必须将这个模型_对齐_到人类用户的需求上。换句话说,我们的语言模型学习生成用户所期望的文本序列,而不是生成最有可能的文本序列。

“对于我们的偏好注释集合,我们关注的是帮助性和安全性。帮助性指的是Llama 2-Chat的回应有多好地满足用户的请求并提供所需的信息;安全性指的是Llama 2-Chat的回应是否不安全。” — 来自[5]

通过上述的SFT和RLHF三步框架,这种对齐可以用来鼓励LLM中的各种行为和特性。通常,训练模型的人会选择一组或几个在对齐过程中强调的标准。常见的对齐标准包括:提高指令遵循能力,阻止有害输出,使LLM更有帮助等等。例如,LLaMA-2 [5] 被对齐为 i) 有帮助和 ii) 无害/安全;请参见上文。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈


什么是SFT?

监督微调(SFT)是LLM对齐过程中的第一步训练。实际上,它非常简单。首先,我们需要整理一组高质量的LLM输出数据集 —— 这些基本上只是LLM正确行为的示例;请参见下文。然后,我们直接在这些示例上对模型进行微调。这里,“监督”微调的方面来自于我们正在收集一个模型应该模仿的示例数据集。然后,在微调过程中,模型学习复制这些示例的风格。与下一个标记预测的关系。 有趣的是,SFT与语言模型预训练并没有太大的区别 - 预训练和SFT都使用下一个标记预测作为它们的基本训练目标!主要的区别在于所使用的数据。在预训练过程中,我们使用大规模的原始文本数据来训练模型。相比之下,SFT使用了一个高质量的LLM输出的监督数据集。在每个训练迭代中,我们会抽样几个示例,然后使用下一个标记预测的目标来对模型进行微调。通常,下一个标记预测的目标仅适用于每个示例中对应于LLM输出的部分(例如上图中的回答)。

这是从哪里来的?

这个三步对齐过程 - 包括SFT和RLHF - 最初是由InstructGPT [2]提出的(尽管在[21]中已经探索过用于摘要模型),它是ChatGPT的前身和姊妹模型。由于InstructGPT和ChatGPT的成功,这个三步框架已经成为标准化和非常流行的,导致它在许多后续语言模型中的使用(例如Sparrow [4]和LLaMA-2 [6])。通过SFT和RLHF进行对齐现在在研究和实际应用中被广泛使用。

在SFT之前进行微调。 尽管SFT最近很受欢迎,但语言模型的微调一直是一种常用的方法。例如,GPT [7]直接在每个评估任务上进行微调(见下文),而仅有编码器的语言模型(例如BERT [8]) - 由于它们不常用于生成任务 - 几乎完全使用微调方法来解决下游任务。此外,一些LLM采用了与SFT略有不同的微调方法;例如,LaMDA [9]在各种辅助任务上进行微调,Codex [10]在代码语料库上执行特定领域的微调(即基本上对不同数据进行更多的预训练)。(来自[7])

值得注意的是,SFT与通用微调略有不同。通常,微调深度学习模型是为了教会模型如何解决特定任务,但这使得模型更加专业化和非通用化- 模型变得“狭窄专家”。与通用模型相比,模型可能会更准确地解决其微调的任务(例如,参见GOAT [11]),但它可能会失去解决其他任务的能力。相反,SFT是调整语言模型的核心组成部分,包括通用的基础模型。因为我们是为了模仿正确的风格或行为而对模型进行微调,而不是为了解决特定的任务,所以它不会失去其通用问题解决能力。

SFT的优缺点

(来自[2])

SFT的使用非常简单 - 训练过程和目标与预训练非常相似。此外,相对于预训练,该方法在执行对齐方面非常有效,并且计算成本较低(即,如果不是更低,则比预训练便宜100倍)。如上图所示,仅使用SFT(即,没有任何RLHF)在模型的指令跟随能力、正确性、连贯性和整体性能方面都有明显的好处。换句话说,SFT是一种提高语言模型质量的高效技术。然而,我们应该记住它并不完美!以下是我们应该考虑的一些缺点。(来自[12])

创建数据集。 SFT的结果严重依赖于我们策划的数据集。如果这个数据集包含了多样化的例子,准确地捕捉到所有相关的对齐标准,并且能够描述语言模型的预期输出,那么SFT是一个很好的方法。然而,我们如何保证用于SFT的数据集全面捕捉到我们在对齐过程中想要鼓励的所有行为呢? 这只能通过仔细的手动数据检查来保证,但这种方法 i) 不可扩展,而且 ii) 通常很昂贵。作为替代方案,最近的研究探索了自动生成SFT数据集的自动化框架(例如,自我指导[12];见上文),但无法保证数据的质量。因此,尽管SFT很简单,但它需要策划一个高质量的数据集,这可能很困难。(来自[5])

**添加RLHF是有益的。**即使在为SFT筛选了高质量的数据集之后,最近的研究表明,通过执行RLHF可以获得进一步的好处。换句话说,仅通过SFT对语言模型进行微调是不够的。这一发现在最近的LLaMA-2 [5]出版物中尤为明显,该出版物通过SFT和RLHF进行对齐;请参见上文。对于SFT,LLaMA-2使用了一个大型(总共27,540个示例)的对话会话数据集,该数据集经过手工筛选以确保质量和多样性。尽管对于SFT使用了大量且高质量的数据源,但进一步执行RLHF在有益性和安全性方面(即LLaMA-2的对齐标准)产生了巨大的好处;请参见下文。

在实践中使用SFT

现在我们了解了SFT的概念,让我们来探讨一下这个概念在实际和研究应用中如何被使用和已经被使用的情况。首先,我们将看一个如何在Python中执行SFT的示例。然后,我们将概述几篇最近发表的关于SFT主题的论文。

SFT的实现

如前所述,SFT的实现与语言模型预训练非常相似。在底层,任何SFT的实现都将使用下一个标记预测(也称为标准语言建模)目标,我们已经广泛了解过了。在实践中,我们可以使用最好的工具之一来训练带有SFT的LLM,即transformer reinforcement learning (TRL) Python库,该库包含了一个可以用几行代码来微调现有语言模型的SFT实现。

from transformers import AutoModelForCausalLM  # 导入AutoModelForCausalLM类,用于生成自回归语言模型
from datasets import load_dataset  # 导入load_dataset函数,用于加载数据集
from trl import SFTTrainer  # 导入SFTTrainer类,用于训练模型dataset = load_dataset("imdb", split="train")  # 加载IMDB数据集的训练集部分model = AutoModelForCausalLM.from_pretrained("facebook/opt-350m")  # 从预训练模型facebook/opt-350m中加载自回归语言模型trainer = SFTTrainer(model,train_dataset=dataset,dataset_text_field="text",max_seq_length=512,
)  # 创建SFTTrainer对象,传入模型、训练数据集、数据集中文本字段名和最大序列长度trainer.train()  # 训练模型

执行SFT。 基于HuggingFace transformers库,TRL可以使用上面显示的代码通过SFT训练语言模型(在本例中为Meta的OPT模型)。这个简单的例子演示了通过SFT训练模型的简单性!由于简单性,通过SFT微调模型在开源LLM研究社区中非常受欢迎。快速访问Open LLM Leaderboard将展示给我们一系列有趣的例子。使用SFT微调预训练的LLM目前是入门训练开源LLM的最简单和最有效的方法之一。

除了SFT的基本定义之外,还有一些有用(和更高级)的技术,我们可能想要使用,例如仅对模型响应应用监督(而不是完整的对话或示例),使用共享提示模板扩充所有响应示例,甚至采用参数高效微调(PEFT)方法(例如,LoRA [13])。有趣的是,TRL定义的SFTTrainer类足够适应和可扩展,可以处理这些情况中的每一种。请参阅此处的链接以获取更多关于实现的详细信息。

AI研究中的SFT用例

鉴于SFT是对齐过程的标准组成部分,它在AI文献中得到了广泛的探索。我们将概述几篇提供了有价值洞见的SFT的出版物。如常,下面概述的出版物并不详尽无遗。关于SFT(以及AI的一般性)的论文数量庞大。然而,我已经尽力突出研究社区中一些最有价值的洞见。如果有遗漏的内容,请随时在评论中与我和其他人分享!

InstructGPT. 大多数语言模型使用的三部分对齐过程——包括SFT和RLHF——最早由InstructGPT [2]使用,尽管之前在[21]中已经探索过用于文本摘要模型。这篇论文为最近LLM的许多进展奠定了基础,并包含了对对齐过程的许多有价值的洞见。与OpenAI最近提出的模型不同,InstructGPT的训练过程和架构的细节在论文中完全披露。因此,这个模型为创建强大的语言模型提供了巨大的洞见,阅读带有这些额外背景的ChatGPT和GPT-4的博客文章会更加有启发性。(来自[17, 18, 19, 20])

模仿模型。 在LLaMA发布后,开源语言模型的爆炸式增长中,SFT在模仿学习的背景下得到了广泛应用。具体而言,我们可以:

  1. 从一个开源基础模型开始。

  2. 从专有语言模型(例如ChatGPT或GPT-4)收集对话会话的数据集。

  3. 使用SFT对生成的数据集进行训练。

这些模型(例如Alpaca,Koala和Vicuna)训练成本低且表现良好,突显了使用相对较少的计算资源可以获得令人印象深刻的结果。尽管早期的模仿模型后来被证明与专有模型相比表现不佳,但是最近在更大的模仿数据集上训练的变种模型(例如Orca [15])表现良好。将SFT与模仿学习相结合是制作一个不错的LLM的一种廉价且简单的方法。(来自[16])

LIMA. 在模仿学习的研究中发现,使用专有语言模型生成大规模数据集用于SFT是一种有用的方法。相比之下,平行研究探索了是否可以通过更小、精心策划的数据集实现对齐。在LIMA [16]中,作者为SFT策划了一个仅有1K个示例的数据集,得到的模型与顶级开源和专有LLM相当竞争力;请参见上文。在这种情况下,成功的关键是对数据进行手动检查,以确保质量和多样性,这比用于SFT的原始数据集的规模更重要。这些结果得到了LLaMA-2的证实,作者发现具有高质量和多样性标准的适度规模的数据集为SFT提供了最佳结果。

开源对齐。 直到最近提出LLaMA-2(甚至之后),开源LLM主要使用SFT进行对齐,最小程度上使用RLHF。例如,MPT模型的几个变体以及Falcon和LLaMA的Instruct版本都是使用SFT在各种不同的数据集上创建的(其中许多数据集在HuggingFace上公开可用!)。此外,如果我们快速查看Open LLM Leaderboard,我们会发现许多顶级模型是流行基础模型(例如LLaMA-2或Falcon)的版本,它们经过SFT在不同数据的混合上进行了微调。其中一些著名的例子包括Platypus、WizardLM、Airoboros、Guanaco等等。

结论

通过本文概述,我们了解了SFT,以及它如何在实践中使用,以及当前研究中对它的了解。SFT是AI从业者的强大工具,因为它可以以高效的方式将语言模型与特定的人类定义目标对齐。尽管通过RLHF可以获得进一步的好处,但SFT的使用简单(即与预训练非常相似)、计算成本低廉且高效。这些特性使得SFT在开源LLM研究社区中得到广泛采用,几乎每天都会训练出各种新模型(使用SFT)并发布。在拥有高质量基础模型(例如LLaMA-2)的情况下,我们可以通过SFT高效且轻松地微调这些模型,以处理各种不同的用例。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
在这里插入图片描述

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

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

相关文章

应用商店优化(ASO)的四大误区

应用商店优化 (ASO) 是移动营销中最重要的部分之一,可以帮助开发人员吸引自然流量并在应用推广方面取得预期效果。近年来ASO优化在开发者中越来越受欢迎。虽然它已经证明了其有效性和对应用成功的影响力,但尽管如此仍然存在与ASO相关的误解,导…

Day-04-QFile打开文件的两种方式

一、UI界面设置两个按键&#xff0c;并直接转到槽函数 二、两种代码展示 #include <QFile> #include <QDebug>//此两种方式中调用函数&#xff0c;应包含的头文件void Widget::on_btnReadFile01_clicked()//第一种打开方式 {//1. 打开文件QFile file;file.setFile…

ARM发布新一代高性能处理器N3

简介 就在2月21日&#xff0c;ARM发布了新一代面向服务器的高性能处理器N3和V3&#xff0c;N系列平衡性能和功耗&#xff0c;而V系列则注重更高的性能。此次发布的N3&#xff0c;单个die最高32核&#xff08;并加入到CCS&#xff0c;Compute Subsystems&#xff0c;包含Core&a…

【Unity案例】搭建射击系统与UI

上期将基础的移动系统搭建完毕后就可以开始搭建更加复杂的系统部分了 前排提示&#xff0c;由于一开始仅思考如何完成操作相关功能&#xff0c;以至于到后面重构稍微有些困难&#xff0c;继续写下去恐成屎山&#xff0c;故在搭完射击和武器UI后不再继续泛化到敌人和敌人状态机…

本地Gitblit使用

首先创建一个本地的gitblit的服务&#xff0c;创建流程如下&#xff1a; 【GitBlit】Windows搭建Git服务器详细教程_搭建gitblit服务-CSDN博客 GitBlit的使用教程-CSDN博客 创建好一个仓库后&#xff0c;分配好用户权限&#xff0c;再将项目拉下来&#xff0c;这里是再visua…

零信任赋予安全牙齿,AI促使它更锋利

距离上次写关于安全的文字已经过去了很久很久&#xff0c;久到上次看到的AI还停留在TTS、ASR等最初的语音交互搜索类似的各种智能音箱以及通过关键字匹配的基于知识库的聊天的机器人。之后的几年各种视觉识别遍地开花&#xff0c;AI四小龙在人脸识别上成熟应用&#xff0c;再然…

浏览器百科:网页存储篇-如何在Chrome打开localStorage窗格(五)

1.引言 在前面的章节中&#xff0c;我们详细介绍了 localStorage 的基本概念、特性及其常用方法&#xff0c;帮助开发者在网页应用中实现数据的持久化存储。为了更好地管理和调试这些存储的数据&#xff0c;了解如何打开和使用浏览器的 localStorage 窗格是非常重要的。本篇文…

科研绘图系列:R语言差异基因四分图(Quad plot)

介绍 四分图(Quad plot)是一种数据可视化技术,通常用于展示四个变量之间的关系。它由四个子图组成,每个子图都显示两个变量之间的关系。四分图的布局通常是2x2的网格,每个格子代表一个变量对的散点图。 在四分图中,通常: 第一个子图显示变量A和B的关系。第二个子图显示…

海外云服务器安装 MariaDB10.6.X (Ubuntu 18.04 记录篇二)

本文首发于 秋码记录 MariaDB 的由来&#xff08;历史&#xff09; 谈起新秀MariaDB&#xff0c;或许很多人都会感到陌生吧&#xff0c;但若聊起享誉开源界、业界知名的关系型数据库——Mysql&#xff0c;想必混迹于互联网的人们&#xff08;coder&#xff09;无不知晓。 其…

信捷 XD PLC 位软元件

位软元件的种类相对简单&#xff0c;一般为常见的 X、Y、M、HM、S、HS、T、HT、C、HC&#xff0c; 除此之外&#xff0c; 还可由寄存器中的某一位来表示。 1&#xff09;继电器 ⚫ 输入继电器 X&#xff0c;八进制表示法。 ⚫ 输出继电器 Y&#xff0c;八进制表示法。 ⚫ …

SQL语言的规则和规范

规则 是什么呢&#xff0c;规则就是我们最基本&#xff0c;每时每刻都要遵守的比如人行道靠右&#xff0c;不能逆行&#xff0c; 规范 呢就是锦上添花&#xff0c;如果你不这么做&#xff0c;是不那么道德&#xff0c;不那么好的&#xff0c;就像小学生见到老师要问好&#…

C++11(1)

目录 前言 小故事 C11优势 统一的列表初始化 1.{}初始化 2. std::initializer_list 声明 1.auto 2.decltype 3.nullptr 前言 小故事 1998 年是 C 标准委员会成立的第一年&#xff0c;本来计划以后每 5 年视实际需要更新一次标准&#xff0c; C 国际 标准委员会在研究…

Axure制作圆球在区域范围内移动效果的案例

在Axure RP中&#xff0c;我们可以通过设置多个交互动作和动态面板来创建复杂的动画效果&#xff0c;比如实现一个圆球在指定区域内通过八个方向按钮控制移动的效果。以下是一个详细的步骤介绍&#xff0c;帮助你理解并制作这一效果。 预览&#xff1a; https://1zvcwx.axshare…

简述CCS平面线性光源

光源在机器视觉系统中起着重要作用&#xff0c;不同环境、场景及应用合适光源都不一样&#xff0c;今天我们来看看LFX3-PT系列平面线性光源。它是最适合检测镜面物体的凹凸,外壳小巧的光源。备有根据检测条件可选的2种线间距。1mm型&#xff08;型号末尾&#xff1a;A&#xff…

idea一键自动化部署项目

文章目录 前言一、 IDEA插件安装1. 首先下载 Alibaba Cloud Toolkit 插件2. 插件下载完成后重启IDEA 二、SpringBoot项目准备1. pom.xml 文件2. controller3. 启动类 三、SpringBoot项目jar包部署1. Alibaba Cloud Toolkit 插件服务器配置2. 主机 IP、用户名、密码 点击测试链接…

日志系统(最新版)

基础知识 日志&#xff0c;由服务器自动创建&#xff0c;并记录运行状态&#xff0c;错误信息&#xff0c;访问数据的文件。 同步日志&#xff0c;日志写入函数与工作线程串行执行&#xff0c;由于涉及到I/O操作&#xff0c;当单条日志比较大的时候&#xff0c;同步模式会阻塞…

file | 某文件夹【解耦合】下的文件查找功能实现及功能单元测试

文件查找工具 概要思路OS模块 --- 学习版os.getcwd()os.path.dirname(os.getcwd())os.path.dirname() 和 os.path.basename() OS模块 — 实战版单元测试解耦合 概要 梳理业务主逻辑&#xff1a; 查看存放被采集JSON数据的文件夹内的文件列表【所有 包含文件夹下的文件夹下的文…

【Anaconda】修改jupyter notebook默认打开的工作目录、jupyter notebook快捷键

jupyter notebook快捷键 针对单元格的颜色蓝色命令行模式绿色编辑模式 两种模式的切换编辑模式切换到命令行模式 >>> esc键命令行模式切换到编辑模式 >>> 鼠标左键或者直接按enter键1.标题的书写方式1:1.esc进入命令行模式2.按m键3.写内容4.运行单元格即可方…

SprinBoot+Vue健康管管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

LabVIEW水泵机组监控系统

介绍了一种基于LabVIEW的水泵机组智能监控系统。该系统结合先进的传感器和数据采集技术&#xff0c;实时监控水泵机组的运行状态&#xff0c;有效预防故障&#xff0c;提高运行效率。通过LabVIEW平台的集成开发环境&#xff0c;系统实现了高效的数据处理和友好的用户界面。 项…